$sunrise_epoch); $result["rise"] = $sunrise_time; $result["set"] = $sunset_time; $result["time"] = date("Y-m-d H:i:s",time()); return $result; } $loop=0; // possible command line options // --vzurl= --cuuid_pwr= --cuuid_kwh= --daytimeonly $longopts=array("vzurl:","cuuid_pwr:","cuuid_kwh:","lat:","lon:","daytimeonly:"); $shortopts=""; $options=getopt($shortopts,$longopts); // the volkszaehler middleware url $vzurl=checkoption("vzurl",$options); // channel uuids // power (watts) $cuuid_pwr=checkoption("cuuid_pwr",$options); // energy (kWh) $cuuid_kwh=checkoption("cuuid_kwh",$options); // daytimeonly? $daytimeonly=checkoption("daytimeonly",$options); if ($daytimeonly) { $latitude=checkoption("lat",$options); $longitude=checkoption("lon",$options); } $jsonlines=file("php://stdin"); $tmeter=array(); foreach ($jsonlines as $line_nume => $json) { // get the meter reading $meter=json_decode($json, true); #var_dump($meter); foreach ($meter as $name => $value) { if (!array_key_exists($name,$tmeter)) $tmeter[$name]=0; $tmeter[$name]+=$value; } } #var_dump($tmeter); //array(3) { ["etoday"]=> float(2.52) // ["etotal"]=> float(6632.462) //["totalpac"]=> float(2.478) } $etotal=$tmeter["etotal"]; $totalpac=$tmeter["totalpac"]*1000; if ($daytimeonly) { $daytime=daytime($latitude,$longitude); if (!$daytime["daytime"]) { printf("%s after sunset: %s wait for sunrise: %s\n",$daytime["time"],$daytime["set"],$daytime["rise"]); exit(2); } } # total wattage of all inverters post2vz($vzurl,$cuuid_pwr,$totalpac); # total kwh of all inverters post2vz($vzurl,$cuuid_kwh,$etotal); if ($daytimeonly) { printf("%s PV: % 5d Watt % 10.3f kwH sun rise:%s set:%s\n",$daytime["time"],$totalpac,$etotal,$daytime["rise"],$daytime["set"]); } else { printf("PV Current/Total: %4.0f Watt %.3f kwH\n",$totalpac,$etotal); } exit(0); ?>