Andere Lösung gesucht

Ich habe Max! Fensterkontakte und möchte, dass die Rollos nicht zugehen, wenn die Fenster offen sind.
Dazu habe ich einen SubFlow geschrieben:

Dann habe ich den SubFlow verwendet:

Wie man sieht, habe ich bisher nur einen SubFlow verwendet, die anderen Kontakte müssten genauso verschaltet werden.

Gibt es die Möglichkeit, eine Array von Strukturen anzulegen und eine Struktur enthällt die Parameter für den Subflow. Jetzt müsste man nur noch den SubFlow für alle Strukturen aus dem Array aufrufen.

Das waäre doch viel eleganter und zudem änderungsfreundlicher und dadurch weniger anfällig für Fehler.

Klar, sollte gehen. Hab mir jetzt deinen Flow nicht direkt angeguckt. Aber vom Prinzip her brauchst du ja nur im msg-Objekt einen Wert von “außen” rein geben, den du “innen” durch einen function-Node auswertest:

$struct = [
   "foo" => [1, 2, 3],
   "bar" => [1, 3, 2]
];

if(array_key_exists($msg["wert"], $struct)){
    return $struct[$msg["wert"]];
}

return null;

(code nicht getestet, evtl. ein passende msg-Objekt erzeugen)

Das riecht für mich nach “passthrough”-node.

image

Die Kommandos werden damit nur weitergegeben, wenn die Fenster zu sind.

1 Like

@pmayer, vielen Dank, das klingt schon vielversprechend. Ich habe nur mit $msg Objekten noch nichts programmiert.
Gibt es eine Anleitung oder ein Manual mit Beispielen?

1 Like

@job , das ist eine gute Idee.

Ich könnte das Signal Auf/Ab (Timer), kommt vom timer-Knoten, über passthrough direkt weiterleiten und die Fensterkontakte als Enable verdrahten.

Die Idee von @pmayer finde ich aber auch gut. Doch dazu ist der Aufwand größer.

1 Like

Ich hab mich da auch an den Info’s rechts im Tab und an dem was ich über msg-Objekte aus node-red kenne langehangelt.
Wenn man einmal drin ist, ist es gar nicht mehr schwer.

Btw: msg-Array wäre richtiger in node-blue. In node-red ist es ein msg-Objekt.

Danke, hier steht so einiges.

https://nodered.org/docs/user-guide/