@CrunkFX
Ich habe mal Dein Blockly Skript importiert und versucht in Node-Red umzusetzen:
[
{
"id": "9f04b667.5cd998",
"type": "tab",
"label": "Flow 2",
"disabled": false,
"info": ""
},
{
"id": "3bcbf948.4c3446",
"type": "ioBroker in",
"z": "9f04b667.5cd998",
"name": "",
"topic": "0_userdata.0.dein_TH16_Temp_DP",
"payloadType": "value",
"onlyack": "",
"func": "all",
"gap": "",
"x": 230,
"y": 200,
"wires": [
[
"9deba34c.8a806"
]
]
},
{
"id": "9deba34c.8a806",
"type": "change",
"z": "9f04b667.5cd998",
"name": "to Number",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "$number(msg.payload)\t",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 470,
"y": 200,
"wires": [
[
"79074a2f.e315f4",
"79a6662f.b72558"
]
]
},
{
"id": "79074a2f.e315f4",
"type": "change",
"z": "9f04b667.5cd998",
"name": "Level Oben + 0.2",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload + 0.2",
"tot": "jsonata"
},
{
"t": "set",
"p": "LevelOff",
"pt": "flow",
"to": "payload",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 690,
"y": 180,
"wires": [
[]
]
},
{
"id": "79a6662f.b72558",
"type": "change",
"z": "9f04b667.5cd998",
"name": "Level Unten - 0.2",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload - 0.2",
"tot": "jsonata"
},
{
"t": "set",
"p": "LevelOn",
"pt": "flow",
"to": "payload",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 690,
"y": 220,
"wires": [
[]
]
},
{
"id": "a3f4a48c.5fbea8",
"type": "inject",
"z": "9f04b667.5cd998",
"name": "",
"topic": "Temperatur",
"payload": "19",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 150,
"y": 360,
"wires": [
[
"200998b7.04c3e8"
]
]
},
{
"id": "200998b7.04c3e8",
"type": "change",
"z": "9f04b667.5cd998",
"name": "to Number",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "$number(msg.payload)\t",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 310,
"y": 360,
"wires": [
[
"60e1c1db.31561"
]
]
},
{
"id": "60e1c1db.31561",
"type": "switch",
"z": "9f04b667.5cd998",
"name": "Schalte",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "gt",
"v": "LevelOff",
"vt": "flow"
},
{
"t": "lt",
"v": "LevelOn",
"vt": "flow"
}
],
"checkall": "true",
"repair": false,
"outputs": 2,
"x": 460,
"y": 360,
"wires": [
[
"775acae7.a07974"
],
[
"c65452e7.c57c8"
]
]
},
{
"id": "775acae7.a07974",
"type": "change",
"z": "9f04b667.5cd998",
"name": "Ausschalten Off/False",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "false",
"tot": "bool"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 700,
"y": 340,
"wires": [
[
"184ff99a.c85ca6"
]
]
},
{
"id": "c65452e7.c57c8",
"type": "change",
"z": "9f04b667.5cd998",
"name": "Einschalten On/true",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "true",
"tot": "bool"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 690,
"y": 380,
"wires": [
[
"184ff99a.c85ca6"
]
]
},
{
"id": "184ff99a.c85ca6",
"type": "ioBroker out",
"z": "9f04b667.5cd998",
"name": "zur Steckdose",
"topic": "",
"ack": "false",
"autoCreate": "false",
"x": 980,
"y": 360,
"wires": []
}
]
Das sieht dann so aus:
screen.png
Und ich will niemand bekehren, aber doch vielleicht auch Alternativen aufzeigen.
Das wäre in meinen Augen das, was Du mit dem Blockly machst - ich habe mir das extra mal importiert. 😉
Ich persönlich mag dieses Flow basierende, da es gerade für Neulinge einfacher zu verstehen ist, was passiert wenn ....
Im Übrigen wird man eben auch gezwungen zu unterscheiden, was sind "Parameter" Flows oder dann "Schalter" Flows. Ich finde, dass man hier "erzogen" wird, die Probleme richtig zu strukturieren - deshalb bin ich halt ein kleiner Fan-Boy von Node-Red. Man möge mir das Nachsehen.
Statt dem Inject Node - für die Temperatur natürlich den Datenpunkt der Sonoff setzen und analog zu oben in Zahl konvertieren und natürlich den Datenpunkt zur Steckdose anpassen und ob True/False oder 0/1 oder On/Off gesetzt werden muss.