Danke, na wenn Euch das so gut gefällt dann gleich das komplette Script
<?
################################################################################
# Scriptbezeichnung: HM.Consumption.ips.php
# Version: 1.0
# Author: Heiko Wilknitz
#
# Auswertung und Hochrechnung des Stromverbrauches
#
# ----------------------------- Konfigruration ---------------------------------
#
# Anzahl Nachkommastellen bei Ergebnissen
$roundTo=2; //Anzahl Nachkommastellen bei Ergebnissen
#
# ----------------------------------- ID´s -------------------------------------
#
$parentID = IPS_GetObject($_IPS['SELF']);
$parentID = $parentID['ParentID'];
# ID des ArchiveHandler ermitteln
$instances = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}');
$archiveID = $instances[0];
#
################################################################################
// Verbrauchszähler
$valueID = IPS_GetObjectIDByIdent("Value", $parentID);
// Variablen anlegen bzw. auslesen
$lastYearID = CreateVariableByName($parentID, "Verbrauch letztes Jahr");
$lastMonthID = CreateVariableByName($parentID, 'Verbrauch letzter Monat');
$lastWeekID = CreateVariableByName($parentID, 'Verbrauch letzte Woche');
$lastDayID = CreateVariableByName($parentID, 'Verbrauch letzter Tag');
$currYearID = CreateVariableByName($parentID, "Verbrauch aktuelles Jahr");
$currMonthID = CreateVariableByName($parentID, 'Verbrauch aktueller Monat');
$currWeekID = CreateVariableByName($parentID, 'Verbrauch aktuelle Woche');
$currDayID = CreateVariableByName($parentID, 'Verbrauch aktueller Tag');
$consYearID = CreateVariableByName($parentID, "Hochrechnung Jahr");
$consMonthID = CreateVariableByName($parentID, 'Hochrechnung Monat');
$consWeekID = CreateVariableByName($parentID, 'Hochrechnung Woche');
$consDayID = CreateVariableByName($parentID, 'Hochrechnung Tag');
// -------------------------- LETZTE WERTE -------------------------------------
// GESTERN
$data = AC_GetAggregatedValues($archiveID, $valueID, 1 /* Täglich */, strtotime("yesterday"), strtotime("today")-1, 0);
SetValueFloat($lastDayID, CalcConsumption($data));
// LEZTE WOCHE
$data = AC_GetAggregatedValues($archiveID, $valueID, 2 /* Wöchentlich */, strtotime("monday last week"), strtotime("monday this week")-1, 0);
SetValueFloat($lastWeekID, CalcConsumption($data));
// LETZTER MONAT
$data = AC_GetAggregatedValues($archiveID, $valueID, 3 /* Monatlich */, strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0);
SetValueFloat($lastMonthID, CalcConsumption($data));
// LETZTES JAHR
$ly = date('Y', strtotime('-1 year'));
$data = AC_GetAggregatedValues($archiveID, $valueID, 4 /* Jährlich */, mktime(0, 0, 0, 1, 1, $ly), mktime(23, 59, 59, 12, 31, $ly), 0);
SetValueFloat($lastYearID, CalcConsumption($data));
// ------------------------- AKTUELL WERTE -------------------------------------
// HEUTE
$data = AC_GetAggregatedValues($archiveID, $valueID, 1 /* Stündlich */, strtotime("today"), strtotime("now"), 0);
$dataDay = CalcConsumption($data);
SetValueFloat($currDayID, $dataDay);
// WOCHE
$data = AC_GetAggregatedValues($archiveID, $valueID, 2 /* Wöchentlich */, strtotime('last monday', strtotime('tomorrow')), strtotime("now"), 0);
$dataWeek = CalcConsumption($data);
SetValueFloat($currWeekID, $dataWeek);
// MONAT
$data = AC_GetAggregatedValues($archiveID, $valueID, 3 /* Monatlich */, strtotime("first day of this month 00:00"), strtotime("now"), 0);
$dataMonth = CalcConsumption($data);
SetValueFloat($currMonthID, $dataMonth);
// JAHR
$data = AC_GetAggregatedValues($archiveID, $valueID, 4 /* Jährlich */, strtotime("first day of January"), strtotime("now"), 0);
$dataYear = CalcConsumption($data);
SetValueFloat($currYearID, $dataYear);
// ------------------------- HOCHRECHNUNG --------------------------------------
// TAG
$diff = strtotime('now') - strtotime('today');
$full = 60*60*24; // 24h
$data = round($dataDay*$full/$diff, 2);
SetValueFloat($consDayID, $data);
// WOCHE
$diff = strtotime('now') - strtotime('last monday', strtotime('tomorrow'));
$full = 60*60*24*7; // 7 Tage
$data = round($dataWeek*$full/$diff, 2);
SetValueFloat($consWeekID, $data);
// MONAT
$diff = strtotime('now') - strtotime('first day of this month 00:00');
$full = 60*60*24*date('t'); // 1 Monat
$data = round($dataMonth*$full/$diff, 2);
SetValueFloat($consMonthID, $data);
// JAHR
$diff = strtotime('now') - strtotime('first day of January');
$full = 60*60*24*365; // 1 Jahr
$data = round($dataYear*$full/$diff, 2);
SetValueFloat($consYearID, $data);
// Funktion zum addieren der Zählerwerte
function CalcConsumption($values)
{
global $roundTo;
$consumption = 0;
foreach($values as $value) {
//echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Avg'] . PHP_EOL;
$consumption += $value['Avg'];
}
return round($consumption, $roundTo);
}
// Variablen erstellen falls nicht vorhanden und ID entsprechend zuordnen
function CreateVariableByName($id, $name)
{
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false) {
$vid = IPS_CreateVariable(2);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
}
return $vid;
}
// Eine Funktion um ein Script im Script-Verzeichnis zu erzeugen
// erstellt von hirschbrat, angepasst wgreipl
function CreateScriptByName($scriptName, $parentId)
{
$scriptID = @IPS_GetScriptIDByName($scriptName, $parentId);
if ($scriptID == 0){
$scriptID = IPS_CreateScript(0);
IPS_SetName($scriptID, $scriptName);
IPS_SetParent($scriptID, $parentId);
}
return $scriptID;
}
?>