Moin zusammen!
Ich bräuchte mal Hilfe von den PHP Spezis unter euch. Meinen Stromzähler lese ich mit folgendem Skript aus.
<?
if($_IPS['SENDER'] == "RegisterVariable")
{
// Wirkleistung (Wirk-Leistung Total) Obiskennung:1-0.16.7.0*255 Hex:01 00 10 07 00 FF
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x10).chr(0x07).chr(0x00).chr(0xFF)) !== false)
{
$wirkleistung = explode(chr(0x01).chr(0x00).chr(0x10).chr(0x07).chr(0x00).chr(0xFF), $_IPS['VALUE']);
SetValue(38307 , hexdec(Str2Hex(substr($wirkleistung[1], 7, 2))));
}
}
Cutter_ClearBuffer(17638);
function Str2Hex($daten)
{
$hex = "";
for($i=0; $i<strlen($daten); $i++)
$hex .= sprintf("%02X ", ord($daten[$i]));
return $hex;
}
function hex2str($hex)
{
$str = "";
for($i=0;$i<strlen($hex);$i+=2)
$str .= chr(hexdec(substr($hex,$i,2)));
return $str;
}
?>
Solange die PV Anlage nichts einspeist wird der korrekte Werte der Wirkleistung ausgelesen. Beginnt nun aber die Anlage Strom einzuspeisen, wird aus der 2er HEX Gruppe eine 4er HEX Gruppe. Der ausgelesen Wert liefert dann nur unplausible Zahlen. Am Stromzähler selbst abzulesen ist in diesem Moment die Wirkleistung aus Einspeisung PV abzüglich der Wirkleistung des Momentanverbrauchs. Ergebnis also keine negative Zahl.
Keine Einspeisung:
00 10 07 00 FF 01 01 62 1B 52 00 53 [b]03 52[/b]
Mit Einspeisung:
00 10 07 00 FF 01 01 62 1B 52 00 53 [b]0408[/b]
Hat jemand eine Idee/Lösung wie ich das Problem in den Griff bekomme???