NEWS
Shellys ("Alt und Plus") über MQTT Adapter
-
@hotspot_2 Gut also siehst Du wenn Du Deine Debug Nodes anschaust, dass Deine payload keine Eigenschaft lux mehr besitzt - und ausserdem willst Du ja die lux nur aus dem Waschküchenbewegungsmelder oder?
-
@mickym Ja, nur aus dem Waschküchenbewegungsmelder.
-
@hotspot_2 Also dann speichere direkt hinter dem Bewegungsmelderobjekt den Wert in einer Flowvariablen.
Am Besten Du simulierst dann die Ausgabe des Bewegungsmelder objektes der Waschküche - also setze deine Inject-Node dorthin mit einem Objekt was aus dem Bewegungsmelder kommt.
-
@mickym
Das geht mit Function und etwas JavaScript, oder?flow.set("lux_wk", msg.payload.lux);
-
@mickym Nein KEINE function Nodes. Das machst Du alles mit einer Change Node. Du solltest die Variable aber anders nennen - als die Eigenschaft, die Du ihr in der get-Node zuweist.
Also nichts programmieren - wir arbeiten mit NodeRed.
Mach das erst mal so, dass Du Dein Objekt in eine Inject Node verfrachtest und die mqtt-Node simulierst. Du musst die Methodik lernen.
Du hast mir ja so ein Objekt vorher geliefert. Wollen wir das nehmen?
{ "motion": false, "timestamp": 1680969357, "active": true, "vibration": false, "lux": 0, "bat": 100, "tmp": { "value": 18.7, "units": "C", "is_valid": true } }
-
@mickym Stimmt, das ist ja das gewesen. Hab gerade ein Debug Node dran gemacht und bin extra in den Keller gelaufen ;-).
-
@hotspot_2 Nein du sollst nicht mehr in den Keller laufen - wir simulieren direkt in Node Red und Du nutzt eine Inject Node mit diesem Objekt.
-
@mickym Alles gut, ich war nur im Keller da ich eine komplette Meldung vom Bewegungsmelder haben wollte. das mit den Debugs, den Nodes deaktivieren usw. sitzt jetzt komplett bei mir.
Wie kann ich die flow Variabel debuggen? Geht das auch? Ob sie da ist und einen Wert hat wäre interessant zu wissen.
-
Wie kann ich die flow Variabel debuggen? Geht das auch? Ob sie da ist und einen Wert hat wäre interessant zu wissen.
Sehr gut - Du brauchst also weder Programmieren noch function nodes. - Du schaffst das ja.
Den Kontext findest Du im Menü
Du musst aber immer selbst aktualisieren:
Das aktualisiert sich nicht selbst.
-
Passt. Danke!
So, und die kann ich jetzt vergleichen und dann die Werte ändern (lux) und schauen ob das Licht angeht.
-
@hotspot_2 Ja und was vergleichst Du nun in der switch Node?
-
@mickym Stimmt, das haut auch noch nicht hin, glaub ich. Ich darf ja nicht die payload verändern die den Shelly dann aus oder an macht. Da muss ich dann vermutlich auch erst eine Flow Variable draus machen.
-
@hotspot_2 Nein - lass mal - Du hast etwas nicht verstanden. Wenn Du in der getNode das attribut änderst - dann änderst Du nicht die payload - sondern eine msg. Eigenschaft.
Das hier
ist also nicht payload.lux_wk, sondern msg.lux_wk
Wie gesagt ich finde es doof, dass Du beides lux_wk nennst, denn das Eine ist die tatsächliche lux_wk und das andere ist das von Dir gesetzte limit_lux_wk. Das sind 2 Paar Stiefel.
-
@mickym Da hast Du völlig Recht!
So klappt es. Ich teste mal ein paar Werte durch usw. Aber sieht sehr gut aus!
-
@hotspot_2 Ok - nun scheinst Du es verstanden zu haben. - Auch wenn ich Dein Flow trotzdem komplex finde und ich ggf. den Waschküchen BWM komplett eigenständig behandelt hätte, so hast Du nun die Fehler im Flow selbst ausgebessert. Nur wenn Du halt behauptest, es hätte am Anfang alles funktioniert, dann war das sicher nicht richtig.
Aber ich denke, Du hast heute eine Menge gelernt.
-
@mickym Ja, auf jeden Fall. Die herangehensweise und wie man das simuliert und auch durchtestet. Das war für mich so nicht greifbar.
Dankeschön!
-
@hotspot_2 Ok - nun scheinst Du es verstanden zu haben. - Auch wenn ich Dein Flow trotzdem komplex finde und ich ggf. den Waschküchen BWM komplett eigenständig behandelt hätte, so hast Du nun die Fehler im Flow selbst ausgebessert. Nur wenn Du halt behauptest, es hätte am Anfang alles funktioniert, dann war das sicher nicht richtig.
Aber ich denke, Du hast heute eine Menge gelernt.
UND function Nodes und JS Programmierung sind für Dich erst mal tabu. - Dann kannst Du ja gleich wieder Javascript im Javascript Adapter programmieren. - Du wirst sehen, dass Du sehr lange ohne function Nodes auskommst - und kopiere nicht Flows aus dem Netz. Die meisten nehmen function Nodes und fangen wieder das herkömmliche Programmieren an.
Wir können Deinen kompletten Flow in einer Function Node unterbringen. Willst Du das etwa????
Dann lernst Du lieber erst mal JSONATA und Du wirst sehen - wie mächtig das sein kann und wieviel Codeschreiberei Du Dir sparen kannst.
-
mein 2PM Plus als Schalter läuft. Danke Dir.
-
@dos1973 Das nur ACK=False kannst Du direkt in der iobroker-IN Node einstellen bzw. filtern.
-
@mickym Hallo mickym,
ich habe mal ne Frage zum Thema msg und flow Payload. Ich würde gerne den msg. Payload der von dem MQTT in kommt an mehreren Stellen im Flow auslesen bzw. verschiedene Items (alarm, mute usw.) prüfen. Am Ende muss aber ein msg Payload an eine Pushover Node gehen damit eine Nachricht verschickt wird.
Ich würde nun gerne die Payload für den Pushover in flow.* aufbauen und den msg.* Payload nicht verändern. Am Ende dann quasi die flow. zur msg. Payload machen kurz vor der Pushover Node. Geht das? Ist das ein guter Ansatz?
Oder besser mit Variablen arbeiten und am Ende die msg.payload zusammenbauen?
Ich hoffe Du kannst nachvollziehen was ich meine.