NEWS
[Gelöst] Daten für neuen Datenpunkt verarbeiten
-
Um die Ladung meiner Wallbox zu steuern benötige ich ein kleines Script, um den PV Überschuss zu ermitteln, damit mir beim Laden des Autos nicht der Hausspeicher geleert wird.
Folgende Datenpunkte habe ich identifiziert:
idPVout = Aktuelle PV Erzeugung
idVerb = Aktueller Verbrauch
idBatt = Aktuelle Batterieladung
idWatt = Aktuelle FahrzeugladungDer neue Datenpunkt soll idPVload = '0_userdata.0.PVload sein
// aktuellen PV-Ueberschuss für Wattpilot berechnen // PV Erzeugung - Akt Verbrauch - Batt- Speicher + Wattpilot out const idPVout = 'energymanager.0.PV-Anlage_(PV-Anlage).PowerACOut'; const idVerb = 'energymanager.0.Standort_(Standort_1).PowerConsumed'; const idBatt = 'energymanager.0.Standort_(Standort_1).PowerBuffered'; const idWatt = 'fronius-wattpilot.0.power';Wer kann helfen, btw wie muss das aussehen?
Gruss
Olli -
Um die Ladung meiner Wallbox zu steuern benötige ich ein kleines Script, um den PV Überschuss zu ermitteln, damit mir beim Laden des Autos nicht der Hausspeicher geleert wird.
Folgende Datenpunkte habe ich identifiziert:
idPVout = Aktuelle PV Erzeugung
idVerb = Aktueller Verbrauch
idBatt = Aktuelle Batterieladung
idWatt = Aktuelle FahrzeugladungDer neue Datenpunkt soll idPVload = '0_userdata.0.PVload sein
// aktuellen PV-Ueberschuss für Wattpilot berechnen // PV Erzeugung - Akt Verbrauch - Batt- Speicher + Wattpilot out const idPVout = 'energymanager.0.PV-Anlage_(PV-Anlage).PowerACOut'; const idVerb = 'energymanager.0.Standort_(Standort_1).PowerConsumed'; const idBatt = 'energymanager.0.Standort_(Standort_1).PowerBuffered'; const idWatt = 'fronius-wattpilot.0.power';Wer kann helfen, btw wie muss das aussehen?
Gruss
Olli -
@c1olli
Also es funktioniert nicht so wie ich will, Javascript wirft auch Fehlermeldungen.
Siehe nächsten Beitrag@c1olli
Also es funktioniert nicht so wie ich will, Javascript wirft auch Fehlermeldungen.Es soll die zur Verfügung stehende Energie für die Ladung des E-Autos berechnet werden, da die Wallbox sonst den Speicher leert.
Das Script für die Wallbox ist vorhanden und funktioniert.Berechnung:
PV Überschuss ( energymanager.0.Standort_(Standort_1).PowerProduced)- Momentanverbrauch (fronius.0.powerflow.P_Load) (negativer Wert, daher Addition)
- Speicherladung (energymanager.0.Standort_(Standort_1).PowerBuffered)
- Speicherentladung (energymanager.0.Standort_(Standort_1).PowerConsumedFromStorage)
- Ladung der Wallbox (fronius-wattpilot.0.power) (Wert muss mit 1000 multipliziert werden, da kW - alle anderen Werte sind in Watt)
Neuer Datenpunkt: PV_Ueberschuss (0_userdata.0.PVload)
Der Wert sollte alle 10 Sekunden neu berechnet werden.
// aktuellen PV-Ueberschuss für Wattpilot berechnen // PV Erzeugung - Akt Verbrauch - Speicher Entladung - Speicher Ladung + Wattpilot const idPVout = 'energymanager.0.Standort_(Standort_1).PowerProduced'; const idVerb = 'fronius.0.powerflow.P_Load'; const idBattin = 'energymanager.0.Standort_(Standort_1).PowerBuffered'; const idBattout = 'energymanager.0.Standort_(Standort_1).PowerConsumedFromStorage'; const idWatt = 'fronius-wattpilot.0.power'; const idPVload = '0_userdata.0.PVload' var pvout = getState(idPVout).val; var verb = getState(idVerb).val; var battin = getState(idBattin).val; var battout = getState(idBattout).val; var watt = getState(idWatt).val; var aktuell = Math.round((pvout + verb - battin - battout + (watt * 1000)) * 100) / 100; if(existsState(idPVload)) setState(idPVload, aktuell, true); else createState(idPVload, aktuell, {type: 'number', name: 'PV_Ueberschuss', unit: 'W', role: 'value'}); on(idPVout, function(dp) { pvout = dp.state.val; aktuell = Math.round((pvout + verb - battin - battout + (watt * 1000)) * 100) / 100; setState(idPVload, aktuell, true); });Fehlermeldung von Javascript:
11:48:16.311 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:10:13 11:48:16.311 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3 11:48:16.314 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:12:14 11:48:16.314 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3 11:48:16.317 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:13:15 11:48:16.317 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3Die Werte beim jetzigem Script sind teilweise unplausibel.
Ich habs auch schon mit Blockly versucht, aber das krieg ich auch nicht hin.Für Hilfe wäre ich sehr dankbar.
Gruß Olli -
@c1olli
Also es funktioniert nicht so wie ich will, Javascript wirft auch Fehlermeldungen.Es soll die zur Verfügung stehende Energie für die Ladung des E-Autos berechnet werden, da die Wallbox sonst den Speicher leert.
Das Script für die Wallbox ist vorhanden und funktioniert.Berechnung:
PV Überschuss ( energymanager.0.Standort_(Standort_1).PowerProduced)- Momentanverbrauch (fronius.0.powerflow.P_Load) (negativer Wert, daher Addition)
- Speicherladung (energymanager.0.Standort_(Standort_1).PowerBuffered)
- Speicherentladung (energymanager.0.Standort_(Standort_1).PowerConsumedFromStorage)
- Ladung der Wallbox (fronius-wattpilot.0.power) (Wert muss mit 1000 multipliziert werden, da kW - alle anderen Werte sind in Watt)
Neuer Datenpunkt: PV_Ueberschuss (0_userdata.0.PVload)
Der Wert sollte alle 10 Sekunden neu berechnet werden.
// aktuellen PV-Ueberschuss für Wattpilot berechnen // PV Erzeugung - Akt Verbrauch - Speicher Entladung - Speicher Ladung + Wattpilot const idPVout = 'energymanager.0.Standort_(Standort_1).PowerProduced'; const idVerb = 'fronius.0.powerflow.P_Load'; const idBattin = 'energymanager.0.Standort_(Standort_1).PowerBuffered'; const idBattout = 'energymanager.0.Standort_(Standort_1).PowerConsumedFromStorage'; const idWatt = 'fronius-wattpilot.0.power'; const idPVload = '0_userdata.0.PVload' var pvout = getState(idPVout).val; var verb = getState(idVerb).val; var battin = getState(idBattin).val; var battout = getState(idBattout).val; var watt = getState(idWatt).val; var aktuell = Math.round((pvout + verb - battin - battout + (watt * 1000)) * 100) / 100; if(existsState(idPVload)) setState(idPVload, aktuell, true); else createState(idPVload, aktuell, {type: 'number', name: 'PV_Ueberschuss', unit: 'W', role: 'value'}); on(idPVout, function(dp) { pvout = dp.state.val; aktuell = Math.round((pvout + verb - battin - battout + (watt * 1000)) * 100) / 100; setState(idPVload, aktuell, true); });Fehlermeldung von Javascript:
11:48:16.311 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:10:13 11:48:16.311 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3 11:48:16.314 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:12:14 11:48:16.314 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3 11:48:16.317 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:13:15 11:48:16.317 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3Die Werte beim jetzigem Script sind teilweise unplausibel.
Ich habs auch schon mit Blockly versucht, aber das krieg ich auch nicht hin.Für Hilfe wäre ich sehr dankbar.
Gruß Olli@c1olli hast du globale Skripte?
-
Was sind globale Scripte?
- Ich habs gerade mal nachgelesen, aber ich weiß nicht ob ich solche Skripte habe. Wie erkenne ich die?
@c1olli sagte in Daten für neuen Datenpunkt verarbeiten:
Was sind globale Scripte?
Skripte im Verzeichnis global
Aus Sicherheitsgründen nur für EXPERTEN zu sehen. -
@c1olli
Also es funktioniert nicht so wie ich will, Javascript wirft auch Fehlermeldungen.Es soll die zur Verfügung stehende Energie für die Ladung des E-Autos berechnet werden, da die Wallbox sonst den Speicher leert.
Das Script für die Wallbox ist vorhanden und funktioniert.Berechnung:
PV Überschuss ( energymanager.0.Standort_(Standort_1).PowerProduced)- Momentanverbrauch (fronius.0.powerflow.P_Load) (negativer Wert, daher Addition)
- Speicherladung (energymanager.0.Standort_(Standort_1).PowerBuffered)
- Speicherentladung (energymanager.0.Standort_(Standort_1).PowerConsumedFromStorage)
- Ladung der Wallbox (fronius-wattpilot.0.power) (Wert muss mit 1000 multipliziert werden, da kW - alle anderen Werte sind in Watt)
Neuer Datenpunkt: PV_Ueberschuss (0_userdata.0.PVload)
Der Wert sollte alle 10 Sekunden neu berechnet werden.
// aktuellen PV-Ueberschuss für Wattpilot berechnen // PV Erzeugung - Akt Verbrauch - Speicher Entladung - Speicher Ladung + Wattpilot const idPVout = 'energymanager.0.Standort_(Standort_1).PowerProduced'; const idVerb = 'fronius.0.powerflow.P_Load'; const idBattin = 'energymanager.0.Standort_(Standort_1).PowerBuffered'; const idBattout = 'energymanager.0.Standort_(Standort_1).PowerConsumedFromStorage'; const idWatt = 'fronius-wattpilot.0.power'; const idPVload = '0_userdata.0.PVload' var pvout = getState(idPVout).val; var verb = getState(idVerb).val; var battin = getState(idBattin).val; var battout = getState(idBattout).val; var watt = getState(idWatt).val; var aktuell = Math.round((pvout + verb - battin - battout + (watt * 1000)) * 100) / 100; if(existsState(idPVload)) setState(idPVload, aktuell, true); else createState(idPVload, aktuell, {type: 'number', name: 'PV_Ueberschuss', unit: 'W', role: 'value'}); on(idPVout, function(dp) { pvout = dp.state.val; aktuell = Math.round((pvout + verb - battin - battout + (watt * 1000)) * 100) / 100; setState(idPVload, aktuell, true); });Fehlermeldung von Javascript:
11:48:16.311 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:10:13 11:48:16.311 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3 11:48:16.314 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:12:14 11:48:16.314 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3 11:48:16.317 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:13:15 11:48:16.317 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3Die Werte beim jetzigem Script sind teilweise unplausibel.
Ich habs auch schon mit Blockly versucht, aber das krieg ich auch nicht hin.Für Hilfe wäre ich sehr dankbar.
Gruß Olli -
@c1olli sagte in Daten für neuen Datenpunkt verarbeiten:
Was sind globale Scripte?
Skripte im Verzeichnis global
Aus Sicherheitsgründen nur für EXPERTEN zu sehen. -
@c1olli
Also es funktioniert nicht so wie ich will, Javascript wirft auch Fehlermeldungen.Es soll die zur Verfügung stehende Energie für die Ladung des E-Autos berechnet werden, da die Wallbox sonst den Speicher leert.
Das Script für die Wallbox ist vorhanden und funktioniert.Berechnung:
PV Überschuss ( energymanager.0.Standort_(Standort_1).PowerProduced)- Momentanverbrauch (fronius.0.powerflow.P_Load) (negativer Wert, daher Addition)
- Speicherladung (energymanager.0.Standort_(Standort_1).PowerBuffered)
- Speicherentladung (energymanager.0.Standort_(Standort_1).PowerConsumedFromStorage)
- Ladung der Wallbox (fronius-wattpilot.0.power) (Wert muss mit 1000 multipliziert werden, da kW - alle anderen Werte sind in Watt)
Neuer Datenpunkt: PV_Ueberschuss (0_userdata.0.PVload)
Der Wert sollte alle 10 Sekunden neu berechnet werden.
// aktuellen PV-Ueberschuss für Wattpilot berechnen // PV Erzeugung - Akt Verbrauch - Speicher Entladung - Speicher Ladung + Wattpilot const idPVout = 'energymanager.0.Standort_(Standort_1).PowerProduced'; const idVerb = 'fronius.0.powerflow.P_Load'; const idBattin = 'energymanager.0.Standort_(Standort_1).PowerBuffered'; const idBattout = 'energymanager.0.Standort_(Standort_1).PowerConsumedFromStorage'; const idWatt = 'fronius-wattpilot.0.power'; const idPVload = '0_userdata.0.PVload' var pvout = getState(idPVout).val; var verb = getState(idVerb).val; var battin = getState(idBattin).val; var battout = getState(idBattout).val; var watt = getState(idWatt).val; var aktuell = Math.round((pvout + verb - battin - battout + (watt * 1000)) * 100) / 100; if(existsState(idPVload)) setState(idPVload, aktuell, true); else createState(idPVload, aktuell, {type: 'number', name: 'PV_Ueberschuss', unit: 'W', role: 'value'}); on(idPVout, function(dp) { pvout = dp.state.val; aktuell = Math.round((pvout + verb - battin - battout + (watt * 1000)) * 100) / 100; setState(idPVload, aktuell, true); });Fehlermeldung von Javascript:
11:48:16.311 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:10:13 11:48:16.311 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3 11:48:16.314 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:12:14 11:48:16.314 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3 11:48:16.317 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:13:15 11:48:16.317 warn javascript.0 (22409) at script.js.common.Wattpilot_steuern.PV-Ueberschuss:24:3Die Werte beim jetzigem Script sind teilweise unplausibel.
Ich habs auch schon mit Blockly versucht, aber das krieg ich auch nicht hin.Für Hilfe wäre ich sehr dankbar.
Gruß Olli -
@c1olli sagte: Standort_(Standort_1)
Ein solches Konstrukt in der ID kann Probleme bereiten, denn genau zu diesen IDs gibt es die Warnungen.
-
@c1olli sagte in Daten für neuen Datenpunkt verarbeiten:
so jetzt im Experten Modus
du weisst, dass alle globalen Skripte vor jedem anderen Skript ausgeführt werden?
die angemeckerte Zeile 24 existiert nämlich gar nicht in deinem Skript!warum hast du überhaupt globale Skripte wenn du fragen musst, was das ist?
-
@c1olli sagte in Daten für neuen Datenpunkt verarbeiten:
so jetzt im Experten Modus
du weisst, dass alle globalen Skripte vor jedem anderen Skript ausgeführt werden?
die angemeckerte Zeile 24 existiert nämlich gar nicht in deinem Skript!warum hast du überhaupt globale Skripte wenn du fragen musst, was das ist?
-
@homoran
Wahrscheinlich weil ich die einfach so eingetragen habe, da ich mich nicht so gut mit der Materie auskenne.
Aber ich habe das Ganze jetzt umstrukturiert. Ich hoffe so ist es ok.

