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); } }); -
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); } }); -
Ich habe es nicht hin bekommen!
Welche Zeile muss ich ändern?
Danke!
Falko -
Ich habe es nicht hin bekommen!
Welche Zeile muss ich ändern?
Danke!
FalkoGanz 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 -
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
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!
-
@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!
-
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 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.