NEWS
MQTT Import IOBRoker ->ESPEasy?
-
Hallo,
möchte Werte aus dem IOBroker per MQTT an ein ESP8266 mit ESPEasy zurück übertragen und sie am Ende auf einem Display anzeigen.
Leider werden die Werte nicht wieder zurück übertragen und bin mir unsicher wo es hackt.
Im IObroker wurden die Values (espA-espD) über MQTT angelegt und ich schreibe per Blockly den Sensor Value auf espA.
Im MQTT Import bleibt der Value 0:
Probiere so etwas zum ersten mal und könnt ihr mir evtl. sagen wie ich testen kann wo es hackt (Im IOBroker, MQTT Adapter oder im ESP8266).
Vielen Dank!
P.S.: Ja dies macht so gerade wenig Sinn, da ich im Kreis die Werte vom ESP zum IOBRoker und wieder zum ESP schicke. Möchte später aber die Werte im IOBRoker flexibel bearbeiten können, deswegen dieser Ansatz.
-
habe es mitlerweile geschafft Werte im ESPEasy Interface und auch auf dem Display anzuzeigen.
Jedoch hat das irgendwie etwas von einer "One-Shot" Geschichte. Die DP im IObroker werden schön aktualisiert alle 5 oder 10 Sekunden, aber über MQTT ist nichts mehr zu sehen. die Werte stehen still. Gibt es dort noch etwas in der Instanz oder im Import einzustellen? Der Import verwendet ja die gleichen MQTT Verbindung wie der Export der Messung. Hier steht die Aktualisierung auf 5 Sekunden.
Das Blockly hat mal ein paar Warnungen rausgeworfen, da ich auf die vom MQTT Import angelegten DP (espA etc.) mit Zahlenwerten geschrieben habe. Nachdem ich jetzt in String konvertiere ist auch das weg, löst aber nicht die Aktualisierungsproblematik.
Jemand eine Idee?
Thx
-
@Pete0815 Hallo,
wie hast du es geschaft, das der IO-Broker die Werte an den ESP übergibt? -
@Amicia
Eine 100% funktionierende Importlösung habe ich nicht hinbekommen, aber auch nicht mehr gebraucht d.h. weiter dran probiert. Der MQTT Import auf dem ESP hat immer nur für eine einmalige Datenübertragung funktioniert z.B. nach Reboot. Zyklisch oder bei Änderung hakte es heftig.Ich übertrage Messwerte vom ESPEasy zum IObroker "normal" über MQTT. Sollte es sich um Switche handeln, wandel ich diese per ALiAS von Variablen in Logikwerte um sie direkt in Blocklys verarbeiten zu können.
Ich gebe derzeit nur Logikwerte/Zustände vom IOBroker an den ESP zurück und diese Zustände sind auch gleichzeitig GPIOs des ESP. Ich schalte also vom IObroker z.B. eine grüne LED am ESP für den Betriebszustand EIN.
Dazu braucht man kein MQTT Import am ESP und kann direkt per MQTT schalten, wenn man die entsprechende MQTT Struktur für die GPIOs im IOBroker anlegt und nutzt. Den Datenpunkt den man vom ESP per MQTT bekommt direkt zu schalten funktioniert nicht.
-
@Pete0815
Danke für die Antwort. Da werde ich mal weiter forschen, wie ich das Display vom IO-Broker aus ansteuern kann. -
Ich habe ein funtkionierendes Display. Der einzige Haken ist, dass sich nur Zahlenwerte übertragen lassen. Es gibt keine Möglichkeit einen String zu übertragen. Hoffe da findet sich noch eine Möglichkeit...
-
@dragon
Man kann schon einfach Daten ins ESPEasy schaufeln. Und zwar mit dem CMD Befehl von ESPEasy.
Je nachdem in welches Plugin du es schickst, gehen auch komplette String.
Hier das Beispiel mit einem von ESPEasy unterstützten LCD Display:
Du kannst die Commands auch in der Weboberfläche von ESPEasy unter tools ausprobieren.
Das cmd wird also direkt von dem jeweiligen Plugin angenommen. Weil das LCD Strings annimmt, kann man so in 10 Minuten ein Wifi Display zusammenstecken.Du kannst sogar generische Events in einen cmd schreiben.
Zum Beispiel diese String im iobroker/MQTT
"event,Power#Anfrage=42"Erzeugt einen Event im ESPEasy. Den kannst du zum Beispiel mit den tollen ESPEasy Rules verarbeiten und in eine Dummy-Variable schreiben.
Rule:
on Power#Anfrage do
TaskValueSet 6,1,%eventvalue%
endonObwohl der Thread schon alt ist, hilft es vielleicht etwas.
-
Und dann gibt es natürlich noch das MQTT Import Plugin
Da habe ich wirklich eine weile gebraucht bis ich die Konfiguration verstanden haben. Hier ein Beispiel:
Je nachdem wie viel Energie aus der PV übrig ist, schreibt ein IOBroker Script das in den State "Power".
Das ESPEasy hat sich mit dem MQTT Import das Topic subscribed und schreibt es in die gleichnamige Variable "Power". -
@stefanried Hallo Stefan, habe gerade deine Antworten hier gelesen. Ich schlage mich schon ein paar Tage mit dem Problem herum. Ich habe einen ESP mit ESPEasy geflachst und eine 0,96" Display angeschlossen. Auf dem Display möchte ich den aktuellen Wert Verbrauchswert und meinen PV Überschusses anzeigen. Dazu habe ich im MQTT Plugin die Datenpunkte beide eingetragen. Die werte Werden aber nur nach dem Neustart einmal übernommen. Das Thema mit dem CMD Befehl hatte ich schon mal irgendwo gelesen, allerdings nicht verstanden, wie ich das konkret umsetzen kann. Zum Testen hatte ich einfach mal den analogen Eingang des ESP beschaltet und den Spannungswert über das Analog Input Plugin ausgelesen und angezeigt, geht prima. Aber einen Datenpunkt aus dem iobroker zu übernehmen und auf dem Display anzuzeigen habe ich noch nicht geschafft.
Kannst Du mir vielleicht dazu noch ein paar Tips geben, wie ich es realisiert bekommen?
Danke und viele Grüße
Ingo
-
@bastler Da ich gerade auch eine ganze Weile daran gebastelt habe, hier mal meine Lösung für MQTT:
-Vorher wie beschrieben ESPHome flashen, Display einbinden. Ich habe es dann so gemacht mit meinem OLED:
Im Topic von MQTT liegen meine Daten, ich zeige es am Beispiel von dem Datenpunkt yieldtotal, welche bei mir unter 0_userdata/0/PV_Berechnung/ liegt.
Im MQTT Adapter muss nichts weiter eingestellt werden außer Server, Port, User, Passwort:
Einstellungen MQTT Import. Der dort vergebene Name für den Adapter und die Variable wird dann im Display aufgerufen.:
Einstellungen Display:
Hoffentlich kann ich somit jemandem helfen. Die Datenpunkte müssen natürlich in einem gemeinsamen topic liegen. Bei mir noch ein Screenshot vom MQTT Explorer, damit wir von dem gleichen reden: