Daten Stündlicher Durchschnitt

Hallo Zusammen.
Ich möchte gerne eine Graphen bauen, der mir der Durchnitsverbrauch pro Stunde auf mehrere Tage ausgibt. Also zum Beispiel 0-1 Uhr 0.15KW 1-2 Uhr … und so weiter… nur halt nicht nur für einen Tag wie das ein Normal geloggter Zähler macht, sondern auf Woche, Monat und Jahr die Durchschnittswerte.
Seht ihr das eine Möglichkeit wie ich an die Daten der geloggten Variabeln komme? Den Graphen kann man dann ja mit den bekannten Scripten erstellen.

zumindest sollte Dir dieser Befehl weiterhelfen:


AC_GetAggregatedValues($archiveID, $var_ID, 3, $year_startdate, $year_enddate, 15);

evtl. kann auch das hier weiter helfen

Leider geht es mit dem Befehlt nicht:

<?
$time =time();
$time2 =time()-(60*60*24);
echo AC_GetLoggedValues(36828,31886,$time2,$time,0);

?>
Warning:  ac_getloggedvalues: Instance #36828 does not implement this function! in [Daten\prostunde] on line 4

das geht natürlich nur wenn es eine Variable ist die als Zähler geloggt wird. Und ich würde mal meinen Copy&Paste-Mechanismus überprüfen

Die Variable ist nicht das Problem, die ist Zähler.

[b]Instance [/b]#36828 does not implement this function

hallo…
ist die ID #36828 auch die ID des „Archive Handlers“ von den „Kern Instanzen“?

Gruß,
Christian.

Ich häng mal nen screenshot von der Console rein.

gut, dann nimm mal die ID des "Archive Handler"s … dann dürfts auch klappen :wink:

also richtig abschreiben kannste auch nich…:rolleyes:

hier mal ein quick-and-dirty Testscript (aus meinem Testarchiv), du musst nur noch die ID der auszuwertenden Var eintragen.


// Quelle: http://www.ip-symcon.de/forum/f52/geloggte-daten-engergiemesszaehler-auswerten-11589/index2.html

$archiveID = IPS_GetInstanceIDByName("Archive Handler", 0);   // Archive-Handler-ID
$varID = 20651  /*[Smart Metering\IPS EKM-868\EKM-868 I Hausverteilung\EKM-868 #04 Licht_Strom unten\Ist heute]*/ ; // Variablen-ID der Zähler-Variable
$verbrauch_akt=getvalue($varID);
$year_startdate = mktime(0, 0, 0, date("m")-2, 1, date("Y")); //Startzeitam 1. des Monats vor einem Jahr
$start_month_format = date("H:i:s d.m.Y",$year_startdate);
echo "Timestamp start_month: $start_month_format 
";
$year_enddate = time(); //Startzeit vor 1 Monat
$end_month_format = date("H:i:s d.m.Y",$year_enddate);
echo "Timestamp end_month: $end_month_format 
";



// Abfrage Monatswerte der letzten 12 Monate
$temp = ac_getaggregatedvalues($archiveID, $varID, 1, $year_startdate, $year_enddate, 500);
print_r($temp);

@Raketenschnecke Besten Dank.
OK. Daten werden angezeigt. Fortsetzung folgt.

so
Hier mal das erste Bild das mir Google Chart Tools - Google Code erstellt.

http://chart.apis.google.com/chart?cht=bvg&chs=900x300&chd=t:0.12771235413044,0.12828569259267,0.136901876367,0.12867656470601,0.13425432106063,0.14409320953346,0.23515570473028,0.20662203278553,0.17068862107699,0.19789583223343,0.21154415973603,0.21558347131043,0.23256270963757,0.25143995986631,0.25724579903642,0.26668755476348,0.26379671020283,0.24677185471082,0.29720127190327,0.39721025583009,0.3198300773792,0.22812358269681,0.17796313794024,0.13578471529666,0.12323476519717&chxt=y&chxt=x,y&chds=0,1&chm=N,000000,0,-1,11
und hier der code (noch ziemlich Dirty)

<?

$pfad="..\media\auswertung.png";
$varID = 31886  /*[Strom\Oben\Zähler]*/ ;
$zeitraum = 30;//in Tagen
$h=0;
$werte = array();
while ($h<=24)
{
    $d=0;
    $zeit=mktime($h, 0, 0, date("m"), date("d"), date("Y"));
    while ($d<=$zeitraum)
        {
            @$werte[$h]= $werte[$h]+getwert($zeit,$varID);
        
            $zeit=$zeit-(60*60*24);
            $d++;
        }
    $h++;
}
$h=0;
$url ="http://chart.apis.google.com/chart?cht=bvg&chs=900x300&chd=t:";
while ($h<=24)
{
    $werte[$h]=$werte[$h]/$zeitraum;
    $url=$url.$werte[$h].",";
    $h++;
}

$url = substr($url,0,-1);
$url=$url."&chxt=y&chxt=x,y&chds=0,1&chm=N,000000,0,-1,11";
    $fp1 = fopen($url,'r');

      ob_start();
    fpassthru($fp1);
    fclose($fp1);
    $file = ob_get_contents();
    ob_end_clean();
    $fp1 = fopen($pfad, "wb+");
    fwrite($fp1, $file);
    fclose($fp1);


function getwert($von,$varID){
$archiveID = IPS_GetInstanceIDByName("Archive Handler", 0);   // Archive-Handler-ID
$bis =$von + 60*60;
$temp = ac_GetLoggedValues($archiveID, $varID, $von, $bis, 0);
$i=0;
$start=0;
$ende=0;
     foreach($temp as $name => $wert) {
    
    if($i==0){
    $start=$wert['Value'];
    }
     $i++;
    $ende=$wert['Value'];
    }
    return $start-$ende;
    }

?>