NEWS
[gelöst] Brauche Hilfe bei Speichern in versch. Objekten
-
Hallo Leute,
ich beschäftige mich nach langer Abstinenz mal wieder mit dem IOB und auch JavaScript.
Ich habe nun ein Script nach einiger Recherche zusammengebaut welches um 00:01Uhr einige Daten mit getHistory holt.Nun möchte ich, dass
am Montag morgen das Ergebnis in das Objekt "0_userdata.0.Benzinpreis.Tagesdurchschnitt.Sonntag"
vom Dienstag morgen in das Objekt "0_userdata.0.Benzinpreis.Tagesdurchschnitt.Montag"usw
geschrieben wird. Wie bekomme ich das hin?
var end = new Date().getTime(); var Anzahl = 0; var Summe = 0; var Summe2 = 0; schedule('{"time":{"exactTime":true,"start":"00:01"},"period":{"days":1}}', function () { getHistory('sql.0', { id: 'tankerkoenig.0.stations.1.e10.feed', start: end - 86400000, end: end, aggregate: 'min', timeout: 2000 }, function (err, result) { if (err) console.error(err); if (result) { log(JSON.stringify(result)) for (var i = 0; i < result.length; i++) { // console.log(result[i].val + ' ' + new Date(result[i].ts).toISOString()); console.log(result[i].val); Anzahl = i; Summe = Summe + result[i].val; } Summe2 = parseFloat((Summe / Anzahl).toFixed(2)); } setState("0_userdata.0.Benzinpreis.Tagesdurchschnitt.Donnerstag", Summe2); console.log("Anzahl: " + Anzahl); console.log("Summe: " + Summe); console.log("Summe: " + Summe2); }); });
Vielen Dank schonmal
-
@torsten_mg sagte: am Montag morgen das Ergebnis in das Objekt "0_userdata.0.Benzinpreis.Tagesdurchschnitt.Sonntag"
const wds = ['Samstag','Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag']; schedule('1 0 * * *', function () { let end = Date.now() - 60000; getHistory('sql.0', { id: 'tankerkoenig.0.stations.1.e10.feed', start: end - 86400000, end: end, aggregate: 'min', timeout: 2000 }, function (err, result) { if (err) console.error(err); else if (result) { log(JSON.stringify(result)); let Summe = 0; for (let i = 0; i < result.length; i++) { // console.log(result[i].val + ' ' + new Date(result[i].ts).toISOString()); console.log(result[i].val); Summe += result[i].val; } let Summe2 = Math.round(100 * Summe / result.length) / 100; let wd = new Date().getDay(); setState("0_userdata.0.Benzinpreis.Tagesdurchschnitt." + wds[wd], Summe2, true); console.log("Anzahl: " + result.length); console.log("Summe: " + Summe); console.log("Durchschnitt: " + Summe2); } }); });
-
Vielen Dank!!
Leider schaffe ich es heute nicht mehr, mir das genauer anzuschauen. Werde morgen dein Script testen und verinnerlichen!!
Gruß Torsten
-
Habe mir gerade deinen Code angeschaut (bin gerade nicht am heimischen PC) und versuche zu verstehen, was du da geschrieben hast.
Das meiste erklärt sich ja von selbst (wie einfach es doch sein kann, wenn man sich damit auskennt), aber
was genau macht diese Zeile :
log(JSON.stringify(result));
Gruß Torsten
-
@torsten_mg
Sie gibt den Inhalt der Variable "Result" in das ioBroker Log aus. Da nicht klar ist was für Daten in "Result" stehen nutzt Paul da zur Sicherheit eine Umwandlung zu einem text (JSON.stringify).A.
-
@torsten_mg sagte: was genau macht diese Zeile :
Die Zeile (18) habe ich aus Deinem Skript übernommen.
-
@paul53 sagte in Brauche Hilfe bei Speichern in versch. Objekten:
@torsten_mg sagte: was genau macht diese Zeile :
Die Zeile (18) habe ich aus Deinem Skript übernommen.
Tatsache
Da kann man mal wieder sehen, wenn man etwas Blind übernimmt (drag&drop) das da einem einiges durch die Lappen geht.Danke!
-
@asgothian sagte in Brauche Hilfe bei Speichern in versch. Objekten:
@torsten_mg
Sie gibt den Inhalt der Variable "Result" in das ioBroker Log aus. Da nicht klar ist was für Daten in "Result" stehen nutzt Paul da zur Sicherheit eine Umwandlung zu einem text (JSON.stringify).A.
Die Zeile ist also nur dafür da, dass die Werte im Iobroker log angezeigt werden?!
ich will das ja alles verstehen lernen.
getHistory('sql.0', { id: 'tankerkoenig.0.stations.1.e10.feed', start: end - 86400000, end: end, aggregate: 'min', timeout: 2000 },
damit hole ich mir die Daten aus der sql
function (err, result) { if (err) console.error(err); else if (result) {
Wenn es Daten gibt, stehen die in der Variable result, wenn es keine Daten gibt, wird etwas in die Variable err reingeschrieben und mit dieser function ausgewertet.
Habe ich das so richtig verstanden?
Gruß Torsten