Auswertung auf geloggte Variable: wielange AN?

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.

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 :slight_smile:

<?
$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 :slight_smile:

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 :slight_smile:
und hier habe ich noch nichts passendes gefunden

Vielleicht kann uns da ein PHP Kenner helfen? :slight_smile:

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.

Scriptausgabe.jpg Daten_Archive_Handler.jpg

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 :wink:

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