Hallo Michael,
ich habe das Script eigentlich angepasst (Siehe Bild und Script).
Die Objekte sind auch alle ok. Ich könnet mir noch vorstelle, das die im Cutter eingesetzten Trennzeichen nicht passen. Hab da lt. Anleitung für den linken 01 01 01 01 und für den rechten 1B 1B 1B 1B angegeben.
Ich bin absolut ratlos.
Grüße
Heuser
<?
if($_IPS[‚SENDER‘] == „RegisterVariable“)
{
// HerstellerID Obiskennung:129-129.199.130.3255 Hex:81 81 C7 82 03 FF
if(strpos($_IPS[‚VALUE‘], chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x03).chr(0xFF)) !== false)
{
$herstellerID = explode(chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x03).chr(0xFF), $_IPS[‚VALUE‘]);
SetValue(54217 /[eHz\Hersteller]*/, substr($herstellerID[1], 5, 3));
}
else
{
LogMessage();
}
// Zählerstand (Wirk-Energie Total Bezug) Obiskennung:1-0.1.8.0*255 Hex:01 00 01 08 00 FF
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x00).chr(0xFF)) !== false)
{
$zaehlerstand = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x00).chr(0xFF), $_IPS['VALUE']);
SetValue(22578 /*[eHz\Zählerstand]*/, hexdec(Str2Hex(substr($zaehlerstand[1], 11, 8)))/10000);
}
else
{
LogMessage();
}
// Wirkleistung (Wirk-Leistung Total) Obiskennung:1-0.15.7.0*255 Hex:01 00 0F 07 00 FF
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x0F).chr(0x07).chr(0x00).chr(0xFF)) !== false)
{
$wirkleistung = explode(chr(0x01).chr(0x00).chr(0x0F).chr(0x07).chr(0x00).chr(0xFF), $_IPS['VALUE']);
SetValue(54370 /*[eHz\Wirkleistung]*/, hexdec(Str2Hex(substr($wirkleistung[1], 7, 4)))/10);
}
else
{
LogMessage();
}
// Bezug Tarif 1 (Wirk-Energie Tarif 1 Bezug) Obiskennung:1-0.1.8.1*255 Hex:01 00 01 08 01 FF
if(strpos($_IPS[‚VALUE‘], chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x01).chr(0xFF)) !== false)
{
$bezugTarif1 = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x01).chr(0xFF), $_IPS[‚VALUE‘]);
SetValue(15559 /[eHz\Bezug Tarif 1]/, hexdec(Str2Hex(substr($bezugTarif1[1], 7, 8)))/10000);
}
else
{
LogMessage();
}
// Bezug Tarif 2 ((Wirk-Energie Tarif 2 Bezug) Obiskennung:1-0.1.8.2*255 Hex:01 00 01 08 02 FF
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x02).chr(0xFF)) !== false)
{
$bezugTarif2 = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x02).chr(0xFF), $_IPS['VALUE']);
SetValue(31792 /*[eHz\Bezug Tarif 2]*/, hexdec(Str2Hex(substr($bezugTarif2[1], 7, 8)))/10000);
}
else
{
LogMessage();
}
}
function Str2Hex($daten)
{
$hex = „“;
for($i=0; $i<strlen($daten); $i++)
$hex .= sprintf("%02X ", ord($daten[$i]));
return $hex;
}
function LogMessage()
{
// Fehlermeldung nach logs schreiben
$log = IPS_GetKernelDir().„logs\Error eHZ_EMH.txt“;
$fp = fopen($log, „a“);
fwrite($fp, date("H:i:s ")."Datenlaenge: „.strlen($_IPS[‚VALUE‘]).“ Daten: „.Str2Hex($_IPS[‚VALUE‘]).“
");
fclose($fp);
}
?>