NEWS
Time-triggerd Skript wird nicht ausgelöst
-
Hi,
ich hab im ioBroker mit dem JS Adapter ein Skript erstellt und möchte, dass dieses jeden Tag von 4 bis 6 Uhr läuft und das jede Minute.
Das kann ich ja über den Zeitassistenten einstellen, dann wird mir folgendes ins Skript hinzugefügt:'{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}'
Aber das Skript wird nicht automatisch zu dieser Zeit ausgeführt. Muss ich da noch was ergänzen?
Danke und lg
-
@chco sagte in Time-triggerd Skript wird nicht ausgelöst:
Hi,
ich hab im ioBroker mit dem JS Adapter ein Skript erstellt und möchte, dass dieses jeden Tag von 4 bis 6 Uhr läuft und das jede Minute.
Das kann ich ja über den Zeitassistenten einstellen, dann wird mir folgendes ins Skript hinzugefügt:'{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}'
Aber das Skript wird nicht automatisch zu dieser Zeit ausgeführt. Muss ich da noch was ergänzen?
Danke und lg
Zeig bitte das Skript / den Trigger, nicht nur diese eine Zeile.
A.
-
@chco
Das was Du da zeigst ist ja nur ein Teil der Wahrheit.
Zeig doch mal das Script und nicht nur den Zeitplan. -
@codierknecht Ich dachte, wenn ich diese Zeile am Beginn des Skripts einfüge, wird das Skript automatisch zu dieser Zeit ausgeführt... wie muss ich diesen Zeitplan denn einbauen? Das Skript ist beispielsweise, nur dass eine Lampe eingeschaltet wird:
setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",true);
Danke!
-
@chco sagte in Time-triggerd Skript wird nicht ausgelöst:
@codierknecht Ich dachte, wenn ich diese Zeile am Beginn des Skripts einfüge, wird das Skript automatisch zu dieser Zeit ausgeführt... wie muss ich diesen Zeitplan denn einbauen? Das Skript ist beispielsweise, nur dass eine Lampe eingeschaltet wird:
setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",true);
Danke!
Lesen kannst du ?
Bitte zeige das komplette Skript. Nur dann können wir Dir helfen.
A.
-
@chco
Das was Du da zeigst ist kein "Script", sondern lediglich eine einzelnen Anweisung.Ein "Script" wird nicht einfach zu einer Zeit ausgeführt - auch wenn man da so locker flockig eine Zeitplan einfügt. Was Du brauchst in ein Zeitplan-Trigger ... also ein
schedule
.Wenn Dein ganzes "Script" tatsächlich nur aus dieser einen Zeile besteht, wäre wohl das hier das gewünschte Ergebnis:
schedule('{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}', async function () { setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",true); });
Das macht aber so keinen Sinn, denn damit würde ab 04:00 Uhr 120 x eine Lampe eingeschaltet.
Ist also ziemlich sinnbefreit.Also nochmal:
@codierknecht sagte in Time-triggerd Skript wird nicht ausgelöst:
Zeig doch mal das Script und nicht nur den Zeitplan.
-
Edit unten
-
Wäre das dann so zu machen?
schedule('{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}', async function () { var batteriestatus = getState("0_userdata.0.iPhone_battery").val if(batteriestatus=="80") { // Steckdose wird ausgeschaltet setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",false) // eine WhatsApp Benachrichtung senden sendTo('whatsapp-cmb.0', 'send', { text: 'Batteriestatus hat 80% überstiegen. Laden wird beendet.', // Text der WhatsApp Nachricht }); } });
-
@chco
Sieht fast OK aus. Auf die Schnelle fallen mir zwei fehlende Semikolon und eine fehlende schließende Klammer auf.
Und der Batteriestatus ist mit ziemlicher Sicherheit eine Zahl und kein String.
Außerdem könnte der Wert (theoretisch) auch direkt von 79 auf 81 springen. Also besser mit>=
prüfen.
Ob dassendTo
so richtig ist, wage ich zu bezweifeln. Da kommt ein Komma und danach nix mehr. Könnte mir vorstellen, dass da noch die Nummer folgt.Gewöhn Dir aber an, sauber einzurücken. Macht den Code (nicht nur für andere) besser lesbar.
Jeder Code muss irgendwann gewartet werden.schedule('{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}', async function () { var batteriestatus = getState("0_userdata.0.iPhone_battery").val; if (batteriestatus >= 80) { // Steckdose wird ausgeschaltet setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",false); // eine WhatsApp Benachrichtung senden sendTo('whatsapp-cmb.0', 'send', { text: 'Batteriestatus hat 80% überstiegen. Laden wird beendet.', /*hier fehlt noch etwas, oder?*/ // Text der WhatsApp Nachricht }); } });
-
@codierknecht
Perfekt, danke! -
@chco sagte in Time-triggerd Skript wird nicht ausgelöst:
Perfekt, danke!
Naja - perfekt würde ich das nicht nennen.
Ich jedenfalls finde die Logik dahinter mindestens "fragwürdig".Du willst also zwischen 04:00 und 06:00 Uhr schauen, ob das Handy zu 80 oder mehr % geladen ist und dann die dazu verwendete Dose abschalten?
Was passiert, wenn Dein Handy um 05:59 Uhr zu 79% geladen ist und die 80% um 06:01 Uhr erreicht werden?
Eben - nix!Sowas löst man üblicherweise mit einem Trigger und nicht über einen Zeitplan.
on({id: "0_userdata.0.iPhone_battery", change: "ne"}, async function (obj) { if (obj.state.val >= 80) { // Steckdose wird ausgeschaltet setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",false); // eine WhatsApp Benachrichtung senden sendTo('whatsapp-cmb.0', 'send', { text: 'Batteriestatus hat 80% überstiegen. Laden wird beendet.', /*hier fehlt noch etwas, oder?*/ // Text der WhatsApp Nachricht }); } });