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.
gut, dann nimm mal die ID des "Archive Handler"s … dann dürfts auch klappen
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);
so
Hier mal das erste Bild das mir Google Chart Tools - Google Code erstellt.
<?
$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;
}
?>