NEWS
Script täglich ausführen
-
Hallo!
Ich würde gerne das dieses Script täglich um 23:50 ausführt wird und die Daten geschrieben werden!
Was muss ich ändern?
Danke!
Falkoconst idJson = "gruenbeck.0.softliQ.D/BS50006089.water"; const path = "0_userdata.0.Gruenbeck.Wasserverbrauch."; if(!existsState(path + '0.Nummer')) { for(let i = 0; i < 3; i++) { createState(path + i + '.Datum', '', {type: 'string', name: 'Datum, Uhrzeit', role: 'info'}); createState(path + i + '.Verbrauch', '', {type: 'number', name: 'Verbrauch', role: 'info'}); } } on(idJson, function(dp) { let arr = JSON.parse(dp.state.val); let anzahl = arr.length; if(anzahl > 3) anzahl = 3; for(let i = 0; i < anzahl; i++) { setState(path + i + '.Datum', arr[i].date, true); setState(path + i + '.Verbrauch', arr[i].value, true); } });
-
@kellerassel75 sagte: täglich um 23:50 ausführt wird
Siehe Doku.
-
Ich habe es nicht hin bekommen!
Welche Zeile muss ich ändern?
Danke!
Falko -
Ganz ehrlich:
Wenn Du von Javascript noch keine Ahnung hast, warum arbeitest Du dann damit?Stell das Script doch mal in Blockly nach, dann ist das mit dem schedule auch nicht das Problem.
Es nützt Dir nichts, ein Skript zu kopieren, wenn Du nicht verstanden hast, was es macht und wie es funktioniert.
Ich hoffe ich darf solch' konstruktives feedback geben...
Ansonsten sieht es m.E. aber korrekt dann so aus:
schedule("59 23 * * *", async function () { const idJson = "gruenbeck.0.softliQ.D/BS50006089.water"; const path = "0_userdata.0.Gruenbeck.Wasserverbrauch."; if(!existsState(path + '0.Nummer')) { for(let i = 0; i < 3; i++) { createState(path + i + '.Datum', '', {type: 'string', name: 'Datum, Uhrzeit', role: 'info'}); createState(path + i + '.Verbrauch', '', {type: 'number', name: 'Verbrauch', role: 'info'}); } } on(idJson, function(dp) { let arr = JSON.parse(dp.state.val); let anzahl = arr.length; if(anzahl > 3) anzahl = 3; for(let i = 0; i < anzahl; i++) { setState(path + i + '.Datum', arr[i].date, true); setState(path + i + '.Verbrauch', arr[i].value, true); } });
-
Da hast du vollkommen recht. Ich versuche, es zu verstehen. Einige Zeilen kann ich auch lesen. Ich dachte, ich komme schneller damit zurecht. Leider fehlt mir die Zeit.
Deshalb folgende Frage:
Du hast nun oben die Zeit eingetragen. Jetzt wird es ausgeführt zu einer bestimmten Zeit und bei Änderung! Richtig?
Ich habe die Zeile gesucht, wo bei Änderung das ausgeführt wird!
"let arr = JSON.parse(dp.state.val);" ist das richtig?
Ich wollte diesen Wert ändern, um die Automatik zu ändern.
Vielen Dank für die Hilfe!
Ich gelobe Besserung!
Falko -
Es gibt so viele Möglichkeiten.
Javascript, Blockly, Node Red.
Es ist nicht so einfach, die beste Möglichkeit zu finden.
Ich bin mir noch nicht sicher, was für mich das Richtige ist.
Ich versuche mich überall ein wenig einzuarbeiten, um das Richtige für mich zu finden.
Falko -
@kellerassel75
Ersetzeon(idJson, function(dp) { let arr = JSON.parse(dp.state.val);
durch
schedule('59 23 * * *', function () { let arr = JSON.parse(getState(idJson).val);
Keine Trigger innerhalb von Triggern (schedule) verwenden!
-
Wo Du Recht hast hast Du eindeutig Recht - deshalb bleibe ich erst einmal bei Blockly
@Kellerassel75
Siehst Du, so schnell passieren Fehler wenn man nicht weiss was man tut... -
@kellerassel75 sagte in Script täglich ausführen:
Javascript, Blockly, Node Red.
Zum Start von Abläufen und Skripten ist Blockly meines Erachtens die intuitivste Art.
NodeRed geht auch, klar, aber mir persönlich war das am Anfang etwas zu intransparent (ist aber Geschmacksache).Für jemand der als Developer unterwegs ist, wird Javascript natürlich das Richtige sein.
Wie Du richtig erkannt hast, ist es wichtig zu wissen, was man tut und was das Skript tut, sonst hilft es einem genau so lange bis sich was ändert und nichts mehr funktioniert.