bei dem Modul Energiezähler kann ich ja „nur“ Watt und Ampere angeben… Ich würde gerne eine Art Tageszähler machen, auf Basis einer Variable, die einen kW Wert liefert.
Habt ihr eine Idee, ohne den kW Wert in eine Behilfsvariable (umgerechnet in Watt) zu verwenden, die dann bei der Instanz Energiezähler als Variable dient?
Kannst Du mal Deinen User-Case genauer beschreiben? Ich nutze dafür einfach die Standard-Funktionen des Archivs.
Du aktivierst die Archivierung auf der Variable, die die kW misst. Als Aggregationstyp wählst Du Zähler.
Nun kannst du mit AC_GetAggregatedValues die Daten auslesen und Dir die passenden Aggregationsstufen suchen (Tag, Stunde, …)
Mit strtotime kannst Du dir die timestamps für Start und Ende bequem relativ ermitteln.
Du bekommst Dann einen Array mit den Ergebnissen und kannst Dort im Key ‚Avg‘ für den jeweiligen Zeitraum den Verbrauch auslesen.
Mit diesem Script baue ich mir eine CSV-Datei mit dem PV-Ertrag pro Stunde für die letzten 31 Tage:
Wenn Du also einfach nur den Verbrauch eines Tages messen willst dann wählst Du also Start-Zeitpunkt „00:00 0 days ago“ und als End-Zeitpunkt time() und als Aggregationsstufe 1 (Tag).
Du müsstest Dann ein Array mit einem Element zurückbekommen, in dem der Verbraucht seit Mitternacht erfasst ist. Das kannst du dann in eine Variable schreiben oder gleich direkt verwenden.
Hier die erste Frage, da ich ja nur einen Tageswert ermittle, wie bekomme ich den in eine Variable ohne foreach?
Mit der Variable will ich dann weiterrechnen…
Auf gleichem Weg hole ich mir aus Variable 2 dann den Netzbezug (Strom) und schriebe diesen dann auch in eine Variable.
Die 3. Variable soll dann ebenfalls auf dme gleichen Weg, den PV Ertrag liefern.
Dann kann ich mittels Dreisatz mir den Autarkiegrad ermitteln… Dazu brauche ich aber diese 3 Variablen… Könntest du mir bei dem Foreach-Entfall noch behilflich sein… Danke Dir vielmals
//Alle heutigen Datensätze abfragen (Tägliche Aggregationsstufe)
//z.B. um den heutigen Verbrauch er ermitteln oder die heutige Durchschnittstemperatur
$werte = AC_GetAggregatedValues(18698, 28079, 1 /* Täglich */, strtotime("today 00:00"), time(), 0); //55554 ist die ID der Variable, 12345 vom Archiv
Wie Du anhand Deiner Ausgabe siehst bekommst Du von AC_GetAggregated Values einen Array mit allen aggregierten Werten zurück, der dann wiederum Arrays mit den einzelnen Werten enthält. In meinem Fall „packe“ ich den außenliegenden Array mit foreach() aus, Du kannst das Element aber auch direkt ansprechen.
Allerdings ist mir gerade ein riesiger Fehler aufgefallen, den ich gemacht habe: Ich habe irgendwie kWh bzw Wh gelesen, da macht die Variante Zähler natürlich Sinn.
Aber in Deinem fall bringt es Dir ja gar nichts, da Du ja nur aktuelle Verbrauchswerte als Input hast. Du musst also mit dem Module „Energiezähler (Strom)“ deine Watt in kWh sammeln und dort dann mit Zähler aggregieren.
Für einen Watt-Wert macht nur Standard-Aggregation Sinn.