Hallo,
gibt es eine einfache Möglichkeit eine geloggte Boolean Variable auszuwerten:
„wielange war letzte Woche der PC AN?“
Danke und Gruß,
Andreas
Hallo,
gibt es eine einfache Möglichkeit eine geloggte Boolean Variable auszuwerten:
„wielange war letzte Woche der PC AN?“
Danke und Gruß,
Andreas
Schaul mal hier: Klick.
Danke, aber wenn ich das richtig verstehe, war das noch zu Zeitem vor dem DB Logging.
Nachdem es jetzt schon geloggte Daten gibt, müsste es deutlich einfacher gehen…?
Vielleicht gibt es da einfach einen Befehl…?
Ich mache das nun mit der durchschnittlichen Betriebszeit.
Also Zeitraum 24 Std.
Rückgabewert 0,5 = 12Std. Betrieb.
Was anderes habe ich nich gefunden
Grüße
Bastelfrosch
Ich mache das nun mit der durchschnittlichen Betriebszeit.
Woher bekommst du die aus einer geloggten Variable?
habe ich mir aus einem Script zusammengeklaut
<?
$archiveID = IPS_GetInstanceIDByName("Archive Handler", 0);
$kwhpreis = GetValuefloat(IPS_GetVariableIDByName ("Strompreis_ADS" , 48260 /*[Komponenten\Anwendungsscripte]*/));
$objectID = (31488 /*[Komponenten\Heizung\Status Wärmepumpe\Value]*/ ) ;
// Zeitrahmen für die Durschnittsberechung
$start_heute = mktime(00,00,0, date("m"), date("d"), date("Y")); //Startzeit heute
$ende_heute = mktime(24,00,0, date("m"), date("d"), date("Y")); //Endzeit heute
//0 = Aggregation auf Stundenbasis, liefert dann natürlich n Werte
//1 = Aggretation auf Tagesbasis, liefert für das Zeitintervall kein Array zurück,
// Beginn-Zeit muss auf 0.00 uhr sitzen...
//$buffer = AC_GetAggregatedValues($archiveID, $objectID,1,$start_heute, $ende_heute, 100);
$buffer = AC_GetAggregatedValues($archiveID, $objectID,1,0,0,1);
//echo $buffer[0]['Avg'];
print_r($buffer);
$TagesAVG = ($buffer[0]['Avg']);
//echo $TagesAVG;
$Duration = ($buffer[0]['Duration']/60/60);
//echo $Duration;
$Tageslaufzeit =($TagesAVG * $Duration);
//echo $Tageslaufzeit;
$Leistung = 4500;
$Tagesverbrauch = ($Leistung * $Tageslaufzeit/1000);
//echo $Tagesverbrauch;
$Tagespreis = ($Tagesverbrauch * $kwhpreis);
echo $Tagespreis, " EURO";
?>
habe ich mir aus einem Script zusammengeklaut
Danke! Ich denke für den aktuelle Tag funktioniert es.
Leider krieg ich es nicht hin, wenn ich längere Zeiträume abfragen möchte.
Hast du das realisiert?
Leider noch nicht, da ich ja nur „klauen“ kann
und hier habe ich noch nichts passendes gefunden
Vielleicht kann uns da ein PHP Kenner helfen?
Hallo,
genau so was suche ich im Moment auch, hat jemand eine Lösung?
Gruß Uwe
Was heisst genau „längere Zeitraeume“ ?
Fuer 1 Woche hier mal ein Beispiel:
$objectID = 11834; // geloggte Variable
$archivID = 25204; // Archiv ID
$start = mktime(00,00,0, date("m"), date("d") - 6, date("Y")); //Startzeit - 6 Tage
$ende = mktime(24,00,0, date("m"), date("d") , date("Y")); //Endzeit
$buffer = AC_GetAggregatedValues($archivID, $objectID,1,$start, $ende,0);
$Gesamtlaufzeit = 0;
foreach($buffer as $tag )
{
echo "
" . date('d.m.Y H:i:s',$tag['TimeStamp']);
$TagesAVG = ($tag['Avg']);
$Duration = ($tag['Duration']/60);
$Tageslaufzeit =($TagesAVG * $Duration);
echo " - " .$Tageslaufzeit." Minuten " ;
$Gesamtlaufzeit = $Gesamtlaufzeit + $Tageslaufzeit;
}
echo "
Gesamtlaufzeit : " . $Gesamtlaufzeit;
Ergebniss:
14.06.2013 00:00:00 - 0 Minuten
13.06.2013 00:00:00 - 5.0833333333333 Minuten
12.06.2013 00:00:00 - 0 Minuten
11.06.2013 00:00:00 - 0 Minuten
10.06.2013 00:00:00 - 5.0833333333334 Minuten
09.06.2013 00:00:00 - 45.75 Minuten
08.06.2013 00:00:00 - 0 Minuten
Gesamtlaufzeit : 55.916666666667
Wenn noch Fragen , einfach stellen.
Hallo,
habe gerade mal versucht das Script zu benutzen, aber bei mir kommt nicht wirklich was.
So sieht die Scriptausgabe und die Daten im Archive Handler aus.
Habe ich da irgendwas falsch verstanden, oder hat jemand eine Tipp was falsch sein könnte?
Hi!
Ich habe das Skript gerade mal bei mir getestet und bei mir wird brav alles mögliche ausgegeben.
Wird bei dir bei keiner Variable etwas ausgegeben, oder nur bei der einen nicht? Hast du die Variable mal neu aggregiert?
Grüße,
Chris
Danke Chris,
der Hinweis mit eine anderen Variablen zu probieren war gut, nach neu aggregation geht es nun auch bei mir.
Hallo!
Ich habe das Script jetzt auch ausprobiert und erhalte Leider folgenden Fehler:
Hier das Script
$objectID = 27129; // geloggte Variable
$archivID = 44061; // Archiv ID
$start = mktime(00,00,0, date("m"), date("d") - 6, date("Y")); //Startzeit - 6 Tage
$ende = mktime(24,00,0, date("m"), date("d") , date("Y")); //Endzeit
$buffer = AC_GetAggregatedValues($archivID, $objectID,1,$start, $ende,0);
$Gesamtlaufzeit = 0;
foreach($buffer as $tag )
{
echo "
" . date('d.m.Y H:i:s',$tag['TimeStamp']);
$TagesAVG = ($tag['Avg']);
$Duration = ($tag['Duration']/60);
$Tageslaufzeit =($TagesAVG * $Duration);
echo " - " .$Tageslaufzeit." Minuten " ;
$Gesamtlaufzeit = $Gesamtlaufzeit + $Tageslaufzeit;
}
echo "
Gesamtlaufzeit : " . $Gesamtlaufzeit;
Der Fehler lautet:
Notice: Undefined index: Duration in C:\IP-Symcon\scripts\50063.ips.php on line 16
- 0 Minuten
Danke für die Info!
Dies ist kein „Fehler“ sondern nur eine Notiz (Notice)
bedeutet das der index „Duration“ in dem Array noch nicht definiert wurde
(Duration kommt vorher im Programmcode gar nicht vor)
kannst du ignorieren
Danke!
Was bedeutet „Duration“ genau? Muss ich im Script noch etwas ändern?
Ich bekomm immer denn Wert 0 Minuten obwohl der Kompressor ( Variable Boolean ) fast immer auf true steht?
Hallo michl,
ich hatte deswegen geschrieben in der 3.4 - mit den 4.x Versionen wurde dieses „coole“ Feature / Wert in der Datenbank entfernt. Zwar sollte es mal zurückkehren aber wohl bisher noch nicht. Deswegen steht es Dir in dem Array auch nicht zur Verfügung. Die Informationen zur manuellen Berechnung der Duration - konnte ich leider belegen - sind falsch und taugen net wirklich was - aus verschiedenen Gründen.
Grüsse,
MaLu
Ok, das bedeutet das ich unter 4.1 dies nicht auslesen kann, wie lange die Boolean Variable „An“ war?
Hallo michl,
Ja, korrekt - leider hast Du es bestätigt - ich hätte auch gehofft das es zurückgekehrt ist.
Grüsse,
MaLu