Hallo,
ich habe mich jetzt einige Tage mit deinem MQTT Skript beschäftigt und muss sagen, dass ich total begeistert bin. Es war zwar nicht ganz einfach, aber inzwischen habe ich ESPEasy erfolgreich per MQTT mithilfe deines Skriptes an IPSymcon angebunden. Es soweit hinzubekommen, dass auch das Setzen der GPIO-Pins funktioniert, war zwar etwas schwierig, aber es hat nach vielen Versuchen dann doch geklappt.
Für den Fall, dass auch mal jemand ESPEasy und das Skript hier nutzen möchte, hier ein paar Tipps zur Konfiguration des ESPEasy, damit ihr hoffentlich nicht ganz so lange braucht wie ich:
[ol]
[li]In den Main Settings einen eindeutigen Unit-Name festlegen, Unit-Number auf 0 und kein Häkchen bei „Append Unit-Number to hostname“[/li][li]Als Controller „OpenHAB MQTT“ auswählen, IP-Adresse von IPSymcon eintragen und bei Controller Subscribe und Controller Publish die führenden Backslashes entfernen. Also „%sysname%/#“ bzw. „%sysname%/%tskname%/%valname%“ eintragen[/li]Erstmal den Haken bei „Enabled“ noch nicht setzen, dies kommt erst ganz zum Schluss.
[li] Falls ein GPIO als Ausgang genutzt werden soll, muss ein Device „switch input“ angelegt werden - klingt unlogisch, ist aber so ;-)[/li][ul]
[li]Unter Sensor / GPIO wird der gewünschte GPIO ausgewählt (also z. B. GPIO-13/D7)[/li][li]Damit das Device später sofort im IPSymcon als Variable erscheint, den Haken bei „Send Boot state“ setzen. [/li]Korrektur: Wenn der Hake bei „Send Boot State“ gesetzt ist, kann es anscheinend zu einer Endlosschleife kommen - also doch nicht setzen! Außerdem bei „Data Acquisition“ den Haken beim vorhin eingerichteten Controller setzen.
[li]Wichtig: Als Name muss „GPIO“ eingetragen werden, unter Valus muss als Name die Nummer des GPIO eingetragen werden, also z. B. „13“, wenn der GPIO-13 geschaltet werden soll.[/li][li]Wenn weitere Switche angelegt werden, müssen auch die als Namen „GPIO“ haben - das bringt zwar eine rote Warnmeldung, ist aber notwendig, damit auch per MQTT der GPIO gesetzt werden kann[/li][/ul]
[li]Unter Tools / Advanced muss der Haken bei „MQTT Retain Msg“ gesetzt werden, ansonsten werden keine Variablen, sondern Skripte angelegt. Außerdem habe ich den Haken bei MQTT use unit name as ClientID gesetzt, da ich lieber mit dem Namen als mit der mac-Adresse arbeiten möchte.[/li][li]Ganz zum Schluss den Haken beim Controller „OpenHAB MQTT“ / „Enabled“ setzen, daraufhin schickt das ESPEasy-Modul alle Infos zum MQTT-Modul und die Baumstruktur und Variablen werden angelegt.[/li][/ol]
Im IPSymcon darf ich jetzt nicht die Topics und Variablen umbenennen, da sonst die Verknüpfung zum ESPEasy nicht mehr funktioniert. Damit das trotzdem einigermaßen lesbar bleibt, füge ich in der Beschreibung der Variablen jeweils einen sinnvollen Namen hinzu und blende die Info-Spalte ein.
Nun hat man noch das Problem, dass ESPEasy nicht mit booleschen Variablen für die GPIOs arbeitet, sondern mit „0“ bzw. „1“. Das ist für die Visualisierung natürlich ziemlich unpraktisch. Ich habe daher ein eigenes Profil ESPEasySwitch angelegt, in dem ich für den Wert 0 den Text „Aus“ und für den Wert 1 den Text „An“ und die grüne Farbe festgelegt habe.
Dann geht man auf die einzelnen vom Skript angelegten Variablen, wählt als eigenes Profil jeweils „ESPEasySwitch“ aus und klickt neben „Eigene Aktion“ auf „Erstellen“, damit der Button auch bedienbar wird, wenn man ihn in der Visualisierung verwendet.
Hier nun meine eigentlichen Fragen:
Kann ich in der Benutzerkonfiguration einstellen, dass für alle Variablen, die unter einem Topic namens „GPIO“ angelegt werden, automatisch dieses Variablenprofil „ESPEasySwitch“ verwendet wird?
Und kann ich automatisch das Default-Aktionsskript mit dem Inhalt
SetValue($_IPS[‚VARIABLE‘], $_IPS[‚VALUE‘]);
für die neu erstellten Variablen hinzufügen lassen (und natürlich als eigene Aktion in der Variable hinterlegen)?