Erstellte Forenantworten
-
AutorBeiträge
-
adminAdministrator
Hi,
das Zertifikat hat aber erst mal nichts mit der Erreichbarkeit von LogoControl zu tun. Du musst trotzdem den Port in deinen Firewall-Einstellungen freischalten, damit LogoControl auch auf anderen Rechnern im Netz erreichbar ist. Dass Chrome das Zertifikat anmeckert ist OK, die Fehlermeldung klärt ja auch darüber auf. Ein Zertifikat muss immer auf einen Domain-Namen (Common Name (CN) im Zertifikat) ausgestellt werden, im Falle von dem bei LogoControl mitgelieferten Standard-Zertifikat ist das „localhost“. Chrome prüft nun, ob die im Browser eingegebene Adresse zu dem CN-Eintrag im Zertifikat passt. Und da 127.0.0.1 nicht gleich localhost ist, meckert Chrome. Wenn du einfach „https://localhost:8080“ statt „https://127.0.0.1:8080“ eingibst passt das schon besser.
Das funktioniert natürlich nur solange du das vom gleichen Rechner aus machst. Sobald du von einem anderen Gerät die WebUI aufrufst kannst du ja nicht mehr „localhost“ verwenden sondern hast irgendwas in der Art von „https://deinrechner:8080“ und Chrome meckert wieder, dass der Name nicht zu dem im Zertifikat passt. Prinzipiell kannst du auch die Chrome-Warnung einfach ignorieren. Die Verbindung ist trotzdem weiterhin verschlüsselt, auch wenn https durchgestrichen ist. Chrome warnt dich nur, dass dies auch ein Man-in-the-middle-Angriff sein könnte bei der ein Angreifer versucht dir einen anderen Rechner mit falschem Zertifikat unterzujubeln.
Jetzt könntest du natürlich auch dein eigenes Zertifikat generieren, das auf den CN-Eintrag „deinrechner“ ausgestellt ist. Sobald du LogoControl aber aus dem Internet über z.B. eine DynDNS-Adresse aufrufen möchtest z.B. „https://deinrechner.dyndns.org:8080“ wird auch das wieder angemeckert. Ein Zertifikat welches sowohl im internen Netz als auch im Internet gültig ist gibt es nicht.
adminAdministratorHi,
das hört sich ganz nach einem Firewall-Problem an. Wenn du vom selben Win7 Laptop LogoControl unter localhost oder 127.0.0.1 erreichst, dann funktioniert LogoControl ja soweit und du musst nur den Port (8088 bzw. 8080 je nach Einstellungen) in deinen Windows Firewall-Einstellungen freischalten, damit andere Geräte im Netzwerk auf den Dienst zugreifen können.
adminAdministratorHi S,
first: it seems you’ve found the right place. LogoControl is an application that runs 24/7 on a machine in your local network (no cloud stuff). This machine could be a Windows PC or a Raspberry Pi (2). I recommend the latter because of it’s much lower power consumption. When running LogoControl it offers you 2 things: first it gives you a basic and simple to use Web UI to view your states and control your lamps/shutters/outputs. Second it provides an REST/JSON based API by which you can access all LogoControl functions by third party apps, scripts, your own program etc. One example using this API is the Smartphone App „NetIO Controller“ which is originally not designed to control a Siemens Logo. REST/JSON API in context of LogoControl means all you have to do is to make some HTTP GET requests to some specific URLs listed here. The answer for reading requests is usually a JSON document.
One essential thing is to understand the concept behind LogoControl. LogoControl hides the memory addresses/inputs/outputs of the Siemens Logo behind a facade of „devices, methods and attributes“. Thereby you cannot directly set bits/bytes in the VM-Memory of the Logo nor reading them. You first have to define a (virtual) device for e.g. a lamp. This lamp would typically have a attribute „state“ (with possible values „on“ and „off“), and two methods „turn on“ and „turn off“. The attribute „state“ is then assigned to a memory address of the Logo VM from which it reads its actual value periodically (every 250ms). Also the „methods“ are then assigned to memory addresses (only one bit per method). When calling a LogoControl method the assigned bit in the Logo VM is set to 1 for 250ms and then falls back to 0. In your Logo program you can now react on the „pulsing“ bit by using the block „Network input“ (assign the same memory address as used for the LogoControl method in the properties).
For every device/attribute/method an ID has to be assigned. When using the REST/JSON-API you have to use this ID as param. Example: you want to call method 1 of device 7, then you have to place the following HTTP-Get:
http://logocontrol:8088/rest/devices/7/methods/1
Hope I could make things a bit clearer…
–Tobias
adminAdministratorWas meinst du mit Konflikt? Weil du in NetIO dann zwei Connections hast? Hab ich bisher noch nicht ausprobiert ob das zu Problemen führt.
Eine andere Idee, die auch schon mal ein User umgesetzt hatte, ist die GPIOs über LogoControl zu schalten indem du über Trigger ein eigenes Shell-Script einbindest, welches die GPIOs für dich schaltet. Wie du per Shell-Script GPIOs schalten kannst findest du irgendwo im Netz. Vorteil wäre: du könntest deine GPIOs auch über deine an der Logo angeschlossene Taster schalten bzw. durch Logik im Logo Schaltprogramm automatisieren.
adminAdministratorNein, die Logo bietet leider keine offene und dokumentierte API in irgendeiner Form. Das ist ja genau der Grund weshalb ich LogoControl entwickelt habe, weil ich externen Programmen/Skripte Zugriff auf die Logo ermöglichen wollte. Mit LogoControl ist der von dir gewünschte HTTP-Aufruf möglich.
adminAdministratorOk, ich dachte du meinst die Serielle Schnittstelle (RS-232), aber dann passt das soweit. Der von dir skizzierte Aufbau würde funktionieren, wobei üblicherweise zwischen Windows PC und Logo noch ein Switch/Router hängt, aber eine direkt Verbindung sollte auch funktionieren. Dein C-Programm kann dann über einfache HTTP-Aufrufe wie http://localhost:8088/rest/attributes die Daten von LogoControl abgreifen.
adminAdministratorHi,
was meinst du mit „seriell“? Eine Serielle Schnittstelle gibt es bei der 0ba8 ja nicht mehr. LogoControl verbindet sich über den Netzwerkanschluss (RJ45) mit der Logo. Sprich die Logo muss an einem Switch/Router hängen, an welchem auch dein PC/Raspberry für LogoControl hängt. Ein serieller Modus (wie es LogoMonitor glaube ich mal unterstützt hatte) wird von LogoControl nicht unterstützt.
LogoControl muss nicht im Internet verfügbar gemacht werden, du kannst es auch abgekapselt bei dir im Heimnetzwerk (nur HTTP ohne Verschlüsselung) betreiben. Wenn du Werte in deinem eigenen Programm verwenden willst gibt es dafür die Webservice-Schnittstelle (REST), sprich du musst aus deinem C-Programm einen einfachen HTTP-Get-Aufruf tätigen und bekommst dann ein JSON-Dokument mit den Werten. Die Anleitung zum Aufsetzen von LogoControl findest du auf dieser Webseite. Für dich sind die Kapitel „Installation“ und „Konfiguration“ wichtig. Wenn du die Webservice-API von LogoControl nutzen möchtest ist anschließend noch die Lektüre von „REST/JSON-Webservice“ interessant.
adminAdministratorHi, nein, abschalten kann man das leider nicht, kannst es höchstens per Cron-Job regelmäßig löschen lassen. Im Normalfall wächst das Logfile ja auch kaum. Irgendwas stimmt also bei dir folglich nicht, komme aber aktuell auch nicht darauf, was das Problem sein könnte.
Hast du die Logo schon mal neu gestartet, also kurz stromlos gemacht? Kannst du bitte nochmal kurz deinen Aufbau beschreiben:
Logo (welche Version, 0ba7 0ba8)?
Hängen Logo als auch Pi2 per Kabel direkt an ein und demselben Switch?
Kann es IP-Adresskonflikte im Netz geben?
Hast du noch eine zweite Instanz von LogoControl irgendwo laufen oder ein anderes Tool, dass Port 102 derselben Logo nutzt?
Welche Mono-Version hast du („mono –version“ auf der Shell)?Lief LogoControl vorher auf deinem Ubuntu (PC?) ohne diese Probleme?
Und zuletzt: kannst du mir mal deine config.xml und das Logfile komplett schicken (siehe Impressum) oder irgendwo hochladen?adminAdministratorDer „unexpected function code“ ist ein Fehler der direkt von der LibNoDave (der Kommunikations-Library für das S7 Protokoll) kommt. Zur Ursache kann ich hier nicht viel sagen, ich hab den Fehler bei mir allerdings selten bis gar nicht im Log, auf jeden Fall nicht alle 70 Minuten. Funktioniert LogoControl nach Auftretend es Fehlers im Log weiterhin oder zeigt der Fehler sonst irgendwelche Auswirkungen?
adminAdministratorAlso den ersten Logeintrag „object was used after being disposed…“ kenne ich und hat etwas mit einem Bug in MONO zu tun, für den es aktuell keine Lösung gibt. Die Meldung hat jedoch keine Auswirkungen auf den Betrieb von LogoControl.
Dein zweites Logfile ist schon interessanter. „Unexpected function code in answer“ kommt direkt von der libnodave und deutet auf ein Verbindungsproblem zur Logo hin. Wie äußert sich der Fehler bei dir? Funktioniert LogoControl eine Zeit lang problemlos und verliert dann die Verbindung? Oder bekommst du momentan erst gar keine Verbindung mehr? Hast du die Logo schon mal neu gestartet (vom Strom trennen)?
adminAdministratorHi Frank,
do you speak english? I guess you’ve used one of those awesome online translation services for your post. Unfortunately german is a very difficult language and they don’t do their job very well here.
So I didn’t understand your actual problem. Is it, that LocoControl just stops working after some time and exits with code 137? Or do you run some script that kills LogoControl 2 times per day and therefore results in the exit code 137? If the latter is true, than it’s not really a problem because every process which gets killed by a SIGKILL returns 137 under normal conditions.
Tobias
adminAdministratorIn LogoControl ist es leider nicht möglich 2 Attributswerte zu verrechnen. Die kommende Version wird zwar Unterstützung für diverse Rechenfunktionen zur Ausgabeformatierung bieten, aber diese dient primär der Umrechnung/Formatierung von internen Logo-Werten wie z.B. Wochenschaltuhr (intern=4873, Anzeige=13:09 Uhr), so dass über die Weboberfläche von LogoControl Schaltzeiten visualisiert und auch geändert werden können. Ein Verrechnung von unterschiedlichen Attributwerten wird damit aber auch nicht möglich sein.
Aber vielleicht hat ixo65 noch eine Idee, wie man das Problem auf der Logo bereits vermeiden kann? Evlt. Teilen der Einzelwerte durch eine Zehnerpotenz bevor sie addiert werden? Schreib mal wie groß deine Zählerwerte werden können und wie du die Berechnung durchführst.
adminAdministratorDanke für deine Rückmeldung und schön, dass du den Fehler beheben konntest. Da bin ich beruhigt, dass es kein Bug in LogoControl ist 😉
adminAdministratorAlso der Teil deiner Config sieht auf jeden Fall richtig aus. 1105.0 ist ja der Merker 9 bei der Logo8. Kannst du prinzipiell ausschließen, dass dieser Merker aufgrund deiner Schaltung zwei mal hintereinander von 0 auf 1 wechselt? Weil vom Code her kann ich mir auch nicht erklären, warum der Trigger 2x ausgelöst werden sollte, außer dass das Bit 1105.0 tatsächlich 2x von 0 auf 1 wechselt. Oder ist die Adresse 1105.0 noch an anderer Stelle in deiner Config eingetragen?
adminAdministratorDas mit der PID beim Start in eine Datei schreiben und später immer wieder zu prüfen könnte in seltenen Fällen dazu führen, dass LogoControl nicht läuft, aber bereits ein anderer Prozess die PID wiederverwendet und dein Programm trotzdem die grüne Lampe anschaltet. Ist zwar ziemlich unwahrscheinlich aber möglich. Daher würde ich lieber den pgrep immer wieder ausführen um sicherzugehen, dass auch wirklich der richtige Prozess geprüft wird.
Wie du Shell-Kommandos mit C absetzt kann ich dir nicht helfen, aber hier sollte ein guter Start-Punkt sein:
http://stackoverflow.com/questions/646241/c-run-a-system-command-and-get-output -
AutorBeiträge