[vz-users] PHP Script Direktverbrauch auf Raspberry Pi

Heiko W. luckyheiko at hotmail.com
Fri Feb 8 14:58:34 CET 2013


Hallo 

hab nun doch schon einiges erledigt .. aber mit dem Script komm ich nun mal gar nicht weiter 

ich habe das Script ein 'bischen' verändert, hatte mal die <br> usw rausgenommen
und da ja in dem How To ( ja nicht Anleitung) ein anders Script steht wie in der FAQ hab ich mal geschaut wo da die Unterschiede sind 



zur Info 
'Bezug' = 1.8.1 = was vom EVU zu mir kommt (Tag), hab eigentlich Tag Nacht...
'Einspeisung' = 2.8.0 = was ich ins Netz einspeiße
'Erzeugung' = 2.8.0 = PV Anlage
Zähler sind 2 * ED300L von EMH Metering

ich bekomme immer das als Ausgabe in Putty

pi at raspberrypi ~ $ php /var/www/volkszaehler.org/htdocs/direktverbrauch.php
ddfea5f0-713c-11e2-8667-8d4b408bc4f7 / Bezug: 0
<br>Array
(
    [0] => 1360331363815
    [1] => 5433.071
    [2] => 1
)
f7998900-713c-11e2-ada2-795d327a9fd6 / Einspeisung: 5433.071
<br>0e2c3850-713d-11e2-a384-4bda743e342c / Erzeugung: 0
<br>Gesamtverbrauch = Bezug + Erzeugung - Lieferung: -5433.071
<br>http://localhost/middleware.php/data/c28860c0-713c-11e2-b372-bb9dc25e9aa0.json?operation=add&value=-5433.071&ts=1360331363771
<br>Direktverbrauch = Erzeugung - Lieferung : -5433.071
<br>^C
pi at raspberrypi ~ $



und das ist mein 'zusammengewürfeltes' Script 

<?php
    $urlBase='http://localhost/middleware.php/data/';
    $uuIds=array( 'Bezug' => 'ddfea5f0-713c-11e2-8667-8d4b408bc4f7',
                  'Einspeisung' => 'f7998900-713c-11e2-ada2-795d327a9fd6',
                  'Erzeugung' => '0e2c3850-713d-11e2-a384-4bda743e342c',
                );
    
    $uuIdTarget=array('Gesamtverbrauch' => 'c28860c0-713c-11e2-b372-bb9dc25e9aa0',
                      'Direktverbrauch' => 'b9a59860-713c-11e2-81af-7fa065fe71c7',
                     );

    $urlEnd='.json?from=30%20seconds%20ago';

function curl_file_get_contents($URL)
    {
    $c = curl_init();
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_URL, $URL);
    $contents = curl_exec($c);
    curl_close($c);

    if ($contents) return $contents;
    else return FALSE;
    } // function curl_get_file_contents

function getTimestamp() {
    $seconds = microtime(true); // false = int, true = float
    return round( ($seconds * 1000) );
    }

for ($i=1; $i<5 ; $i++) {
    $minTimestamp = getTimestamp();
    $maxTimestamp = $minTimestamp;
    foreach($uuIds as $index=>$value) {
      $url=$urlBase . $value . $urlEnd;
      $content = curl_file_get_contents($url);
      $content=json_decode($content);
      if (!empty($content->data->tuples)) {

         $lastTuple = end($content->data->tuples);
         $minTimestamp = min($minTimestamp,$lastTuple[0]);
         $maxTimestamp = max($maxTimestamp,$lastTuple[0]);
         print_r($lastTuple);
         $lastValue = $lastTuple[1];
      } else {
        $lastValue=0;
    } // if
    echo "$value / $index: $lastValue\n<br>";

    $values[$index]=$lastValue;
    } // foreach

    $diffGV= $values['Bezug'] + $values['Erzeugung'] - $values['Einspeisung'];
    echo "Gesamtverbrauch = Bezug + Erzeugung - Lieferung: $diffGV \n<br>";
    $timestamp = round($minTimestamp + ( ($maxTimestamp - $minTimestamp) / 2 ));
    $linkGV=$urlBase . $uuIdTarget['Gesamtverbrauch'] . '.json?operation=add&value=' . $diffGV . '&ts=' . $timestamp;
    $dummy=curl_file_get_contents($linkGV);
    echo "$linkGV \n<br>";
    
    $diffDV= $values['Erzeugung'] - $values['Einspeisung'];
    echo "Direktverbrauch = Erzeugung - Lieferung : $diffDV \n<br>";
    if ($diffDV>0) {
        $linkDV=$urlBase . $uuIdTarget['Direktverbrauch'] . '.json?operation=add&value=' . $diffDV . '&ts=' . $timestamp;
        $dummy=curl_file_get_contents($linkDV);
        echo "$linkDV \n<br>";
    }
    sleep(15);
} // for
?>


sind da irgendwo grobe Fehler drinnen ? 
oder bin ich nur zu ... 

würd mich freuen wenn ich das noch hinbekommen könnte :) 
weil dann 'läuft alles' was ich will/wollte.. 





Mit freundlichen Grüßen
Heiko W.
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://volkszaehler.org/pipermail/volkszaehler-users/attachments/20130208/611631c4/attachment-0001.html>


More information about the volkszaehler-users mailing list