NEWS
[gelöst] Lampe nur einschalten wenn...
-
Guten Tag zusammen
Ich möchte vom Javascript-Adapter auf Node-Red umstellen und stehe nun bei einer Logik auf dem Schlauch:Ich möchte, dass ein Nachtlicht nur einschaltet, wenn der Schalter "Ist dunkel" auf true ist und der Schalter "Brennt Licht" auf false ist. - sonst nicht.
Kann mir jemand eine Hilfestellung geben, wie ich das in Node-Red machen kann?
Besten Dank im Voraus &Gruss
Matt -
@matt77che Einfach die Zustände im Flow Kontext speichern und die beiden Zustände über Switch Nodes filtern (2 in serie) oder alternativ über iobroker-get Nodes in das Nachrichtenobjekt mit aufnehmen und dann über Switch Nodes die entsprechende Eigenschaften (also 2 in Serie) oder über JSONATA in einer Switch Node abfragen.
Ich würde wahrscheinlich letzteres machen. Kommt drauf an, ob die beiden Zustände (dunkel und Licht aus) bereits in einem Datenpunkt gespeichert sind oder erst ermittelt werden müssen.
Wenn man Dunkelheit im Flow selbst ermitteln will - bietet sich der Lightscheduler an - für noch mehr Funktionalität die cronplus Node. -
Vielen Dank für deine Erklärung - Da ich aber ein Neuling in Node-Red bin und nicht gerade der ultimative Programmierer stehe ich noch immer wie der Esel vor dem Berg....
Die beiden abgefragten States sind boolean Datenpunkte in den Objekten.
Ich glaube letzteres würde ich auch versuchen wollen;
In das Nachrichtenobjekt mit aufnehmen? - Wie mache ich das?Soory - mein Kopf glüht und ist verwirrt...
-
@matt77che Gut - dann nähern wir uns also der Lösung.
Du hast also 2 Datenpunkte - die einmal den Status dunkel=true und einem Licht aus= dunkel beinhalten?
Dann soll, wenn es entweder dunkel wird (also getriggert wird) - geprüft werden ob das Licht aus ist und das Nachtlicht eingeschaltet bzw. ausgeschaltet werden?
Desweiteren, soll wenn das Licht ausgeschaltet wird (also getriggert wird) geprüft werden, ob es das dunkel ist und das Licht eingeschaltet werden?
Ich gehe mal davon aus, dass beide Datenpunkte in 0_userdata.0 sind? - Ich erstelle Dir mal einen Flow.
-
@mickym
Genau ich habe die Datenpunkte:
Ist dunkel > true/fale (datenpunkt wird über eine Astro-Funktion gesteuert)
Licht im Wohnzimmer an > true/falseJa, die Datenpunkte liegen im 0_userdata.0
Das Nachtlicht soll brennen, wenn der Datenpunkt ist dunkel = true und Licht imWZ an =false
Sonst jedoch nicht - Das Nachtlicht ist jedoch nicht der Datenpunkt "Licht im Wohnzimmer", sondern ein anderes. -
@matt77che Ok dann mach ich Dir mal einen Flow mit diesen Datenpunkten
-
@matt77che sagte in Lampe nur einschalten wenn...:
Sonst jedoch nicht - Das Nachtlicht ist jedoch nicht der Datenpunkt "Licht im Wohnzimmer", sondern ein anderes.
Das spielt keine Rolle - es kommt true für Einschalten und false für Ausschalten aus dem Flow und das schickst Du dann in den Datenpunkt der das Nachtlicht ein-/ausschaltet.
-
Es sind insgesamt drei Objekte
Ist dunkel?
Licht im Wohnzimmer
Nachtlicht > soll brennen wenn es dunkel ist und im Wohnzimmer kein Licht brennt -
@matt77che Ja schon verstanden.
-
@mickym
genau -
@mickym
für einen solchen Flow wäre ich dir dankbar -
Hier zum Import - die Debug Nodes kannst natürlich wieder löschen - dienen nur zur Illustration. Ich habs mit einer Change Node direkt ohne switch Node gemacht.
Hier zum Import:
Ausserdem habe ich versucht die Nodes entsprechend aussagekräftig zu benennen.
Die payload zum Schalten des Nachtlichts wird also direkt über die Verknüpfung der beiden Nachrichteneigenschaften dunkel und licht erstellt (die dann wenn licht aus und dunkel ist, true ist - sonst false).
Wenn Du kein JSONATA verwenden willst - sondern nur über die Logik der Nodes steuern willst dann musst Du halt in einzelne Nodes auflösen - nur zur Demo.
-
@mickym
super - vielen Dank dafür, funktioniert genau so wie es soll.Schaue mir die einzelnen nodes noch an, wie du es gemacht hast & vielen Dank für deine Erklärungen!
-
@matt77che So falls Du kein JSONATA nutzen willst - hier mal eine Version - in der die Logik rein mit setzen der payload und filtern der verschiedenen Fälle über switch Nodes realisiert ist:
Auch hier habe ich versucht über die Namen, das einigermassen verständlich zu erklären
hier der Import: -
Vielen Dank - ist doch irgendwie ganz was anderes als die Blockly im Java-Scripte adapter
Danke dass du dir die Zeit genommen hast um mir weiterzuhelfen!
-
@matt77che Na ich hoffe Du bist positiv überzeugt.
- Ich verstehe ja auch nicht, warum gerade Anfänger immer alle zum Puzzeln überredet werden.