Sieht doch gut aus.
eHZ EMH SML Protokoll auswerten
und hier was zum spielen.
<?
/*
if($_IPS['SENDER'] == "Execute")
{
//VIO_PushTextHEX(27892, "76 05 00 09 F7 51 62 00 62 00 72 63 01 01 76 01 01 05 00 03 52 6F 0B 06 49 53 4B 01 07 22 F6 4E 47 01 01 63 0C F8 00 76 05 00 09 F7 52 62 00 62 00 72 63 07 01 77 01 0B 06 49 53 4B 01 07 22 F6 4E 47 07 01 00 62 0A FF FF 72 62 01 65 00 03 ED 21 7A 77 07 81 81 C7 82 03 FF 01 01 01 01 04 49 53 4B 01 77 07 01 00 00 00 09 FF 01 01 01 01 0B 06 49 53 4B 01 07 22 F6 4E 47 01 77 07 01 00 01 08 00 FF 65 00 01 01 A2 01 62 1E 52 FF 59 00 00 00 00 00 08 CB 23 01 77 07 01 00 01 08 01 FF 01 01 62 1E 52 FF 59 00 00 00 00 00 04 4B 48 01 77 07 01 00 01 08 02 FF 01 01 62 1E 52 FF 59 00 00 00 00 00 04 7F DB 01 77 07 01 00 02 08 00 FF 65 00 01 01 A2 01 62 1E 52 FF 59 00 00 00 00 00 06 95 E9 01 77 07 01 00 02 08 01 FF 01 01 62 1E 52 FF 59 00 00 00 00 00 06 95 E9 01 77 07 01 00 02 08 02 FF 01 01 62 1E 52 FF 59 00 00 00 00 00 00 00 00 01 77 07 01 00 10 07 00 FF 01 01 62 1B 52 00 55 FF FF FE 98 01 77 07 81 81 C7 82 05 FF");
VIO_PushTextHEX(27892, "76 07 00 06 06 0C A2 21 62 00 62 00 72 63 01 01 76 01 01 07 00 06 07 5B 36 0B 09 08 05 0D DE 2D 6B 90 E1 01 01 63 8A ED 00 76 07 00 06 06 0C A2 22 62 00 62 00 72 63 07 01 77 01 09 08 05 0D DE 2D 6B 90 E1 01 72 62 01 65 07 5B F8 F9 74 77 07 81 81 C7 82 03 FF 01 01 01 01 04 45 4D 48 01 77 07 01 00 00 00 09 FF 01 01 01 01 09 08 05 0D DE 2D 6B 90 E1 01 77 07 01 00 01 08 01 FF 62 82 01 62 1E 52 FF 56 00 10 71 7A 20 01 77 07 01 00 01 07 00 FF 01 01 62 1B 52 FF 55 00 00 31 77 01 01 01 63 E4 4F 00 76 07 00 06 06 0C A2 23 62 00 62 00 72 63 02 01 71 01 63 D8 08 00 00");
}
*/
//$data = hex2str($_IPS['VALUE']);
if($_IPS['SENDER'] == "RegisterVariable")
{
// HerstellerID Obiskennung:129-129.199.130.3*255 Hex:81 81 C7 82 03 FF
if(strpos($_IPS['VALUE'], chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x03).chr(0xFF)) !== false)
{
//print_r(explode(chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x03).chr(0xFF), $_IPS['VALUE']));
$herstellerID = explode(chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x03).chr(0xFF), $_IPS['VALUE']);
SetValue(53270 /*[eHZ\Test SML\Hersteller]*/, substr($herstellerID[1], 5, 3));
}
// ServerID
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x09).chr(0xFF)) !== false)
{
$serverID = explode(chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x09).chr(0xFF), $_IPS['VALUE']);
SetValue(30154 /*[eHZ\Test SML\ServerID]*/, Str2Hex(substr($serverID[1], 5, 10)));
}
// 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(17185 /*[eHZ\Test SML\Zählerstand]*/, hexdec(Str2Hex(substr($zaehlerstand[1], 11, 8)))/10000);
} // Zählerstand (Wirk-Energie Total Lieferung) Obiskennung:1-0.2.8.0*255 Hex:01 00 02 08 00 FF
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x02).chr(0x08).chr(0x00).chr(0xFF)) !== false)
{
$zaehlerstand = explode(chr(0x01).chr(0x00).chr(0x02).chr(0x08).chr(0x00).chr(0xFF), $_IPS['VALUE']);
SetValue(29639 /*[eHZ\Test SML\Zählerstand Lieferung]*/, hexdec(Str2Hex(substr($zaehlerstand[1], 11, 8)))/10000);
}
// Wirkleistung EMH(Wirk-Leistung Total) Obiskennung:1-0.15.7.0*255 Hex:01 00 0F 07 00 FF
// Wirkleistung HAG(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(0x01).chr(0x07).chr(0x00).chr(0xFF)) !== false)
{
$wirkleistung = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x07).chr(0x00).chr(0xFF), $_IPS['VALUE']);
//print_r(Str2Hex(substr($wirkleistung[1], 7, 4)));
SetValue(14730 /*[eHZ\Test SML\Wirkleistung]*/, hexdec(Str2Hex(substr($wirkleistung[1], 7, 4)))/10);
} // 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)
{
//print_r(explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x01).chr(0xFF), Str2Hex($_IPS['VALUE'])));
$bezugTarif1 = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x01).chr(0xFF), $_IPS['VALUE']);
SetValue(47791 /*[eHZ\Test SML\Bezug 1]*/, hexdec(Str2Hex(substr($bezugTarif1[1], 8, 5)))/10000);
} // 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(52790 /*[eHZ\Test SML\Bezug 2]*/, hexdec(Str2Hex(substr($bezugTarif2[1], 7, 8)))/10000);
}
// Lieferung Tarif 1 (Wirk-Energie Tarif 1 Lieferung) Obiskennung:1-0.2.8.1*255 Hex:01 00 02 08 01 FF
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x02).chr(0x08).chr(0x01).chr(0xFF)) !== false)
{
$bezugTarif1 = explode(chr(0x01).chr(0x00).chr(0x02).chr(0x08).chr(0x01).chr(0xFF), $_IPS['VALUE']);
SetValue(44947 /*[eHZ\Test SML\Lieferung 1]*/, hexdec(Str2Hex(substr($bezugTarif1[1], 7, 8)))/10000);
}
// Lieferung Tarif 2 (Wirk-Energie Tarif 2 Lieferung) Obiskennung:1-0.2.8.2*255 Hex:01 00 02 08 02 FF
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x02).chr(0x08).chr(0x02).chr(0xFF)) !== false)
{
$bezugTarif1 = explode(chr(0x01).chr(0x00).chr(0x02).chr(0x08).chr(0x02).chr(0xFF), $_IPS['VALUE']);
SetValue(42614 /*[eHZ\Test SML\Lieferung 2]*/, hexdec(Str2Hex(substr($bezugTarif1[1], 7, 8)))/10000);
}
// Wirkleistung L1 - L3
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x23).chr(0x07).chr(0x00).chr(0xFF)) !== false)
{
$x = explode(chr(0x01).chr(0x00).chr(0x23).chr(0x07).chr(0x00).chr(0xFF), $_IPS['VALUE']);
SetValue(25845 /*[eHZ\Test SML\Wirkleistung L1]*/, hexdec(Str2Hex(substr($x[1], 7, 4)))/10);
}
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x37).chr(0x07).chr(0x00).chr(0xFF)) !== false)
{
$y = explode(chr(0x01).chr(0x00).chr(0x37).chr(0x07).chr(0x00).chr(0xFF), $_IPS['VALUE']);
SetValue(40088 /*[eHZ\Test SML\Wirkleistung L2]*/, hexdec(Str2Hex(substr($y[1], 7, 4)))/10);
}
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x4B).chr(0x07).chr(0x00).chr(0xFF)) !== false)
{
$z = explode(chr(0x01).chr(0x00).chr(0x4B).chr(0x07).chr(0x00).chr(0xFF), $_IPS['VALUE']);
SetValue(21280 /*[eHZ\Test SML\Wirkleistung L3]*/, hexdec(Str2Hex(substr($z[1], 7, 4)))/10);
}
}Cutter_ClearBuffer(50881);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;
}
?>