NEWS
MQTT Datenpunkte ohne Anzeigewert (IR-Lesekopf, Stromzähler)
-
@bastel2021 sagte in MQTT Datenpunkte ohne Anzeigewert (IR-Lesekopf, Stromzähler):
Kannst vielleicht eventuell mal bei Gelegenheit erklären wie man einen Flow aufbauen könnte um bei einem bestimmten Wert etwas zu schalten?
Na das können wir gleich machen. Das ist nicht schwierig. Du hast ja nun schon verstanden wie Du Werte ausliest oder aus dem JSON extrahierst. Dann überleg Dir was Du machen willst und wir machen das zusammen.
-
@mickym
okay: super
Ich möchte ab einer bestimmten Leistung z.B. 500W einen Aktor z.B. eine Lampe schalten.
Der Hintergrund ist eine zukünftige PV-Anlage. Da möchte ich später bei Leistungsüberschuss Verbraucher einschalten, also ein bischen "Lastmanagement" -
@bastel2021 Gut welcher Wert ist das?
-
Das ist der Wert für die aktuelle Leistung.
-
@bastel2021 Gut und wenn Du immer eine debugNode dahinterklemmst, siehst Du ja die aktuelle Leistung im Debug Fenster.
Diese payload werden wir nun analysieren in dem wir eine Switch Node dahinterklemmen und sagen, dass die Nachricht nur dann durchkommen soll, wenn der Wert über 500 ist.
Nun kommt die Nachricht also erst durch wenn die payload >= 500 ist.
Achte auf die Funktion der switch node.
- Als erstes gibst Du an, welche Eigenschaft Du untersuchen willst (hellblau)
- Dann die Bedingung oder Regel in dem Fall größer gleich (gelb)
- Dann ganz wichtig ist der Datentyp mit dem wir vergleichen (rot unterstrichen)
- den Wert mit dem wir die payload vergleichen (grün)
- An welchem Ausgang die Nachricht geleitet wird (violett)
Wenn Du die Lampe ein und ausschalten willst -
brauchen wir alle Nachrichtenobjekte - also auch die wenn die Leistung (payload) unter 500 ist.Wir schicken also alle Nachrichten unter 500 an Ausgang 2 alle über 500 an Ausgang 1.
Anstelle der Inject Node hängst Du natürlich die Change Node mit dem Flow davor, der Dir Power_current aus Deinem Objekt ausliest.
Hier der Flow zum Import:
So wie heißt denn nun der Datenpunkt mit der Du Deine Lampe schaltest?
-
Der Flow funtioniert. Bei Leistung unter 500W ist die Debug 2 aktiv und über 500W die Debug 1
-
@bastel2021 Genau und nun müssen wir ja nur noch die payload so modifizieren, dass wir an den state Punkt true oder false schicken.
Um eine payload wieder zu ändern nutzen wir wieder eine Change Node und setzen einmal true und einmal false:
Das wars schon. Ist doch total easy.
-
@mickym
sehr sauber und besten Dank! Ganz leicht wenn man weis was man machen muss!
Ich danke dir mal wieder, und muss für heute Schluss machen.
Muss in meinem Flow ein wenig Ordnung schaffen.
Also nochmals Besten Dank! -
@mickym
Guten Abend!
Habe da noch zwei Fragen:
Ich habe jetzt meine Stromwerte gemäß deiner Beschreibung Datenpunkte zerlegen:
Link Text
In das Verzeichnis userdata.0 geschrieben. Top! das hat sehr gut geklappt.
Zwei Daten (Leistung und Arbeit) werden jetzt im History-Adapter aufgezeichnet. Auch das funktioniert.
Jetzt zu meinen Fragen:- Im Log von IoB werden jetzt fleißig Warn-Meldungen geschrieben:
Read-only state "0_userdata.0.objRoot.ED300L .Power_curr" has been written without ack-flag with value "3517.1"
Kann man das beseitigen?
- Kann ich die Ordner Struktur noch verändern:
z.B. anstelle von objRoot sollte Stromzähler stehen
Gruß Günter
-
@bastel2021 Ja - zu Punkt 1. Schreib das mit ACK-Flag oder mach das Read-Only Weg. Das hängt an der iobroker-out Node.
Mit ACK-Flag schreibt man in dem man die iobroker-Out Node den Type auf value ändert.
zu Punkt 2:
In der Subflow Node - kann man den Namen ändern unter dem das Objekt geschrieben wird.
-
@mickym
Danke für die prompte Antwort!!!
Das mit dem Log ist jetzt weg! Perfekt!
Nach der Änderung in der Sufblow-Instanz ist jetzt ein neuer Ordner Stromzähler angelegt worden.
Kann ich den Ordner objRoot einfach löschen? -
@bastel2021 sagte in MQTT Datenpunkte ohne Anzeigewert (IR-Lesekopf, Stromzähler):
Kann ich den Ordner objRoot einfach löschen?
ja
-
@mickym
Super! Danke dir ... mal wieder