Node-Blue AND-Node

Hi,

der And-Node in Node-Blue funktioniert leider nicht so wie ich mir das vorstelle. Da ich nicht von einem Bug ausgehe, muss ich ihn entweder falsch benutzen oder ein allgemeines Verständnisproblem haben. Ich würde mich freuen wenn jemand hier ein wenig Licht in’s Dunkel bringen kann.

Unsere Waschmaschine hängt an einer HM-Steckdose mit Strommesser. Beim Überschreiten einer bestimmten Leistung wird eine Systemvariable gesetzt und beim Unterschreiten des Schwellwertes sollen (abhängig von weiteren Variablen) verschiedene Aktionen ausgeführt werden:

Dies aber nur zum Hintergrund. Um besser zu verstehen wo das Problem liegt, habe ich folgenden vereinfachten Aufbau gewählt:

Beim Überschreiten des Schwellwertes wird die Systemvariable washingmachine_flag korrekt gesetzt. Der zweite Ausgang des Switch-Nodes (“1”) wird nur geschaltet wenn der Schwellwert unterschritten wird. Das habe ich mit dem Debug-Node geprüft. Soweit die Punkte die funktionieren.

Vom And-Node würde ich nun erwarten, dass er nur dann seinen Ausgang schaltet wenn das washingmachine_flag gesetzt ist UND der Switch-Node seinen zweiten Ausgang (“1”) schaltet.
Das ist aber leider nicht der Fall. Der And-Node schaltet seinen Ausgang unmittelbar nachdem das washingmachine_flag gesetzt wurde. Somit agiert er aus meiner Sicht eher als Or-Node.

Ich habe die starke Vermutung, dass das Problem vor dem Monitor sitzt. Aber es will mir schlicht nicht einfallen wo mein Denkfehler ist.

Gruß
Criena

Huhu,

bei der switch-node gehe ich einfach Mal davon aus, dass da ein bool raus kommt (“Return true instead of …”). Ist die Variable auch wirklich ein bool? Ich hatte schon mal das Problem, dass sie ein string war weil ich aus Versehen kein bool rein geschrieben hatte …

– Micha

Hi Micha,

das Häkchen bei Output “true” instead of forwarding the message ist gesetzt, ja.

Gruß
Criena

Hm, ich hab grad auch ein Problem mit AND … bei einem meiner Flows ergibt ‘null’ (also keine Value) AND ‘true’ auch true?

Das klingt nach dem gleichen Symptom. Vielleicht ist es doch ein Bug? @sathya, kannst du etwas dazu sagen?

Hallo @Criena,

der AND-Knoten müsste eigentlich einwandfrei funktionieren (in dem Zuge ist mir aber aufgefallen, dass die Eingangsvariable nicht kopiert wird, was ebenfalls zu Problemen führen könnte - das hat aber nichts mit dem hier beschriebenen Problem zu tun).

Zwei Dinge:

  1. Hast du im Switch-Knoten “Output “false”, too” aktiviert? Falls nicht, wird der Eingang des AND-Knotens niemals auf “false” gesetzt und nur der zweite Eingang entscheided, was passiert.
  2. Du hast eine sogenannte Wettlaufsituation: Es ist nicht definiert, ob “washingmachine_flag” oder der Ausgang des Switch-Knotens zuerst gesetzt wird. Es kann also passieren, dass “waschingmachine_flag” “false” ist, bevor der zweite Switch-Ausgang “true” sendet.

Würde es nicht reichen, den Abfall von “POWER” unter einen Schwellenwert direkt zu detektieren? Mit “Forward changes only” bekommst du ja nur eine Ausgabe, wenn “POWER” zuvor oberhalb dieses Schwellenwertes lag?

Falls du zwei Schwellenwerte benötigst, kannst du den “synchronous”-Knoten verwenden, welcher die Wettlaufsituation verhindert:

Viele Grüße

Sathya

1 Like