NEWS
Namen eines Datenpunktes als Variabel
-
Ich möchte einen Datenpunkt auswerten der variabel ist.
Sein Name ändert sich aber jeden Tag, da er dessen Nummer im Namen enthält:fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.19

Wenn ich jetzt die Variable vom Vortag auswerten will, wie muss ich das im Skript schreiben?
So ähnlich stelle ich mir das vor:
javascript.0.scriptEnabled.common.SmartHome.froniusPvErzeugungGestern= "fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values."+tag((heute)-1) -
Ich möchte einen Datenpunkt auswerten der variabel ist.
Sein Name ändert sich aber jeden Tag, da er dessen Nummer im Namen enthält:fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.19

Wenn ich jetzt die Variable vom Vortag auswerten will, wie muss ich das im Skript schreiben?
So ähnlich stelle ich mir das vor:
javascript.0.scriptEnabled.common.SmartHome.froniusPvErzeugungGestern= "fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values."+tag((heute)-1)@tom41solar sagte: Vortag auswerten will, wie muss ich das im Skript schreiben?
const path = 'fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.'; const idGestern = path + new Date(Date.now() - 86400000).getDate(); -
Ich möchte einen Datenpunkt auswerten der variabel ist.
Sein Name ändert sich aber jeden Tag, da er dessen Nummer im Namen enthält:fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.19

Wenn ich jetzt die Variable vom Vortag auswerten will, wie muss ich das im Skript schreiben?
So ähnlich stelle ich mir das vor:
javascript.0.scriptEnabled.common.SmartHome.froniusPvErzeugungGestern= "fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values."+tag((heute)-1)@tom41solar Macht der einen "Monats-Rundlauf"?
Es werden also jetzt im November Datenpunkte von 1 .... 30 angelegt, und im Dezember werden sukzessive in 1...30 neue Werte geschrieben, und dann am 31. auch der Datenpunkt für Monate mit 31 Tagen angelegt?Wenn man es hemdsärmelig machen würde, könnte man ggfs. einfach von 1....31 durchscannen, bis man einen Datenpunkt findet, der aktualisiert wurde ...
Oder 31 Callbacks anlegen mit "Wurde geändert" als Trigger ....
-
@tom41solar sagte: Vortag auswerten will, wie muss ich das im Skript schreiben?
const path = 'fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.'; const idGestern = path + new Date(Date.now() - 86400000).getDate();@paul53 besten Dank.
Es klappt schon fast.Der Name ist super:
fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.19Das Skript schreibt er mir aber den Namen der Variabel in den Datenpunkt und nicht den Wert:

Dies ist mein Skript:
const path = 'fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.';
const idGestern = path + new Date(Date.now() - 86400000).getDate()
setState("javascript.0.scriptEnabled.common.SmartHome.froniusPvErzeugungGestern"/froniusPvErzeugungGestern/, idGestern); -
@paul53 besten Dank.
Es klappt schon fast.Der Name ist super:
fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.19Das Skript schreibt er mir aber den Namen der Variabel in den Datenpunkt und nicht den Wert:

Dies ist mein Skript:
const path = 'fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.';
const idGestern = path + new Date(Date.now() - 86400000).getDate()
setState("javascript.0.scriptEnabled.common.SmartHome.froniusPvErzeugungGestern"/froniusPvErzeugungGestern/, idGestern);@tom41solar sagte: javascript.0.scriptEnabled.common
Dorthin schreibt man keine eigenen Daten!!
const path = 'fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.'; const idGestern = path + new Date(Date.now() - 86400000).getDate(); const idTag = '0_userdata.0.PV.Erzeugung.gestern'; if(existsState(idTag)) setState(idTag, getState(idGestern).val, true); // Skriptstart else createState(idTag, getState(idGestern).val, {type: 'number', unit: 'Wh', name: 'PV-Erzeugung gestern', role: 'value.energy'}); schedule('3 3 * * *', function() { // täglich um 3:03 Uhr setState(idTag, getState(idGestern).val, true); }); -
@tom41solar sagte: javascript.0.scriptEnabled.common
Dorthin schreibt man keine eigenen Daten!!
const path = 'fronius-solarweb.0.6731b5c1-b08c-4c01-8091-8f7820166668.day.EnergyProductionTotal.values.'; const idGestern = path + new Date(Date.now() - 86400000).getDate(); const idTag = '0_userdata.0.PV.Erzeugung.gestern'; if(existsState(idTag)) setState(idTag, getState(idGestern).val, true); // Skriptstart else createState(idTag, getState(idGestern).val, {type: 'number', unit: 'Wh', name: 'PV-Erzeugung gestern', role: 'value.energy'}); schedule('3 3 * * *', function() { // täglich um 3:03 Uhr setState(idTag, getState(idGestern).val, true); });@paul53 absolut perfekt !
Besten Dank.Ich habe lange gebraucht bis ich das mit den 86400000 ms = 1 Tag verstanden habe und dann das Programm entsprechend für andere Tage anpassen konnte. Deshalb der späte Dank.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden