ich habe vom Symcon Event 2021 aus der Hardware Session noch den NodeMCU herum liegen und möchte mir nun einen Controller für eine LED Beleuchtung bauen. Dabei möchte ich im IPSymcon den Helligkeitswert per MQTT an den NodeMCU übertragen und dieser schaltet dann über den digitalen Ausgang die Helligkeit.
Die Kommunikation vom NodeMCU zu Symcon funktioniert soweit, beim Initialisieren kommen die RGBW Werte an ! Allerdings komme ich nicht weiter in die andere Richtung, wenn ich die Variablen im Webfront verändere passiert auf dem NodeMCU nichts.
und einige Komponenten aus dem Codebeispiel von @Silberstreifen übernommen, leider komme ich dabei nicht weiter ! Muss auf Serverseite dazu noch was konfiguriert werden ?
Hier mal mein Code, kann mir jemand einen Tipp geben ?
danke für die Rückmeldung, wenn man schon abschreibt, sollte man richtig abschreiben
ich habe noch einiges umgebaut, leider funktioniert es noch nicht ! Ich hätte jetzt erwartet, dass im MessageReceived() die empfangene Meldung auf meine DEBUG Variable geschrieben und an Symcon zurück gesendet wird, was aber nicht passiert.
Nach dem Event hatte ich mich auch kurz mit dem Skript versucht und gequält. Dann habe ich die guten Ratschläge befolgt und den NodeMCU mit Tasmota geflashed. Dazu das Modul Tasmota2MQTT von @KaiS.
Dann gibt es kein Halten mehr und du kannst dich mehr mit den tausenden Möglichkeiten befassen als mit dem Skript zu quälen.
@Helmut Ich hatte die WLAN Daten nur für den Beitrag verändert, real bin ich natürlich im Haupt WLAN und die Daten kommen ja auch korrekt im IPS an, nur mit der Gegenrichtung habe ich Probleme
Wenn die Kommunikation in beide Richtungen funktioniert, werde ich mir einen Satz NodeMCU´s bestellen und habe schon ganz viele Ideen was man damit machen kann.
So, ich habe jetzt den Code mal 1:1 übernommen irgendwas funktioniert noch nicht !
Frage: Wenn man im connect() den mqtt_client.subscribe(Topic+"/reset"); absetzt dann müsste dieser doch direkt im MessageReceived() ankommen und per print im Terminal rausgeschrieben werden oder ? Selbst hier bekomme ich keine Message.
im IPS mache ich folgendes:
die TOPICS kommen im MQTT Server Konfigurator an, ich erstelle die Variablen und verändere diese dann im Webfront. Benötige ich jetzt nochmal ein Action Script oder wird so die Variablenänderung auch an den Client gesendet ?
Hast du auch eine Instanz in IPS mit dem reset topic erstellt?
IPS sendet nur die Werte von topics an die Geräte welche dieses topic abboniert haben.
Michael
wenn Du z.B. „Status_R“ an den ESP senden willst, dann musst Du auf dem ESP eine subscribe-Nachricht generieren, damit dieser sich bei IPS als empfangsbereit anmeldet.
MQTT_Client.subscribe(mqtt_topic+"Status_R");
Einfach diese Zeile unter der anderen subscribe-Zeile ergänzen.
In Symcon musst Du dann den Wert mit RequestAction oder im Webfront ändern. Sonst wird nichts gesendet.
So, jetzt funktionierts !
Ich dachte, wenn die Topics veröffentlicht wurden, dann empfängt er diese auch, es hat hier tatsächlich das Abonnieren der Topics gefehlt ! War also ein Anfängerfehler von einem MQTT Neuling
ich habe jetzt im void initialisieren() die Topics veröffentlich und abboniert, dann funktioniert es auch !
Zur Vollständigkeit hier der nun laufende Code,
Vielen Dank für eure Hilfestellung !