NEWS
Function Node Grundlagen Node Red
-
@marco0815 ich kann dir nur raten auf dennEinsatz von function Nodes fast zu verzichten. Du kannst in 95% der Fälle eine Flow grafisch und funktional viel bessere ohne function Nodes machen. Ansonsten ist eine function- Node nichts weiter als herkömmliche JavaScript Programmierung- sprich du programmierst in reiner function Node genauso herkömmlich, wie du im JavaScript Adapter codierst. Ich kann dir nur raten function Nodes nur dann einzusetzen wenn es anders nicht geht. Du machst dir sonst die Vorteile, die ein grafisches Ehtwicklungstool bietet wieder kaputt.
Ansonsten wenn du JavaScript codieren lernen willst gibts genügend Tutorials:
https://www.w3schools.com/js/Auf deutsch, wobei hier einige Seiten fehlen
http://www.w3bai.com/de/js/default.html#gsc.tab=0Als Anfänger rate ich dir aber vom Einsatz von function nodes erst mal ab. Dann lerne lieber JSONATA für den Einsatz in ChangeNodes.
Ansonsten kann ich dich bei einer konkreten Aufgabe gerne unterstützen- egal ob mit und ohne function #nodes.
Ansonsten kann ich dir die Anleitung und die Guides von Steve empfehlen- hier das Kapitel zu function Nodes: https://stevesnoderedguide.com/node-red-functions
Dieser Artikel enthält auch ein Video.
Wichtig ganz generell ist zu wissen, wie ein Objekt aufgebaut ist, wie Du auf das Nachrichtenobjekt zugreifst.
http://www.w3bai.com/de/js/js_objects.html#gsc.tab=0
und in Node-Red heissen die Eigenschaften eines Nachrichtenobjektes halt nicht name und model, sondern payload und topic.
-
Danke für deine Ausführliche Antwort! Grundlegend versuche ich das auch auf dem Function Node zu verzichten(zu komplex, bzw sieht man nicht gleich ohne den Node zu öffnen was dieser eigentlich tut) Nur stehe ich jetzt vor folgenden Problem: Ich habe eine Hoflampe, die wird einmal von einen Bewegungsmelder angesteuert und geht nach 1 Minute wieder aus.
Es sei denn das Dauerlicht ist an dann soll der Schalter den Bewegungsmelder „blocken“ und die Lampe soll nur auf den Schalter reagieren.Die Funktion wie gerade beschrieben habe ich auch gelöst in dem ich den Timer des Bewegungsmelders bei Dauerschalter „True“ aller 10s zurücksetze. (Screenshot folgt)
Nun wurde mir aber erklärt das diese Lösung nicht so gut wäre weil dadurch viele Schreibvorgänge zu Lasten meiner SD-Karte passieren würden. Deswegen habe ich versucht mich mit den function Node auseinander zu setzen.
Zu den JASONATA hast du da auch noch paar links für mich? Warum ist das besser wie das function Node?
-
@marco0815 Sowas macht mit meiner Flow variablen. Du setzt diese ob Dauerlicht oder nicht und wenn Dauerlicht dann blockierst Du deinen Bewegungsmelder mit einer Switch NOde mit dem Inhalt der Variablen. Ansonsten ist Dein Flow ja ok.
In der Change Node oben Flow variable setzen und diese unten in der Switch Node prüfen. Den Trigger kannst Du wegschmeissen.
-
@marco0815 Und JSONATA ist eine mächtige Bibliothek, die Dir in vielen Nodes zur Verfügung steht. Achte auf das große J.
https://docs.jsonata.org/overview
Somit reduziert sich die Notwendigkeit mit JS zu codieren weiter drastisch verringern.
-
@mickym Ach so dann halt 2 Switches hintereinander um die UND Bedingung zu formulieren. In der bestehenden SwitchNode filterst Du wahrscheinlich auf true vom Bewegungsmelder. Dann machst noch eine 2. Switch NOde dahinter mit der Du das Dauerlicht abfragst.
ggf. musst halt in der ChangeNode die payload entsprechend wandeln, dass ein Boolean bei Dauerlicht gesetzt wird.
In der 2. Switch Node hinter der 1. prüfst Du dann ab dass Dauerlicht false ist.
-
@mickym also müsste ich jetzt konkret in meinem Fall die Flow variable im change Node so benennen: Schalter "Dauer Ein" Hoflicht Channel 3 oder verstehe ich da was falsch?
-
@marco0815 Nein aus dem Homematic NOde kommt doch payload true oder false raus, je nachdem ob das Dauerlicht geschaltet ist oder nicht?? Die Flowvariable kannst Du nennen wie Du willst. Kannst es auf Dauerlicht lassen oder DauerlichtHof
Die 2. Switch NOde musst halt nur innerhalb des Bewegungsmelder Astes einbauen, damit das blockiert wird. Die Change NOde musst Du gar nicht weiter verbinden.
-
@mickym ok quasi so:
-
-
@mickym Super Danke für die Hilfe, werde es morgen Abend mal Testen.