Hallo zusammen nach vielen Hin und her und Hardwaretausch steht mein SmartHome Konzept nun.
Leider funktioniert eine Sache noch nicht wirklich ich hoffe ihr habt einen Tipp.
Ich habe nun einen Server mit mehreren virtuellen Maschienen. Dort läuft unter anderem der VZ.
Ich mess mit einem Raspberry meinen Hausanschlusspunkt, wo sich ein 2 Richtungszähler befindet. Desweiterenhabe ich noch einen Zähler für die Hauslast. Dazwischen hängt eine PV Anlage.
Diese ist auch mittels PHP skript angebunden und loggt die Date. Allerdings bekomme ich immer immer Spikes.
das skript sieht folgerndermaßen aus
PHP
<?php
$urlBase='http://localhost/middleware.php/data/';
$uuIds=array('Lieferung' => 'c5dc0fe0-e7d3-11e6-b3d9-952c548d632e');
$uuIdTarget=array('PV' => '989847a0-41bc-11e9-86c1-53c5feba3a39'/*,
'DC2V' => 'a0b137a0-52a3-11e7-b7ec-fbbdf12230ca',
'DC2A' => 'a9a8f140-52a3-11e7-a42d-373869c107fa',
'DC2P' => 'b1e7ea80-52a3-11e7-8ce2-d7e5c0e937f2',
'DC1V' => 'f65c3ac0-51f1-11e7-942e-7be9c2e11dbd',
'DC1A' => '51d42980-51f5-11e7-9bd0-3b1cd6b425d0',
'DC1P' => '7aac0880-529f-11e7-b47e-33333e6fb42e',
'DCGP' => '2dd54ac0-5453-11e7-8068-e723aaca40df',
'WG' => 'a7bea210-5454-11e7-b43d-4b94694baee5',
'PVZ' => '27fb02c0-520b-11e7-94e2-79994582adab',
'DV' => 'a2d28920-51e7-11e7-9b25-77ff338b4d04'*/
);
$laufZeit=300; // Sekunden die das Script laufen soll
$resolution=290; // Wieviel Sekunden soll zwischen jeder Abfrage mindestens gewartet werden
$valueIntervall=9; // Breite des Intervalls aus dem die Werte genommen werden soll in Sekunden
$j=1;
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) );
}
$gesamtStart=getTimestamp();
while((getTimestamp()-$gesamtStart)<($laufZeit*1000)) {
$minTimestamp = getTimestamp();
$maxTimestamp = $minTimestamp;
$t=getTimestamp();
echo "$t\n<br>";
$tsEnd = getTimestamp();
$tsStart = $tsEnd - ($valueIntervall*1000);
$urlEnd='.json?from='.$tsStart.'&to='.$tsEnd;
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
echo "Dauer um Werte zu holen: ".(getTimestamp()-$t)." Millisekunden\n<br>";
// Ausleseskript Wechselrichter Kostal Piko ab Firmware v05.31 (12.10.2015)
//Kommunikation
$IPAdresse = "192.168.1.36";
//Leistungswerte
$ID_DCEingangGesamt = 33556736; // in W
$ID_Ausgangsleistung = 67109120; // in W
$ID_Eigenverbrauch = 83888128; // in W
//Status
$ID_Status = 16780032; // 0:Off
//Statistik - Tag
$ID_Ertrag_d = 251658754; // in Wh
$ID_Hausverbrauch_d = 251659010; // in Wh
$ID_Eigenverbrauch_d = 251659266; // in Wh
$ID_Eigenverbrauchsquote_d = 251659278; // in %
$ID_Autarkiegrad_d = 251659279; // in %
//Statistik - Gesamt
$ID_Ertrag_G = 251658753; // in kWh
$ID_Hausverbrauch_G = 251659009; // in kWh
$ID_Eigenverbrauch_G = 251659265; // in kWh
$ID_Eigenverbrauchsquote_G = 251659280; // in %
$ID_Autarkiegrad_G = 251659281; // in %
$ID_Betriebszeit = 251658496; // in h
//Momentanwerte - PV Genertor
$ID_DC1Spannung = 33555202; // in V
$ID_DC1Strom = 33555201; // in A
$ID_DC1Leistung = 33555203; // in W
$ID_DC2Spannung = 33555458; // in V
$ID_DC2Strom = 33555457; // in A
$ID_DC2Leistung = 33555459; // in W
//Momentanwerte Haus
$ID_HausverbrauchSolar = 83886336; // in W
$ID_HausverbrauchBatterie = 83886592; // in W
$ID_HausverbrauchNetz = 83886848; // in W
$ID_HausverbrauchPhase1 = 83887106; // in W
$ID_HausverbrauchPhase2 = 83887362; // in W
$ID_HausverbrauchPhase3 = 83887618; // in W
//Netz Netzparameter
$ID_NetzAusgangLeistung = 67109120; // in W
$ID_NetzFrequenz = 67110400; // in Hz
$ID_NetzCosPhi = 67110656;
//Netz Phase 1
$ID_P1Spannung = 67109378; // in V
$ID_P1Strom = 67109377; // in A
$ID_P1Leistung = 67109379; // in W
//Netz Phase 2
$ID_P2Spannung = 67109634; // in V
$ID_P2Strom = 67109633; // in A
$ID_P2Leistung = 67109635; // in W
//Netz Phase 3
$ID_P3Spannung = 67109890; // in V
$ID_P3Strom = 67109889; // in A
$ID_P3Leistung = 67109891; // in W
$url = "http://".$IPAdresse."/api/dxs.json".
"?dxsEntries=".$ID_DC1Spannung. //0
"&dxsEntries=".$ID_Ausgangsleistung. //1
"&dxsEntries=".$ID_DC2Spannung. //2
"&dxsEntries=".$ID_DC1Strom. //3
"&dxsEntries=".$ID_DC2Strom. //4
"&dxsEntries=".$ID_DC1Leistung. //5
"&dxsEntries=".$ID_DC2Leistung. //6
"&dxsEntries=".$ID_Ertrag_G. //7
"&sessionId=3378188426";
$response = file_get_contents("$url", "r");
$dataObject = json_decode($response);
//
echo "Ausgangsleistung= ".$dataObject->dxsEntries[1]->value."W".'\n';
echo "DC1= ".$dataObject->dxsEntries[0]->value."W".'\n';
echo "DC2= ".$dataObject->dxsEntries[2]->value."W".'\n<';
//echo "Eigenverbrauchsquote Gesamt= ".$dataObject->dxsEntries[2]->value."%".chr(13);
$diffPV= $dataObject->dxsEntries[7]->value;
echo "PV Leistung: $diffPV \n<br>";
$timestamp = round($minTimestamp + ( ($maxTimestamp - $minTimestamp) / 2 ));
echo "Timestamp $timestamp $minTimestamp $maxTimestamp<br>\n";
$linkDV=$urlBase . $uuIdTarget['PV'] . '.json?operation=add&value=' . $diffPV . '&ts=' . $timestamp;
$dummy=curl_file_get_contents($linkDV);
echo "$linkDV \n<br>";
sleep($resolution);
} // if ok
echo "Gesamtlaufzeit: ".(getTimestamp()-$gesamtStart)." Millisekunden\n<br>";
?>
Alles anzeigen
Mit den Zeiten habe ich schon rumgespielt.
Ich meine mich zu erinnern das hängt mit den Tuplles zusammen aber ich bekomme es nicht mehr zusammen.
Gruß Nils