Hallo vielleicht kann mir ja wer weiterhelfen, da ja ab 2027 in Österreich die Netzgebühren unteranderem über die 15min Leistungsspitzen berechnet werden würde ich gerne das ganze im Blick behalten wo ich ungefähr momentan unterwegs bin und würde gerne anzeigen wie hoch der Durchschnitt der letzten 15min ist.
Habe das ganze schon mit Chatgpt versucht mit keinem Erfolg
Das war der Code:
<?php
// Variable mit dem Stromzählerstand (kWh)
$ZaehlerID = 30181;
// Variable für das Ergebnis (kW)
$LeistungID = 42435;
// Aktueller Zählerstand
$aktuell = GetValueFloat($ZaehlerID);
// Letzten archivierten Wert von vor 15 Minuten holen
Und genau das liefert doch die Funktion welche dir genannten wurde.
Verstehe nicht warum du hier zweimal ein Script mit AC_GetLoggedValues postes, wenn AC_GetAggregatedValues dir direkt in den Index Avg den Durchschnitt liefert.
Am einfachsten nimmst die ganze foreach Schleife weg und speicherst den Wert $wert[0][„Avg“] mit setvalue in einer Variable. Laut Beschreibung der Funktion sollte das der Durchsnitt der letzten 15 Minuten sein.
Fatal error: Uncaught Error: Undefined constant "„AVG“" in /mnt/data/symcon/scripts/17297.ips.php:15
Stack trace:
#0 {main}
thrown in /mnt/data/symcon/scripts/17297.ips.php on line 15
Jetzt habe ich ca. einen Richtwert wo die Leistung ist damit ich unter 10kW bleibe. Richtige Berechnung wäre zwar immer zb. von 12:00 bis 12:15 12:15 bis 12:30 usw. aber will keine Wissenschaft daraus machen
Kann eine KI auch , aber so schwierig ist das nicht.
Das Skript holt sich über den Aggregations-Typ 8 (stündliche / periodische Aggregation bzw. verfeinerte Werte je nach Archiv-Einstellung) den passenden Wert und schreibt ihn in die Zielvariable 42435. Zudem prüft es ab, ob das Archiv überhaupt Werte zurückgeliefert hat, um PHP-Fehler (Undefined array key 0) zu vermeiden.
PHP-Skript
PHP
<?php
// Konfiguration der IDs
$zaehlerID = 28212; // ID der Zählerstand-Variable (kWh)
$archivID = 46307; // ID der Archiv-Instanz (Aggregator)
$zielID = 42435; // ID der Variable für den errechneten Wert
// Zeitfenster definieren: Die letzten 15 Minuten (900 Sekunden)
$endTime = time();
$startTime = $endTime - 900;
// Aggregierte Werte abfragen
// Parameter: ArchiveID, VariableID, Aggregationsstufe, StartTime, EndTime, Limit
$wert = AC_GetAggregatedValues($archivID, $zaehlerID, 8, $startTime, $endTime, 0);
// Prüfen, ob Daten zurückgegeben wurden
if (!empty($wert) && isset($wert[0]['Avg'])) {
$durchschnitt = $wert[0]['Avg'];
// Wert in Zielvariable schreiben
SetValue($zielID, $durchschnitt);
// Optional: Log-Eintrag in IP-Symcon für Nachvollziehbarkeit
// IPS_LogMessage("Stromverbrauch", "Durchschnitt der letzten 15 Min: " . $durchschnitt);
} else {
IPS_LogMessage("Stromverbrauch-Skript", "Fehler: Keine Aggregationsdaten für Variable $zaehlerID erhalten.");
}
Einrichten des 15-Minuten-Intervalls in IP-Symcon
Erstelle im IP-Symcon Objektbaum ein neues Skript und füge den obigen Code ein.
Klappe das Skript auf und klicke auf Ereignis hinzufügen (oder unten rechts auf + → Ereignis).
Wähle Zyklisches Ereignis.
Stelle den Intervall-Typ auf Minuten und den Wert auf 15.
Speichern – ab sofort wird das Skript automatisch alle 15 Minuten ausgeführt.
Schau mal auf die Homepage von deinem Netzbetreiber, da kannst ziemlich sicher ein csv file mit 1/4 Stunden Werten herunterladen. Dann hast es ganz genau
Ja das kann ich machen die ganzen Werte gibt es wollte das aber in Symcon haben voralem berechne ich die aktuellen 15min damit ich sehe wo ich gerade herum bin.