NEWS
Timer erstellen und bei Bedarf wieder löschen
-
Hi,
ich habe vor einigen Tagen angefangen mit node-red ein paar Spielerein umzusetzen, das klappte auch soweit ganz gut. Und nach den ersten Erfolgen kommen nun die Schwierigkeiten.Ich m
ö
chte gerne
ü
ber eine Visualisierung einen Timer setzen, ausf
ü
hren lassen und bei Bedarf wieder l
ö
schen. Auch soll das Ganze nach Ausl
ö
sung automatisch wieder zur
ü
ckgestzt werden.Ich habe meine Versuche mal hier angeh
ä
ngt, vielleicht habt ihr ja ne Idee oder @mickym ne L
ö
sung.
[ { "id": "76c099af.f7c52", "type": "tab", "label": "Ausschalttimer TV Lilly", "disabled": false, "info": "" }, { "id": "adff7635.984818", "type": "debug", "z": "76c099af.f7c52", "name": "Datenpunkt", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 750, "y": 200, "wires": [] }, { "id": "b3cbeec.9653d1", "type": "eztimer", "z": "76c099af.f7c52", "name": "ezTimer", "debug": false, "autoname": "17:00", "tag": "eztimer", "topic": "", "suspended": false, "sendEventsOnSuspend": false, "latLongSource": "manual", "latLongHaZone": "zone.home", "lat": "", "lon": "", "timerType": "2", "startupMessage": false, "ontype": "2", "ontimesun": "dawn", "ontimetod": "17:00", "onpropertytype": "msg", "onproperty": "payload", "onvaluetype": "bool", "onvalue": "false", "onoffset": 0, "onrandomoffset": 0, "onsuppressrepeats": false, "offtype": "9", "offtimesun": "dusk", "offtimetod": "dusk", "offduration": "00:01:00", "offpropertytype": "msg", "offproperty": "payload", "offvaluetype": "num", "offvalue": 0, "offoffset": 0, "offrandomoffset": 0, "offsuppressrepeats": false, "resend": false, "resendInterval": "0s", "mon": true, "tue": true, "wed": true, "thu": true, "fri": true, "sat": true, "sun": true, "x": 740, "y": 280, "wires": [ [ "ddd97179.004ab", "dd1f8133.ac2198", "8feae351.fbf7d8" ] ] }, { "id": "ddd97179.004ab", "type": "debug", "z": "76c099af.f7c52", "name": "nach eztimer", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1060, "y": 200, "wires": [] }, { "id": "9e2ab0ca.693f78", "type": "ioBroker get", "z": "76c099af.f7c52", "name": "Ausschaltzeit Lilly", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschaltzeit_Lilly", "attrname": "payload", "payloadType": "value", "x": 430, "y": 200, "wires": [ [ "adff7635.984818", "ba93ec83.f49e98" ] ] }, { "id": "3ef3689.4c42f18", "type": "inject", "z": "76c099af.f7c52", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"action\":\"off\"}", "payloadType": "json", "x": 210, "y": 340, "wires": [ [ "e3396ad2.8a8328", "b3cbeec.9653d1" ] ] }, { "id": "ba93ec83.f49e98", "type": "change", "z": "76c099af.f7c52", "name": "ontime generieren", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.ontime", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 430, "y": 280, "wires": [ [ "36108e1.c58e772", "b3cbeec.9653d1" ] ] }, { "id": "36108e1.c58e772", "type": "debug", "z": "76c099af.f7c52", "name": "change", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 740, "y": 240, "wires": [] }, { "id": "d88f8ced.6c6dc8", "type": "ioBroker in", "z": "76c099af.f7c52", "name": "Timer betätigt", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 130, "y": 140, "wires": [ [ "586cbd7d.346c44", "68be1b0d.a93644", "12a4c986.404ebe" ] ] }, { "id": "dd1f8133.ac2198", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1210, "y": 280, "wires": [] }, { "id": "586cbd7d.346c44", "type": "switch", "z": "76c099af.f7c52", "name": "only true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 400, "y": 140, "wires": [ [ "9e2ab0ca.693f78" ] ] }, { "id": "4d2e5d98.8e7514", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "SD Fensterbank aus", "topic": "sonoff.0.Steckdose Fensterbank.POWER", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1080, "y": 340, "wires": [] }, { "id": "e3396ad2.8a8328", "type": "change", "z": "76c099af.f7c52", "name": "ezTimer aus", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.action.off", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 450, "y": 340, "wires": [ [ "305d3a73.f20cde" ] ] }, { "id": "553dd69d.196ac", "type": "inject", "z": "76c099af.f7c52", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 150, "y": 200, "wires": [ [ "9e2ab0ca.693f78" ] ] }, { "id": "305d3a73.f20cde", "type": "debug", "z": "76c099af.f7c52", "name": "Timer aus", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 750, "y": 340, "wires": [] }, { "id": "c1cd0f62.9c1588", "type": "function", "z": "76c099af.f7c52", "name": "&", "func": "context.global.myVars = context.global.myVars || {};\ncontext.global.myVars[msg.topic] = msg.payload;\n\nmsg.topic = 'AND';\nmsg.payload = (parseInt(context.global.myVars.A, 10) &&\n parseInt(context.global.myVars.B, 10));\n\nif (msg.payload) return msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 970, "y": 520, "wires": [ [ "20fe2e57.0d18f2", "31cdef55.b0a18" ] ] }, { "id": "20fe2e57.0d18f2", "type": "change", "z": "76c099af.f7c52", "name": "Testausgabe", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "1", "fromt": "num", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1110, "y": 520, "wires": [ [] ] }, { "id": "68be1b0d.a93644", "type": "change", "z": "76c099af.f7c52", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "1", "tot": "num" }, { "t": "change", "p": "payload", "pt": "msg", "from": "false", "fromt": "bool", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 770, "y": 540, "wires": [ [ "c1cd0f62.9c1588", "733b6163.8d03a8" ] ] }, { "id": "733b6163.8d03a8", "type": "debug", "z": "76c099af.f7c52", "name": "nach Regeländerung 2", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1050, "y": 620, "wires": [] }, { "id": "353fea2.b330796", "type": "debug", "z": "76c099af.f7c52", "name": "nach Regeländerung 1", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1050, "y": 460, "wires": [] }, { "id": "31cdef55.b0a18", "type": "debug", "z": "76c099af.f7c52", "name": "nach UND Verknüpfung", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1150, "y": 560, "wires": [] }, { "id": "8feae351.fbf7d8", "type": "change", "z": "76c099af.f7c52", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "false", "fromt": "bool", "to": "1", "tot": "num" }, { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "0", "tot": "num" }, { "t": "change", "p": "topic", "pt": "msg", "from": "*", "fromt": "str", "to": "A", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 770, "y": 500, "wires": [ [ "c1cd0f62.9c1588", "353fea2.b330796" ] ] }, { "id": "12a4c986.404ebe", "type": "debug", "z": "76c099af.f7c52", "name": "Timer an/aus", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 420, "y": 100, "wires": [] } ] -
Hi,
ich habe vor einigen Tagen angefangen mit node-red ein paar Spielerein umzusetzen, das klappte auch soweit ganz gut. Und nach den ersten Erfolgen kommen nun die Schwierigkeiten.Ich m
ö
chte gerne
ü
ber eine Visualisierung einen Timer setzen, ausf
ü
hren lassen und bei Bedarf wieder l
ö
schen. Auch soll das Ganze nach Ausl
ö
sung automatisch wieder zur
ü
ckgestzt werden.Ich habe meine Versuche mal hier angeh
ä
ngt, vielleicht habt ihr ja ne Idee oder @mickym ne L
ö
sung.
[ { "id": "76c099af.f7c52", "type": "tab", "label": "Ausschalttimer TV Lilly", "disabled": false, "info": "" }, { "id": "adff7635.984818", "type": "debug", "z": "76c099af.f7c52", "name": "Datenpunkt", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 750, "y": 200, "wires": [] }, { "id": "b3cbeec.9653d1", "type": "eztimer", "z": "76c099af.f7c52", "name": "ezTimer", "debug": false, "autoname": "17:00", "tag": "eztimer", "topic": "", "suspended": false, "sendEventsOnSuspend": false, "latLongSource": "manual", "latLongHaZone": "zone.home", "lat": "", "lon": "", "timerType": "2", "startupMessage": false, "ontype": "2", "ontimesun": "dawn", "ontimetod": "17:00", "onpropertytype": "msg", "onproperty": "payload", "onvaluetype": "bool", "onvalue": "false", "onoffset": 0, "onrandomoffset": 0, "onsuppressrepeats": false, "offtype": "9", "offtimesun": "dusk", "offtimetod": "dusk", "offduration": "00:01:00", "offpropertytype": "msg", "offproperty": "payload", "offvaluetype": "num", "offvalue": 0, "offoffset": 0, "offrandomoffset": 0, "offsuppressrepeats": false, "resend": false, "resendInterval": "0s", "mon": true, "tue": true, "wed": true, "thu": true, "fri": true, "sat": true, "sun": true, "x": 740, "y": 280, "wires": [ [ "ddd97179.004ab", "dd1f8133.ac2198", "8feae351.fbf7d8" ] ] }, { "id": "ddd97179.004ab", "type": "debug", "z": "76c099af.f7c52", "name": "nach eztimer", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1060, "y": 200, "wires": [] }, { "id": "9e2ab0ca.693f78", "type": "ioBroker get", "z": "76c099af.f7c52", "name": "Ausschaltzeit Lilly", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschaltzeit_Lilly", "attrname": "payload", "payloadType": "value", "x": 430, "y": 200, "wires": [ [ "adff7635.984818", "ba93ec83.f49e98" ] ] }, { "id": "3ef3689.4c42f18", "type": "inject", "z": "76c099af.f7c52", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"action\":\"off\"}", "payloadType": "json", "x": 210, "y": 340, "wires": [ [ "e3396ad2.8a8328", "b3cbeec.9653d1" ] ] }, { "id": "ba93ec83.f49e98", "type": "change", "z": "76c099af.f7c52", "name": "ontime generieren", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.ontime", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 430, "y": 280, "wires": [ [ "36108e1.c58e772", "b3cbeec.9653d1" ] ] }, { "id": "36108e1.c58e772", "type": "debug", "z": "76c099af.f7c52", "name": "change", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 740, "y": 240, "wires": [] }, { "id": "d88f8ced.6c6dc8", "type": "ioBroker in", "z": "76c099af.f7c52", "name": "Timer betätigt", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 130, "y": 140, "wires": [ [ "586cbd7d.346c44", "68be1b0d.a93644", "12a4c986.404ebe" ] ] }, { "id": "dd1f8133.ac2198", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1210, "y": 280, "wires": [] }, { "id": "586cbd7d.346c44", "type": "switch", "z": "76c099af.f7c52", "name": "only true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 400, "y": 140, "wires": [ [ "9e2ab0ca.693f78" ] ] }, { "id": "4d2e5d98.8e7514", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "SD Fensterbank aus", "topic": "sonoff.0.Steckdose Fensterbank.POWER", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1080, "y": 340, "wires": [] }, { "id": "e3396ad2.8a8328", "type": "change", "z": "76c099af.f7c52", "name": "ezTimer aus", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.action.off", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 450, "y": 340, "wires": [ [ "305d3a73.f20cde" ] ] }, { "id": "553dd69d.196ac", "type": "inject", "z": "76c099af.f7c52", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 150, "y": 200, "wires": [ [ "9e2ab0ca.693f78" ] ] }, { "id": "305d3a73.f20cde", "type": "debug", "z": "76c099af.f7c52", "name": "Timer aus", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 750, "y": 340, "wires": [] }, { "id": "c1cd0f62.9c1588", "type": "function", "z": "76c099af.f7c52", "name": "&", "func": "context.global.myVars = context.global.myVars || {};\ncontext.global.myVars[msg.topic] = msg.payload;\n\nmsg.topic = 'AND';\nmsg.payload = (parseInt(context.global.myVars.A, 10) &&\n parseInt(context.global.myVars.B, 10));\n\nif (msg.payload) return msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 970, "y": 520, "wires": [ [ "20fe2e57.0d18f2", "31cdef55.b0a18" ] ] }, { "id": "20fe2e57.0d18f2", "type": "change", "z": "76c099af.f7c52", "name": "Testausgabe", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "1", "fromt": "num", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1110, "y": 520, "wires": [ [] ] }, { "id": "68be1b0d.a93644", "type": "change", "z": "76c099af.f7c52", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "1", "tot": "num" }, { "t": "change", "p": "payload", "pt": "msg", "from": "false", "fromt": "bool", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 770, "y": 540, "wires": [ [ "c1cd0f62.9c1588", "733b6163.8d03a8" ] ] }, { "id": "733b6163.8d03a8", "type": "debug", "z": "76c099af.f7c52", "name": "nach Regeländerung 2", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1050, "y": 620, "wires": [] }, { "id": "353fea2.b330796", "type": "debug", "z": "76c099af.f7c52", "name": "nach Regeländerung 1", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1050, "y": 460, "wires": [] }, { "id": "31cdef55.b0a18", "type": "debug", "z": "76c099af.f7c52", "name": "nach UND Verknüpfung", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1150, "y": 560, "wires": [] }, { "id": "8feae351.fbf7d8", "type": "change", "z": "76c099af.f7c52", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "false", "fromt": "bool", "to": "1", "tot": "num" }, { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "0", "tot": "num" }, { "t": "change", "p": "topic", "pt": "msg", "from": "*", "fromt": "str", "to": "A", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 770, "y": 500, "wires": [ [ "c1cd0f62.9c1588", "353fea2.b330796" ] ] }, { "id": "12a4c986.404ebe", "type": "debug", "z": "76c099af.f7c52", "name": "Timer an/aus", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 420, "y": 100, "wires": [] } ]@michmein
Nach etwas suchen und weiteren Versuchen habe ich eine L
ö
sung gefunden.
[ { "id": "76c099af.f7c52", "type": "tab", "label": "Ausschalttimer TV Lilly", "disabled": false, "info": "" }, { "id": "b3cbeec.9653d1", "type": "eztimer", "z": "76c099af.f7c52", "name": "ezTimer", "debug": false, "autoname": "17:00", "tag": "eztimer", "topic": "", "suspended": false, "sendEventsOnSuspend": false, "latLongSource": "manual", "latLongHaZone": "zone.home", "lat": "", "lon": "", "timerType": "2", "startupMessage": false, "ontype": "2", "ontimesun": "dawn", "ontimetod": "17:00", "onpropertytype": "msg", "onproperty": "payload", "onvaluetype": "bool", "onvalue": "true", "onoffset": 0, "onrandomoffset": 0, "onsuppressrepeats": false, "offtype": "9", "offtimesun": "dusk", "offtimetod": "dusk", "offduration": "00:01:00", "offpropertytype": "msg", "offproperty": "payload", "offvaluetype": "num", "offvalue": 0, "offoffset": 0, "offrandomoffset": 0, "offsuppressrepeats": false, "resend": false, "resendInterval": "0s", "mon": true, "tue": true, "wed": true, "thu": true, "fri": true, "sat": true, "sun": true, "x": 500, "y": 200, "wires": [ [ "488b354d.6eb57c", "794819e5.e5cdf8" ] ] }, { "id": "9e2ab0ca.693f78", "type": "ioBroker get", "z": "76c099af.f7c52", "name": "Ausschaltzeit Lilly", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschaltzeit_Lilly", "attrname": "payload", "payloadType": "value", "x": 310, "y": 140, "wires": [ [ "ba93ec83.f49e98" ] ] }, { "id": "ba93ec83.f49e98", "type": "change", "z": "76c099af.f7c52", "name": "ontime generieren", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.ontime", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 310, "y": 200, "wires": [ [ "b3cbeec.9653d1" ] ] }, { "id": "d88f8ced.6c6dc8", "type": "ioBroker in", "z": "76c099af.f7c52", "name": "Timer on/off", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 170, "y": 80, "wires": [ [ "586cbd7d.346c44", "488b354d.6eb57c" ] ] }, { "id": "dd1f8133.ac2198", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "Timer on/off", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 550, "y": 80, "wires": [] }, { "id": "586cbd7d.346c44", "type": "switch", "z": "76c099af.f7c52", "name": "only true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 340, "y": 80, "wires": [ [ "9e2ab0ca.693f78" ] ] }, { "id": "4d2e5d98.8e7514", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "SD Lilly TV", "topic": "sonoff.0.Steckdose TV Lilly.POWER", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 730, "y": 320, "wires": [] }, { "id": "31cdef55.b0a18", "type": "debug", "z": "76c099af.f7c52", "name": "nach UND Verknüpfung", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 590, "y": 280, "wires": [] }, { "id": "488b354d.6eb57c", "type": "BooleanLogicUltimate", "z": "76c099af.f7c52", "name": "AND", "filtertrue": "onlytrue", "persist": true, "sInitializeWith": "WaitForPayload", "triggertopic": "trigger", "outputtriggeredby": "all", "inputCount": 2, "topic": "result", "restrictinputevaluation": true, "x": 340, "y": 340, "wires": [ [ "31cdef55.b0a18", "7ca43ca5.c344b4" ], [], [] ] }, { "id": "794819e5.e5cdf8", "type": "change", "z": "76c099af.f7c52", "name": "true > false", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 330, "y": 260, "wires": [ [ "dd1f8133.ac2198", "488b354d.6eb57c" ] ] }, { "id": "7ca43ca5.c344b4", "type": "change", "z": "76c099af.f7c52", "name": "true > false", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 320, "wires": [ [ "4d2e5d98.8e7514" ] ] } ] -
Hi,
ich habe vor einigen Tagen angefangen mit node-red ein paar Spielerein umzusetzen, das klappte auch soweit ganz gut. Und nach den ersten Erfolgen kommen nun die Schwierigkeiten.Ich m
ö
chte gerne
ü
ber eine Visualisierung einen Timer setzen, ausf
ü
hren lassen und bei Bedarf wieder l
ö
schen. Auch soll das Ganze nach Ausl
ö
sung automatisch wieder zur
ü
ckgestzt werden.Ich habe meine Versuche mal hier angeh
ä
ngt, vielleicht habt ihr ja ne Idee oder @mickym ne L
ö
sung.
[ { "id": "76c099af.f7c52", "type": "tab", "label": "Ausschalttimer TV Lilly", "disabled": false, "info": "" }, { "id": "adff7635.984818", "type": "debug", "z": "76c099af.f7c52", "name": "Datenpunkt", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 750, "y": 200, "wires": [] }, { "id": "b3cbeec.9653d1", "type": "eztimer", "z": "76c099af.f7c52", "name": "ezTimer", "debug": false, "autoname": "17:00", "tag": "eztimer", "topic": "", "suspended": false, "sendEventsOnSuspend": false, "latLongSource": "manual", "latLongHaZone": "zone.home", "lat": "", "lon": "", "timerType": "2", "startupMessage": false, "ontype": "2", "ontimesun": "dawn", "ontimetod": "17:00", "onpropertytype": "msg", "onproperty": "payload", "onvaluetype": "bool", "onvalue": "false", "onoffset": 0, "onrandomoffset": 0, "onsuppressrepeats": false, "offtype": "9", "offtimesun": "dusk", "offtimetod": "dusk", "offduration": "00:01:00", "offpropertytype": "msg", "offproperty": "payload", "offvaluetype": "num", "offvalue": 0, "offoffset": 0, "offrandomoffset": 0, "offsuppressrepeats": false, "resend": false, "resendInterval": "0s", "mon": true, "tue": true, "wed": true, "thu": true, "fri": true, "sat": true, "sun": true, "x": 740, "y": 280, "wires": [ [ "ddd97179.004ab", "dd1f8133.ac2198", "8feae351.fbf7d8" ] ] }, { "id": "ddd97179.004ab", "type": "debug", "z": "76c099af.f7c52", "name": "nach eztimer", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1060, "y": 200, "wires": [] }, { "id": "9e2ab0ca.693f78", "type": "ioBroker get", "z": "76c099af.f7c52", "name": "Ausschaltzeit Lilly", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschaltzeit_Lilly", "attrname": "payload", "payloadType": "value", "x": 430, "y": 200, "wires": [ [ "adff7635.984818", "ba93ec83.f49e98" ] ] }, { "id": "3ef3689.4c42f18", "type": "inject", "z": "76c099af.f7c52", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"action\":\"off\"}", "payloadType": "json", "x": 210, "y": 340, "wires": [ [ "e3396ad2.8a8328", "b3cbeec.9653d1" ] ] }, { "id": "ba93ec83.f49e98", "type": "change", "z": "76c099af.f7c52", "name": "ontime generieren", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.ontime", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 430, "y": 280, "wires": [ [ "36108e1.c58e772", "b3cbeec.9653d1" ] ] }, { "id": "36108e1.c58e772", "type": "debug", "z": "76c099af.f7c52", "name": "change", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 740, "y": 240, "wires": [] }, { "id": "d88f8ced.6c6dc8", "type": "ioBroker in", "z": "76c099af.f7c52", "name": "Timer betätigt", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 130, "y": 140, "wires": [ [ "586cbd7d.346c44", "68be1b0d.a93644", "12a4c986.404ebe" ] ] }, { "id": "dd1f8133.ac2198", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1210, "y": 280, "wires": [] }, { "id": "586cbd7d.346c44", "type": "switch", "z": "76c099af.f7c52", "name": "only true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 400, "y": 140, "wires": [ [ "9e2ab0ca.693f78" ] ] }, { "id": "4d2e5d98.8e7514", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "SD Fensterbank aus", "topic": "sonoff.0.Steckdose Fensterbank.POWER", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1080, "y": 340, "wires": [] }, { "id": "e3396ad2.8a8328", "type": "change", "z": "76c099af.f7c52", "name": "ezTimer aus", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.action.off", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 450, "y": 340, "wires": [ [ "305d3a73.f20cde" ] ] }, { "id": "553dd69d.196ac", "type": "inject", "z": "76c099af.f7c52", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 150, "y": 200, "wires": [ [ "9e2ab0ca.693f78" ] ] }, { "id": "305d3a73.f20cde", "type": "debug", "z": "76c099af.f7c52", "name": "Timer aus", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 750, "y": 340, "wires": [] }, { "id": "c1cd0f62.9c1588", "type": "function", "z": "76c099af.f7c52", "name": "&", "func": "context.global.myVars = context.global.myVars || {};\ncontext.global.myVars[msg.topic] = msg.payload;\n\nmsg.topic = 'AND';\nmsg.payload = (parseInt(context.global.myVars.A, 10) &&\n parseInt(context.global.myVars.B, 10));\n\nif (msg.payload) return msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 970, "y": 520, "wires": [ [ "20fe2e57.0d18f2", "31cdef55.b0a18" ] ] }, { "id": "20fe2e57.0d18f2", "type": "change", "z": "76c099af.f7c52", "name": "Testausgabe", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "1", "fromt": "num", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1110, "y": 520, "wires": [ [] ] }, { "id": "68be1b0d.a93644", "type": "change", "z": "76c099af.f7c52", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "1", "tot": "num" }, { "t": "change", "p": "payload", "pt": "msg", "from": "false", "fromt": "bool", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 770, "y": 540, "wires": [ [ "c1cd0f62.9c1588", "733b6163.8d03a8" ] ] }, { "id": "733b6163.8d03a8", "type": "debug", "z": "76c099af.f7c52", "name": "nach Regeländerung 2", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1050, "y": 620, "wires": [] }, { "id": "353fea2.b330796", "type": "debug", "z": "76c099af.f7c52", "name": "nach Regeländerung 1", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1050, "y": 460, "wires": [] }, { "id": "31cdef55.b0a18", "type": "debug", "z": "76c099af.f7c52", "name": "nach UND Verknüpfung", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1150, "y": 560, "wires": [] }, { "id": "8feae351.fbf7d8", "type": "change", "z": "76c099af.f7c52", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "false", "fromt": "bool", "to": "1", "tot": "num" }, { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "0", "tot": "num" }, { "t": "change", "p": "topic", "pt": "msg", "from": "*", "fromt": "str", "to": "A", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 770, "y": 500, "wires": [ [ "c1cd0f62.9c1588", "353fea2.b330796" ] ] }, { "id": "12a4c986.404ebe", "type": "debug", "z": "76c099af.f7c52", "name": "Timer an/aus", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 420, "y": 100, "wires": [] } ]@michmein Nun ich habe mich mal Deines Flows angenommen und in men Standalon System importiert - da hatte ich zuf
ä
lligerweise noch die EZ-Timer Nodes drin - aus meinem produktiven System sind die rausgeflogen, weil crontab plus viel leistungsf
ä
higer ist - also w
ü
rde ich mir
ü
berlegen, ob ich mit diesen Nodes weiter machen w
ü
rde.Ich habs mal nachvollzogen und die iobroker Nodes f
ü
r den Flow mal ausgetauscht um das Ganze auf dem Standalone System zu testen und eben nachzuvollziehen. Im Prinzip funktioniert es ja erst mal - man muss sich halt in die Funktionsweise von dem eztimer einarbeiten.Hier mal ein Testflow ohne die iobroker Nodes - der aber ansonsten Deinem Flow entspricht:

Vielleicht k
ö
nnen wir uns ja mal dann an dem Flow orientieren, wobei ich den EZ-Timer nicht mehr so toll finde. Da ist cronplus wesentlich leistungsf
ä
higer, aber egal - wichtig ist ja erst mal was Du erreichen willst und deshalb hab ich mal lehrerhaft
in Deinem Flow rumgekrizelt:
Die Node funktioniert erst mal so, wie sie soll - sieht man an den gr
ü
nen Ausgaben, aber was das Ganze rechts unten soll, das erschlie
ß
t sich mir auch mit viel Fantasie nicht - deshalb mal die die ???. Aber vielleicht kannst Du ja Erkl
ä
rungen liefern, was was soll und warum Du manches so gemacht hast. Auch die Action off - einmal direkt in den Timer und dann isoliert in eine Change Node um zu sehen, was man da macht - die ist ja isoliert? -
@michmein
Nach etwas suchen und weiteren Versuchen habe ich eine L
ö
sung gefunden.
[ { "id": "76c099af.f7c52", "type": "tab", "label": "Ausschalttimer TV Lilly", "disabled": false, "info": "" }, { "id": "b3cbeec.9653d1", "type": "eztimer", "z": "76c099af.f7c52", "name": "ezTimer", "debug": false, "autoname": "17:00", "tag": "eztimer", "topic": "", "suspended": false, "sendEventsOnSuspend": false, "latLongSource": "manual", "latLongHaZone": "zone.home", "lat": "", "lon": "", "timerType": "2", "startupMessage": false, "ontype": "2", "ontimesun": "dawn", "ontimetod": "17:00", "onpropertytype": "msg", "onproperty": "payload", "onvaluetype": "bool", "onvalue": "true", "onoffset": 0, "onrandomoffset": 0, "onsuppressrepeats": false, "offtype": "9", "offtimesun": "dusk", "offtimetod": "dusk", "offduration": "00:01:00", "offpropertytype": "msg", "offproperty": "payload", "offvaluetype": "num", "offvalue": 0, "offoffset": 0, "offrandomoffset": 0, "offsuppressrepeats": false, "resend": false, "resendInterval": "0s", "mon": true, "tue": true, "wed": true, "thu": true, "fri": true, "sat": true, "sun": true, "x": 500, "y": 200, "wires": [ [ "488b354d.6eb57c", "794819e5.e5cdf8" ] ] }, { "id": "9e2ab0ca.693f78", "type": "ioBroker get", "z": "76c099af.f7c52", "name": "Ausschaltzeit Lilly", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschaltzeit_Lilly", "attrname": "payload", "payloadType": "value", "x": 310, "y": 140, "wires": [ [ "ba93ec83.f49e98" ] ] }, { "id": "ba93ec83.f49e98", "type": "change", "z": "76c099af.f7c52", "name": "ontime generieren", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.ontime", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 310, "y": 200, "wires": [ [ "b3cbeec.9653d1" ] ] }, { "id": "d88f8ced.6c6dc8", "type": "ioBroker in", "z": "76c099af.f7c52", "name": "Timer on/off", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 170, "y": 80, "wires": [ [ "586cbd7d.346c44", "488b354d.6eb57c" ] ] }, { "id": "dd1f8133.ac2198", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "Timer on/off", "topic": "0_userdata.0.Diverses.virtuelle_Schalter.Ausschalttimer_Lilly", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 550, "y": 80, "wires": [] }, { "id": "586cbd7d.346c44", "type": "switch", "z": "76c099af.f7c52", "name": "only true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 340, "y": 80, "wires": [ [ "9e2ab0ca.693f78" ] ] }, { "id": "4d2e5d98.8e7514", "type": "ioBroker out", "z": "76c099af.f7c52", "name": "SD Lilly TV", "topic": "sonoff.0.Steckdose TV Lilly.POWER", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 730, "y": 320, "wires": [] }, { "id": "31cdef55.b0a18", "type": "debug", "z": "76c099af.f7c52", "name": "nach UND Verknüpfung", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 590, "y": 280, "wires": [] }, { "id": "488b354d.6eb57c", "type": "BooleanLogicUltimate", "z": "76c099af.f7c52", "name": "AND", "filtertrue": "onlytrue", "persist": true, "sInitializeWith": "WaitForPayload", "triggertopic": "trigger", "outputtriggeredby": "all", "inputCount": 2, "topic": "result", "restrictinputevaluation": true, "x": 340, "y": 340, "wires": [ [ "31cdef55.b0a18", "7ca43ca5.c344b4" ], [], [] ] }, { "id": "794819e5.e5cdf8", "type": "change", "z": "76c099af.f7c52", "name": "true > false", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 330, "y": 260, "wires": [ [ "dd1f8133.ac2198", "488b354d.6eb57c" ] ] }, { "id": "7ca43ca5.c344b4", "type": "change", "z": "76c099af.f7c52", "name": "true > false", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 320, "wires": [ [ "4d2e5d98.8e7514" ] ] } ]@michmein sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:@michmein
Nach etwas suchen und weiteren Versuchen habe ich eine L
ö
sung gefunden.
und schon wieder jemand, der eine Logik-Node installiert.

Na gut dann bin ich raus - dann hast Du ja eine L
ö
sung.
Und bekanntlich f
ü
hren ja viele Wege nach Rom. -
@michmein sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:@michmein
Nach etwas suchen und weiteren Versuchen habe ich eine L
ö
sung gefunden.
und schon wieder jemand, der eine Logik-Node installiert.

Na gut dann bin ich raus - dann hast Du ja eine L
ö
sung.
Und bekanntlich f
ü
hren ja viele Wege nach Rom.@mickym
Erstmal vielen Dank f
ü
r deine M
ü
hen!
Ich habe an dem ganzen nun schon ein paar Stunden verbracht gehabt und es war immer so das ich den ezTimer nicht zur
ü
cksetzen konnte, wenn er einmal gestellt war blieb er so und sein Event zur eingegeben Zeit ausgegeben. Dann habe ich eine "uraltes" Script von bluefox im Forum gefunden (das sind deine "???" aus deiner ersten Antwort) und habe das getestet. Aber auch dies f
ü
hrte nicht zu meinem Ergebnis.
Schlu
ß
endlich habe ich das Logik-Node installiert und damit klappt nun mein gew
ü
nschtes Szenario.und schon wieder jemand, der eine Logik-Node installiert.
Was genau soll das bedeuten? Spricht etwas gegen die Logik-Nodes oder magst du sie einfach nicht?
... Da ist cronplus wesentlich leistungsf
ä
higer, aber egal ...Den habe ich auch installiert, konnte aber nichts wirklich finden wie dieser "extern" mit einer Zeit best
ü
ckt werden kann. -
@mickym
Erstmal vielen Dank f
ü
r deine M
ü
hen!
Ich habe an dem ganzen nun schon ein paar Stunden verbracht gehabt und es war immer so das ich den ezTimer nicht zur
ü
cksetzen konnte, wenn er einmal gestellt war blieb er so und sein Event zur eingegeben Zeit ausgegeben. Dann habe ich eine "uraltes" Script von bluefox im Forum gefunden (das sind deine "???" aus deiner ersten Antwort) und habe das getestet. Aber auch dies f
ü
hrte nicht zu meinem Ergebnis.
Schlu
ß
endlich habe ich das Logik-Node installiert und damit klappt nun mein gew
ü
nschtes Szenario.und schon wieder jemand, der eine Logik-Node installiert.
Was genau soll das bedeuten? Spricht etwas gegen die Logik-Nodes oder magst du sie einfach nicht?
... Da ist cronplus wesentlich leistungsf
ä
higer, aber egal ...Den habe ich auch installiert, konnte aber nichts wirklich finden wie dieser "extern" mit einer Zeit best
ü
ckt werden kann.@michmein sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:@mickym
Erstmal vielen Dank f
ü
r deine M
ü
hen!
Ich habe an dem ganzen nun schon ein paar Stunden verbracht gehabt und es war immer so das ich den ezTimer nicht zur
ü
cksetzen konnte, wenn er einmal gestellt war blieb er so und sein Event zur eingegeben Zeit ausgegeben. Dann habe ich eine "uraltes" Script von bluefox im Forum gefunden (das sind deine "???" aus deiner ersten Antwort) und habe das getestet. Aber auch dies f
ü
hrte nicht zu meinem Ergebnis.
Schlu
ß
endlich habe ich das Logik-Node installiert und damit klappt nun mein gew
ü
nschtes Szenario.und schon wieder jemand, der eine Logik-Node installiert.
Was genau soll das bedeuten? Spricht etwas gegen die Logik-Nodes oder magst du sie einfach nicht?
Ja ich mag sie nicht.
- Ich bin generell gegen Nodes oder Adapter, die nichts weiter machen, als bereits vorhandene Informationen aufzubereiten, die man aber mit wenigen Handgriffen auch aus dem Standardbaukasten zusammensetzen kann. Wenn man dann mal solche Bausteine hat, dann speichere ich mir die als Flows oder einzelne Nodes in meiner lokalen Biblothek von NodeRed ab und habe sie dann schnell zur Verf
ü
gung.In diesem Post - ist vielleicht nicht f
ü
r Deinen speziellen Fall relevant, habe ich mal alle M
ö
glichen Verkn
ü
fungen mit ChangeNodes und JSONATA zusammgefasst um logisch Eigenschaften eines Javascripts zu
ü
berpr
ü
fen:... Da ist cronplus wesentlich leistungsf
ä
higer, aber egal ...Den habe ich auch installiert, konnte aber nichts wirklich finden wie dieser "extern" mit einer Zeit best
ü
ckt werden kann.Na dann muss man auch mal die Hilfe lesen zu der Node - ich schau mal ob es in der BEschreibung auch drin steht. Nee steht nur in der Hilfe zu dieser Node.

Also neben der Superflexibilit
ä
t des crontab systems,Wenn Du mal unter Date sequenz nachschaust, dann kannst Du in die crontab nicht nur cron Ausdr
ü
cke, sondern sogar ein Liste oder ein Array von Datums, angeben:

Ich nutze zum Beispiel die Datesequenz um
ü
ber Nachrichten den Fernsehkanal zu einer bestimmten Zeit zu wechseln, wenn ich eine Sendung sehen m
ö
chte. 
Au
ß
erdem siehst Du bei der crontab auch genauso wie beim eztimer was als n
ä
chsten passiert im Status.Im
Ü
brigen gibt die Hilfe Dir sogar 2 Beispiele wie Du die Node extern best
ü
cken kannst:
Zwar nicht das Date, aber solar oder cron events kannst Du auch
ü
ber die payload einspeisen und m
ü
ssen nicht in der Node gespeichert werden.Du kannst sogar in der Node
ü
ber die
view dynamic schedules anschauen, welcher Ereignisse Du
ü
ber die payload dynamisch konfiguriert hast.
Hier auch ein paar Beispiele, die ich mir selbst gemacht habe:

In der Kommentar-Node findest Du noch ein paar zus
ä
tzliche Kommandos, die ich mir aus dem Quellcode der Node gezogen habe.
F
ü
r mich ist das die genialste Timer Node ever .
- Da kommt kein Bigtimer mit und der EZ-Timer schon gleich 2 mal nicht. 
Im
Ü
brigen kannst Du beliebig viele Scheduler erstellen in einer Node, externe und interne Scheduler mischen und auch die Payload festlegen, die verschickt werden soll. Also flexibler geht eigentlich kaum noch. -
@michmein sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:@mickym
Erstmal vielen Dank f
ü
r deine M
ü
hen!
Ich habe an dem ganzen nun schon ein paar Stunden verbracht gehabt und es war immer so das ich den ezTimer nicht zur
ü
cksetzen konnte, wenn er einmal gestellt war blieb er so und sein Event zur eingegeben Zeit ausgegeben. Dann habe ich eine "uraltes" Script von bluefox im Forum gefunden (das sind deine "???" aus deiner ersten Antwort) und habe das getestet. Aber auch dies f
ü
hrte nicht zu meinem Ergebnis.
Schlu
ß
endlich habe ich das Logik-Node installiert und damit klappt nun mein gew
ü
nschtes Szenario.und schon wieder jemand, der eine Logik-Node installiert.
Was genau soll das bedeuten? Spricht etwas gegen die Logik-Nodes oder magst du sie einfach nicht?
Ja ich mag sie nicht.
- Ich bin generell gegen Nodes oder Adapter, die nichts weiter machen, als bereits vorhandene Informationen aufzubereiten, die man aber mit wenigen Handgriffen auch aus dem Standardbaukasten zusammensetzen kann. Wenn man dann mal solche Bausteine hat, dann speichere ich mir die als Flows oder einzelne Nodes in meiner lokalen Biblothek von NodeRed ab und habe sie dann schnell zur Verf
ü
gung.In diesem Post - ist vielleicht nicht f
ü
r Deinen speziellen Fall relevant, habe ich mal alle M
ö
glichen Verkn
ü
fungen mit ChangeNodes und JSONATA zusammgefasst um logisch Eigenschaften eines Javascripts zu
ü
berpr
ü
fen:... Da ist cronplus wesentlich leistungsf
ä
higer, aber egal ...Den habe ich auch installiert, konnte aber nichts wirklich finden wie dieser "extern" mit einer Zeit best
ü
ckt werden kann.Na dann muss man auch mal die Hilfe lesen zu der Node - ich schau mal ob es in der BEschreibung auch drin steht. Nee steht nur in der Hilfe zu dieser Node.

Also neben der Superflexibilit
ä
t des crontab systems,Wenn Du mal unter Date sequenz nachschaust, dann kannst Du in die crontab nicht nur cron Ausdr
ü
cke, sondern sogar ein Liste oder ein Array von Datums, angeben:

Ich nutze zum Beispiel die Datesequenz um
ü
ber Nachrichten den Fernsehkanal zu einer bestimmten Zeit zu wechseln, wenn ich eine Sendung sehen m
ö
chte. 
Au
ß
erdem siehst Du bei der crontab auch genauso wie beim eztimer was als n
ä
chsten passiert im Status.Im
Ü
brigen gibt die Hilfe Dir sogar 2 Beispiele wie Du die Node extern best
ü
cken kannst:
Zwar nicht das Date, aber solar oder cron events kannst Du auch
ü
ber die payload einspeisen und m
ü
ssen nicht in der Node gespeichert werden.Du kannst sogar in der Node
ü
ber die
view dynamic schedules anschauen, welcher Ereignisse Du
ü
ber die payload dynamisch konfiguriert hast.
Hier auch ein paar Beispiele, die ich mir selbst gemacht habe:

In der Kommentar-Node findest Du noch ein paar zus
ä
tzliche Kommandos, die ich mir aus dem Quellcode der Node gezogen habe.
F
ü
r mich ist das die genialste Timer Node ever .
- Da kommt kein Bigtimer mit und der EZ-Timer schon gleich 2 mal nicht. 
Im
Ü
brigen kannst Du beliebig viele Scheduler erstellen in einer Node, externe und interne Scheduler mischen und auch die Payload festlegen, die verschickt werden soll. Also flexibler geht eigentlich kaum noch.Hi @mickym,
vielen Dank f
ü
r deine sehr Ausf
ü
hrlichen Erkl
ä
rungen und Beispiele.Ich habe mir dein Beispiel mal importiert und werde es mir anschauen und versuchen zu verstehen.
Das alles sind meine ersten Gehversuche und es f
ü
hlt sich vorerst gut an Erfolge sehen zu k
ö
nnen. Node-red bietet scheinbar sehr viele M
ö
glichkeiten die ich zur Zeit offensichtlich noch nicht ben
ö
tige und auch nicht ann
ä
hernd
ü
berblicken kann. Mal schauen was die Zukunft da so bringen wird. -
@michmein sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:@mickym
Erstmal vielen Dank f
ü
r deine M
ü
hen!
Ich habe an dem ganzen nun schon ein paar Stunden verbracht gehabt und es war immer so das ich den ezTimer nicht zur
ü
cksetzen konnte, wenn er einmal gestellt war blieb er so und sein Event zur eingegeben Zeit ausgegeben. Dann habe ich eine "uraltes" Script von bluefox im Forum gefunden (das sind deine "???" aus deiner ersten Antwort) und habe das getestet. Aber auch dies f
ü
hrte nicht zu meinem Ergebnis.
Schlu
ß
endlich habe ich das Logik-Node installiert und damit klappt nun mein gew
ü
nschtes Szenario.und schon wieder jemand, der eine Logik-Node installiert.
Was genau soll das bedeuten? Spricht etwas gegen die Logik-Nodes oder magst du sie einfach nicht?
Ja ich mag sie nicht.
- Ich bin generell gegen Nodes oder Adapter, die nichts weiter machen, als bereits vorhandene Informationen aufzubereiten, die man aber mit wenigen Handgriffen auch aus dem Standardbaukasten zusammensetzen kann. Wenn man dann mal solche Bausteine hat, dann speichere ich mir die als Flows oder einzelne Nodes in meiner lokalen Biblothek von NodeRed ab und habe sie dann schnell zur Verf
ü
gung.In diesem Post - ist vielleicht nicht f
ü
r Deinen speziellen Fall relevant, habe ich mal alle M
ö
glichen Verkn
ü
fungen mit ChangeNodes und JSONATA zusammgefasst um logisch Eigenschaften eines Javascripts zu
ü
berpr
ü
fen:... Da ist cronplus wesentlich leistungsf
ä
higer, aber egal ...Den habe ich auch installiert, konnte aber nichts wirklich finden wie dieser "extern" mit einer Zeit best
ü
ckt werden kann.Na dann muss man auch mal die Hilfe lesen zu der Node - ich schau mal ob es in der BEschreibung auch drin steht. Nee steht nur in der Hilfe zu dieser Node.

Also neben der Superflexibilit
ä
t des crontab systems,Wenn Du mal unter Date sequenz nachschaust, dann kannst Du in die crontab nicht nur cron Ausdr
ü
cke, sondern sogar ein Liste oder ein Array von Datums, angeben:

Ich nutze zum Beispiel die Datesequenz um
ü
ber Nachrichten den Fernsehkanal zu einer bestimmten Zeit zu wechseln, wenn ich eine Sendung sehen m
ö
chte. 
Au
ß
erdem siehst Du bei der crontab auch genauso wie beim eztimer was als n
ä
chsten passiert im Status.Im
Ü
brigen gibt die Hilfe Dir sogar 2 Beispiele wie Du die Node extern best
ü
cken kannst:
Zwar nicht das Date, aber solar oder cron events kannst Du auch
ü
ber die payload einspeisen und m
ü
ssen nicht in der Node gespeichert werden.Du kannst sogar in der Node
ü
ber die
view dynamic schedules anschauen, welcher Ereignisse Du
ü
ber die payload dynamisch konfiguriert hast.
Hier auch ein paar Beispiele, die ich mir selbst gemacht habe:

In der Kommentar-Node findest Du noch ein paar zus
ä
tzliche Kommandos, die ich mir aus dem Quellcode der Node gezogen habe.
F
ü
r mich ist das die genialste Timer Node ever .
- Da kommt kein Bigtimer mit und der EZ-Timer schon gleich 2 mal nicht. 
Im
Ü
brigen kannst Du beliebig viele Scheduler erstellen in einer Node, externe und interne Scheduler mischen und auch die Payload festlegen, die verschickt werden soll. Also flexibler geht eigentlich kaum noch.@mickym Hi, die Crontab Plus habe ich mir jetzt auch mal angeschaut. Vor allem die M
ö
glichkeit per Input Zeiten zu setzen h
ö
rt sich gut an.
Leider h
ä
nge ich gerade bei meiner Umsetzung, ne Wecker Zeit aus dem Alexa 2 Adapter auszulesen und da rein zu bekommen.
Mein Ziel ist, per Alexa einen Wecker zu stellen, dann die Zeit auszulesen und dann ne bestimmte Zeit (z.B. 30 Minuten) vorher die Heizung im Bad hoch zu fahren.
Ich habe 3 Datenpunkte zur Verf
ü
gung, einer ob der Alarm eingeschlatet ist, dann die Uhrzeit des Alarms und ob er ausgel
ö
st ist.

Wenn ein Alarm hinzugef
ü
gt wird bzw. true wird, will ich die Zeit abfragen und die dann minus 30 Minuten an den Timer weitergeben. Den True Wert und die Zeitabfrage kriege ich hin, nur wei
ß
ich nicht wie ich die Zeit in den Timer kriege. Wenn ich mit deinem Beispiel die Zeit sende gibts ne Fehlermeldung, wahrscheinlich weil das Datum fehlt?

-
@mickym Hi, die Crontab Plus habe ich mir jetzt auch mal angeschaut. Vor allem die M
ö
glichkeit per Input Zeiten zu setzen h
ö
rt sich gut an.
Leider h
ä
nge ich gerade bei meiner Umsetzung, ne Wecker Zeit aus dem Alexa 2 Adapter auszulesen und da rein zu bekommen.
Mein Ziel ist, per Alexa einen Wecker zu stellen, dann die Zeit auszulesen und dann ne bestimmte Zeit (z.B. 30 Minuten) vorher die Heizung im Bad hoch zu fahren.
Ich habe 3 Datenpunkte zur Verf
ü
gung, einer ob der Alarm eingeschlatet ist, dann die Uhrzeit des Alarms und ob er ausgel
ö
st ist.

Wenn ein Alarm hinzugef
ü
gt wird bzw. true wird, will ich die Zeit abfragen und die dann minus 30 Minuten an den Timer weitergeben. Den True Wert und die Zeitabfrage kriege ich hin, nur wei
ß
ich nicht wie ich die Zeit in den Timer kriege. Wenn ich mit deinem Beispiel die Zeit sende gibts ne Fehlermeldung, wahrscheinlich weil das Datum fehlt?

Hi @frankyboy73,
ich kann dir bei deiner Fragestellung vielleicht helfen, allerdings nicht in Verbindung mit dem "cron-plus" sondern nur mit Hilfe des "eztimer".
-
Hi @frankyboy73,
ich kann dir bei deiner Fragestellung vielleicht helfen, allerdings nicht in Verbindung mit dem "cron-plus" sondern nur mit Hilfe des "eztimer".
@michmein sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:Hi, vielen Dank. Wie sieht denn deine Ausgabe von der Get Node "Ausschaltzeit Lilly" aus, bzw. was f
ü
r ein Format hat die Zeit?

Bei mir sieht das so aus.

Bevor ich mir noch nen zus
ä
tzlichen Timer installiere will ich lieber sichergehen ob das auch passt. -
@michmein sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:Hi, vielen Dank. Wie sieht denn deine Ausgabe von der Get Node "Ausschaltzeit Lilly" aus, bzw. was f
ü
r ein Format hat die Zeit?

Bei mir sieht das so aus.

Bevor ich mir noch nen zus
ä
tzlichen Timer installiere will ich lieber sichergehen ob das auch passt.So sieht es bei mir aus

und hier die Raw Daten des Zeit-DP
EDIT: mit z.B. 19:00:00 wie in deinem DP funktioert es auch
-
@mickym Hi, die Crontab Plus habe ich mir jetzt auch mal angeschaut. Vor allem die M
ö
glichkeit per Input Zeiten zu setzen h
ö
rt sich gut an.
Leider h
ä
nge ich gerade bei meiner Umsetzung, ne Wecker Zeit aus dem Alexa 2 Adapter auszulesen und da rein zu bekommen.
Mein Ziel ist, per Alexa einen Wecker zu stellen, dann die Zeit auszulesen und dann ne bestimmte Zeit (z.B. 30 Minuten) vorher die Heizung im Bad hoch zu fahren.
Ich habe 3 Datenpunkte zur Verf
ü
gung, einer ob der Alarm eingeschlatet ist, dann die Uhrzeit des Alarms und ob er ausgel
ö
st ist.

Wenn ein Alarm hinzugef
ü
gt wird bzw. true wird, will ich die Zeit abfragen und die dann minus 30 Minuten an den Timer weitergeben. Den True Wert und die Zeitabfrage kriege ich hin, nur wei
ß
ich nicht wie ich die Zeit in den Timer kriege. Wenn ich mit deinem Beispiel die Zeit sende gibts ne Fehlermeldung, wahrscheinlich weil das Datum fehlt?

@frankyboy73 Ja - wenn kein festes Dateobjekt vorhanden ist, sprich das Datum fehlt - w
ü
rde ich auch eher mit der cron expression arbeiten, das ist eigenlich ganz easy.Ich habe mal Deine 17:00:00 einfach in eine Inject Node verpackt. Du kannst den Scheduler entweder komplett dynamisch verwalten oder aber wie Du teilweise in der Node definieren und dann von aussen manipulieren.
Wenn Du mit Cron arbeitest - musst Du halt den Scheduler nach jeder Ausf
ü
hrung manuell stoppen, sonst gibt es den Alarm halt t
ä
glich.
Wenn Du lieber mit absoluten Datums arbeiten willst - dann machst Du halt Deinen Alarm zu einem vollst
ä
ndigen Date Objekt.Habe Dir mal hier einen Flow gemacht - der dann auch noch Deine 30 Minuten vom Alarm abzieht.

-
@frankyboy73 Ja - wenn kein festes Dateobjekt vorhanden ist, sprich das Datum fehlt - w
ü
rde ich auch eher mit der cron expression arbeiten, das ist eigenlich ganz easy.Ich habe mal Deine 17:00:00 einfach in eine Inject Node verpackt. Du kannst den Scheduler entweder komplett dynamisch verwalten oder aber wie Du teilweise in der Node definieren und dann von aussen manipulieren.
Wenn Du mit Cron arbeitest - musst Du halt den Scheduler nach jeder Ausf
ü
hrung manuell stoppen, sonst gibt es den Alarm halt t
ä
glich.
Wenn Du lieber mit absoluten Datums arbeiten willst - dann machst Du halt Deinen Alarm zu einem vollst
ä
ndigen Date Objekt.Habe Dir mal hier einen Flow gemacht - der dann auch noch Deine 30 Minuten vom Alarm abzieht.

@mickym Hi, vielen Dank daf
ü
r. So habe ich mir das vorgestell. Ich mache das jetzt komplett dynamisch, also Timer hinzuf
ü
gen und dann wieder l
ö
schen, je nach dem von welchem Echo der Wecker ist dann mit verschiedenen Namen. Und die Boost Zeit gebe ich als payload vor.
Das einzige was mir aufgefallen ist, da die 30 Minuten nach der Morgen Abfrage abgezogen werden, ist es theretisch m
ö
glich einen Timer in der Vergangenheit zu setzen. Aber das ist egal, 30 Minuten vorher ist es eh zu sp
ä
t f
ü
r den Boost. Ist auch eher daf
ü
r gedacht, das das Badezimmer morgens bei aufstehen sch
ö
n warm ist.

@MichMein vielen Dank f
ü
r deinen L
ö
sungsvorschlag und deine Debug Ausgabe. Ich versuche es aber erst mal mit dem Crontab -
@mickym Hi, vielen Dank daf
ü
r. So habe ich mir das vorgestell. Ich mache das jetzt komplett dynamisch, also Timer hinzuf
ü
gen und dann wieder l
ö
schen, je nach dem von welchem Echo der Wecker ist dann mit verschiedenen Namen. Und die Boost Zeit gebe ich als payload vor.
Das einzige was mir aufgefallen ist, da die 30 Minuten nach der Morgen Abfrage abgezogen werden, ist es theretisch m
ö
glich einen Timer in der Vergangenheit zu setzen. Aber das ist egal, 30 Minuten vorher ist es eh zu sp
ä
t f
ü
r den Boost. Ist auch eher daf
ü
r gedacht, das das Badezimmer morgens bei aufstehen sch
ö
n warm ist.

@MichMein vielen Dank f
ü
r deinen L
ö
sungsvorschlag und deine Debug Ausgabe. Ich versuche es aber erst mal mit dem Crontab@frankyboy73 sehr gerne.
Ich werde meinen Timer auch irgendwann auf cron-plus umstellen, aber zur Zeit bastel ich an anderen Baustellen und mit dem eztimer funktioniert es ja erstmal. -
@mickym Hi, vielen Dank daf
ü
r. So habe ich mir das vorgestell. Ich mache das jetzt komplett dynamisch, also Timer hinzuf
ü
gen und dann wieder l
ö
schen, je nach dem von welchem Echo der Wecker ist dann mit verschiedenen Namen. Und die Boost Zeit gebe ich als payload vor.
Das einzige was mir aufgefallen ist, da die 30 Minuten nach der Morgen Abfrage abgezogen werden, ist es theretisch m
ö
glich einen Timer in der Vergangenheit zu setzen. Aber das ist egal, 30 Minuten vorher ist es eh zu sp
ä
t f
ü
r den Boost. Ist auch eher daf
ü
r gedacht, das das Badezimmer morgens bei aufstehen sch
ö
n warm ist.

@MichMein vielen Dank f
ü
r deinen L
ö
sungsvorschlag und deine Debug Ausgabe. Ich versuche es aber erst mal mit dem Crontab@frankyboy73 sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:Das einzige was mir aufgefallen ist, da die 30 Minuten nach der Morgen Abfrage abgezogen werden, ist es theretisch m
ö
glich einen Timer in der Vergangenheit zu setzen.Erwischt - da hast Du nat
ü
rlich Recht - aber ich trau Dir zu dass Du es auch selbst so umstellst, dass Du die letzte Node vor den Switch stellst- Du musst dann nur die Formatausgabe an die beiden $moments in den Changen Nodes nach dem morgen angeben.
Ist ja eigentlich auch logischer.
Ich habs mal korrigiert:


Freut mich immer sowas gemeinsam zu entwickeln.
-
@frankyboy73 sagte in Timer erstellen und bei Bedarf wieder l
ö
schen:Das einzige was mir aufgefallen ist, da die 30 Minuten nach der Morgen Abfrage abgezogen werden, ist es theretisch m
ö
glich einen Timer in der Vergangenheit zu setzen.Erwischt - da hast Du nat
ü
rlich Recht - aber ich trau Dir zu dass Du es auch selbst so umstellst, dass Du die letzte Node vor den Switch stellst- Du musst dann nur die Formatausgabe an die beiden $moments in den Changen Nodes nach dem morgen angeben.
Ist ja eigentlich auch logischer.
Ich habs mal korrigiert:


Freut mich immer sowas gemeinsam zu entwickeln.
@mickym Ja, war da schon am rumprobieren, aber irgendwie habe ich das mit der Formatausgabe nicht auf dem Schirm gehabt. Jetzt wo ich deine L
ö
sung sehe leuchtet es mir ein. Danke
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden