Hallo
Ich lese über ein PHP-Script alle Ereignisse auf dem KNX-Bus mit und schreibe sie in eine mySQL-DB.
Ich suche nun ein Script das mir den Datenpunkt DPT7(EIS10) übersetzt.
Hat einer so was ?
Hier mal das Script das die Datenpunkte übersetzt.
Gruß NetFritz
Ich lese über ein PHP-Script alle Ereignisse auf dem KNX-Bus mit und schreibe sie in eine mySQL-DB.
Ich suche nun ein Script das mir den Datenpunkt DPT7(EIS10) übersetzt.
Hat einer so was ?
Hier mal das Script das die Datenpunkte übersetzt.
Code:
# $eib_data Array mit dem Telegramm
switch($eis_wert){
# boolscher Wert EIS1 / DPT1
# 1Bit 0/1 Schalten
case "1":
#echo"EIS1 \n";
$write_db=true;
$value=$eib_data[21];
break;
# Prozentwert EIS6 / DPT5
# 1Byte 0-100% Skalieren:Relativwert
case "6":
$write_db=true;
$value=round((hexdec($eib_data[21])/255)*100,1);
break;
# Gleitkommawert EIS5 / DPT9
# 2Byte Gleitkomma (floating point)
case "5":
$write_db=true;
$value = $eib_data[22].$eib_data[23];
$eis5 = hexdec($value);
$wert = ($eis5 & 0x07ff);
if (($eis5 & 0x08000) != 0)
{
$wert = $wert | 0xfffff800;
$wert = $wert *-1;
}
$wert = $wert << (($eis5 & 0x07800) >> 11);
if (($eis5 & 0x08000) != 0)
{
$wert = $wert * -1;
}
$value=$wert/100;
break;
# 4Byte IEEE-Gleitkomma (floating point)
# EIS9 / DPT 14
case "9":
$write_db=true;
$binary = str_pad(decbin(hexdec($eib_data[24].$eib_data[25].$eib_data[26].$eib_data[27])),32,"0",STR_PAD_LEFT);
# Sign Bit
$fb = $binary[0];
# Exponent
$exp = bindec(substr($binary, 1, 8));
# Mantisse
$m = bindec(substr($binary, 9, 23));
# aus Sign Bit , Exponent u. Mantisse die Flieskommazahl zusammenstellen
$out = pow(-1,$fb) * (1+$m/(pow(2,23))) * pow(2,$exp-127);
$value = round($out,3);
break;
# alles andere schreiben wir (bisher) nicht...
default:
}


Kommentar