Erstellte Forenantworten
-
AutorBeiträge
-
adminAdministrator
Wenn du nur deine Lampen anzeigen/schalten möchtest brauchst du keine Parameter-VM-Zuordnung. Die ist nur dafür da Parameter von Blöcken (z.B. der Zählwert eines Zählers) in den VM-Speicher zu schreiben. Also vergiss die erst mal. Was du brauchst sind nur die Adressen der Ausgänge. Die hast du für deine Logo8 ja schon gefunden (z.B. 1064.0 für Q1). Für diese Adresse legst du in der config.xml von LogoControl ein „attribute“ unter einem „device“ an, dann kann LogoControl bereits den Zustand des Ausgangs visualisieren.
Jetzt zum Schalten der Lampe: dafür suchst du dir irgendein Bit im VM-Speicher der Logo aus, z.B. 150.1 kann aber auch 47.3 oder 624.5 oder…. sein. Du hast den kompletten VM-Speicher von 0.0 bis 850.7 frei zur Verfügung. Um das ganze aber übersichtlich zu halten, solltest du natürlich nicht alles wahllos im VM verteilen, sondern dir möglichst ein System überlegen. Bei mir sind z.B. alle x50-er Adressen (also 150,250,350usw.) die Adressen zur Steuerung für LogoControl, aber du kannst auch bei 0.0 anfangen, freie Wahl! Nehmen wir an du hast dich für die 0.0 entschieden. Dann legst du in der config.xml unter dem „device“ eine „method“ an, mit genau dieser Adresse. Wenn die Methode später aufgerufen wird, wird das Bit an dieser Adresse für 250ms auf 1 gesetzt und danach wieder auf 0. Das Bit kannst du nun in dein Schaltprogramm einbeziehen indem du einen Netzwerkeingang einplanst und ebenfalls auf die VM-Adresse 0.0 konfigurierst. Beim Aufruf der LogoControl-Methode wird wie gesagt das Bit 0.0 für 250ms auf 1 gesetzt und somit führt dann auch dein Netzwerkeingang für 250ms die 1 und du kannst mit diesem Signal in deinem Schaltprogramm anstellen was du willst, z.B. deinen gewünschten Ausgang schalen.
adminAdministratorOkay, da hast du nun wirklich einen Bug gefunden. Das XML wurde bei der Anzeige im Browser nicht richtig escaped, so dass deine manuell escapte Sonderzeichen bei der Anzeige wieder nicht escaped waren. Ist gefixt und wird in der nächsten Version enthalten sein. Danke für die Rückmeldung!
adminAdministratorHi,
hab die Ursache gefunden. Wenn du
http://raspberry.fritz.box:8080/json.htm?type=command¶m=switchlight&idx=32&switchcmd=Toggle
als url Attribute im XML einträgst wird das XML invalide. Du musst stattdessen folgendes eintragen:
http://raspberry.fritz.box:8080/json.htm?type=command&param=switchlight&idx=32&switchcmd=Toggle
Hintergrund: in XML müssen bestimmte Sonderzeichen escaped werden, unter anderem das & durch ein & aber auch noch weitere:
" "
' '
< <
> >
& &Generell startet LogoControl nur, wenn die config.xml valide ist. Du solltest daher die Änderungen an der config.xml lieber über die WebUI machen, denn dort wird die XML *vor* dem Speichern validiert und nur eine fehlerfreie Datei gespeichert.
adminAdministratorAlso mit Domoticz habe ich keine Erfahrungen. Aber kannst du mal die URL aus deiner config.xml hier posten welche LogoControl zum Absturz bringt und somit den Start verhindert? Das sollte nämlich nicht passieren und würde ich gerne fixen. Als Workaround kannst du mit LogoControl auch ein Shell-Script aufrufen und in diesem dann z.B. einfach ein wget oder curl machen.
adminAdministratorHi,
wenn ich es richtig verstanden habe hast du also 2 Problem:
1. NetIO stürzt immer wieder ab:
Das scheint dann wohl ein Bug in der App zu sein. Hier wendest du dich am besten an den Hersteller, bzw. postest dein Problem mal dort im Forum.2. Status wird nur beim Starten der App 1x aktualisiert, danach nicht mehr
Hast du mehrere Pages in NetIO definiert? Wird der Zustand des Schalters aktualisiert wenn du die Page wechselst oder die NetIO-App abschießt und neu startest? Dann wird das wohl ein Problem mit der Event-basierten Verbindung in NetIO sein bzw. das Worker-Label, welches jede Sekunde den /rest/attributes Service von LogoControl aufrufen soll. Schau dir nochmal die Demo-Konfiguration von NetIO für LogoControl an. Da ist auf der ersten Page unten ein „Arbeits-Label“ welches per Intervall diesen Aufruf tätigen müsste. Evlt. ist das bei dir verloren gegangen?! Ansonsten bräuchte ich mal deine NetIO-config (JSON), dann kann ich da mal rein schauen.adminAdministratorAlso das überrascht mich jetzt doch ziemlich. Auf Logo-Seite hast du doch sicherlich nur 1 Server-Verbindung eingerichten (mit Operate-Panel verbinden, TASP 02.00) über die nun LogoControl als auch das Panel sich verbinden?! Hab gerade noch mal einige Tests gemacht und mich mehrfach (also von verschiedenen Instanzen) auf Port 102 verbunden. Immer das gleiche Verhalten: Ich baue mit einem Programm die erste Verbindung auf und kann anschließend darüber Daten aus der Logo lesen. Dann starte ich das Programm ein zweites Mal und baue eine zweite Verbindung auf. Auch das funktioniert, ich kann auch über diese zweite Verbindung Daten auslesen. Dann wechsle ich zurück zum ersten Programm, dessen Verbindung ja eigentlich noch besteht. Doch beim Versuch Daten über diese erste Verbindung zu lesen/schreiben bekomme ich einen Timeout, die Verbindung ist quasi tot bzw. durch Aufbauen der zweiten Verbindung wurde die erste bereits aktive verdrängt/geschlossen. Mache ich einen Reconnect der ersten Verbindung wird die zweite wieder ungültig usw. Es ist mir also nicht möglich zwei gleichzeitig aktive Verbindungen zur selben Logo über die libnodave aufzubauen.
Dass das mit deinem Touchpanel und LogoControl trotzdem funktioniert kann ich mir nicht so recht erklären. Ich könnte mir das höchstens so vorstellen: LogoControl liest ja alle 250ms den Speicher der Logo aus. Detektiert es dabei eine ungültige Verbindung macht es automatisch einen Reconnect. Evtl. macht dein Panel ja das gleiche bei einem Verbindungsverlust und LogoControl+Panel wechseln sich so mit ständigen Reconnects mit der Verbindung ab. Kannst das ja mal beobachten, ob das auf Dauer Probleme macht. Ansonsten gut zu wissen, dass es funktioniert und danke für deinen Test!
adminAdministratorHier habe ich bisher keine Erfahrungswerte, vermute aber mal stark, dass dies nicht funktionieren wird. Wenn ich es recht in Erinnerung habe verbindet sich die libnodave (die Bibliothek, die LogoControl verwendet um das S7-Protokoll zu sprechen) als Panel zur Logo. Da die Logo jedoch max. 1 HMI-Panel unterstützt, wäre diese Verbindung somit schon belegt. Wie gesagt, ist das nur eine Vermutung. Wenn du ein KTP400 Basic vorliegen hast kannst du es aber ja mal ausprobieren.
Ich hatte in der Anfangsphase (2012) getestet mit mehreren libnodave-Verbindungen gleichzeitig auf die Logo zuzugreifen und festgestellt, dass diese Verbindungen sich gegenseitig rauswerfen. Aus dieser Erfahrung ist dann quasi LogoControl entstanden, da die Anforderung, mit mehreren Geräten (Tablets, Smartphones…) gleichzeitig zugreifen zu können, für mein Szenario entscheidend war. Sonst hätte ich wohl die libnodave direkt in eine App eingebaut…
adminAdministratorHi,
falls sich das Problem nach meiner miserablen Reaktionszeit nicht schon evtl. von selbst erledigt haben sollte: Ist der Raspi generell noch erreichbar z.B. per SSH? Läuft auf dem Raspi im Falle des Ausfalls der Prozess von LogoControl noch („ps x“ auf der Shell)? Steht im LogFile unter /tmp/LogoControl.log etwas auffälliges?
Ich hab bei mir seit ca. 2 Wochen auch auf einen Raspberry Pi 2 mit Raspbian „jessie“ umgestellt, läuft seither ohne Unterbrechung.
adminAdministratorPS: Wie schauts eigentlich mit der Umwandlung der Uhren aus, in der LogoControl, wenn ich fragen darf?
Da schauts eigentlich sehr gut aus! Hab die Funktion bereits letztes Jahr implementiert, habe aber noch an weiteren Features gearbeitet, unter anderem der Unterstützung von mehreren Logo-Verbindungen gleichzeitig mit nur einer LogoControl-Instanz. Diese Version teste ich bei mir gerade seit einigen Tagen. Denke in den nächsten Wochen das Update veröffentlichen zu können.
adminAdministratorWo zeigt er dir das an? In der LogoControl-Web-UI, in NetIO oder bei Aufruf des Webservice? Ursache wird sein, dass du die Value-Eigenschaft verwendest. Die ist intern vom Typ double (also ein Gleitkommazahl) und macht bei der Serialisierung in das JSON z.B. aus einem 22.2 ein 22.200000000000003, was der internen Repräsentation dieser Gleitkommazahl entspricht. Umgehen kannst du das indem du einfach die ValueText-Eigenschaft deines Attributs verwendest. Dort wird die Gleitkommazahl in „menschenlesbarer Form“ wiedergegeben.
14. Februar 2016 um 20:33 als Antwort auf: Ausschaltverzögerungen visualisieren – Poolsteuerung #2647adminAdministratorHi Sigih,
wie wird die Zeit aktuell am Display angezeigt? Als Minute:Sekunde? Oder ist das ein ganzzahliger Wert? Im Gegensatz zu Ein-/Ausgängen/Merkern gibt es für die Ausschaltzeit (oder allgemein irgendwelche Aktualwerte/Parameter von Blöcken) keine Standard-Adressen, von denen diese gelesen werden kann. Du musst dir den gewünschten Aktualwert erst selbst in den VM-Speicher der Logo schreiben. Das geht unter „Extras -> Parameter-VM-Zuordnung“. Dort kannst du den Parameter des Blocks wählen und an eine beliebige Adresse (Byte 0 bis 850) schreiben lassen (Achtung, dass diese Adresse nicht bereits von dir für etwas anderes verwendet wird!).
Zur Information kannst du dir gerne mal die Hilfe-Seite in LogoSoft Comfort zum Thema „Extras -> Parameter-VM-Zuordnung (nur 0BA7 und 0BA8)“ anschauen. Dort ist sehr detailliert aufgelistet welche Parameter von welchem Block verfügbar sind. Bei der Ausschaltverzögerung gibt es hier z.B. die „aktuelle (abgelaufene) Zeit“, „verbleibende Zeit“, „Einschaltverzögerung“ und die „Zeitbasis“. Für dich ist vermutlich die „verbleibende Zeit“ relevant, welche dort als Datentyp VW=Word gelistet ist. In LogoControl bindest du nun dieses Word als Attribut ein und lässt dir die Zeit anzeigen. Einziger Nachteil: LogoControl kann in der aktuellen Version nur ganzzahlige Attribute anzeigen, also soetwas wie min:sec geht aktuell nicht, wird aber in der kommenden Version div. Umrechnungs- und Formatierungsmöglichkeiten geben.
adminAdministratorWas heißt funktioniert nicht? Auch ein „Address already in use“ Fehler? HTTPS läuft standardmäßig ja über Port 8080, wenn du es in der config nicht geändert hast. Hast du auf deinem Raspi noch andere Dienste laufen, die diesen Port 8080 evtl. in Beschlag nehmen? Ist HTTPS in der config.xml richtig konfiguriert (mit Password-Hash, Salt etc.)? Was gibt
httpcfg -list
auf der Shell aus?adminAdministratorHi,
ja klar, das ist unter anderem mit ein Grund für die Entwicklung von LogoControl gewesen, weil andere Apps, die sich direkt per libnodave auf Port 102 der Logo verbinden, das eben nicht können. Die Logo kann hier nur 1 Verbindung gleichzeitig annehmen. LogoControl verbindet sich nun als diese einzige Instanz mit der Logo und kanalisiert alle weiteren Verbindungen von Tablets, Smartphones, Browsern… über diese eine Verbindung.
adminAdministratorHi,
also mit Python und libnodave habe ich noch nichts gemacht. Dafür scheinen andere das schon mal erfolgreich umgesetzt zu haben:
http://blog.abapguru.de/2015/02/verbindung-mit-python-libnodave-und-einer-siemens-logo-0ba7/
Habt ihr das schon mal versucht? Ansonsten bei der LibNoDave aufpassen, welche Version ihr verwendet! Die letzte mir bekannte noch mit der Logo funktionierende Version war die 0.8.4.6. Alle neueren Version enthalten irgendwelche „Optimierungen“ bezüglich der PDU-Länge welche leider die Kompatibilität mit der Logo gebrochen haben.
adminAdministratorMir ist bisher keine bekannt, die vom Funktionsumfang her an die NetIO-App rankommt. Wenn du eine findest (die im Idealfall auch noch Win Phone unterstützt), lass es mich wissen, würde mich auch interessieren.
-
AutorBeiträge