- Home
- Deutsch
- Skripten / Logik
- Node-Red
- 2 Kontaktzustände gleichzeitig abfragen
2 Kontaktzustände gleichzeitig abfragen
-
@hpgo
per Scriptvar IDsensor1 = "DP von Sensor 1"; var IDsensor2 = "DP von Sensor 2"; var Ergebnis = "neuer DP für das Ergebnis"; // dieser manuell anlegen mit string var idTest = [IDsensor1, IDsensor2]; on({id: idTest}, function(){ var sensor1 = getState(IDsensor1).val; var sensor2 = getState(IDsensor2).val; if (sensor1 == false && sensor2 == false) { setState(Ergebnis, "versperrt"); } else if (sensor1 == false && sensor2) { setState(Ergebnis, "unversperrt"); } else if (sensor1 && sensor2) { setState(Ergebnis, "offen"); } });
-
Vielen lieben Dank, habe den ersten Vorschlag von @mickym übernommen.
Danke dafür!
-
@mickym sagte in 2 Kontaktzustände gleichzeitig abfragen:
Ich würde keine Verknüpfungen machen - insbesondere dann noch mit diesen Logik-Nodes.
Hier mal eine einfache Version mit Standardmitteln
[ { "id": "c2e6ec09e43e9963", "type": "inject", "z": "8e615e82aa5ca254", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "reedhaustür", "payload": "true", "payloadType": "bool", "x": 160, "y": 220, "wires": [ [ "a125e6b73596db9d" ] ] }, { "id": "56c606c4911edf67", "type": "inject", "z": "8e615e82aa5ca254", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "reedhaustürriegel", "payload": "true", "payloadType": "bool", "x": 140, "y": 320, "wires": [ [ "a125e6b73596db9d" ] ] }, { "id": "1125ed5c6b7a3a36", "type": "inject", "z": "8e615e82aa5ca254", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "reedhaustür", "payload": "false", "payloadType": "bool", "x": 160, "y": 260, "wires": [ [ "a125e6b73596db9d" ] ] }, { "id": "3cf934311a4c9004", "type": "inject", "z": "8e615e82aa5ca254", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "reedhaustürriegel", "payload": "false", "payloadType": "bool", "x": 140, "y": 360, "wires": [ [ "a125e6b73596db9d" ] ] }, { "id": "a125e6b73596db9d", "type": "join", "z": "8e615e82aa5ca254", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "2", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 390, "y": 280, "wires": [ [ "1bfd67d784b4d1aa", "6882d7837f45f43d" ] ] }, { "id": "1bfd67d784b4d1aa", "type": "debug", "z": "8e615e82aa5ca254", "name": "Haustür Statusobjekt", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 680, "y": 100, "wires": [] }, { "id": "492b5abd04e6b495", "type": "change", "z": "8e615e82aa5ca254", "name": "Riegeloffen/Türzu", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "1", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 930, "y": 280, "wires": [ [ "f57d1411b6bc2201" ] ] }, { "id": "8498e01c37c203fa", "type": "change", "z": "8e615e82aa5ca254", "name": "Riegelzu/Türzu", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 920, "y": 180, "wires": [ [ "28c26f06120965e3" ] ] }, { "id": "d9be4a146d42a968", "type": "change", "z": "8e615e82aa5ca254", "name": "Riegeloffen/Türoffen", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "2", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 920, "y": 380, "wires": [ [ "95064fd43a97c05e" ] ] }, { "id": "ff63d576864351f5", "type": "comment", "z": "8e615e82aa5ca254", "name": "Tür geschlossen und versperrt = grün", "info": "", "x": 930, "y": 140, "wires": [] }, { "id": "e862a84c4eaae633", "type": "comment", "z": "8e615e82aa5ca254", "name": "Tür offen und nicht versperrt = rot", "info": "", "x": 910, "y": 340, "wires": [] }, { "id": "e7be8078a052091b", "type": "comment", "z": "8e615e82aa5ca254", "name": "Tür geschlossen und nicht versperrt = blau", "info": "", "x": 940, "y": 240, "wires": [] }, { "id": "28c26f06120965e3", "type": "debug", "z": "8e615e82aa5ca254", "name": "Riegelzu/Türzu", "active": true, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 1160, "y": 180, "wires": [] }, { "id": "f57d1411b6bc2201", "type": "debug", "z": "8e615e82aa5ca254", "name": "Riegeloffen/Türzu", "active": true, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 1170, "y": 280, "wires": [] }, { "id": "95064fd43a97c05e", "type": "debug", "z": "8e615e82aa5ca254", "name": "Riegeloffen/Türoffen", "active": true, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 1180, "y": 380, "wires": [] }, { "id": "6882d7837f45f43d", "type": "switch", "z": "8e615e82aa5ca254", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "jsonata_exp", "v": "payload = {\"reedhaustür\":true,\"reedhaustürriegel\":true}", "vt": "jsonata" }, { "t": "jsonata_exp", "v": "payload = {\"reedhaustür\":true,\"reedhaustürriegel\":false}", "vt": "jsonata" }, { "t": "jsonata_exp", "v": "payload = {\"reedhaustür\":false,\"reedhaustürriegel\":false}", "vt": "jsonata" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 570, "y": 280, "wires": [ [ "8498e01c37c203fa" ], [ "492b5abd04e6b495" ], [ "d9be4a146d42a968" ] ] } ]
Falls Dir simple Vergleiche nicht taugen, wie in dem Flow:
kannst Du auch ohne Logiknodes - sowas mit boolescher Logik implementieren.
ich habe das versucht nachzubauen, wenn ich in dem Join als Beispiel noch 2 weitere Kontakte( zb Fenster) hinzufüge, funktioniert es nicht mehr. In der switch node kann ich die verschieden Fenster und Türen scheinbar nicht separat auswerten.
-
@typ1er doch das sollte gehen. Poste mal dein Objekt, das man es in eine inject-Node importieren gehen kann und deine Switch-node wenn man übrigens nur überprüfen möchte, ob irgendein Kontakt offen ist, reduziert man das Objekt wieder zu einem Zustand.
Wenn Du generell - so mache ich das auch alle Zustände als booleans hast und die alle in einem Objekt sammelst, kannst Du die ebenfalls einfach auswerten.
Diese 4 Nodes werten alle Booleans eines Objektes mit AND oder OR - als Change oder Switch Nodes aus.
Hier zum Import:
[ { "id": "60816370026e2141", "type": "switch", "z": "f270af8063daa8ba", "name": "AND?", "property": "$reduce(payload.*,function($i, $j){$i and $j})", "propertyType": "jsonata", "rules": [ { "t": "true" }, { "t": "false" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 370, "y": 380, "wires": [ [], [] ], "info": "# All properties of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n \"Office\": true,\n \"Bedroom\": true,\n \"Living Room Balcony\": true,\n \"Living Room Right Window\": true,\n \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n \"Office\": true,\n \"Bedroom\": false,\n \"Living Room Balcony\": true,\n \"Living Room Right Window\": true,\n \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n \"Büro Balkon\": true,\n \"Schlafzimmer Balkon\": true,\n \"Wohnzimmer Balkon\": true,\n \"Wohnzimmer rechtes Fenster\": true,\n \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n \"Büro Balkon\": true,\n \"Schlafzimmer Balkon\": true,\n \"Wohnzimmer Balkon\": true,\n \"Wohnzimmer rechtes Fenster\": false,\n \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false." }, { "id": "71026038ebb3ee0d", "type": "change", "z": "f270af8063daa8ba", "name": "AND ?", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$reduce(payload.*,function($i, $j){$i and $j})", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 370, "y": 420, "wires": [ [] ], "info": "# All Property of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n \"Office\": true,\n \"Bedroom\": true,\n \"Living Room Balcony\": true,\n \"Living Room Right Window\": true,\n \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n \"Office\": true,\n \"Bedroom\": false,\n \"Living Room Balcony\": true,\n \"Living Room Right Window\": true,\n \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n \"Büro Balkon\": true,\n \"Schlafzimmer Balkon\": true,\n \"Wohnzimmer Balkon\": true,\n \"Wohnzimmer rechtes Fenster\": true,\n \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n \"Büro Balkon\": true,\n \"Schlafzimmer Balkon\": true,\n \"Wohnzimmer Balkon\": true,\n \"Wohnzimmer rechtes Fenster\": false,\n \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false." }, { "id": "82b0cad57098c8eb", "type": "switch", "z": "f270af8063daa8ba", "name": "OR?", "property": "$reduce(payload.*,function($i, $j){$i or $j})", "propertyType": "jsonata", "rules": [ { "t": "true" }, { "t": "false" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 530, "y": 380, "wires": [ [], [] ], "info": "# Only one or more properties of an object need to be true.\n\n Only one or more properties of an object need to be true.\n\n`{\n \"Office\": false,\n \"Bedroom\": false,\n \"Living Room Balcony\": false,\n \"Liviueng Room Right Window\": false,\n \"Living Room Left Window\": false\n}`\n\nis false,\n\n`{\n \"Office\": false,\n \"Bedroom\": true,\n \"Living Room Balcony\": false,\n \"Living Room Right Window\": false,\n \"Living Room Left Window\": false\n}`\n\nis true.\n\n# Mindestens eine Eigenschaft des Objektes muss wahr sein.\n\nMindestens eine Eigenschaft des Objektes muss wahr sein.\n\n`{\n \"Büro Balkon\": false,\n \"Schlafzimmer Balkon\": false,\n \"Wohnzimmer Balkon\": false,\n \"Wohnzimmer rechtes Fenster\": false,\n \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt false,\n\n`{\n \"Büro Balkon\": false,\n \"Schlafzimmer Balkon\": true,\n \"Wohnzimmer Balkon\": false,\n \"Wohnzimmer rechtes Fenster\": false,\n \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt true (wahr)." }, { "id": "663edf9a2bddfec1", "type": "change", "z": "f270af8063daa8ba", "name": "OR ?", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$reduce(payload.*,function($i, $j){$i or $j})", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 530, "y": 420, "wires": [ [] ], "info": "# Only one or more properties of an object need to be true.\n\n Only one or more properties of an object need to be true.\n\n`{\n \"Office\": false,\n \"Bedroom\": false,\n \"Living Room Balcony\": false,\n \"Liviueng Room Right Window\": false,\n \"Living Room Left Window\": false\n}`\n\nis false,\n\n`{\n \"Office\": false,\n \"Bedroom\": true,\n \"Living Room Balcony\": false,\n \"Living Room Right Window\": false,\n \"Living Room Left Window\": false\n}`\n\nis true.\n\n# Mindestens eine Eigenschaft des Objektes muss wahr sein.\n\nMindestens eine Eigenschaft des Objektes muss wahr sein.\n\n`{\n \"Büro Balkon\": false,\n \"Schlafzimmer Balkon\": false,\n \"Wohnzimmer Balkon\": false,\n \"Wohnzimmer rechtes Fenster\": false,\n \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt false,\n\n`{\n \"Büro Balkon\": false,\n \"Schlafzimmer Balkon\": true,\n \"Wohnzimmer Balkon\": false,\n \"Wohnzimmer rechtes Fenster\": false,\n \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt true (wahr)." }, { "id": "fc873ce0cd52bf75", "type": "change", "z": "f270af8063daa8ba", "name": "NOT", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$not(payload)\t", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 690, "y": 400, "wires": [ [] ] } ]
-
die 2 Kontakte für ein Fenster klappen so recht gut, wenn ich jetzt in der join node die 2 Fenster und als Beispiel die Rollladenposition zusammenfüge, geht die Split Node nicht mehr, wo ist da der Fehler?
[ { "id": "0e6696ffc08cbc06", "type": "comment", "z": "063e8e832d4bac35", "name": "Sensor Oben (links)", "info": "", "x": 270, "y": 120, "wires": [] }, { "id": "d7ad700377413412", "type": "comment", "z": "063e8e832d4bac35", "name": "Sensor Unten (links)", "info": "", "x": 260, "y": 220, "wires": [] }, { "id": "3110eb1427fd4ca7", "type": "comment", "z": "063e8e832d4bac35", "name": "Sensor Oben (rechts)", "info": "", "x": 260, "y": 320, "wires": [] }, { "id": "07fac73d96cc64f9", "type": "comment", "z": "063e8e832d4bac35", "name": "Sensor Unten (rechts)", "info": "", "x": 260, "y": 420, "wires": [] }, { "id": "cf53ff6c9887d576", "type": "ioBroker in", "z": "063e8e832d4bac35", "name": "", "topic": "zigbee.0.00158d0001fd5296.opened", "payloadType": "value", "onlyack": "update", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 210, "y": 80, "wires": [ [ "9ecf0357e409e4fe" ] ] }, { "id": "9b76565cec5ff675", "type": "ioBroker in", "z": "063e8e832d4bac35", "name": "", "topic": "zigbee.0.00158d0001de8e2d.opened", "payloadType": "value", "onlyack": "update", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 210, "y": 180, "wires": [ [ "50312d05e00b12df" ] ] }, { "id": "b5650d3eea88a349", "type": "ioBroker in", "z": "063e8e832d4bac35", "name": "", "topic": "zigbee.0.00158d00022bd6b1.opened", "payloadType": "value", "onlyack": "update", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 210, "y": 280, "wires": [ [ "1d30367204c6967c" ] ] }, { "id": "b4f859a0b3efd30f", "type": "ioBroker in", "z": "063e8e832d4bac35", "name": "", "topic": "zigbee.0.00158d00022bd653.opened", "payloadType": "value", "onlyack": "update", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 210, "y": 380, "wires": [ [ "b880b89a4cbd44cb" ] ] }, { "id": "1d30367204c6967c", "type": "change", "z": "063e8e832d4bac35", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Fenster2oben", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 490, "y": 280, "wires": [ [ "88f8f0d3407a16ea" ] ] }, { "id": "b880b89a4cbd44cb", "type": "change", "z": "063e8e832d4bac35", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Fenster2unten", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 490, "y": 380, "wires": [ [ "88f8f0d3407a16ea" ] ] }, { "id": "50312d05e00b12df", "type": "change", "z": "063e8e832d4bac35", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Fenster1unten", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 490, "y": 180, "wires": [ [ "ef1772d95f6d4f02" ] ] }, { "id": "9ecf0357e409e4fe", "type": "change", "z": "063e8e832d4bac35", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Fenster1oben", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 490, "y": 80, "wires": [ [ "ef1772d95f6d4f02" ] ] }, { "id": "88f8f0d3407a16ea", "type": "join", "z": "063e8e832d4bac35", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "2", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 830, "y": 320, "wires": [ [ "6b72403eebc7a162", "9c42920aa2d032db" ] ] }, { "id": "6b72403eebc7a162", "type": "debug", "z": "063e8e832d4bac35", "name": "msg", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "true", "targetType": "full", "statusVal": "payload", "statusType": "auto", "x": 930, "y": 220, "wires": [] }, { "id": "c808fbfd9d8b50a9", "type": "ioBroker in", "z": "063e8e832d4bac35", "name": "", "topic": "zwave2.0.Node_004.Multilevel_Switch.currentValue", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 220, "y": 540, "wires": [ [ "1d423f5fc521a92c" ] ] }, { "id": "1d423f5fc521a92c", "type": "change", "z": "063e8e832d4bac35", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "currentValue", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 540, "wires": [ [] ] }, { "id": "9c42920aa2d032db", "type": "switch", "z": "063e8e832d4bac35", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "jsonata_exp", "v": "payload = {\"Fenster2oben\": true,\"Fenster2unten\": false} ", "vt": "jsonata" }, { "t": "jsonata_exp", "v": "payload = {\"Fenster2oben\": false,\"Fenster2unten\": false} ", "vt": "jsonata" }, { "t": "jsonata_exp", "v": "payload = {\"Fenster2oben\": true,\"Fenster2unten\": true} ", "vt": "jsonata" }, { "t": "jsonata_exp", "v": "payload = {\"Fenster2oben\": false,\"Fenster2unten\": true} ", "vt": "jsonata" } ], "checkall": "false", "repair": false, "outputs": 4, "x": 990, "y": 320, "wires": [ [ "9b040f37641b3023" ], [ "298920d373a42660" ], [ "487ea6c4bad33074" ], [ "40bf1833ce4dafce" ] ] }, { "id": "9b040f37641b3023", "type": "change", "z": "063e8e832d4bac35", "name": "setze payload = zu", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "zu", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1230, "y": 260, "wires": [ [ "db55548158e7cf46" ] ] }, { "id": "298920d373a42660", "type": "change", "z": "063e8e832d4bac35", "name": "setze payload = entriegelt", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "entriegelt", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1260, "y": 300, "wires": [ [ "db55548158e7cf46" ] ] }, { "id": "db55548158e7cf46", "type": "debug", "z": "063e8e832d4bac35", "name": "", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "true", "targetType": "full", "statusVal": "payload", "statusType": "auto", "x": 1510, "y": 300, "wires": [] }, { "id": "487ea6c4bad33074", "type": "change", "z": "063e8e832d4bac35", "name": "setze payload = offen", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "offen", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1240, "y": 340, "wires": [ [ "db55548158e7cf46" ] ] }, { "id": "40bf1833ce4dafce", "type": "change", "z": "063e8e832d4bac35", "name": "setze payload = gekippt", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "gekippt", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1250, "y": 380, "wires": [ [ "db55548158e7cf46" ] ] }, { "id": "ef1772d95f6d4f02", "type": "join", "z": "063e8e832d4bac35", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "2", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 810, "y": 100, "wires": [ [ "bb8bd7b93c4ebcf9", "e67e935145f681e3" ] ] }, { "id": "bb8bd7b93c4ebcf9", "type": "debug", "z": "063e8e832d4bac35", "name": "msg", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "true", "targetType": "full", "statusVal": "payload", "statusType": "auto", "x": 890, "y": 20, "wires": [] }, { "id": "d0708354332fe1bb", "type": "change", "z": "063e8e832d4bac35", "name": "setze payload = zu", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "zu", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1230, "y": 40, "wires": [ [ "34a60587b129cd25" ] ] }, { "id": "3506db50c7bf2b99", "type": "change", "z": "063e8e832d4bac35", "name": "setze payload = entriegelt", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "entriegelt", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1260, "y": 80, "wires": [ [ "34a60587b129cd25" ] ] }, { "id": "34a60587b129cd25", "type": "debug", "z": "063e8e832d4bac35", "name": "", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "true", "targetType": "full", "statusVal": "payload", "statusType": "auto", "x": 1510, "y": 80, "wires": [] }, { "id": "9e045a37a0fcb511", "type": "change", "z": "063e8e832d4bac35", "name": "setze payload = offen", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "offen", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1240, "y": 120, "wires": [ [ "34a60587b129cd25" ] ] }, { "id": "6d6e9be994b3b2c7", "type": "change", "z": "063e8e832d4bac35", "name": "setze payload = gekippt", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "gekippt", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1250, "y": 160, "wires": [ [ "34a60587b129cd25" ] ] }, { "id": "e67e935145f681e3", "type": "switch", "z": "063e8e832d4bac35", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "jsonata_exp", "v": "payload = {\"Fenster1oben\": true,\"Fenster1unten\": false} ", "vt": "jsonata" }, { "t": "jsonata_exp", "v": "payload = {\"Fenster1oben\": false,\"Fenster1unten\": false} ", "vt": "jsonata" }, { "t": "jsonata_exp", "v": "payload = {\"Fenster1oben\": true,\"Fenster1unten\": true} ", "vt": "jsonata" }, { "t": "jsonata_exp", "v": "payload = {\"Fenster1oben\": false,\"Fenster1unten\": true} ", "vt": "jsonata" } ], "checkall": "false", "repair": false, "outputs": 4, "x": 990, "y": 100, "wires": [ [ "d0708354332fe1bb" ], [ "3506db50c7bf2b99" ], [ "9e045a37a0fcb511" ], [ "6d6e9be994b3b2c7" ] ] } ]
-
@typ1er Die Frage ist halt ob das so Sinn macht - freilich geht es, aber das macht keinen Sinn. Die Fälle werden ja immer mehr mit der Fakultät- Sprich 2 Fensterparameter *2 + Rolladen macht doch keinen Sinn. Die Split Node so wie sie hier im Einsatz ist muss überprüft doch das GESAMTE Objekt. Sprich wenn du alles in ein Objekt überführst dann sieht das Objekt doch so aus:
{"Fenster1oben": true,"Fenster1unten": false,"Fenster2oben": true,"Fenster2unten": false,"currentValue" : 39}
das kannst Du doch nicht mit
payload = {"Fenster1oben": true,"Fenster1unten": false,"Fenster2oben": true,"Fenster2unten": false,"currentValue" : 39}
abfragen.
Da müsstest Du 100 * 8 = 800 Ausgänge basteln.
Was willst Du denn erreichen, dann können wir ggf. gemeinsam einen Flow entwickeln. Du kannst das kaskadieren, aber die Frage ist weiterhin was willst Du als Ergebnis?
Wobei auch Deine jetzigen Zuordnungen keinen Sinn ergeben:
payload = {"Fenster2oben": true,"Fenster2unten": false} (wenn openend true ist) - dann wäre oben offen und unten zu => gekippt
payload = {"Fenster2oben": false,"Fenster2unten": false} - beides zu => zu
payload = {"Fenster2oben": true,"Fenster2unten": true} -=> offen
payload = {"Fenster2oben": false,"Fenster2unten": true} => sollte es eigentlich nicht gebenUm einen sauberen Status zu erhalten - würde ich folgendes machen - allerdings weiß ich nicht ob der Rollladen für beide Fenster gilt.
-
ich wollte die Rolladensteuerung später in einen Subflow unterbringen, das ist bis auf 1 Fenster bei allen gleich. Also alle Parameter zusammenführen und im Subflow wieder trennen mit der switch Node.
Auswerten wollte ich den Fensterstatus, Wetter, Ausrichtung, Helligkeit und Temperatur. Um nachts das Fenster beim öffnen der Fenster in bestimmte Positionen anzufahren als auch Tagsüber das Fenster zu beschatten. Ich habe das vor ein paar Jahren mal zusammengeklickt irgendwie, in hunderten Nodes, und ist leider unübersichtlich.
-
@typ1er Ist der Rollladen für ein Fenster oder für beide?
-
ein Fenster mit 2 Flügeln und 1 Rollladen
-
So ich hab dir mal einen Flow gebastelt - was du mit den Rollläden machen willst weiss ich noch nicht, der Dir alle gekippten oder offenen Fenster ausschmeisst.
[ { "id": "812ed04f69c00b48", "type": "comment", "z": "7e6af0015415146d", "name": "Sensor Oben (links)", "info": "", "x": 2190, "y": 3340, "wires": [] }, { "id": "589c4f9f3aef4e5b", "type": "comment", "z": "7e6af0015415146d", "name": "Sensor Unten (links)", "info": "", "x": 2190, "y": 3480, "wires": [] }, { "id": "6878f876350c292c", "type": "comment", "z": "7e6af0015415146d", "name": "Sensor Oben (rechts)", "info": "", "x": 2180, "y": 3600, "wires": [] }, { "id": "bbb2fea4e9fcb01e", "type": "comment", "z": "7e6af0015415146d", "name": "Sensor Unten (rechts)", "info": "", "x": 2180, "y": 3740, "wires": [] }, { "id": "e86911a52463f3f2", "type": "ioBroker in", "z": "7e6af0015415146d", "d": true, "name": "", "topic": "zigbee.0.00158d0001fd5296.opened", "payloadType": "value", "onlyack": "update", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 2120, "y": 3260, "wires": [ [] ] }, { "id": "3c0167f3c360a51b", "type": "ioBroker in", "z": "7e6af0015415146d", "d": true, "name": "", "topic": "zigbee.0.00158d0001de8e2d.opened", "payloadType": "value", "onlyack": "update", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 2130, "y": 3400, "wires": [ [] ] }, { "id": "afcd568569421914", "type": "ioBroker in", "z": "7e6af0015415146d", "d": true, "name": "", "topic": "zigbee.0.00158d00022bd6b1.opened", "payloadType": "value", "onlyack": "update", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 2130, "y": 3520, "wires": [ [] ] }, { "id": "6cee51daabfd7617", "type": "ioBroker in", "z": "7e6af0015415146d", "d": true, "name": "", "topic": "zigbee.0.00158d00022bd653.opened", "payloadType": "value", "onlyack": "update", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 2140, "y": 3660, "wires": [ [] ] }, { "id": "3228c09e88db173d", "type": "ioBroker in", "z": "7e6af0015415146d", "d": true, "name": "", "topic": "zwave2.0.Node_004.Multilevel_Switch.currentValue", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "outFormat": "ioBroker", "x": 2090, "y": 3820, "wires": [ [ "e243b1dffd4fdf21" ] ] }, { "id": "e243b1dffd4fdf21", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "currentValue", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2420, "y": 3860, "wires": [ [ "b5c59b5789c87a88", "a33ee981fb7d70b9" ] ] }, { "id": "235355255db1e681", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Oben (links)", "payload": "true", "payloadType": "bool", "x": 2200, "y": 3300, "wires": [ [ "d95337dbf023fddd" ] ] }, { "id": "7fa747e333cd28ab", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Unten (links)", "payload": "false", "payloadType": "bool", "x": 2210, "y": 3440, "wires": [ [ "c7e9225660fb24d9" ] ] }, { "id": "22a4d618a51e1933", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Oben (rechts)", "payload": "true", "payloadType": "bool", "x": 2190, "y": 3560, "wires": [ [ "96725fc47558807c" ] ] }, { "id": "04298c2e449b8995", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Unten (rechts)", "payload": "true", "payloadType": "bool", "x": 2190, "y": 3700, "wires": [ [ "cb9727a6b7952e51" ] ] }, { "id": "4c432269faf13246", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "rolladen_level", "payload": "99", "payloadType": "num", "x": 2200, "y": 3860, "wires": [ [ "e243b1dffd4fdf21" ] ] }, { "id": "c7e9225660fb24d9", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "unten", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2420, "y": 3440, "wires": [ [ "a33ee981fb7d70b9" ] ] }, { "id": "d95337dbf023fddd", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "oben", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2410, "y": 3300, "wires": [ [ "a33ee981fb7d70b9" ] ] }, { "id": "a33ee981fb7d70b9", "type": "join", "z": "7e6af0015415146d", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "2", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 2610, "y": 3360, "wires": [ [ "4dccfb9fc35d9e35" ] ] }, { "id": "cb9727a6b7952e51", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "unten", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2440, "y": 3700, "wires": [ [ "b5c59b5789c87a88" ] ] }, { "id": "96725fc47558807c", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "oben", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2430, "y": 3560, "wires": [ [ "b5c59b5789c87a88" ] ] }, { "id": "b5c59b5789c87a88", "type": "join", "z": "7e6af0015415146d", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "2", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 2630, "y": 3620, "wires": [ [ "d89ad04521bff933" ] ] }, { "id": "4dccfb9fc35d9e35", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Fenster1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2800, "y": 3360, "wires": [ [ "383f43197a118cdc", "d3743b846ce90f67" ] ] }, { "id": "d89ad04521bff933", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Fenster2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2800, "y": 3620, "wires": [ [ "383f43197a118cdc" ] ] }, { "id": "dd0d28a9a37903b7", "type": "debug", "z": "7e6af0015415146d", "name": "AllInOne", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 3320, "y": 3540, "wires": [] }, { "id": "d3743b846ce90f67", "type": "debug", "z": "7e6af0015415146d", "name": "msg", "active": false, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 3030, "y": 3300, "wires": [] }, { "id": "6ab6c4f9ba3e354b", "type": "join", "z": "7e6af0015415146d", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "1", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 3110, "y": 3620, "wires": [ [ "dd0d28a9a37903b7", "50162239ecd6eab5" ] ] }, { "id": "50162239ecd6eab5", "type": "change", "z": "7e6af0015415146d", "name": "Flat Array", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$each(payload, function($v, $k) {{\"name\":$k,\"unten\":$v.unten,\"oben\":$v.oben,\"currentValue\":$v.currentValue}} )", "tot": "jsonata" }, { "t": "delete", "p": "topic", "pt": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 3280, "y": 3620, "wires": [ [ "6367bb8956302678", "d58bdd810c41b8ab" ] ] }, { "id": "6367bb8956302678", "type": "debug", "z": "7e6af0015415146d", "name": "Array", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 3430, "y": 3680, "wires": [] }, { "id": "d58bdd810c41b8ab", "type": "change", "z": "7e6af0015415146d", "name": "Analyze", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$.payload~>|$|{\"gekippt\" : oben and $not(unten), \"offen\" : oben or unten},[\"oben\",\"unten\"]|", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 3440, "y": 3620, "wires": [ [ "7b4943647e3a242f", "c2a206e96f77d7ca", "d293b242aa3d3d75" ] ] }, { "id": "7b4943647e3a242f", "type": "debug", "z": "7e6af0015415146d", "name": "Status", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 3570, "y": 3540, "wires": [] }, { "id": "c2a206e96f77d7ca", "type": "change", "z": "7e6af0015415146d", "name": "gekippt ?", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload[gekippt].name", "tot": "jsonata" }, { "t": "set", "p": "topic", "pt": "msg", "to": "gekippt", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 3660, "y": 3580, "wires": [ [ "9e65d9dd8276a7af" ] ] }, { "id": "d293b242aa3d3d75", "type": "change", "z": "7e6af0015415146d", "name": "offen ?", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload[offen].name", "tot": "jsonata" }, { "t": "set", "p": "topic", "pt": "msg", "to": "offen", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 3650, "y": 3620, "wires": [ [ "9e65d9dd8276a7af" ] ] }, { "id": "6b6e9a603a4269af", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Oben (rechts)", "payload": "false", "payloadType": "bool", "x": 2190, "y": 3980, "wires": [ [ "fbc77afb88bf03c0" ] ] }, { "id": "efe5b3d1b4fe6b35", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Unten (rechts)", "payload": "false", "payloadType": "bool", "x": 2190, "y": 4120, "wires": [ [ "21a25a373ce4e2e8" ] ] }, { "id": "fbc77afb88bf03c0", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "oben", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2390, "y": 3980, "wires": [ [ "17a150bf9f890d79" ] ] }, { "id": "21a25a373ce4e2e8", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "unten", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2400, "y": 4120, "wires": [ [ "17a150bf9f890d79" ] ] }, { "id": "17a150bf9f890d79", "type": "join", "z": "7e6af0015415146d", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "2", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 2590, "y": 4040, "wires": [ [ "0a49f77d7d7c4254" ] ] }, { "id": "0a49f77d7d7c4254", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "Fenster3", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2760, "y": 4040, "wires": [ [ "383f43197a118cdc" ] ] }, { "id": "69e27948be4a3958", "type": "debug", "z": "7e6af0015415146d", "name": "Ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 3960, "y": 3600, "wires": [] }, { "id": "9e65d9dd8276a7af", "type": "switch", "z": "7e6af0015415146d", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "nnull" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 3810, "y": 3600, "wires": [ [ "69e27948be4a3958" ] ] }, { "id": "383f43197a118cdc", "type": "junction", "z": "7e6af0015415146d", "x": 3000, "y": 3620, "wires": [ [ "6ab6c4f9ba3e354b" ] ] } ]
Die Change Nodes kannst natürlich zusammenfassen - dient mehr der Illustration.
Alternativ kannst natürlich auch alles im Flow Kontext sammeln und auswerten.