[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