Mahlzeit zusammen,
ich habe das Skript mal ummodelliert um die Regenmenge meines Sensors zu ermitteln. Bekomme aber überall 0 raus.
Mag da mal einer drüber schauen? Bin absoluter PHP Neuling
<?php
################################################################################
# Scriptbezeichnung: HM.Consumption.ips.php
# Version: 1.0
# Author: Heiko Wilknitz
#
# Auswertung Regen
#
# ----------------------------- Konfigruration ---------------------------------
#
# Anzahl Nachkommastellen bei Ergebnissen
$roundTo=2; //Anzahl Nachkommastellen bei Ergebnissen
#
# ----------------------------------- ID´s -------------------------------------
#
$parentID = IPS_GetObject($_IPS['SELF']);
$parentID = $parentID['ParentID'];
$archiveID = 19641;
#
################################################################################
// Regenimpulse
$valueID = 15730;
// Variablen anlegen bzw. auslesen
$lastYearID = CreateVariableByName($parentID, "Regen letztes Jahr");
$lastMonthID = CreateVariableByName($parentID, 'Regen letzter Monat');
$lastWeekID = CreateVariableByName($parentID, 'Regen letzte Woche');
$lastDayID = CreateVariableByName($parentID, 'Regen letzter Tag');
$currDayID = CreateVariableByName($parentID, 'Regen aktueller Tag');
// -------------------------- LETZTE WERTE -------------------------------------
// GESTERN
$data = AC_GetAggregatedValues($archiveID, $valueID, 1 /* Täglich */, strtotime("yesterday"), strtotime("today")-1, 0);
foreach($data as $wert) {
SetValueFloat($lastDayID, array_sum($wert));
}
// LEZTE WOCHE
$data = AC_GetAggregatedValues($archiveID, $valueID, 2 /* Wöchentlich */, strtotime("monday last week"), strtotime("monday this week")-1, 0);
foreach($data as $wert) {
SetValueFloat($lastWeekID, array_sum($wert));
}
// 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);
foreach($data as $wert) {
SetValueFloat($lastMonthID, array_sum($wert));
}
// 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);
foreach($data as $wert) {
SetValueFloat($lastYearID, array_sum($wert));
}
// ------------------------- AKTUELL WERTE -------------------------------------
// HEUTE
$data = AC_GetAggregatedValues($archiveID, $valueID, 1 /* Stündlich */, strtotime("today"), strtotime("now"), 0);
foreach($data as $wert) {
$dataDay = array_sum($wert);
SetValueFloat($currDayID, $dataDay);
}
// Funktion zum addieren der Zählerwerte
// 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;
}
?>
Daten sind im ArchiveControl vorhanden. Zumindest für heute