diff --git a/flows.json b/flows.json index be25782..4f8e731 100644 --- a/flows.json +++ b/flows.json @@ -39,14 +39,6 @@ "info": "", "env": [] }, - { - "id": "9f826196c06ea578", - "type": "tab", - "label": "CL_Fenster_Heizung", - "disabled": true, - "info": "", - "env": [] - }, { "id": "c4c5067b315c581d", "type": "tab", @@ -175,6 +167,14 @@ "info": "", "env": [] }, + { + "id": "02df653606745379", + "type": "tab", + "label": "SZ_Unterlicht", + "disabled": false, + "info": "## Beschreibung\nLED-Streifen unter dem Bett, geschaltet mit Taster am Bettrahmen\n\n## Version\nVersion | Datum | Author | Bemerkung\n-------|--------|-------|---\n1.0.07 2026-01-12 | rxf | erste Version mit NodeRed", + "env": [] + }, { "id": "168cd2080e21b71d", "type": "junction", @@ -290,56 +290,6 @@ ] ] }, - { - "id": "90ce85278d757821", - "type": "junction", - "z": "9f826196c06ea578", - "x": 1120, - "y": 480, - "wires": [ - [ - "cb958466b4f4951d", - "5a999538205738cd", - "0d09956c322460bc" - ] - ] - }, - { - "id": "3d0189e0d1661e53", - "type": "junction", - "z": "9f826196c06ea578", - "x": 580, - "y": 520, - "wires": [ - [ - "60c4434b2d846c46", - "8877d804c0a2c596", - "dec850c65b5c8c5a" - ] - ] - }, - { - "id": "2583cb353da1a31e", - "type": "junction", - "z": "9f826196c06ea578", - "x": 880, - "y": 380, - "wires": [ - [] - ] - }, - { - "id": "0c0faa8d4cd3b990", - "type": "junction", - "z": "9f826196c06ea578", - "x": 1160, - "y": 780, - "wires": [ - [ - "dbb38ac3029b3aac" - ] - ] - }, { "id": "44ca85124df5860f", "type": "junction", @@ -4178,7 +4128,7 @@ "type": "debug", "z": "5bea18a0180b611e", "name": "debug 74", - "active": true, + "active": false, "tosidebar": true, "console": false, "tostatus": false, @@ -4801,7 +4751,7 @@ "type": "debug", "z": "5bea18a0180b611e", "name": "debug 124", - "active": true, + "active": false, "tosidebar": true, "console": false, "tostatus": false, @@ -6667,7 +6617,7 @@ "payloadType": "bool", "payload": "true", "expressionType": "cron", - "expression": "0 01 08 * * * *", + "expression": "0 01 8 * * * *", "location": "48.776826823252065 9.12689208984375", "offset": "1", "solarType": "selected", @@ -8028,676 +7978,6 @@ ] ] }, - { - "id": "dec850c65b5c8c5a", - "type": "change", - "z": "9f826196c06ea578", - "name": "Heizung AUS", - "rules": [ - { - "t": "set", - "p": "payload", - "pt": "msg", - "to": "{\"heizung\": false}", - "tot": "json" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 870, - "y": 700, - "wires": [ - [ - "0c0faa8d4cd3b990" - ] - ] - }, - { - "id": "c6630df47928ad37", - "type": "mqtt out", - "z": "9f826196c06ea578", - "name": "Schalte Heizung", - "topic": "home66/shellyplus1-CL_Heizung/rpc", - "qos": "0", - "retain": "false", - "respTopic": "", - "contentType": "", - "userProps": "", - "correl": "", - "expiry": "", - "broker": "c46833d59903b816", - "x": 1600, - "y": 740, - "wires": [] - }, - { - "id": "0f53a1d42ad808ad", - "type": "debug", - "z": "9f826196c06ea578", - "name": "debug 60", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 1580, - "y": 680, - "wires": [] - }, - { - "id": "0d09956c322460bc", - "type": "mqtt out", - "z": "9f826196c06ea578", - "name": "CL_Fenster AUF/ZU", - "topic": "hm/set/Fenster_CL_Schließer:1/LEVEL", - "qos": "0", - "retain": "false", - "respTopic": "", - "contentType": "", - "userProps": "", - "correl": "", - "expiry": "", - "broker": "c46833d59903b816", - "x": 1440, - "y": 480, - "wires": [] - }, - { - "id": "8877d804c0a2c596", - "type": "change", - "z": "9f826196c06ea578", - "name": "Fenster AUF", - "rules": [ - { - "t": "set", - "p": "payload", - "pt": "msg", - "to": "1", - "tot": "num" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 950, - "y": 520, - "wires": [ - [ - "90ce85278d757821" - ] - ] - }, - { - "id": "5bb5a5648ca0b59b", - "type": "change", - "z": "9f826196c06ea578", - "name": "Fenster ZU", - "rules": [ - { - "t": "set", - "p": "payload", - "pt": "msg", - "to": "0", - "tot": "num" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 950, - "y": 380, - "wires": [ - [ - "90ce85278d757821" - ] - ] - }, - { - "id": "60c4434b2d846c46", - "type": "trigger", - "z": "9f826196c06ea578", - "name": "", - "op1": "", - "op2": "0", - "op1type": "nul", - "op2type": "str", - "duration": "15", - "extend": false, - "overrideDelay": false, - "units": "min", - "reset": "", - "bytopic": "all", - "topic": "topic", - "outputs": 1, - "x": 730, - "y": 460, - "wires": [ - [ - "5bb5a5648ca0b59b" - ] - ] - }, - { - "id": "c78ffd7fe4b7c449", - "type": "comment", - "z": "9f826196c06ea578", - "name": "Einfacher 2-Punkt-Regler", - "info": "", - "x": 330, - "y": 840, - "wires": [] - }, - { - "id": "e8cae05d1778740f", - "type": "mqtt in", - "z": "9f826196c06ea578", - "name": "Ist-Temp einlesen", - "topic": "zigbee2mqtt/TH_3", - "qos": "2", - "datatype": "auto-detect", - "broker": "c46833d59903b816", - "nl": false, - "rap": true, - "rh": 0, - "inputs": 0, - "x": 300, - "y": 960, - "wires": [ - [ - "09f36287e0cd1806", - "b6dd8b419d5a5f4b" - ] - ] - }, - { - "id": "ee53aeaca9b44ccc", - "type": "function", - "z": "9f826196c06ea578", - "name": "2-Punkt-Regler (Hysteres = +/- °)", - "func": "let t = msg.payload.temperature\nlet hys = flow.get(\"hysterese\")\nlet soll = flow.get(\"soll\")\nif ( t >= (soll + hys)) {\n msg.payload = {\"heizung\": false}\n return msg;\n} else if (t <= (soll - hys)) {\n msg.payload = {\"heizung\": true}\n return msg;\n}\nreturn", - "outputs": 1, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 990, - "y": 880, - "wires": [ - [ - "0c0faa8d4cd3b990" - ] - ] - }, - { - "id": "09f36287e0cd1806", - "type": "debug", - "z": "9f826196c06ea578", - "name": "debug 71", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 500, - "y": 1060, - "wires": [] - }, - { - "id": "9afb590d1584942d", - "type": "comment", - "z": "9f826196c06ea578", - "name": "CL-Fentster/Heizung Steuerung", - "info": "## Beschreibung\n* Clo-Fenster per Taste auf/zu \n* Clo-Heizung mit einfachem 2-Punkt-Regler regeln\n* Wenn Fenter offen, den Regler abschalten (und auch die Heizung)\n* Zustand der heizung nach Influx speichern\n## Version\nVersion | Datum | Author | Bemerkung\n-------|--------|-------|---\nV 1.1 | 2024-01-26 | rfxf | Reglerperre bei offenem Fenster\nV 1.0 | 2024-01-25 | rxf | erste lauffähige Version\n", - "x": 630, - "y": 80, - "wires": [] - }, - { - "id": "72d923fab4928420", - "type": "config", - "z": "9f826196c06ea578", - "name": "Soll = 17 / Hysteres = 0.5", - "properties": [ - { - "p": "soll", - "pt": "flow", - "to": "17", - "tot": "num" - }, - { - "p": "hysterese", - "pt": "flow", - "to": "0.5", - "tot": "num" - }, - { - "p": "aussen", - "pt": "flow", - "to": "5.0", - "tot": "num" - }, - { - "p": "fenster", - "pt": "flow", - "to": "1", - "tot": "num" - } - ], - "active": true, - "x": 350, - "y": 900, - "wires": [] - }, - { - "id": "b6dd8b419d5a5f4b", - "type": "delay", - "z": "9f826196c06ea578", - "name": "", - "pauseType": "rate", - "timeout": "5", - "timeoutUnits": "seconds", - "rate": "1", - "nbRateUnits": "1", - "rateUnits": "second", - "randomFirst": "1", - "randomLast": "5", - "randomUnits": "seconds", - "drop": true, - "allowrate": false, - "outputs": 1, - "x": 710, - "y": 960, - "wires": [ - [ - "ee53aeaca9b44ccc", - "339ebd7135c745e3" - ] - ] - }, - { - "id": "d9c24a6b480f3977", - "type": "inject", - "z": "9f826196c06ea578", - "name": "AUF", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": false, - "onceDelay": 0.1, - "topic": "", - "payload": "{\"val\": true}", - "payloadType": "json", - "x": 230, - "y": 540, - "wires": [ - [ - "3d0189e0d1661e53" - ] - ] - }, - { - "id": "b7692a5803fcffd6", - "type": "inject", - "z": "9f826196c06ea578", - "name": "ZU", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": false, - "onceDelay": 0.1, - "topic": "", - "payload": "{\"val\": false}", - "payloadType": "json", - "x": 230, - "y": 320, - "wires": [ - [ - "5bb5a5648ca0b59b" - ] - ] - }, - { - "id": "dbb38ac3029b3aac", - "type": "function", - "z": "9f826196c06ea578", - "name": "Kommand für Heizung", - "func": "let cmnd = { \"id\": 0, \"src\": \"home66/shellyplus1-CL_Heizung/result\", \"method\": \"Switch.Set\", \"params\": { \"id\": 0, \"on\": true } }\ncmnd.params.on = msg.payload.heizung\nmsg.payload = cmnd\nreturn msg;", - "outputs": 1, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 1320, - "y": 740, - "wires": [ - [ - "0f53a1d42ad808ad", - "c6630df47928ad37" - ] - ] - }, - { - "id": "bbea70ddefbcae21", - "type": "gate", - "z": "9f826196c06ea578", - "name": "Reglersperre", - "controlTopic": "control", - "defaultState": "open", - "openCmd": "open", - "closeCmd": "close", - "toggleCmd": "toggle", - "defaultCmd": "default", - "statusCmd": "status", - "persist": false, - "storeName": "memory", - "x": 510, - "y": 1000, - "wires": [ - [] - ] - }, - { - "id": "cb958466b4f4951d", - "type": "function", - "z": "9f826196c06ea578", - "name": "Abh. vom Fenster und Aussentemp die Sperre aktivieren", - "func": "msg.topic = 'control'\nif ((flow.get('aussen') < 5.0) && (flow.get('fenster') == 0)) {\n msg.payload = 'close'\n} else {\n msg.payload = 'open'\n}\nreturn msg;", - "outputs": 1, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 730, - "y": 780, - "wires": [ - [ - "5945403023bb86b1" - ] - ] - }, - { - "id": "339ebd7135c745e3", - "type": "debug", - "z": "9f826196c06ea578", - "name": "debug 72", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 980, - "y": 1020, - "wires": [] - }, - { - "id": "1afc34ece687e69a", - "type": "mqtt in", - "z": "9f826196c06ea578", - "name": "Fenster-Taster", - "topic": "zigbee2mqtt/Taster_Fenster_Clo", - "qos": "0", - "datatype": "auto-detect", - "broker": "c46833d59903b816", - "nl": false, - "rap": true, - "rh": 0, - "inputs": 0, - "x": 230, - "y": 460, - "wires": [ - [ - "ed6781a1e76023ec", - "add4ce358561c508" - ] - ] - }, - { - "id": "ed6781a1e76023ec", - "type": "debug", - "z": "9f826196c06ea578", - "name": "debug 95", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 400, - "y": 380, - "wires": [] - }, - { - "id": "add4ce358561c508", - "type": "switch", - "z": "9f826196c06ea578", - "name": "", - "property": "payload.action", - "propertyType": "msg", - "rules": [ - { - "t": "eq", - "v": "double", - "vt": "str" - }, - { - "t": "eq", - "v": "single", - "vt": "str" - }, - { - "t": "eq", - "v": "hold", - "vt": "str" - } - ], - "checkall": "true", - "repair": false, - "outputs": 3, - "x": 410, - "y": 460, - "wires": [ - [ - "5bb5a5648ca0b59b" - ], - [ - "3d0189e0d1661e53" - ], - [] - ] - }, - { - "id": "d808e1fc5b17d4ee", - "type": "comment", - "z": "9f826196c06ea578", - "name": "Fenster AUF mit Taster steuern", - "info": "", - "x": 210, - "y": 260, - "wires": [] - }, - { - "id": "a982aaaf74cc2374", - "type": "mqtt in", - "z": "9f826196c06ea578", - "name": "AU-TH_9", - "topic": "zigbee2mqtt/TH_9", - "qos": "0", - "datatype": "auto-detect", - "broker": "c46833d59903b816", - "nl": false, - "rap": true, - "rh": 0, - "inputs": 0, - "x": 220, - "y": 640, - "wires": [ - [ - "8b12280fb9b51f3b" - ] - ] - }, - { - "id": "8b12280fb9b51f3b", - "type": "change", - "z": "9f826196c06ea578", - "name": "", - "rules": [ - { - "t": "set", - "p": "aussen", - "pt": "flow", - "to": "payload.temperature", - "tot": "msg" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 400, - "y": 640, - "wires": [ - [ - "cb958466b4f4951d", - "348387098c4753ab" - ] - ] - }, - { - "id": "5a999538205738cd", - "type": "change", - "z": "9f826196c06ea578", - "name": "", - "rules": [ - { - "t": "set", - "p": "fenster", - "pt": "flow", - "to": "payload", - "tot": "msg" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 1200, - "y": 300, - "wires": [ - [ - "a88111ca76d9ca90" - ] - ] - }, - { - "id": "5945403023bb86b1", - "type": "debug", - "z": "9f826196c06ea578", - "name": "debug 176", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 1130, - "y": 620, - "wires": [] - }, - { - "id": "56e1ca51ff084b29", - "type": "debug", - "z": "9f826196c06ea578", - "name": "debug 177", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "true", - "targetType": "full", - "statusVal": "", - "statusType": "auto", - "x": 1630, - "y": 300, - "wires": [] - }, - { - "id": "a88111ca76d9ca90", - "type": "change", - "z": "9f826196c06ea578", - "name": "", - "rules": [ - { - "t": "set", - "p": "debug", - "pt": "msg", - "to": "fenster", - "tot": "flow" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 1420, - "y": 300, - "wires": [ - [ - "56e1ca51ff084b29" - ] - ] - }, - { - "id": "348387098c4753ab", - "type": "debug", - "z": "9f826196c06ea578", - "name": "debug 178", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "true", - "targetType": "full", - "statusVal": "", - "statusType": "auto", - "x": 590, - "y": 640, - "wires": [] - }, { "id": "9e617dec92526da1", "type": "comment", @@ -14406,5 +13686,213 @@ "x": 1030, "y": 180, "wires": [] + }, + { + "id": "97515ad30d24e35f", + "type": "mqtt in", + "z": "02df653606745379", + "name": "Taster_SZ_1", + "topic": "zigbee2mqtt/Taster_SZ_1", + "qos": "0", + "datatype": "auto-detect", + "broker": "c46833d59903b816", + "nl": false, + "rap": true, + "rh": 0, + "inputs": 0, + "x": 210, + "y": 180, + "wires": [ + [ + "9de010df5044f2b7" + ] + ] + }, + { + "id": "0b0f6c1a19006d0c", + "type": "mqtt in", + "z": "02df653606745379", + "name": "Taster_SZ_2", + "topic": "zigbee2mqtt/Taster_SZ_2", + "qos": "0", + "datatype": "auto-detect", + "broker": "c46833d59903b816", + "nl": false, + "rap": true, + "rh": 0, + "inputs": 0, + "x": 210, + "y": 260, + "wires": [ + [ + "9de010df5044f2b7" + ] + ] + }, + { + "id": "a4c35a240b71027e", + "type": "debug", + "z": "02df653606745379", + "name": "debug 191", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 930, + "y": 140, + "wires": [] + }, + { + "id": "50d6da0abe1f2303", + "type": "inject", + "z": "02df653606745379", + "name": "", + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "date", + "x": 220, + "y": 120, + "wires": [ + [ + "3ddff87f704fe75c" + ] + ] + }, + { + "id": "3ddff87f704fe75c", + "type": "toggleUltimate", + "z": "02df653606745379", + "name": "Toggle", + "valueToToggle": "false", + "payloadPropName": "payload.action", + "x": 690, + "y": 220, + "wires": [ + [ + "a4c35a240b71027e", + "2a504c7cfa845506" + ] + ] + }, + { + "id": "c0e0f8cb527568c2", + "type": "mqtt out", + "z": "02df653606745379", + "name": "Unterlicht", + "topic": "zigbee2mqtt/Steckdose_z20/set", + "qos": "0", + "retain": "", + "respTopic": "", + "contentType": "", + "userProps": "", + "correl": "", + "expiry": "", + "broker": "c46833d59903b816", + "x": 1200, + "y": 220, + "wires": [] + }, + { + "id": "2a504c7cfa845506", + "type": "function", + "z": "02df653606745379", + "name": "function 71", + "func": "if (msg.payload === true) {\n msg.payload = {\"state\":\"ON\"}\n} else {\n msg.payload = { \"state\": \"OFF\" }\n}\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 970, + "y": 220, + "wires": [ + [ + "c0e0f8cb527568c2", + "7b92da28b5b97d30" + ] + ] + }, + { + "id": "7b92da28b5b97d30", + "type": "debug", + "z": "02df653606745379", + "name": "debug 192", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 1210, + "y": 140, + "wires": [] + }, + { + "id": "9de010df5044f2b7", + "type": "switch", + "z": "02df653606745379", + "name": "", + "property": "payload.action", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "single", + "vt": "str" + }, + { + "t": "eq", + "v": "double", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 2, + "x": 450, + "y": 220, + "wires": [ + [ + "3ddff87f704fe75c", + "e183932dbd19bb66" + ], + [] + ] + }, + { + "id": "e183932dbd19bb66", + "type": "debug", + "z": "02df653606745379", + "name": "debug 193", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 690, + "y": 100, + "wires": [] } ] \ No newline at end of file