NEWS
PCF8574 über MQTT schalten?
-
Hi
habe hier aus dem Forum erfahren, wie man GPIOs eines D1 Mini (Esp8266) direkt über MQTT schalten kann.
Nun habe ich an dem D1 Mini noch eine Port Expansion PCF8574 angeschlossen (I2C) und dort sind u.a. LEDs angeschlossen, die ich gerne über MQTT schalten möchten.In Anlehnung an die GPIO Struktur habe ich eine PCF-Struktur in IOBroker angelegt, aber leider werden die LEDs nicht geschaltet.
Hat dies schon jemand per MQTT umgesetzt bzw. weiß wie dies funktioniert?
-
@Pete0815
ich habe das bei Porterweiterung mit PCF8574 so gelöst:
http://IP des ESP8266/control?cmd=pcfgpio,6,1 für "Ein"
und http://IP des ESP8266/control?cmd=pcfgpio,6,0 für "Aus"
oder bei MCP23017
http://IP des ESP8266/control?cmd=mcpgpio,6,1 für "Ein"
und http://IP des ESP8266/control?cmd=mcpgpio,6,0 für "Aus"
habe allerdings keine Objekte angelegt, da ich nur LEDs ansteuere. -
@Pete0815 Welche Software wurde denn installiert? Tasmota?
-
@MCU
Ich habe den ESP8266 mit ESP Easy geflasht. -
Auf dem ESP läuft bei mir ESPEasy und über MQTT habe ich es nicht hinbekommen, was auch an meiner angelegten Struktur im IOBroker liegen kann. Habe ein Beispiel gesehen wo dies jemand mit PCF8574 über MQTT schaltet allerdings über Openhab. Der Code sieht für mich ähnlich wie die aufgebaute IObroker-struktur aus.
Da ich aber erstmal weiter kommen wollte, habe ich das aktive Schalten auch über http gelöst (Da der PCF mehr Strom bei geschalteten GND verträgt ist bei mir 0=EIN und 1=AUS). Allerdings fehlte mir noch die Statusinformation der PCFGPIOs im IObroker. Hierfür könnte man ein Switch Input als Device in ESPEasy anlegen und so die Information per MQTT übertragen. Ich habe allerdings für die Anzahl PCFGPIOs die auch mit LEDs bei mir bestückt sind nicht mehr so viele Devices frei im ESPEasy (Ein Mod um die Device-Anzahl zu erhöhen fand ich da Non-Standard nicht so geschickt).
Nun übermittle ich die Statusinformationen der PCFGPIOs per Rule im ESPEASY über MQTT:
on System#Boot do Monitor,pcf,1 //aktiviert die Monitoringfunktion des pcf Plugins Monitor,pcf,2 Monitor,pcf,4 Monitor,pcf,5 Monitor,pcf,7 Monitor,pcf,8 pcfgpio,1,1 //gewünschter Initialzustand nach Boot-Reboot pcfgpio,2,0 //gewünschter Initialzustand nach Boot-Reboot pcfgpio,4,0 //gewünschter Initialzustand nach Boot-Reboot pcfgpio,5,1 //gewünschter Initialzustand nach Boot-Reboot pcfgpio,7,1 //gewünschter Initialzustand nach Boot-Reboot pcfgpio,8,0//gewünschter Initialzustand nach Boot-Reboot endon //PCFGPIO Zustände nach Boot Reboot per MQTT mitteilen on MQTT#Connected do Publish,%sysname%/PCFGPIO/P1Gruen,[plugin#pcfgpio#pinstate#1] Publish,%sysname%/PCFGPIO/P2Rot,[plugin#pcfgpio#pinstate#2] Publish,%sysname%/PCFGPIO/P4BlauET1,[plugin#pcfgpio#pinstate#4] Publish,%sysname%/PCFGPIO/P5BlauET2,[plugin#pcfgpio#pinstate#5] Publish,%sysname%/PCFGPIO/P7GelbAT1,[plugin#pcfgpio#pinstate#7] Publish,%sysname%/PCFGPIO/P8GelbAGarten,[plugin#pcfgpio#pinstate#8] endon //PCFGPIO Zustände bei jeder Änderung per MQTT mitteilen on pcf#1 do Publish,%sysname%/PCFGPIO/P1Gruen,[plugin#pcfgpio#pinstate#1] endon on pcf#2 do Publish,%sysname%/PCFGPIO/P2Rot,[plugin#pcfgpio#pinstate#2] endon on pcf#4 do Publish,%sysname%/PCFGPIO/P4BlauET1,[plugin#pcfgpio#pinstate#4] endon on pcf#5 do Publish,%sysname%/PCFGPIO/P5BlauET2,[plugin#pcfgpio#pinstate#5] endon on pcf#7 do Publish,%sysname%/PCFGPIO/P7GelbAT1,[plugin#pcfgpio#pinstate#7] endon on pcf#8 do Publish,%sysname%/PCFGPIO/P8GelbAGarten,[plugin#pcfgpio#pinstate#8] endon
@diet68NE dieses pcf Plugin in ESPEasy ist auch gleichzeitig mit dem mcp Plugin eingefügt worden. Ist halt die syntax der Rule auf mcp anzupassen, aber sonst geht das genauso. Habe meine Lösung aus MCP und PCF Beispielen abgeleitet.
-
@Pete0815 Welche Version von ESPeasy nutzt du?
Möchte das auch mal nutzen und probieren. Wollte es auf einen D1Mini installieren!Vielen Dank.
-
für den D1 mini nutze ich die "ESP_Easy_mega_20200829_normal_ESP8266_4M1M"
glaube gerade ist auch eine 20200913 raus aber normal ist das egal
-
http://IP des ESP8266/control?cmd=pcfgpio,6,1 für "Ein"
Wie wäre das im Javascript anzuwenden wenn ich es z.b. mittels virtuellen Taster aufrufen möchte, oder wie verwendet ihr es?