NEWS
Schedule jede Stunde
-
Hallo ich habe folgendes Vorhaben: Im Ferienhaus steht ein Iobroker der mir über Telegram Temperatur Werte in die Heimat übermitteln soll.
Ich habe 7 Zigbee Geräte die einmal pro Stunde im Versatz von 1 Minute Daten übermitteln sollen. Mein Ansatz sieht wie folgt aus:/*****Giethoorn sendet Temperaturen an Castrop ***************** ** März 2021 ** ** ** erstellt: 10.03.21 ** geä: ***********************************************************************/ const id_TA = "zigbee.0.00158d000444cb23.temperature"; //1 const id_TK = "zigbee.0.00158d0001e09c1a.temperature"; //2 const id_TN = "zigbee.0.00158d0001e0821b.temperature"; //3 const id_TS = "zigbee.0.00158d0001e13db7.temperature"; //4 const id_TW = "zigbee.0.00158d0001e09bc7.temperature"; //5 const id_OS = "zigbee.0.00158d000423bfd0.illuminance"; //6 const id_IS = "zigbee.0.00158d000253e897.illuminance"; //7 //schedule("0 */1 * * *", function () { //1 schedule("1 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TA " + getState(id_TA).val) }); log("TA " + getState(id_TK).val); //2 schedule("2 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TK " + getState(id_TK).val) }); log("TK " + getState(id_TN).val); //3 schedule("3 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TN " + getState(id_TN).val) }); log("TN " + getState(id_TS).val); //4 schedule("4 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TS " + getState(id_TS).val) }); log("TS " + getState(id_TS).val); //5 schedule("5 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TW " + getState(id_TW).val) }); log("TW " + getState(id_TW).val); //6 schedule("6 * * * *", function () { sendTo('telegram.0', 'send', { text: ("OS " + getState(id_OS).val) }); log("OS " + getState(id_OS).val); //7 schedule("7 * * * *", function () { sendTo('telegram.0', 'send', { text: ("IS " + getState(id_IS).val) }); log("IS " + getState(id_IS).val); }); }); }); }); }); }); }); //});
In der Heimat empfängt der Iobroker die Daten nach diesem Script:
/*****Castrop empfängt Daten aus Giethoorn ***************** ** März 2021 ** Telegram-Adapter, ** ** ** geändert:09.03.21 ************************************************************/ const id_req = "telegram.0.communicate.request"; on({ id: id_req, change: "any" }, function (obj) { var value = getState(id_req).val; var raum = value.substr(11, 2); var wert = value.substring(value.length - 5) log("Telegraminhalt "+value); log("Messwert "+wert); if ((raum == "IS") || (raum == "OS")) { wert=value.substr(13,4); log("LUX " +wert); } log("Gerät " +raum); if (raum === "TA") { setState("javascript.3.Giethoorn.Temp.TA", wert); } if (raum === "TW") { setState("javascript.3.Giethoorn.Temp.TW", wert); } if (raum === "TK") { setState("javascript.3.Giethoorn.Temp.TK", wert); } if (raum === "TS") { setState("javascript.3.Giethoorn.Temp.TS", wert); } if (raum === "TN") { setState("javascript.3.Giethoorn.Temp.TN", wert); } if (raum === "OS") { setState("javascript.3.Giethoorn.Daten.OSLux", wert); } if (raum === "IS") { setState("javascript.3.Giethoorn.Daten.ISLux", wert); } });
Wie würdet ihr das Vorhaben lösen?
Gruß
Michael -
@michihorn sagte: einmal pro Stunde im Versatz von 1 Minute Daten übermitteln sollen.
Die Schedules darf man nicht ineinander verschachteln. Ordne sie einfach untereinander an.
-
@paul53 Hab ich gemacht:
/*****Giethoorn sendet Temperaturen an Castrop ***************** ** März 2021 ** ** ** erstellt: 10.03.21 ** geä: 11.03.21 ***********************************************************************/ //Temperatur Sensoren-------------------------------------------- const id_TA = "zigbee.0.00158d000444cb23.temperature"; //1 const id_TK = "zigbee.0.00158d0001e09c1a.temperature"; //2 const id_TN = "zigbee.0.00158d0001e0821b.temperature"; //3 const id_TS = "zigbee.0.00158d0001e13db7.temperature"; //4 const id_TW = "zigbee.0.00158d0001e09bc7.temperature"; //5 //PIR-------------------------------------------------------------- const id_OS = "zigbee.0.00158d000423bfd0.illuminance"; //6 const id_IS = "zigbee.0.00158d000253e897.illuminance"; //7 //1 schedule("1 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TA " + getState(id_TA).val) }); log("TA " + getState(id_TA).val); //2 }); schedule("2 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TK " + getState(id_TK).val) }); log("TK " + getState(id_TK).val); }); //3 schedule("3 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TN " + getState(id_TN).val) }); log("TN " + getState(id_TN).val); }); //4 schedule("4 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TS " + getState(id_TS).val) }); log("TS " + getState(id_TS).val); }); //5 schedule("5 * * * *", function () { sendTo('telegram.0', 'send', { text: ("TW " + getState(id_TW).val) }); log("TW " + getState(id_TW).val); }); //6 schedule("6 * * * *", function () { sendTo('telegram.0', 'send', { text: ("OS " + getState(id_OS).val) }); log("OS " + getState(id_OS).val); }); //7 schedule("7 * * * *", function () { sendTo('telegram.0', 'send', { text: ("IS " + getState(id_IS).val) }); log("IS " + getState(id_IS).val); });
nur jetzt werden mir jede Menge Telegrame von jedem Gerät geschickt. Was mache ich noch falsch? Der Plan war ja, 7 Telegrame zu jeder Stunde, habe gerade 454 Telegramme bekommen.
-
@michihorn sagte: habe gerade 454 Telegramme bekommen.
Die waren wohl noch im Puffer aus der Verschachtelung.
@michihorn sagte in Schedule jede Stunde:
Der Plan war ja, 7 Telegrame zu jeder Stunde,
Das sollte jetzt so erfolgen.
-
@paul53 Leider nein, es sind erst 3 Minuten rum und ich habe bereits 155 Telgrams
-
@michihorn sagte: ich habe bereits 155 Telgrams
Auch so viele Log-Einträge aus dem Skript?
-
@paul53 Jede Menge, aktuell steht folgendes:
(8008) Cannot send message [chatId - 702589553]: Error: ETELEGRAM: 429 Too Many Requests: retry after 3 -
@michihorn
Starte mal ioBroker neu. -
@paul53 Jap, das war es.
Das Script läuft wie es soll.
Danke