Archivdaten ausgeben

Hallo,

vielleicht kann mir jemand helfen.

Ich habe einen Stromzähler der über M-Bus ausgelesen wird.
Nun logge ich den Zählerstand als Zähler und kann mir wunderbar die monatlichen Verbräuche anzeigen lassen.

Nun will ich im Webfront mir mit einen String immer den letzten Monatsverbrauch anzeigen lassen.

Ich habe schonmal einen Script testweise laufen, der mir den Monat ausgibt, aber mir fehlt die richtige umsetzung in die Stringvariable und das es monatlich automatisch aktualisiert wird.

<?

$werte = AC_GetAggregatedValues(32722 /*[Archive]*/, 11290 /*[Stromzähler\Stand]*/, 3 /* Stündlich */, strtotime("01.06.2017"), strtotime("31.06.2017")-1, 0);         
 
        
foreach($werte as $wert) {
	echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Avg'] . PHP_EOL;
}
?>

Ich wäre über Ratschläge sehr dankbar.

Mfg
Paul

Du willst über SetValue in eine Variable schreiben. Und mit einem Ereignis kannst du dieses immer am z.B. 1. des Monats starten lassen.

paresy

Ok, vielen Dank für die Idee.

AC_GetAggregatedValues(32722 /[Archive]/, 11290 /[Stromzähler\Stand]/, 3 /* Stündlich */, strtotime(„01.06.2017“), strtotime(„31.06.2017“)-1, 0)

Was muss in diesem Teil rein, damit der Script beim monatlichen Aufruf immer den letzten Monat nimmt?

Ich würde dies so machen:


$werte = AC_GetAggregatedValues(32722 /*[Archive]*/, 11290 /*[Stromzähler\Stand]*/, 3 /* Monatlich */, 0, 0, 2);
SetValue(12345, $werte[1]['Avg']);

Diese Parameter auf 0. Und Limit auf zwei. Da du immer den letzten Monat willst, greifst du bei Werte nicht auf Index 0, sondern Index 1 zu.

paresy

Super vielen Dank, das macht Sinn!

Gleich umgesetzt nur leider mit einer Fehlermeldung : „Cannot auto-convert …“

Variable ist eine Float in die ich schreiben möchte

$werte = AC_GetAggregatedValues(32722 /*[Archive]*/, 11290 /*[Stromzähler\Stand]*/, 3 /* Stündlich */, 0, 0, 2); //55554 ist die ID der Variable, 12345 vom Archiv        
 
//Dieser Teil erstellt eine Ausgabe im Skriptfenster mit den abgefragten Werten        
foreach($werte as $wert) {
	echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Avg'] . PHP_EOL;
	}
	
SetValueFloat(12187, $werte[1]);
?>

Ich habe das Beispiel mal korrigiert. Dort fehlte ein [‚Avg‘].

paresy

Vielen Dank, das wars :slight_smile: