- Home
- Deutsch
- Skripten / Logik
- Node-Red
- String aufteilen
String aufteilen
-
@hafo sagte füllt mir dein Script direkt die 7 Objekte?
Ja, wenn die 7 Datenpunkte vorher unter "0_userdata.0" erstellt wurden.
@hafo sagte in String aufteilen:
Wo kann ich definieren was zu was gehört?
Der erste Wert wird in "0_userdata.0.xyz.msg1" geschrieben, der zweite in "0_userdata.0.xyz.msg2" usw. "xyz" sollte durch etwas sinnvolles ersetzt werden.
-
@hafo sagte in String aufteilen:
@mickym Vielen Dank
Ich muss muss mich da wirklich noch etwas reinarbeiten.
Weißt Du, wenn ich Dein anderen Post nicht gelesen hätte, hätte ich ja nicht gewusst auf was es hinausläuft.
Gestern hast aber keine Antwort von mir bekommen, da Du weder Dein VIS noch Deine Widgets vorgestellt hast. Außerdem sind mir Screenshots die Function Nodes enthalten ohne dass der Flow exportiert sind, eine Black-Box - was soll man denn da helfen?
Also wenn Du wirkliche Hilfe willst, dann ist es am Besten wenn man sich beim Beschreiben des Problems etwas ausführlicher Mühe gibt.
Ich gehe nun mal davon aus, dass Du in Deiner Vis nun Widgets als Switches hast - die true oder false für den Wochentag bieten und Du für jeden Wochentag einen eigenen Datenpunkt erstellt hast.
Dann wirst Du wahrscheinlich als nächstes vor der Herausforderung stehen, diese Datenpunkte wieder in den Ausgangsstring zu verwandeln. ;). Tipp: Sammeln mit JOIN als Objekt, SPLIT in Einzelnachrichten, JOIN in String.
-
@hafo sagte: Wo kann ich definieren was zu was gehört?
Wenn es um die Tomaten an Wochentagen geht, z.B. "0_userdata.0.Bewaesserung.Tomaten.Mittwoch":
const path = '0_userdata.0.Bewaesserung.Tomaten.'; const idString = '...'; const weekdays = ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag']; on(idString, function(dp) { let arr = dp.state.val.split(','); for(let i = 0; i < arr.length; i++) { setState(path + weekdays[i], !!parseInt(arr[i]), true); } });
-
@mickym Deine Glaskugel möchte ich auch mal haben. Aber das zurückführen in einen String kenne ich noch aus meinem Projekt Wetterstation. Ich werde mein Projekt unter Vis einmal genau vorstellen, das vereinfacht sicher vieles. Ich fürchte ich bin noch lange nicht am Ziel.
@paul53 Danke, das wäre wahrscheinlich der kürzere Weg gewesen, ich habe aber schon mickym's Lösung übernommen. Das ist für micht ehrlich gesagt auch durchschaubarer. -
@hafo sagte in String aufteilen:
Aber das zurückführen in einen String kenne ich noch aus meinem Projekt Wetterstation.
In dem Fall würde ich es aber anders machen, was aber nicht heißt, dass es nicht auch so ginge.
-
@mickym dann kläre mich doch bitte auf, als Anfänger ist man offen für bessere Wege
-
@hafo sagte in String aufteilen:
@mickym dann kläre mich doch bitte auf, als Anfänger ist man offen für bessere Wege
Nun dann poste doch mal wie Deine Wochentagspunkte unter 0_userdata.0 aussehen, die Du wieder in die Stringform zurückhaben willst. Gerne auch Screenshot der Objekte Struktur und einmal den Pfad zu einem Wochentag in Textform in Code-Tags. Ich kanns dann halt besser anpassen, aber im Grunde schaut der Flow so aus:
-
@mickym gerne. Ich möchte grundsätzlich alles wichtige als Objekt gespeichert haben. Wenn ich im Vis dann mithilfe des Filter dropdown einen Kanal auswähle, werden die entsprechenden Punkte in die Objekte für das Vis geladen und dort angezeigt. Diese kann ich dann ändern und auf speichern klicken. Dann sollte es die Daten wieder auf den richtigen Objekten speichern. Diese Änderung löst dann einen String aus, welcher den Timer programmiert.
Soviel zur Theorie, ich hoffe das ist halbwegs verständlich.
Hier werden die Objekte zum Vis geladen:
[ { "id": "9e190b64.53d15", "type": "ioBroker in", "z": "99194dc0.5d65f", "name": "Vis Auswahl", "topic": "0_userdata.0.Bewässerung.vis_Auswahl", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 90, "y": 520, "wires": [ [ "1e3267dc.fdde18" ] ] }, { "id": "1e3267dc.fdde18", "type": "switch", "z": "99194dc0.5d65f", "name": "Verteiler", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "1", "vt": "num" }, { "t": "eq", "v": "2", "vt": "num" }, { "t": "eq", "v": "3", "vt": "num" }, { "t": "eq", "v": "4", "vt": "num" }, { "t": "eq", "v": "5", "vt": "num" }, { "t": "eq", "v": "6", "vt": "num" }, { "t": "eq", "v": "7", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 7, "x": 260, "y": 520, "wires": [ [ "d701193.8d08d68", "d61802a5.3c8ee8", "ed935774.7ff95", "6d7eebae.187484" ], [ "6069718b.b27198", "3064f4bf.b9cfd4", "db6d1d71.321db", "c50a6d57.163c98" ], [ "6a6c068a.66fae", "7c456758.fd2e28", "420e5dd6.a6a794", "fdab73fb.a29758" ], [ "b29ffe85.62b778", "a655384e.cc9f48", "85581d0d.dcdac8", "cb96de0f.567aa8" ], [ "9a7fe8d.96ed618", "8ecb2b31.69c9a", "57cab2ad.5238ec", "2bb7c24b.2e20ce" ], [ "21765429.9e148c", "96ac89c7.f640c", "fe4ba9f8.37b3e8", "a3da58b6.1c94d8" ], [ "32de8143.168756", "4e50060a.be7778", "1386479f.8c24d", "760b9f83.494e5" ] ] }, { "id": "32de8143.168756", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Tomaten", "topic": "0_userdata.0.Bewässerung.Tomaten_Tage", "attrname": "payload", "payloadType": "value", "x": 680, "y": 300, "wires": [ [ "b3bfd4c2.e5c2c8" ] ] }, { "id": "b3bfd4c2.e5c2c8", "type": "split", "z": "99194dc0.5d65f", "name": "", "splt": ",", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "", "x": 890, "y": 180, "wires": [ [ "1b19502c.f6aba" ] ] }, { "id": "1b19502c.f6aba", "type": "change", "z": "99194dc0.5d65f", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "0", "fromt": "str", "to": "false", "tot": "bool" }, { "t": "change", "p": "payload", "pt": "msg", "from": "1", "fromt": "str", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1070, "y": 180, "wires": [ [ "d6edd7f5.488038" ] ] }, { "id": "d6edd7f5.488038", "type": "switch", "z": "99194dc0.5d65f", "name": "", "property": "parts.index", "propertyType": "msg", "rules": [ { "t": "eq", "v": "0", "vt": "num" }, { "t": "eq", "v": "1", "vt": "num" }, { "t": "eq", "v": "2", "vt": "num" }, { "t": "eq", "v": "3", "vt": "num" }, { "t": "eq", "v": "4", "vt": "num" }, { "t": "eq", "v": "5", "vt": "num" }, { "t": "eq", "v": "6", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 7, "x": 1250, "y": 180, "wires": [ [ "a79df2d.709cb1" ], [ "b0e42158.9a50a" ], [ "2fda9826.954298" ], [ "13fd78fb.1e2217" ], [ "192afa2f.c005b6" ], [ "76e613ea.b8d75c" ], [ "4b4341e2.22c508" ] ] }, { "id": "6a6c068a.66fae", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Rasen", "topic": "0_userdata.0.Bewässerung.Rasen_Tage", "attrname": "payload", "payloadType": "value", "x": 670, "y": 140, "wires": [ [ "b3bfd4c2.e5c2c8" ] ] }, { "id": "6069718b.b27198", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Gewuertz", "topic": "0_userdata.0.Bewässerung.Gewuertz_Tage", "attrname": "payload", "payloadType": "value", "x": 680, "y": 100, "wires": [ [ "b3bfd4c2.e5c2c8" ] ] }, { "id": "b29ffe85.62b778", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Himbeeren", "topic": "0_userdata.0.Bewässerung.Himbeeren_Tage", "attrname": "payload", "payloadType": "value", "x": 690, "y": 180, "wires": [ [ "b3bfd4c2.e5c2c8" ] ] }, { "id": "d701193.8d08d68", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Chili", "topic": "0_userdata.0.Bewässerung.Chili_Tage", "attrname": "payload", "payloadType": "value", "x": 670, "y": 60, "wires": [ [ "b3bfd4c2.e5c2c8" ] ] }, { "id": "21765429.9e148c", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Feigenbaum", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Tage", "attrname": "payload", "payloadType": "value", "x": 690, "y": 260, "wires": [ [ "b3bfd4c2.e5c2c8" ] ] }, { "id": "9a7fe8d.96ed618", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Gemuese", "topic": "0_userdata.0.Bewässerung.Gemuese_Tage", "attrname": "payload", "payloadType": "value", "x": 680, "y": 220, "wires": [ [ "b3bfd4c2.e5c2c8" ] ] }, { "id": "a79df2d.709cb1", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "Mo", "topic": "0_userdata.0.Bewässerung.dMo", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1450, "y": 60, "wires": [] }, { "id": "b0e42158.9a50a", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "Di", "topic": "0_userdata.0.Bewässerung.dDi", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1450, "y": 100, "wires": [] }, { "id": "2fda9826.954298", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "Mi", "topic": "0_userdata.0.Bewässerung.dMi", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1450, "y": 140, "wires": [] }, { "id": "13fd78fb.1e2217", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "Do", "topic": "0_userdata.0.Bewässerung.dDo", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1450, "y": 180, "wires": [] }, { "id": "192afa2f.c005b6", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "Fr", "topic": "0_userdata.0.Bewässerung.dFr", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1450, "y": 220, "wires": [] }, { "id": "76e613ea.b8d75c", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "Sa", "topic": "0_userdata.0.Bewässerung.dSa", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1450, "y": 260, "wires": [] }, { "id": "4b4341e2.22c508", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "So", "topic": "0_userdata.0.Bewässerung.dSo", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1450, "y": 300, "wires": [] }, { "id": "4e50060a.be7778", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Tomaten", "topic": "0_userdata.0.Bewässerung.Tomaten_Laufzeit", "attrname": "payload", "payloadType": "value", "x": 680, "y": 640, "wires": [ [ "b3311a52.9de078" ] ] }, { "id": "7c456758.fd2e28", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Rasen", "topic": "0_userdata.0.Bewässerung.Rasen_Laufzeit", "attrname": "payload", "payloadType": "value", "x": 670, "y": 480, "wires": [ [ "b3311a52.9de078" ] ] }, { "id": "3064f4bf.b9cfd4", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Gewuertz", "topic": "0_userdata.0.Bewässerung.Gewuertz_Laufzeit", "attrname": "payload", "payloadType": "value", "x": 680, "y": 440, "wires": [ [ "b3311a52.9de078" ] ] }, { "id": "a655384e.cc9f48", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Himbeeren", "topic": "0_userdata.0.Bewässerung.Himbeeren_Laufzeit", "attrname": "payload", "payloadType": "value", "x": 690, "y": 520, "wires": [ [ "b3311a52.9de078" ] ] }, { "id": "d61802a5.3c8ee8", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Chili", "topic": "0_userdata.0.Bewässerung.Chili_Laufzeit", "attrname": "payload", "payloadType": "value", "x": 670, "y": 400, "wires": [ [ "b3311a52.9de078" ] ] }, { "id": "96ac89c7.f640c", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Feigenbaum", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Laufzeit", "attrname": "payload", "payloadType": "value", "x": 690, "y": 600, "wires": [ [ "b3311a52.9de078" ] ] }, { "id": "8ecb2b31.69c9a", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Gemuese", "topic": "0_userdata.0.Bewässerung.Gemuese_Laufzeit", "attrname": "payload", "payloadType": "value", "x": 680, "y": 560, "wires": [ [ "b3311a52.9de078" ] ] }, { "id": "1386479f.8c24d", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Tomaten", "topic": "0_userdata.0.Bewässerung.Tomaten_Startzeit", "attrname": "payload", "payloadType": "value", "x": 680, "y": 960, "wires": [ [ "88eb3cc4.1f7df8" ] ] }, { "id": "420e5dd6.a6a794", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Rasen", "topic": "0_userdata.0.Bewässerung.Rasen_Startzeit", "attrname": "payload", "payloadType": "value", "x": 670, "y": 800, "wires": [ [ "88eb3cc4.1f7df8" ] ] }, { "id": "db6d1d71.321db", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Gewuertz", "topic": "0_userdata.0.Bewässerung.Gewuertz_Startzeit", "attrname": "payload", "payloadType": "value", "x": 680, "y": 760, "wires": [ [ "88eb3cc4.1f7df8" ] ] }, { "id": "85581d0d.dcdac8", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Himbeeren", "topic": "0_userdata.0.Bewässerung.Himbeeren_Startzeit", "attrname": "payload", "payloadType": "value", "x": 690, "y": 840, "wires": [ [ "88eb3cc4.1f7df8" ] ] }, { "id": "ed935774.7ff95", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Chili", "topic": "0_userdata.0.Bewässerung.Chili_Startzeit", "attrname": "payload", "payloadType": "value", "x": 670, "y": 720, "wires": [ [ "88eb3cc4.1f7df8" ] ] }, { "id": "fe4ba9f8.37b3e8", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Feigenbaum", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Startzeit", "attrname": "payload", "payloadType": "value", "x": 690, "y": 920, "wires": [ [ "88eb3cc4.1f7df8" ] ] }, { "id": "57cab2ad.5238ec", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Gemuese", "topic": "0_userdata.0.Bewässerung.Gemuese_Startzeit", "attrname": "payload", "payloadType": "value", "x": 680, "y": 880, "wires": [ [ "88eb3cc4.1f7df8" ] ] }, { "id": "b3311a52.9de078", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "vis Laufzeit", "topic": "0_userdata.0.Bewässerung.vis_Laufzeit", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1240, "y": 500, "wires": [] }, { "id": "88eb3cc4.1f7df8", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "Startzeit h", "topic": "0_userdata.0.Bewässerung.vis_Startzeit_h", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1040, "y": 840, "wires": [] }, { "id": "760b9f83.494e5", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Tomaten", "topic": "0_userdata.0.Bewässerung.Tomaten_Startzeit_m", "attrname": "payload", "payloadType": "value", "x": 680, "y": 1300, "wires": [ [ "e50834b8.eed6d" ] ] }, { "id": "fdab73fb.a29758", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Rasen", "topic": "0_userdata.0.Bewässerung.Rasen_Startzeit_m", "attrname": "payload", "payloadType": "value", "x": 670, "y": 1140, "wires": [ [ "e50834b8.eed6d" ] ] }, { "id": "c50a6d57.163c98", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Gewuertz", "topic": "0_userdata.0.Bewässerung.Gewuertz_Startzeit_m", "attrname": "payload", "payloadType": "value", "x": 680, "y": 1100, "wires": [ [ "e50834b8.eed6d" ] ] }, { "id": "cb96de0f.567aa8", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Himbeeren", "topic": "0_userdata.0.Bewässerung.Himbeeren_Startzeit_m", "attrname": "payload", "payloadType": "value", "x": 690, "y": 1180, "wires": [ [ "e50834b8.eed6d" ] ] }, { "id": "6d7eebae.187484", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Chili", "topic": "0_userdata.0.Bewässerung.Chili_Startzeit_m", "attrname": "payload", "payloadType": "value", "x": 670, "y": 1060, "wires": [ [ "e50834b8.eed6d" ] ] }, { "id": "a3da58b6.1c94d8", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Feigenbaum", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Startzeit_m", "attrname": "payload", "payloadType": "value", "x": 690, "y": 1260, "wires": [ [ "e50834b8.eed6d" ] ] }, { "id": "2bb7c24b.2e20ce", "type": "ioBroker get", "z": "99194dc0.5d65f", "name": "Gemuese", "topic": "0_userdata.0.Bewässerung.Gemuese_Startzeit_m", "attrname": "payload", "payloadType": "value", "x": 680, "y": 1220, "wires": [ [ "e50834b8.eed6d" ] ] }, { "id": "e50834b8.eed6d", "type": "ioBroker out", "z": "99194dc0.5d65f", "name": "Startzeit m", "topic": "0_userdata.0.Bewässerung.vis_Startzeit_m", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1040, "y": 1200, "wires": [] } ]
-
Hier wird der Timer programmiert:
[ { "id": "f1325bf4.4ed0f", "type": "ui_time_scheduler", "z": "95848418.340d58", "group": "df42ab16.59cb78", "name": "Bewässerung", "startDay": "1", "refresh": 60, "devices": [ "Tomaten" ], "onlySendChange": false, "customPayload": false, "eventMode": false, "eventOptions": [], "sendTopic": false, "lat": "46.98015", "lon": "9.5706316", "outputs": 2, "order": 1, "width": 0, "height": 0, "x": 200, "y": 340, "wires": [ [], [ "15cd23d8.ca16d4" ] ], "outputLabels": [ "Info", "Chili", "Gewuertz", "Rasen", "Himbeeren", "Gemuese", "Feigenbaum", "Tomaten" ] }, { "id": "9334f2a7.e7bae", "type": "ioBroker out", "z": "95848418.340d58", "name": "Tomaten", "topic": "mqtt.0.ESP_Bewaesserung.GPIO.12", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 700, "y": 360, "wires": [] }, { "id": "15cd23d8.ca16d4", "type": "change", "z": "95848418.340d58", "name": "change true", "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": 450, "y": 360, "wires": [ [ "9334f2a7.e7bae" ] ] }, { "id": "1df93fe2.46fbe", "type": "ioBroker in", "z": "95848418.340d58", "name": "Tomaten Startzeit", "topic": "0_userdata.0.Bewässerung.Tomaten_Startzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 140, "y": 40, "wires": [ [ "18e28c07.feb6a4" ] ] }, { "id": "a9f1efd2.7ba", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.tomstart", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 810, "y": 140, "wires": [ [ "49b35f45.913428" ] ] }, { "id": "edbdcaab.6c3bf8", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = Number(msg.payload) + Number(msg.lauf);\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 600, "y": 180, "wires": [ [ "98df7f5d.11b1a8" ] ] }, { "id": "bd4c9090.779998", "type": "ioBroker get", "z": "95848418.340d58", "name": "Tomaten Laufzeit", "topic": "0_userdata.0.Bewässerung.Tomaten_Laufzeit", "attrname": "lauf", "payloadType": "value", "x": 290, "y": 180, "wires": [ [ "61f31e86.30eb7" ] ] }, { "id": "98df7f5d.11b1a8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.tomend", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 810, "y": 180, "wires": [ [ "49b35f45.913428" ] ] }, { "id": "24fcb6c1.8936a2", "type": "ioBroker in", "z": "95848418.340d58", "name": "Tomaten Tage", "topic": "0_userdata.0.Bewässerung.Tomaten_Tage", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 130, "y": 240, "wires": [ [ "ec2da415.2a4fd8" ] ] }, { "id": "ec2da415.2a4fd8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.tomtag", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 800, "y": 220, "wires": [ [ "49b35f45.913428" ] ] }, { "id": "f8cc9712.2ab86", "type": "ioBroker in", "z": "95848418.340d58", "name": "Tomaten Laufzeit", "topic": "0_userdata.0.Bewässerung.Tomaten_Laufzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 80, "y": 180, "wires": [ [ "bd4c9090.779998" ] ] }, { "id": "49b35f45.913428", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "send", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1070, "y": 180, "wires": [ [ "df48c94f.bf566" ] ] }, { "id": "df48c94f.bf566", "type": "template", "z": "95848418.340d58", "name": "Create timer", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "{\"timers\":[{\"starttime\":{{payload.tomstart}},\"days\":[{{payload.tomtag}}],\"output\":\"0\",\"endtime\":{{payload.tomend}}}],\"settings\":{\"disabledDevices\":[]}}", "output": "str", "x": 1270, "y": 180, "wires": [ [ "f1325bf4.4ed0f" ] ] }, { "id": "a2212093.185978", "type": "ioBroker get", "z": "95848418.340d58", "name": "min", "topic": "0_userdata.0.Bewässerung.Tomaten_Startzeit_m", "attrname": "min", "payloadType": "value", "x": 550, "y": 40, "wires": [ [ "cd67691.76bf218" ] ] }, { "id": "cd67691.76bf218", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) + Number(msg.min)) * 60000;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 720, "y": 40, "wires": [ [ "a9f1efd2.7ba", "bd4c9090.779998" ] ] }, { "id": "18e28c07.feb6a4", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) - 1) * 60;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 350, "y": 40, "wires": [ [ "a2212093.185978" ] ] }, { "id": "61f31e86.30eb7", "type": "calculator", "z": "95848418.340d58", "name": "", "inputMsgField": "lauf", "outputMsgField": "lauf", "operation": "mult", "constant": "60000", "round": false, "decimals": 0, "x": 460, "y": 180, "wires": [ [ "edbdcaab.6c3bf8" ] ] }, { "id": "c5a2845b.60457", "type": "ui_time_scheduler", "z": "95848418.340d58", "group": "df42ab16.59cb78", "name": "Bewässerung", "startDay": "1", "refresh": 60, "devices": [ "Gewuertz" ], "onlySendChange": false, "customPayload": false, "eventMode": false, "eventOptions": [], "sendTopic": false, "lat": "46.98015", "lon": "9.5706316", "outputs": 2, "order": 1, "width": 0, "height": 0, "x": 240, "y": 900, "wires": [ [], [ "677967fd.d6508" ] ], "outputLabels": [ "Info", "Chili" ] }, { "id": "e0307c77.b211c", "type": "ioBroker out", "z": "95848418.340d58", "name": "Gewürtz", "topic": "mqtt.0.ESP_Bewaesserung.GPIO.4", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 740, "y": 920, "wires": [] }, { "id": "677967fd.d6508", "type": "change", "z": "95848418.340d58", "name": "change true", "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": 550, "y": 920, "wires": [ [ "e0307c77.b211c" ] ] }, { "id": "caf7b2e8.1894b", "type": "ioBroker in", "z": "95848418.340d58", "name": "Gewuertz Startzeit", "topic": "0_userdata.0.Bewässerung.Gewuertz_Startzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 190, "y": 600, "wires": [ [ "fc7a7352.44fc9" ] ] }, { "id": "5ecdf7a0.e5c52", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.gewstart", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 700, "wires": [ [ "b11dd4d7.897628" ] ] }, { "id": "1cf4d57e.33b613", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = Number(msg.payload) + Number(msg.lauf);\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 640, "y": 740, "wires": [ [ "49c2e1d4.4d6fa" ] ] }, { "id": "a8d69e10.cd63e", "type": "ioBroker get", "z": "95848418.340d58", "name": "Gewuertz Laufzeit", "topic": "0_userdata.0.Bewässerung.Gewuertz_Laufzeit", "attrname": "lauf", "payloadType": "value", "x": 330, "y": 740, "wires": [ [ "9eb12009.2f268" ] ] }, { "id": "49c2e1d4.4d6fa", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.gewend", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 740, "wires": [ [ "b11dd4d7.897628" ] ] }, { "id": "a7e14d02.fec93", "type": "ioBroker in", "z": "95848418.340d58", "name": "Gewuertz Tage", "topic": "0_userdata.0.Bewässerung.Gewuertz_Tage", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 180, "y": 800, "wires": [ [ "710ebd7a.a08164" ] ] }, { "id": "710ebd7a.a08164", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.gewtag", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 780, "wires": [ [ "b11dd4d7.897628" ] ] }, { "id": "65326eb6.d8ded", "type": "ioBroker in", "z": "95848418.340d58", "name": "Gewuertz Laufzeit", "topic": "0_userdata.0.Bewässerung.Gewuertz_Laufzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 130, "y": 740, "wires": [ [ "a8d69e10.cd63e" ] ] }, { "id": "b11dd4d7.897628", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "send", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1110, "y": 740, "wires": [ [ "961552c6.c4d6d" ] ] }, { "id": "961552c6.c4d6d", "type": "template", "z": "95848418.340d58", "name": "Create timer", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "{\"timers\":[{\"starttime\":{{payload.gewstart}},\"days\":[{{payload.gewtag}}],\"output\":\"0\",\"endtime\":{{payload.gewend}}}],\"settings\":{\"disabledDevices\":[]}}", "output": "str", "x": 1310, "y": 740, "wires": [ [ "c5a2845b.60457" ] ] }, { "id": "5350d0ee.b87ef", "type": "ioBroker get", "z": "95848418.340d58", "name": "min", "topic": "0_userdata.0.Bewässerung.Gewuertz_Startzeit_m", "attrname": "min", "payloadType": "value", "x": 590, "y": 600, "wires": [ [ "d7ca170f.1c93a8" ] ] }, { "id": "d7ca170f.1c93a8", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) + Number(msg.min)) * 60000;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 760, "y": 600, "wires": [ [ "5ecdf7a0.e5c52", "a8d69e10.cd63e" ] ] }, { "id": "fc7a7352.44fc9", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) - 1) * 60;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 400, "y": 600, "wires": [ [ "5350d0ee.b87ef" ] ] }, { "id": "9eb12009.2f268", "type": "calculator", "z": "95848418.340d58", "name": "", "inputMsgField": "lauf", "outputMsgField": "lauf", "operation": "mult", "constant": "60000", "round": false, "decimals": 0, "x": 500, "y": 740, "wires": [ [ "1cf4d57e.33b613" ] ] }, { "id": "f742c03b.2b4018", "type": "ui_time_scheduler", "z": "95848418.340d58", "group": "df42ab16.59cb78", "name": "Bewässerung", "startDay": "1", "refresh": 60, "devices": [ "Rasen" ], "onlySendChange": false, "customPayload": false, "eventMode": false, "eventOptions": [], "sendTopic": false, "lat": "46.98015", "lon": "9.5706316", "outputs": 2, "order": 1, "width": 0, "height": 0, "x": 240, "y": 1340, "wires": [ [], [ "881632b6.31c788" ] ], "outputLabels": [ "Info", "Chili" ] }, { "id": "62ea3655.fb8248", "type": "ioBroker out", "z": "95848418.340d58", "name": "Rasen", "topic": "mqtt.0.ESP_Bewaesserung.GPIO.16", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 730, "y": 1360, "wires": [] }, { "id": "881632b6.31c788", "type": "change", "z": "95848418.340d58", "name": "change true", "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": 490, "y": 1360, "wires": [ [ "62ea3655.fb8248" ] ] }, { "id": "4b2cc279.165b9c", "type": "ioBroker in", "z": "95848418.340d58", "name": "Rasen Startzeit", "topic": "0_userdata.0.Bewässerung.Rasen_Startzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 180, "y": 1040, "wires": [ [ "7c130cf9.58ddf4" ] ] }, { "id": "9a31aa7.81634d8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.rasstart", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 1140, "wires": [ [ "478bd581.773b1c" ] ] }, { "id": "7c888e93.75e008", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = Number(msg.payload) + Number(msg.lauf);\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 640, "y": 1180, "wires": [ [ "22336e17.68a50a" ] ] }, { "id": "16fd25cd.411922", "type": "ioBroker get", "z": "95848418.340d58", "name": "Rasen Laufzeit", "topic": "0_userdata.0.Bewässerung.Rasen_Laufzeit", "attrname": "lauf", "payloadType": "value", "x": 320, "y": 1180, "wires": [ [ "537f95ef.af8cf4" ] ] }, { "id": "22336e17.68a50a", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.rasend", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 840, "y": 1180, "wires": [ [ "478bd581.773b1c" ] ] }, { "id": "e8ab5570.c9b078", "type": "ioBroker in", "z": "95848418.340d58", "name": "Rasen Tage", "topic": "0_userdata.0.Bewässerung.Rasen_Tage", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 170, "y": 1240, "wires": [ [ "cc068c34.857cd8" ] ] }, { "id": "cc068c34.857cd8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.rastag", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 840, "y": 1220, "wires": [ [ "478bd581.773b1c" ] ] }, { "id": "f7ab960.ee03fe8", "type": "ioBroker in", "z": "95848418.340d58", "name": "Rasen Laufzeit", "topic": "0_userdata.0.Bewässerung.Rasen_Laufzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 120, "y": 1180, "wires": [ [ "16fd25cd.411922" ] ] }, { "id": "478bd581.773b1c", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "send", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1130, "y": 1180, "wires": [ [ "685c0011.4d76d8" ] ] }, { "id": "685c0011.4d76d8", "type": "template", "z": "95848418.340d58", "name": "Create timer", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "{\"timers\":[{\"starttime\":{{payload.rasstart}},\"days\":[{{payload.rastag}}],\"output\":\"0\",\"endtime\":{{payload.rasend}}}],\"settings\":{\"disabledDevices\":[]}}", "output": "str", "x": 1310, "y": 1180, "wires": [ [ "f742c03b.2b4018" ] ] }, { "id": "6179abe5.5008cc", "type": "ioBroker get", "z": "95848418.340d58", "name": "min", "topic": "0_userdata.0.Bewässerung.Rasen_Startzeit_m", "attrname": "min", "payloadType": "value", "x": 590, "y": 1040, "wires": [ [ "eff73484.e162f8" ] ] }, { "id": "eff73484.e162f8", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) + Number(msg.min)) * 60000;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 760, "y": 1040, "wires": [ [ "9a31aa7.81634d8", "16fd25cd.411922" ] ] }, { "id": "7c130cf9.58ddf4", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) - 1) * 60;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 390, "y": 1040, "wires": [ [ "6179abe5.5008cc" ] ] }, { "id": "537f95ef.af8cf4", "type": "calculator", "z": "95848418.340d58", "name": "", "inputMsgField": "lauf", "outputMsgField": "lauf", "operation": "mult", "constant": "60000", "round": false, "decimals": 0, "x": 500, "y": 1180, "wires": [ [ "7c888e93.75e008" ] ] }, { "id": "ffade621.e21408", "type": "ui_time_scheduler", "z": "95848418.340d58", "group": "df42ab16.59cb78", "name": "Bewässerung", "startDay": "1", "refresh": 60, "devices": [ "Himbeeren" ], "onlySendChange": false, "customPayload": false, "eventMode": false, "eventOptions": [], "sendTopic": false, "lat": "46.98015", "lon": "9.5706316", "outputs": 2, "order": 1, "width": 0, "height": 0, "x": 260, "y": 1840, "wires": [ [], [ "2d9e3615.954982" ] ], "outputLabels": [ "Info", "Chili" ] }, { "id": "3e99677c.33493", "type": "ioBroker out", "z": "95848418.340d58", "name": "Himbeeren", "topic": "mqtt.0.ESP_Bewaesserung.GPIO.15", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 770, "y": 1860, "wires": [] }, { "id": "2d9e3615.954982", "type": "change", "z": "95848418.340d58", "name": "change true", "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": 530, "y": 1840, "wires": [ [ "3e99677c.33493" ] ] }, { "id": "b1133be4.6945e8", "type": "ioBroker in", "z": "95848418.340d58", "name": "Himbeeren Startzeit", "topic": "0_userdata.0.Bewässerung.Himbeeren_Startzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 210, "y": 1540, "wires": [ [ "43163347.805d3c" ] ] }, { "id": "5776e8d5.98b4a8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.himstart", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 870, "y": 1640, "wires": [ [ "b5b9c48d.0ac7c8" ] ] }, { "id": "93bbcc75.140c6", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = Number(msg.payload) + Number(msg.lauf);\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 660, "y": 1680, "wires": [ [ "27b37ef4.39d9b2" ] ] }, { "id": "aaf11e52.96428", "type": "ioBroker get", "z": "95848418.340d58", "name": "Himbeeren Laufzeit", "topic": "0_userdata.0.Bewässerung.Himbeeren_Laufzeit", "attrname": "lauf", "payloadType": "value", "x": 350, "y": 1680, "wires": [ [ "889ba824.5c7ba8" ] ] }, { "id": "27b37ef4.39d9b2", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.himend", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 870, "y": 1680, "wires": [ [ "b5b9c48d.0ac7c8" ] ] }, { "id": "a2e37a01.8b062", "type": "ioBroker in", "z": "95848418.340d58", "name": "Himbeeren Tage", "topic": "0_userdata.0.Bewässerung.Himbeeren_Tage", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 200, "y": 1740, "wires": [ [ "17cc38bc.d0b1df" ] ] }, { "id": "17cc38bc.d0b1df", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.himtag", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 860, "y": 1720, "wires": [ [ "b5b9c48d.0ac7c8" ] ] }, { "id": "71fcb2df.72fd44", "type": "ioBroker in", "z": "95848418.340d58", "name": "Himbeeren Laufzeit", "topic": "0_userdata.0.Bewässerung.Himbeeren_Laufzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 150, "y": 1680, "wires": [ [ "aaf11e52.96428" ] ] }, { "id": "b5b9c48d.0ac7c8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "send", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1130, "y": 1680, "wires": [ [ "d35b19a6.f1acf" ] ] }, { "id": "d35b19a6.f1acf", "type": "template", "z": "95848418.340d58", "name": "Create timer", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "{\"timers\":[{\"starttime\":{{payload.himstart}},\"days\":[{{payload.himtag}}],\"output\":\"0\",\"endtime\":{{payload.himend}}}],\"settings\":{\"disabledDevices\":[]}}", "output": "str", "x": 1330, "y": 1680, "wires": [ [ "ffade621.e21408" ] ] }, { "id": "58fac00.fbd1ac", "type": "ioBroker get", "z": "95848418.340d58", "name": "min", "topic": "0_userdata.0.Bewässerung.Himbeeren_Startzeit_m", "attrname": "min", "payloadType": "value", "x": 610, "y": 1540, "wires": [ [ "46fe7ce9.fc5d64" ] ] }, { "id": "46fe7ce9.fc5d64", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) + Number(msg.min)) * 60000;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 780, "y": 1540, "wires": [ [ "5776e8d5.98b4a8", "aaf11e52.96428" ] ] }, { "id": "43163347.805d3c", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) - 1) * 60;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 410, "y": 1540, "wires": [ [ "58fac00.fbd1ac" ] ] }, { "id": "889ba824.5c7ba8", "type": "calculator", "z": "95848418.340d58", "name": "", "inputMsgField": "lauf", "outputMsgField": "lauf", "operation": "mult", "constant": "60000", "round": false, "decimals": 0, "x": 520, "y": 1680, "wires": [ [ "93bbcc75.140c6" ] ] }, { "id": "6a1dc60e.2815c8", "type": "ui_time_scheduler", "z": "95848418.340d58", "group": "df42ab16.59cb78", "name": "Bewässerung", "startDay": "1", "refresh": 60, "devices": [ "Chili" ], "onlySendChange": false, "customPayload": false, "eventMode": false, "eventOptions": [], "sendTopic": false, "lat": "46.98015", "lon": "9.5706316", "outputs": 2, "order": 1, "width": 0, "height": 0, "x": 280, "y": 2280, "wires": [ [], [ "644cc02f.578248" ] ], "outputLabels": [ "Info", "Chili" ] }, { "id": "c739c937.d838", "type": "ioBroker out", "z": "95848418.340d58", "name": "Chili", "topic": "mqtt.0.ESP_Bewaesserung.GPIO.5", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 770, "y": 2300, "wires": [] }, { "id": "644cc02f.578248", "type": "change", "z": "95848418.340d58", "name": "change true", "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": 530, "y": 2300, "wires": [ [ "c739c937.d838" ] ] }, { "id": "13823c3c.7d6a9c", "type": "ioBroker in", "z": "95848418.340d58", "name": "Chili Startzeit", "topic": "0_userdata.0.Bewässerung.Chili_Startzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 210, "y": 1980, "wires": [ [ "27224828.5dd5e8" ] ] }, { "id": "c252fe8b.8de62", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.chistart", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 890, "y": 2080, "wires": [ [ "a99a6d33.3ba328" ] ] }, { "id": "10e12809.1df7c8", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = Number(msg.payload) + Number(msg.lauf);\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 680, "y": 2120, "wires": [ [ "3b1211e.2f1936e" ] ] }, { "id": "dd403d5.078954", "type": "ioBroker get", "z": "95848418.340d58", "name": "Chili Laufzeit", "topic": "0_userdata.0.Bewässerung.Chili_Laufzeit", "attrname": "lauf", "payloadType": "value", "x": 350, "y": 2120, "wires": [ [ "17acd138.a9cb87" ] ] }, { "id": "3b1211e.2f1936e", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.chiend", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 880, "y": 2120, "wires": [ [ "a99a6d33.3ba328" ] ] }, { "id": "b6c311c.a8d61f", "type": "ioBroker in", "z": "95848418.340d58", "name": "Chili Tage", "topic": "0_userdata.0.Bewässerung.Chili_Tage", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 200, "y": 2180, "wires": [ [ "79a48db9.90d15c" ] ] }, { "id": "79a48db9.90d15c", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.chitag", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 880, "y": 2160, "wires": [ [ "a99a6d33.3ba328" ] ] }, { "id": "fe7dee7f.a8929", "type": "ioBroker in", "z": "95848418.340d58", "name": "Chili Laufzeit", "topic": "0_userdata.0.Bewässerung.Chili_Laufzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 150, "y": 2120, "wires": [ [ "dd403d5.078954" ] ] }, { "id": "a99a6d33.3ba328", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "send", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1150, "y": 2120, "wires": [ [ "ea332364.09e1a8" ] ] }, { "id": "ea332364.09e1a8", "type": "template", "z": "95848418.340d58", "name": "Create timer", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "{\"timers\":[{\"starttime\":{{payload.chistart}},\"days\":[{{payload.chitag}}],\"output\":\"0\",\"endtime\":{{payload.chiend}}}],\"settings\":{\"disabledDevices\":[]}}", "output": "str", "x": 1350, "y": 2120, "wires": [ [ "6a1dc60e.2815c8" ] ] }, { "id": "99cc1f9a.000d5", "type": "ioBroker get", "z": "95848418.340d58", "name": "min", "topic": "0_userdata.0.Bewässerung.Chili_Startzeit_m", "attrname": "min", "payloadType": "value", "x": 630, "y": 1980, "wires": [ [ "f31fe6d6.ea30f" ] ] }, { "id": "f31fe6d6.ea30f", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) + Number(msg.min)) * 60000;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 800, "y": 1980, "wires": [ [ "c252fe8b.8de62", "dd403d5.078954" ] ] }, { "id": "27224828.5dd5e8", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) - 1) * 60;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 430, "y": 1980, "wires": [ [ "99cc1f9a.000d5" ] ] }, { "id": "17acd138.a9cb87", "type": "calculator", "z": "95848418.340d58", "name": "", "inputMsgField": "lauf", "outputMsgField": "lauf", "operation": "mult", "constant": "60000", "round": false, "decimals": 0, "x": 540, "y": 2120, "wires": [ [ "10e12809.1df7c8" ] ] }, { "id": "fb61e295.e1c3f8", "type": "ui_time_scheduler", "z": "95848418.340d58", "group": "df42ab16.59cb78", "name": "Bewässerung", "startDay": "1", "refresh": 60, "devices": [ "Gemuese" ], "onlySendChange": false, "customPayload": false, "eventMode": false, "eventOptions": [], "sendTopic": false, "lat": "46.98015", "lon": "9.5706316", "outputs": 2, "order": 1, "width": 0, "height": 0, "x": 240, "y": 2720, "wires": [ [], [ "eb50c5c1.3f81e8" ] ], "outputLabels": [ "Info", "Chili" ] }, { "id": "4d59c645.a9ef3", "type": "ioBroker out", "z": "95848418.340d58", "name": "Gemüse", "topic": "mqtt.0.ESP_Bewaesserung.GPIO.14", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 740, "y": 2740, "wires": [] }, { "id": "eb50c5c1.3f81e8", "type": "change", "z": "95848418.340d58", "name": "change true", "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": 490, "y": 2740, "wires": [ [ "4d59c645.a9ef3" ] ] }, { "id": "bac661ce.7b14a8", "type": "ioBroker in", "z": "95848418.340d58", "name": "Gemuese Startzeit", "topic": "0_userdata.0.Bewässerung.Gemuese_Startzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 190, "y": 2420, "wires": [ [ "655ca02b.c39688" ] ] }, { "id": "ede61f85.9b1fe8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.gemstart", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 2520, "wires": [ [ "88855f2e.c147e8" ] ] }, { "id": "2c5a53a9.e88674", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = Number(msg.payload) + Number(msg.lauf);\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 640, "y": 2560, "wires": [ [ "fe9a251d.6c58b8" ] ] }, { "id": "ce8ee0.d1b9192", "type": "ioBroker get", "z": "95848418.340d58", "name": "Gemuese Laufzeit", "topic": "0_userdata.0.Bewässerung.Gemuese_Laufzeit", "attrname": "lauf", "payloadType": "value", "x": 330, "y": 2560, "wires": [ [ "ad223f59.b03b3" ] ] }, { "id": "fe9a251d.6c58b8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.gemend", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 2560, "wires": [ [ "88855f2e.c147e8" ] ] }, { "id": "8dd057c3.525f", "type": "ioBroker in", "z": "95848418.340d58", "name": "Gemuese Tage", "topic": "0_userdata.0.Bewässerung.Gemuese_Tage", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 180, "y": 2620, "wires": [ [ "1ea15f91.006e4" ] ] }, { "id": "1ea15f91.006e4", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.gemtag", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 2600, "wires": [ [ "88855f2e.c147e8" ] ] }, { "id": "704a9b39.fff60c", "type": "ioBroker in", "z": "95848418.340d58", "name": "Gemuese Laufzeit", "topic": "0_userdata.0.Bewässerung.Gemuese_Laufzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 130, "y": 2560, "wires": [ [ "ce8ee0.d1b9192" ] ] }, { "id": "88855f2e.c147e8", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "send", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1110, "y": 2560, "wires": [ [ "7695f95c.e0115" ] ] }, { "id": "7695f95c.e0115", "type": "template", "z": "95848418.340d58", "name": "Create timer", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "{\"timers\":[{\"starttime\":{{payload.gemstart}},\"days\":[{{payload.gemtag}}],\"output\":\"0\",\"endtime\":{{payload.gemend}}}],\"settings\":{\"disabledDevices\":[]}}", "output": "str", "x": 1310, "y": 2560, "wires": [ [ "fb61e295.e1c3f8" ] ] }, { "id": "465c6378.063754", "type": "ioBroker get", "z": "95848418.340d58", "name": "min", "topic": "0_userdata.0.Bewässerung.Gemuese_Startzeit_m", "attrname": "min", "payloadType": "value", "x": 590, "y": 2420, "wires": [ [ "71bb1787.93aa1" ] ] }, { "id": "71bb1787.93aa1", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) + Number(msg.min)) * 60000;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 760, "y": 2420, "wires": [ [ "ede61f85.9b1fe8", "ce8ee0.d1b9192" ] ] }, { "id": "655ca02b.c39688", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) - 1) * 60;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 390, "y": 2420, "wires": [ [ "465c6378.063754" ] ] }, { "id": "ad223f59.b03b3", "type": "calculator", "z": "95848418.340d58", "name": "", "inputMsgField": "lauf", "outputMsgField": "lauf", "operation": "mult", "constant": "60000", "round": false, "decimals": 0, "x": 500, "y": 2560, "wires": [ [ "2c5a53a9.e88674" ] ] }, { "id": "509af3bd.f017f4", "type": "ui_time_scheduler", "z": "95848418.340d58", "group": "df42ab16.59cb78", "name": "Bewässerung", "startDay": "1", "refresh": 60, "devices": [ "Feigenbaum" ], "onlySendChange": false, "customPayload": false, "eventMode": false, "eventOptions": [], "sendTopic": false, "lat": "46.98015", "lon": "9.5706316", "outputs": 2, "order": 1, "width": 0, "height": 0, "x": 260, "y": 3140, "wires": [ [], [ "5a50917e.fb2e08" ] ], "outputLabels": [ "Info", "Chili" ] }, { "id": "8d0f9b68.f48f6", "type": "ioBroker out", "z": "95848418.340d58", "name": "Feigenbaum", "topic": "mqtt.0.ESP_Bewaesserung.GPIO.13", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 770, "y": 3160, "wires": [] }, { "id": "5a50917e.fb2e08", "type": "change", "z": "95848418.340d58", "name": "change true", "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": 510, "y": 3160, "wires": [ [ "8d0f9b68.f48f6" ] ] }, { "id": "a03757aa.177f78", "type": "ioBroker in", "z": "95848418.340d58", "name": "Feigenbaum Startzeit", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Startzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 220, "y": 2840, "wires": [ [ "ae205d88.b3a16" ] ] }, { "id": "880223f9.33fa5", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.feistart", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 860, "y": 2940, "wires": [ [ "e69125f9.5d323" ] ] }, { "id": "4813b70.5ccf5c8", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = Number(msg.payload) + Number(msg.lauf);\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 660, "y": 2980, "wires": [ [ "cc150fa0.200788" ] ] }, { "id": "7a9f5936.318408", "type": "ioBroker get", "z": "95848418.340d58", "name": "Feigenbaum Laufzeit", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Laufzeit", "attrname": "lauf", "payloadType": "value", "x": 340, "y": 2980, "wires": [ [ "7240e8b9.feeb68" ] ] }, { "id": "cc150fa0.200788", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.feiend", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 860, "y": 2980, "wires": [ [ "e69125f9.5d323" ] ] }, { "id": "dd944832.19d71", "type": "ioBroker in", "z": "95848418.340d58", "name": "Feigenbaum Tage", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Tage", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 210, "y": 3040, "wires": [ [ "42552839.ddf258" ] ] }, { "id": "42552839.ddf258", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "send.feitag", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 860, "y": 3020, "wires": [ [ "e69125f9.5d323" ] ] }, { "id": "4bd2bfd5.a0f29", "type": "ioBroker in", "z": "95848418.340d58", "name": "Feigenbaum Laufzeit", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Laufzeit", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "true", "x": 100, "y": 2980, "wires": [ [ "7a9f5936.318408" ] ] }, { "id": "e69125f9.5d323", "type": "change", "z": "95848418.340d58", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "send", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1130, "y": 2980, "wires": [ [ "f67212ea.6d15a" ] ] }, { "id": "f67212ea.6d15a", "type": "template", "z": "95848418.340d58", "name": "Create timer", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "{\"timers\":[{\"starttime\":{{payload.feistart}},\"days\":[{{payload.feitag}}],\"output\":\"0\",\"endtime\":{{payload.feiend}}}],\"settings\":{\"disabledDevices\":[]}}", "output": "str", "x": 1330, "y": 2980, "wires": [ [ "509af3bd.f017f4" ] ] }, { "id": "1c9bcf61.13c8b1", "type": "ioBroker get", "z": "95848418.340d58", "name": "min", "topic": "0_userdata.0.Bewässerung.Feigenbaum_Startzeit_m", "attrname": "min", "payloadType": "value", "x": 610, "y": 2840, "wires": [ [ "9ab0b244.3d9638" ] ] }, { "id": "9ab0b244.3d9638", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) + Number(msg.min)) * 60000;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 780, "y": 2840, "wires": [ [ "880223f9.33fa5", "7a9f5936.318408" ] ] }, { "id": "ae205d88.b3a16", "type": "function", "z": "95848418.340d58", "name": "", "func": "var math = (Number(msg.payload) - 1) * 60;\nmsg.payload = math;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 410, "y": 2840, "wires": [ [ "1c9bcf61.13c8b1" ] ] }, { "id": "7240e8b9.feeb68", "type": "calculator", "z": "95848418.340d58", "name": "", "inputMsgField": "lauf", "outputMsgField": "lauf", "operation": "mult", "constant": "60000", "round": false, "decimals": 0, "x": 520, "y": 2980, "wires": [ [ "4813b70.5ccf5c8" ] ] }, { "id": "df42ab16.59cb78", "type": "ui_group", "name": "Standard", "tab": "29502947.69c12e", "order": 1, "disp": true, "width": "6", "collapse": false }, { "id": "29502947.69c12e", "type": "ui_tab", "name": "Home", "icon": "dashboard", "disabled": false, "hidden": false } ]
Zum testen habe ich einmal mit dem Vis angefangen
Für heute reicht es. Morgen kommt der Teil dran wo die Daten vom vis wieder in die Objekte gespeichert werden.
-
@mickym Noch zu deiner eigentlichen Frage. Die Wochentage habe ich so gespeichert
0_userdata.0.Bewässerung.dMo
0_userdata.0.Bewässerung.dDi
...
ich hoffe du hast danach gefragt. -
@hafo Ja das hab ich schon rausgefunden.
Ich werde den Flow mal so anpassen, dass er Dir diesen String wieder aus den 7 Bewässerungspunkten ausgibt und Du speicherst es ja dann in Typ_Tage.
Im Übrigen scheinst Du ja parallel mit Node-Red Dashboard zu arbeiten, warum Du aber solche Nodes wie den Calculator installierst - erschließt sich mir nicht ganz, da im Standardsortiment doch die aggregator Node vorhanden ist. Aber egal.
-
@mickym den ui Scheduler habe ich genommen, weil ich nichts anderes gefunden habe wo der Timer mit einem String programmiert werden kann. Häufig kann er nur überschrieben werden und springt dann wieder auf die ursprünglichen Zeiten zurück.
Die Aggregator Node muss ich wohl mal anschauen. Ich wollte nicht alles mit der Funktions Node machen und Calculator klingt halt schon sehr passend.
Schon mal vielen Dank für deine Hilfe. -
@hafo EInen Timer den Du von außen mittels Strings programmieren kannst. ist zum Beispiel dieser hier:
https://flows.nodered.org/node/node-red-contrib-eztimer/in/c8156f6276976bfb518d1e60442e01e2
mit dem muss man sich bissi beschäftigen, aber ich glaube der würde für Deine Zwecke gut passen.
-
@hafo So der Flow ist soweit fertig, wäre zwar bissi einfacher gewesen, wenn die Wochentage auf einer anderen Ebene gewesen wären, dann hätte man mit den Wildcards besser arbeiten können, aber so habe ich halt nur die relevanten Topics zur Bildung des Strings gebildet:
[ { "id": "738cae99.0afee", "type": "inject", "z": "dce8fa20.2e93c8", "name": "Init", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "{\"dMo\":false,\"dDi\":false,\"dMi\":false,\"dDo\":false,\"dFr\":false,\"dSa\":false,\"dSo\":false}", "payloadType": "json", "x": 1110, "y": 3000, "wires": [ [ "7410385d.2459c8" ] ] }, { "id": "dc29cb83.da0c38", "type": "join", "z": "dce8fa20.2e93c8", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "7", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 1410, "y": 3040, "wires": [ [ "80b4a58d.6c43d8", "3c7d1c2c.10bd44" ] ] }, { "id": "80b4a58d.6c43d8", "type": "debug", "z": "dce8fa20.2e93c8", "name": "Objekt", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1550, "y": 2980, "wires": [] }, { "id": "d0d7e563.ed60d8", "type": "inject", "z": "dce8fa20.2e93c8", "name": "reset", "props": [ { "p": "reset", "v": "true", "vt": "bool" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "str", "x": 1250, "y": 2960, "wires": [ [ "dc29cb83.da0c38" ] ] }, { "id": "7410385d.2459c8", "type": "split", "z": "dce8fa20.2e93c8", "name": "", "splt": "\\n", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "topic", "x": 1250, "y": 3000, "wires": [ [ "dc29cb83.da0c38" ] ] }, { "id": "3c7d1c2c.10bd44", "type": "split", "z": "dce8fa20.2e93c8", "name": "", "splt": "\\n", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "topic", "x": 1550, "y": 3040, "wires": [ [ "a9feb4ff.e0fe28", "cec83e21.09f92" ] ] }, { "id": "a9feb4ff.e0fe28", "type": "debug", "z": "dce8fa20.2e93c8", "name": "Je Tag", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1730, "y": 2980, "wires": [] }, { "id": "cec83e21.09f92", "type": "change", "z": "dce8fa20.2e93c8", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "1", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "false", "fromt": "bool", "to": "0", "tot": "str" }, { "t": "delete", "p": "topic", "pt": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1760, "y": 3040, "wires": [ [ "483e2021.3f9b" ] ] }, { "id": "483e2021.3f9b", "type": "join", "z": "dce8fa20.2e93c8", "name": "", "mode": "custom", "build": "string", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": ",", "joinerType": "str", "accumulate": false, "timeout": "", "count": "7", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 1940, "y": 3040, "wires": [ [ "b14fe537.4098e8" ] ] }, { "id": "1fc48b1f.b7a925", "type": "debug", "z": "dce8fa20.2e93c8", "name": "String", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 2270, "y": 3000, "wires": [] }, { "id": "40005ec8.38626", "type": "ioBroker in", "z": "dce8fa20.2e93c8", "name": "", "topic": "0_userdata.0.Bewässerung.*", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 740, "y": 3040, "wires": [ [ "164a866c.7601ba" ] ] }, { "id": "164a866c.7601ba", "type": "change", "z": "dce8fa20.2e93c8", "name": "", "rules": [ { "t": "change", "p": "topic", "pt": "msg", "from": ".*\\/(.*)$", "fromt": "re", "to": "$1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 990, "y": 3040, "wires": [ [ "787d80ea.f7322" ] ] }, { "id": "787d80ea.f7322", "type": "switch", "z": "dce8fa20.2e93c8", "name": "Nur Wochentage", "property": "topic", "propertyType": "msg", "rules": [ { "t": "regex", "v": "d(Mo|Di|Mi|Do|Fr|Sa|So)", "vt": "str", "case": false } ], "checkall": "true", "repair": false, "outputs": 1, "x": 1210, "y": 3040, "wires": [ [ "dc29cb83.da0c38" ] ] }, { "id": "b14fe537.4098e8", "type": "trigger", "z": "dce8fa20.2e93c8", "name": "", "op1": "", "op2": "", "op1type": "nul", "op2type": "payl", "duration": "5", "extend": true, "overrideDelay": false, "units": "s", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 2090, "y": 3040, "wires": [ [ "1fc48b1f.b7a925", "428ea859.443ff8" ] ] }, { "id": "a01c4c32.322d3", "type": "change", "z": "dce8fa20.2e93c8", "name": "", "rules": [ { "t": "change", "p": "vis_Selection", "pt": "msg", "from": "7", "fromt": "str", "to": "Tomaten", "tot": "str" }, { "t": "set", "p": "topic", "pt": "msg", "to": "'0_userdata.0.Bewässerung.' & vis_Selection & '_Tage'", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2490, "y": 3040, "wires": [ [ "38949264.ca833e", "eda70d63.a4786" ] ] }, { "id": "eda70d63.a4786", "type": "ioBroker out", "z": "dce8fa20.2e93c8", "name": "", "topic": "", "ack": "true", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 2700, "y": 3040, "wires": [] }, { "id": "428ea859.443ff8", "type": "ioBroker get", "z": "dce8fa20.2e93c8", "name": "vis_Auswahl", "topic": "0_userdata.0.Bewässerung.vis_Auswahl", "attrname": "vis_Selection", "payloadType": "value", "x": 2270, "y": 3040, "wires": [ [ "a01c4c32.322d3" ] ] }, { "id": "38949264.ca833e", "type": "debug", "z": "dce8fa20.2e93c8", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 2690, "y": 2980, "wires": [] } ]
Wichtig ist, dass Du die Join Node mit den Wochentagen initialisierst, da die Reihenfolge im String ja entscheidend ist. Wenn man das nicht macht kommen die Wochentage wild gewürfelt rein.
Nachdem Du wahrscheinlich immer alle Datenpunkte aufeinmal schreibst, brauchst Du die nicht einzeln abfragen bzw. ich lasse ja den ganzen Bewässerungsast triggern und filtere dann. Du solltest Dir vielleicht doch überlegen, ob Du da nicht eine separate Struktur für die Tage unter Bewässerung machst - also Bewässerung.days.Mo usw. aber egal ich habs jetzt wie es ist rausgefiltert.
Ggf. noch eine Trigger Node dranhängen (hab ich mal gemacht, kannst ja wieder entfernen), falls Du nicht für jede Änderung eine Nachricht brauchst, sondern zum Beispiel erst nach 5 Sekunden oder so. Bei Visualisierungen hilft das gegen nervöse Hände bzw. Finger.
Wenn Du übrigens Deine Vis Auswahl nicht mit Zahlen sondern mit den richtigen Namen fütterst, kannst Du in dem Flow auch den msg.topic dynamisch zusammenstellen und den String mit einer iobroker out Node variabel schreiben. Ansonsten musst halt über eine Change Node (also zum Beispiel 7) mit dem msg.topic übersetzen.
So hab den Flow oben noch um die vis Auswahl und der dynamischen Ausgabe ergänzt:
Du musst nun aber aufpassen, dass Du Dir keine Endlosschleifen einhandelst. Sprich Node-Red und VIS schreiben in die Wochentagspunkte - das wird schief gehen. Da musst Du noch was überlegen - ich würde getrennte Punke ggf. zum Auslesen und zum Setzen nehmen.
-
@mickym Phuu, das ganze wird ja komplizierter als erwartet. Da war die Gardena Steuerung ja noch richtig einfach. Aber noch bin ich motiviert, es liegen ja auch noch 20 Zigbee Bodenfeuchtesensoren hier....
Ich kann gut eine separate Struktur für die Tage machen wenns hilft. Sollte die Struktur dann so aussehen: Bewässerung.days.Mo.Di.Mi... oder kommen alle Tage in denselben Ordner? Dann könnte ich auch gleich einen Ordner für die Vis Punkte machen und für jeden Bewässerungsstrang. Was empfiehlst du da?
Wenn ich alles umbaue, kann ich auch gleich das mit der Variable bei der Vis Ausgabe umsetzen. Das vereinfacht ja auch den Fow welcher das Vis füllt.
Eine Endlosschleife sollte es eigentlich nicht geben. Ich plane einen Knopf fürs Speichern ein. Da wird ein Datenpunkt auf true gesetzt und funktioniert als Trigger für deinen Flow. Am Ende muss ich ihn nur noch auf false setzten.
Was macht dein Timer besser als meiner? Lohnt sich ein umstieg?
-
@hafo Na ja so kompliziert ist es ja nicht. Ich hab Dir doch den Flow nun so hin gebastelt, dass er mit der jetzigen Struktur auskommen würde.
Aber wenn Du schon fragst ja ich würde die Vis Datenpunkte - noch eine Ebene nach unten gehen, dann brauchst Du nicht, wie ich in dem Flow gemacht habe alles filtern und kannst einfach mit Bewässerung.days.* alle Änderungen überwachen. Für jeden Bewässerungsstrang würde ich es nicht machen, da Du ja alle Stränge über eine Oberfläche im vis behandeln möchtest.
Das mit der Vis Ausgabe brauchst Du dann auch nicht umbauen, ggf. kann man halt statt Zahlen über vis gleich das ausgeben, um was es sich handelt, dann kannst Du den msg.topic direkt bauen. Also statt 7 eben Tomaten etc.
Gut wenn Du das über einen Knopf mit Speichern triggerst, dann triggerst Du es aber nicht über iobroker In Nodes, sondern machst es Einzeln über get Nodes oder List Nodes (da brauchst die Struktur nicht).
Den Timer brauchst nicht ändern - ich dachte nur - wenn ich das richtig gesehen habe, dass der für das NOdeRed Dashboard gedacht war. Egal.
Was ich ehrlich gesagt nicht verstehe warum Du Dir das mit dem String 1,1,0,0,0,0,0 usw. so kompliziert machst und nicht einfach zu den einzelnen Stängen einfach das Objekt als JSON abspeicherst, dann würdest Du Dir das Leben viel einfacher machen. Ich zeig Dir das mal als JSON. In diesem Fall könntest Du einfach beim Ein- und Auslesen den ganzen Datenpunkt nehmen und machst das auch wieder wie gehabt über Flow-Variablen. Dann braucht man keine Reihenfolgen und keine Initialisierungen .
-
@mickym ok, dann lege ich die vis objekte unter vis ab. Das mit den Strings verstehe ich halt noch nicht so ganz. Ich würde es gerne als Json speichern, verstehe aber nicht wie ich es dann im vis angezeigt bekomme und verändern kann.
Auch die Aufteilung in Stunden und Minuten ist etwas kompliziert, funktioniert in meinem Flow jedoch. Mein Hauptproblem ist halt dass der Timer ziemlich wählerisch ist mit den Inputs. Grundsätzlich könnte ich auch alles über einen Timer laufen lassen, der hätte auch verschiedene Ausgänge. Allerdings wird das füttern dadurch ziemlich kompliziert. Ich müsste ja bei jeder Änderung sämtliche Timer neu laden.
Ich habe die Objekte nun so aufgeteilt
-
@hafo So ich zeig Dir mal im Groben, wie ich es machen würde. Es enthält zumindest nun für den ganzen Zyklus den Ablauf und habe auch teilweise Deinen Flow genommen.
Ich hab jetzt nicht die Zahlen genommen - gut dann ist die Reihenfolge nicht so schön, aber das kannst ja dann in meinem Flow entsprechend ändern.
Das Ganze arbeitet nun doch wieder schön mit einer Flow-Variablen ist aber ziemlich einfach:
1- Der vis-Auswahl Punkt wird getriggert - Dein Flow - aber bei den Tagen habe ich das nun geändert um von dem String wegzukommen:
Der Flow schreibt die Datenpunkte unter Tage! (also easy)
- Durch das Schreiben werden automatisch der folgende Flow getriggert und in eine Flow Variable geschrieben:
und gleichzeitig die Punkte für die Vis Visualisierung gesetzt bzw. aktualisiert.
Somit wird auch über jede vis Änderung in Echtzeit die Flow Variable aktualisiert.
[ { "id": "9b752b23.7de838", "type": "ioBroker in", "z": "4922e7ed.227918", "name": "", "topic": "0_userdata.0.Bewässerung.Tage.*", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 260, "y": 1620, "wires": [ [ "d9ee5754.d29278" ] ] }, { "id": "90b4bc5d.6233e", "type": "switch", "z": "4922e7ed.227918", "name": "", "property": "topic", "propertyType": "msg", "rules": [ { "t": "eq", "v": "Mo", "vt": "str" }, { "t": "eq", "v": "Di", "vt": "str" }, { "t": "eq", "v": "Mi", "vt": "str" }, { "t": "eq", "v": "Do", "vt": "str" }, { "t": "eq", "v": "Fr", "vt": "str" }, { "t": "eq", "v": "Sa", "vt": "str" }, { "t": "eq", "v": "So", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 7, "x": 710, "y": 1620, "wires": [ [ "2a8d1ab7.8ffcf6" ], [ "61d87fcd.66f09" ], [ "21d735cb.72713a" ], [ "452621b9.3e1c1" ], [ "999c21fb.4073a" ], [ "825002be.5289" ], [ "f38065d0.a51638" ] ] }, { "id": "d9ee5754.d29278", "type": "change", "z": "4922e7ed.227918", "name": "", "rules": [ { "t": "change", "p": "topic", "pt": "msg", "from": ".*\\/(.*)$", "fromt": "re", "to": "$1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 530, "y": 1620, "wires": [ [ "90b4bc5d.6233e" ] ] }, { "id": "61d87fcd.66f09", "type": "change", "z": "4922e7ed.227918", "name": "setze flow.days", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "days.Di", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 1540, "wires": [ [] ] }, { "id": "21d735cb.72713a", "type": "change", "z": "4922e7ed.227918", "name": "setze flow.days", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "days.Mi", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 1580, "wires": [ [] ] }, { "id": "452621b9.3e1c1", "type": "change", "z": "4922e7ed.227918", "name": "setze flow.days", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "days.Do", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 1620, "wires": [ [] ] }, { "id": "999c21fb.4073a", "type": "change", "z": "4922e7ed.227918", "name": "setze flow.days", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "days.Fr", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 1660, "wires": [ [] ] }, { "id": "825002be.5289", "type": "change", "z": "4922e7ed.227918", "name": "setze flow.days", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "days.Sa", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 1700, "wires": [ [] ] }, { "id": "f38065d0.a51638", "type": "change", "z": "4922e7ed.227918", "name": "setze flow.days", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "days.So", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 1740, "wires": [ [] ] }, { "id": "2a8d1ab7.8ffcf6", "type": "change", "z": "4922e7ed.227918", "name": "setze flow.days", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "days.Mo", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 1500, "wires": [ [] ] } ]
- Sobald Du auf Speichern drückst hier mit einer Inject Node simuliert, wird die Flow Variable wieder ausgelesen, das kennst Du ja und dann die Auswahl Variable abgefragt und nun ein JSON String in den entsprechenden Datenpunkt geschrieben und kann dann wie unter 1 wieder ausgelesen werden:
[ { "id": "22a66311.f3560c", "type": "inject", "z": "4922e7ed.227918", "name": "Speichern", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 200, "y": 1940, "wires": [ [ "82dfdd05.4d8e1" ] ] }, { "id": "fb4611b6.3419", "type": "ioBroker get", "z": "4922e7ed.227918", "name": "vis_Auswahl", "topic": "0_userdata.0.Bewässerung.vis_Auswahl", "attrname": "auswahl", "payloadType": "value", "x": 610, "y": 1940, "wires": [ [ "dea4991e.3e11c8" ] ] }, { "id": "82dfdd05.4d8e1", "type": "change", "z": "4922e7ed.227918", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "days", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 410, "y": 1940, "wires": [ [ "fb4611b6.3419" ] ] }, { "id": "dea4991e.3e11c8", "type": "switch", "z": "4922e7ed.227918", "name": "Verteiler", "property": "auswahl", "propertyType": "msg", "rules": [ { "t": "eq", "v": "1", "vt": "num" }, { "t": "eq", "v": "2", "vt": "num" }, { "t": "eq", "v": "3", "vt": "num" }, { "t": "eq", "v": "4", "vt": "num" }, { "t": "eq", "v": "5", "vt": "num" }, { "t": "eq", "v": "6", "vt": "num" }, { "t": "eq", "v": "7", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 7, "x": 820, "y": 1940, "wires": [ [], [], [], [], [], [], [ "f65a811c.6b36c" ] ] }, { "id": "f65a811c.6b36c", "type": "change", "z": "4922e7ed.227918", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "0_userdata.0.Bewässerung.Tomaten_Tage", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1000, "y": 1980, "wires": [ [ "4c9423d5.92058c" ] ] }, { "id": "9e41a834.400728", "type": "ioBroker out", "z": "4922e7ed.227918", "name": "", "topic": "", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1360, "y": 1980, "wires": [] }, { "id": "4c9423d5.92058c", "type": "json", "z": "4922e7ed.227918", "name": "", "property": "payload", "action": "", "pretty": false, "x": 1180, "y": 1980, "wires": [ [ "9e41a834.400728", "e3a61f16.1e848" ] ] }, { "id": "e3a61f16.1e848", "type": "debug", "z": "4922e7ed.227918", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1350, "y": 2040, "wires": [] } ]
-
Vielen vielen Dank. Ich bin gerade ein bisschen am vis am arbeiten. Auch das braucht seine Zeit wenn man noch keine Vorkentnisse hat
Nun muss ich mal raus aufs Bike. Ich melde mich wenn ich weiter bin (oder Hilfe benötige)Bei deinem Flow muss ich aber den String in 1.0.0.1.0.0.0 umwandeln um den Timer zu füttern. Das sollte ich mittlerweile aber hinbekommen.
-
@hafo Viel Spaß bei Radeln.
Im Übrigen das unter 2. setzen der Flow Variablen ist wieder mal einer der wenigen Fälle die mit einer Function Node einfacher sind:
Inhalt der function-Node:
fTopic='days.' + msg.topic; flow.set(fTopic,msg.payload); return null;
[ { "id": "9b752b23.7de838", "type": "ioBroker in", "z": "4922e7ed.227918", "name": "", "topic": "0_userdata.0.Bewässerung.Tage.*", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 260, "y": 1620, "wires": [ [ "d9ee5754.d29278" ] ] }, { "id": "d9ee5754.d29278", "type": "change", "z": "4922e7ed.227918", "name": "", "rules": [ { "t": "change", "p": "topic", "pt": "msg", "from": ".*\\/(.*)$", "fromt": "re", "to": "$1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 530, "y": 1620, "wires": [ [ "bef90301.005e5" ] ] }, { "id": "bef90301.005e5", "type": "function", "z": "4922e7ed.227918", "name": "setze Flow variable", "func": "fTopic='days.' + msg.topic;\nflow.set(fTopic,msg.payload);\nreturn null;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 750, "y": 1620, "wires": [ [] ] } ]