@c1olli sagte in Daten für neuen Datenpunkt verarbeiten:
da ich mich nicht so gut mit der Materie auskenne.
und für solche User ist der global Ordner extra versteckt!
ist der jetzt leer?
-
@c1olli sagte in Daten für neuen Datenpunkt verarbeiten:
da ich mich nicht so gut mit der Materie auskenne.
und für solche User ist der global Ordner extra versteckt!
ist der jetzt leer?
-
Jepp, nun ist er leer.
Ich hatte den Experten Modus an um einen Test Adapter zu installieren, danach hatte ich mich an das Script gemacht, so ist da wahrscheinlich was im falschen Ordner gelandet.
-
@c1olli sagte in Daten für neuen Datenpunkt verarbeiten:
so jetzt im Experten Modus
du weisst, dass alle globalen Skripte vor jedem anderen Skript ausgeführt werden?
die angemeckerte Zeile 24 existiert nämlich gar nicht in deinem Skript!warum hast du überhaupt globale Skripte wenn du fragen musst, was das ist?
-
Also eine Fehlermeldung kommt nicht mehr, nur die Berechnung passt noch nicht ganz.
Kann das eventuell durch die Addition eines negativen Wertes kommen? -
@homoran sagte: warum hast du überhaupt globale Skripte wenn du fragen musst, was das ist?
Ich sehe im offenen Ordner "global" keine Skripte. Die Skripte darunter sind in der Wurzel angesiedelt.
@paul53 Danke! Da hab ich schief geguckt :eyeglasses:
-
@c1olli sagte: die Berechnung passt noch nicht ganz.
Bis auf
pvoutändern sich die Variablen nach dem Skriptstart nicht mehr, sondern bleiben konstant. Dann kann die Berechnung natürlich nicht stimmen.

