Update flow files

This commit is contained in:
2026-05-28 20:35:27 +02:00
parent b2a922476e
commit 787812ea50
+483 -417
View File
@@ -13,11 +13,6 @@
}
]
},
{
"id": "1f4d4622.7490ca",
"type": "tab",
"label": "Temperature & climate"
},
{
"id": "e52c44dc.71cb5",
"type": "subflow",
@@ -3184,418 +3179,6 @@
"x": 2340,
"y": 720
},
{
"id": "eb217ba8.833d48",
"type": "server-state-changed",
"z": "1f4d4622.7490ca",
"name": "Outside temperature",
"wires": [
[
"c8bf7086.b32ab8",
"be230668.4e6718",
"1de4cd6b31838517"
]
],
"d": true,
"server": "657c7463.48e1e4",
"version": 6,
"outputs": 1,
"exposeAsEntityConfig": "",
"entities": {
"entity": [
"sensor.openweathermap_temperature"
],
"substring": [],
"regex": []
},
"outputInitially": true,
"stateType": "num",
"ifState": "",
"ifStateType": "str",
"ifStateOperator": "is",
"outputOnlyOnStateChange": true,
"for": "",
"forType": "num",
"forUnits": "minutes",
"ignorePrevStateNull": false,
"ignorePrevStateUnknown": false,
"ignorePrevStateUnavailable": false,
"ignoreCurrentStateUnknown": false,
"ignoreCurrentStateUnavailable": false,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "",
"valueType": "entityState"
},
{
"property": "data",
"propertyType": "msg",
"value": "",
"valueType": "eventData"
},
{
"property": "topic",
"propertyType": "msg",
"value": "",
"valueType": "triggerId"
}
],
"x": 110,
"y": 120
},
{
"id": "c8bf7086.b32ab8",
"type": "api-current-state",
"z": "1f4d4622.7490ca",
"name": "Inside temperature",
"wires": [
[
"13a9b38f.3ab9d4",
"1de4cd6b31838517"
]
],
"server": "657c7463.48e1e4",
"version": 3,
"outputs": 1,
"halt_if": "",
"halt_if_type": "str",
"halt_if_compare": "is",
"entity_id": "sensor.livingroom_temperature_avg",
"state_type": "num",
"blockInputOverrides": false,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "string",
"valueType": "entityState"
},
{
"property": "data",
"propertyType": "msg",
"value": "",
"valueType": "entity"
}
],
"for": 0,
"forType": "num",
"forUnits": "minutes",
"x": 470,
"y": 120
},
{
"id": "68aa8fe5.4cd4f",
"type": "function",
"z": "1f4d4622.7490ca",
"name": "Determine cooler or warmer",
"wires": [
[
"e27e4896.4eefa",
"1de4cd6b31838517"
]
],
"func": "var outsideTemp = parseFloat(msg.payload.outside);\nvar insideTemp = parseFloat(msg.payload.inside);\nvar notification = '';\n\nif (outsideTemp < insideTemp) {\n notification = 'Outside is cooler than inside';\n} else {\n notification = 'Outside is warmer than inside';\n}\n\nmsg.payload = notification;\n\nreturn msg;",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 880,
"y": 180
},
{
"id": "e27e4896.4eefa",
"type": "api-call-service",
"z": "1f4d4622.7490ca",
"name": "Notify via HA",
"wires": [
[]
],
"server": "657c7463.48e1e4",
"version": 7,
"debugenabled": false,
"action": "notify.gotify_ha",
"floorId": [],
"areaId": [],
"deviceId": [],
"entityId": [],
"labelId": [],
"data": "{\"title\":\"Info\",\"message\":\"{{{payload}}}\"}",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "notify",
"service": "gotify_ha",
"output_location": "",
"output_location_type": "none",
"x": 1130,
"y": 180
},
{
"id": "be230668.4e6718",
"type": "change",
"z": "1f4d4622.7490ca",
"name": "Clear data",
"wires": [
[
"2119da07.2ad496"
]
],
"rules": [
{
"t": "delete",
"p": "data",
"pt": "msg"
},
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "outside",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 470,
"y": 260
},
{
"id": "13a9b38f.3ab9d4",
"type": "change",
"z": "1f4d4622.7490ca",
"name": "Clear data",
"wires": [
[
"2119da07.2ad496"
]
],
"rules": [
{
"t": "delete",
"p": "data",
"pt": "msg"
},
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "inside",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 470,
"y": 200
},
{
"id": "2119da07.2ad496",
"type": "join",
"z": "1f4d4622.7490ca",
"name": "",
"wires": [
[
"68aa8fe5.4cd4f"
]
],
"mode": "custom",
"build": "object",
"property": "payload",
"propertyType": "msg",
"key": "topic",
"joiner": "\\n",
"joinerType": "str",
"accumulate": false,
"timeout": "",
"count": "2",
"reduceRight": false,
"reduceExp": "",
"reduceInit": "",
"reduceInitType": "",
"reduceFixup": "",
"x": 670,
"y": 180
},
{
"id": "1de4cd6b31838517",
"type": "debug",
"z": "1f4d4622.7490ca",
"name": "Temperature alert",
"wires": [],
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 830,
"y": 60
},
{
"id": "9a99a3d8e416b026",
"type": "comment",
"z": "1f4d4622.7490ca",
"name": "Temperature alert",
"wires": [],
"info": "",
"x": 100,
"y": 80
},
{
"id": "a676209fc00d4d6c",
"type": "comment",
"z": "1f4d4622.7490ca",
"name": "Climate control",
"wires": [],
"info": "",
"x": 100,
"y": 360
},
{
"id": "6156c5585680e99e",
"type": "server-state-changed",
"z": "1f4d4622.7490ca",
"name": "Livingroom window open",
"wires": [
[
"ea05134bce8525ef"
],
[
"e2f354b6c7b22e8d"
]
],
"d": true,
"server": "657c7463.48e1e4",
"version": 6,
"outputs": 2,
"exposeAsEntityConfig": "",
"entities": {
"entity": [
"sensor.window_handle_bedroom_state"
],
"substring": [],
"regex": []
},
"outputInitially": true,
"stateType": "str",
"ifState": "closed",
"ifStateType": "str",
"ifStateOperator": "is_not",
"outputOnlyOnStateChange": true,
"for": "0",
"forType": "num",
"forUnits": "minutes",
"ignorePrevStateNull": false,
"ignorePrevStateUnknown": false,
"ignorePrevStateUnavailable": false,
"ignoreCurrentStateUnknown": false,
"ignoreCurrentStateUnavailable": false,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "",
"valueType": "entityState"
},
{
"property": "data",
"propertyType": "msg",
"value": "",
"valueType": "eventData"
},
{
"property": "topic",
"propertyType": "msg",
"value": "",
"valueType": "triggerId"
}
],
"x": 130,
"y": 420
},
{
"id": "ea05134bce8525ef",
"type": "api-call-service",
"z": "1f4d4622.7490ca",
"name": "Activate window open mode",
"wires": [
[]
],
"d": true,
"server": "657c7463.48e1e4",
"version": 7,
"debugenabled": false,
"action": "scene.turn_on",
"floorId": [],
"areaId": [
"7047cdd7d50e49f980eba16f832acb57"
],
"deviceId": [],
"entityId": [
"scene.bedroom_climate_window_open"
],
"labelId": [],
"data": "",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "scene",
"service": "turn_on",
"output_location": "",
"output_location_type": "none",
"x": 520,
"y": 420
},
{
"id": "e2f354b6c7b22e8d",
"type": "api-call-service",
"z": "1f4d4622.7490ca",
"name": "Activate window open mode",
"wires": [
[]
],
"d": true,
"server": "657c7463.48e1e4",
"version": 7,
"debugenabled": false,
"action": "scene.apply",
"floorId": [],
"areaId": [],
"deviceId": [],
"entityId": [],
"labelId": [],
"data": "",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "scene",
"service": "apply",
"output_location": "",
"output_location_type": "none",
"x": 520,
"y": 500
},
{
"id": "b70ee13eafa73823",
"type": "tab",
@@ -23113,5 +22696,488 @@
"output_location_type": "none",
"x": 660,
"y": 1020
},
{
"type": "tab",
"label": "Temperature & climate",
"id": "1f4d4622.7490ca"
},
{
"id": "eb217ba8.833d48",
"type": "server-state-changed",
"z": "1f4d4622.7490ca",
"name": "Outside temperature",
"wires": [
[
"c8bf7086.b32ab8",
"be230668.4e6718",
"1de4cd6b31838517"
]
],
"d": true,
"server": "657c7463.48e1e4",
"version": 6,
"outputs": 1,
"exposeAsEntityConfig": "",
"entities": {
"entity": [
"sensor.openweathermap_temperature"
],
"substring": [],
"regex": []
},
"outputInitially": true,
"stateType": "num",
"ifState": "",
"ifStateType": "str",
"ifStateOperator": "is",
"outputOnlyOnStateChange": true,
"for": "",
"forType": "num",
"forUnits": "minutes",
"ignorePrevStateNull": false,
"ignorePrevStateUnknown": false,
"ignorePrevStateUnavailable": false,
"ignoreCurrentStateUnknown": false,
"ignoreCurrentStateUnavailable": false,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "",
"valueType": "entityState"
},
{
"property": "data",
"propertyType": "msg",
"value": "",
"valueType": "eventData"
},
{
"property": "topic",
"propertyType": "msg",
"value": "",
"valueType": "triggerId"
}
],
"x": 110,
"y": 120
},
{
"id": "c8bf7086.b32ab8",
"type": "api-current-state",
"z": "1f4d4622.7490ca",
"name": "Inside temperature",
"wires": [
[
"13a9b38f.3ab9d4",
"1de4cd6b31838517"
]
],
"server": "657c7463.48e1e4",
"version": 3,
"outputs": 1,
"halt_if": "",
"halt_if_type": "str",
"halt_if_compare": "is",
"entity_id": "sensor.livingroom_temperature_avg",
"state_type": "num",
"blockInputOverrides": false,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "string",
"valueType": "entityState"
},
{
"property": "data",
"propertyType": "msg",
"value": "",
"valueType": "entity"
}
],
"for": 0,
"forType": "num",
"forUnits": "minutes",
"x": 470,
"y": 120
},
{
"id": "68aa8fe5.4cd4f",
"type": "function",
"z": "1f4d4622.7490ca",
"name": "Determine cooler or warmer",
"wires": [
[
"e27e4896.4eefa",
"1de4cd6b31838517"
]
],
"func": "var outsideTemp = parseFloat(msg.payload.outside);\nvar insideTemp = parseFloat(msg.payload.inside);\nvar notification = '';\n\nif (outsideTemp < insideTemp) {\n notification = 'Outside is cooler than inside';\n} else {\n notification = 'Outside is warmer than inside';\n}\n\nmsg.payload = notification;\n\nreturn msg;",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 880,
"y": 180
},
{
"id": "e27e4896.4eefa",
"type": "api-call-service",
"z": "1f4d4622.7490ca",
"name": "Notify via HA",
"wires": [
[]
],
"server": "657c7463.48e1e4",
"version": 7,
"debugenabled": false,
"action": "notify.gotify_ha",
"floorId": [],
"areaId": [],
"deviceId": [],
"entityId": [],
"labelId": [],
"data": "{\"title\":\"Info\",\"message\":\"{{{payload}}}\"}",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "notify",
"service": "gotify_ha",
"output_location": "",
"output_location_type": "none",
"x": 1130,
"y": 180
},
{
"id": "be230668.4e6718",
"type": "change",
"z": "1f4d4622.7490ca",
"name": "Clear data",
"wires": [
[
"2119da07.2ad496"
]
],
"rules": [
{
"t": "delete",
"p": "data",
"pt": "msg"
},
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "outside",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 470,
"y": 260
},
{
"id": "13a9b38f.3ab9d4",
"type": "change",
"z": "1f4d4622.7490ca",
"name": "Clear data",
"wires": [
[
"2119da07.2ad496"
]
],
"rules": [
{
"t": "delete",
"p": "data",
"pt": "msg"
},
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "inside",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 470,
"y": 200
},
{
"id": "2119da07.2ad496",
"type": "join",
"z": "1f4d4622.7490ca",
"name": "",
"wires": [
[
"68aa8fe5.4cd4f"
]
],
"mode": "custom",
"build": "object",
"property": "payload",
"propertyType": "msg",
"key": "topic",
"joiner": "\\n",
"joinerType": "str",
"accumulate": false,
"timeout": "",
"count": "2",
"reduceRight": false,
"reduceExp": "",
"reduceInit": "",
"reduceInitType": "",
"reduceFixup": "",
"x": 670,
"y": 180
},
{
"id": "1de4cd6b31838517",
"type": "debug",
"z": "1f4d4622.7490ca",
"name": "Temperature alert",
"wires": [],
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 830,
"y": 60
},
{
"id": "9a99a3d8e416b026",
"type": "comment",
"z": "1f4d4622.7490ca",
"name": "Temperature alert",
"wires": [],
"info": "",
"x": 100,
"y": 80
},
{
"id": "a676209fc00d4d6c",
"type": "comment",
"z": "1f4d4622.7490ca",
"name": "Climate control",
"wires": [],
"info": "",
"x": 100,
"y": 360
},
{
"id": "6156c5585680e99e",
"type": "server-state-changed",
"z": "1f4d4622.7490ca",
"name": "Livingroom window open",
"wires": [
[
"ea05134bce8525ef"
],
[
"e2f354b6c7b22e8d"
]
],
"d": true,
"server": "657c7463.48e1e4",
"version": 6,
"outputs": 2,
"exposeAsEntityConfig": "",
"entities": {
"entity": [
"sensor.window_handle_bedroom_state"
],
"substring": [],
"regex": []
},
"outputInitially": true,
"stateType": "str",
"ifState": "closed",
"ifStateType": "str",
"ifStateOperator": "is_not",
"outputOnlyOnStateChange": true,
"for": "0",
"forType": "num",
"forUnits": "minutes",
"ignorePrevStateNull": false,
"ignorePrevStateUnknown": false,
"ignorePrevStateUnavailable": false,
"ignoreCurrentStateUnknown": false,
"ignoreCurrentStateUnavailable": false,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "",
"valueType": "entityState"
},
{
"property": "data",
"propertyType": "msg",
"value": "",
"valueType": "eventData"
},
{
"property": "topic",
"propertyType": "msg",
"value": "",
"valueType": "triggerId"
}
],
"x": 130,
"y": 420
},
{
"id": "ea05134bce8525ef",
"type": "api-call-service",
"z": "1f4d4622.7490ca",
"name": "Activate window open mode",
"wires": [
[]
],
"d": true,
"server": "657c7463.48e1e4",
"version": 7,
"debugenabled": false,
"action": "scene.turn_on",
"floorId": [],
"areaId": [
"7047cdd7d50e49f980eba16f832acb57"
],
"deviceId": [],
"entityId": [
"scene.bedroom_climate_window_open"
],
"labelId": [],
"data": "",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "scene",
"service": "turn_on",
"output_location": "",
"output_location_type": "none",
"x": 520,
"y": 420
},
{
"id": "e2f354b6c7b22e8d",
"type": "api-call-service",
"z": "1f4d4622.7490ca",
"name": "Activate window open mode",
"wires": [
[]
],
"d": true,
"server": "657c7463.48e1e4",
"version": 7,
"debugenabled": false,
"action": "scene.apply",
"floorId": [],
"areaId": [],
"deviceId": [],
"entityId": [],
"labelId": [],
"data": "",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "scene",
"service": "apply",
"output_location": "",
"output_location_type": "none",
"x": 520,
"y": 500
},
{
"id": "p2catch_tmp",
"type": "catch",
"z": "1f4d4622.7490ca",
"name": "Catch all errors",
"wires": [
[
"p2fmt_tmp"
]
],
"scope": null,
"uncaught": false,
"x": 160,
"y": 700
},
{
"id": "p2fmt_tmp",
"type": "function",
"z": "1f4d4622.7490ca",
"name": "Format error",
"wires": [
[
"p2ntfy_tmp"
]
],
"func": "const err = (msg.error && msg.error.message) ? msg.error.message : String(msg.payload || 'Unknown error');\nconst src = (msg.error && msg.error.source) ? (msg.error.source.name || msg.error.source.id || '') : '';\nmsg.payload = JSON.stringify({\n title: 'Node-RED Error: Temperature & climate',\n message: err + (src ? '\\n\\nNode: ' + src : '')\n});\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"timeout": "",
"x": 400,
"y": 700
},
{
"id": "p2ntfy_tmp",
"type": "api-call-service",
"z": "1f4d4622.7490ca",
"name": "Notify error",
"wires": [
[]
],
"server": "657c7463.48e1e4",
"version": 7,
"debugenabled": false,
"action": "notify.gotify_ha",
"floorId": [],
"areaId": [],
"deviceId": [],
"entityId": [],
"labelId": [],
"data": "{{{payload}}}",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "notify",
"service": "gotify_ha",
"output_location": "",
"output_location_type": "none",
"x": 660,
"y": 700
}
]