Energiemessung Datapoints 4-bit auf den EIB senden

Hallo zusammen,

jetzt über Weihnachten habe ich endlich einmal Zeit, meine Haustechnik auch in IP-Symcon zu integrieren.
Ich habe eine Visualisierung von Hager (domovea).

Mein erstes Projekt wird sein, die ehz-Zähler auszulesen (1x iskra, 2x emh), die ich mit Optokopllern von co-met über usb (virtuelle com) angebunden habe.

Danach habe ich noch folgendes vor:

[ul]
[li]Bartl Wärmepumpe ebus Werte auslesen mit ebus Lan Adapter von eServiceOnline[/li][li]Zehnder ComfoAir Statuswerte auslesen und Lüftungsstufen setzen[/li][li]SolarLog Werte über den KNX-Bus auf Visualisierung von Hager bringen[/li][li]Wettervorhersage im Web auslesen und darüber die Fußbodenheizung vorausschauend regeln[/li][/ul]

Mein Script für ISKRA Zähler ist fertig, es kann relativ universell eingesetzt werden. Vielleicht hilft es jemand. Lediglich die Startbytes und Länge des Objekts angeben und die Position der Bytes für die Zählerwerte und damit die Funktion aufrufen.

Jetzt habe ich aber das erste Problem:

Ich will die so ermittelten Werte auf den BUS senden. Senden geht auch, aber: es gibt in IP-Symcon die Datentypen nicht die ich brauche um KNX konform Energiemesswerte zu senden. Nur dann wird auch die Visualisierung die Daten richtig auslesen, verarbeiten, anzeigen und die Historie protokollieren.

Ich brauche im Prinzip 4-bit Werte (siehe Grafik).

KNX datapoints.png

Kann mir jemand helfen? Vielen dank im Voraus und viele Grüße

Alexander

Hier mein Script:

<?

function read_value($obj_raw, $objName, $objLength, $obj_position)
{

$obj = str_split(substr(bin2hex($obj_raw),strpos(bin2hex($obj_raw),$objName)+16,$objLength),2);
//print_r($obj);
 $result = '';

foreach($obj_position as $index) {
  $result = $result . $obj[$index]; }

//$scaler = intval($obj[5]);
//echo 'S:' . $scaler;


echo intval('53FF');
 return hexdec($result);
}

SetValueFloat(38283 /*[Stromzähler auslesen\Register Variable Stromzähler WP\Auswertung\Strom Wärmepumpe Leistung]*/ ,read_value($IPS_VALUE,'77070100100700ff',24,range(7,10,1)));
SetValueFloat(27016 /*[Stromzähler auslesen\Register Variable Stromzähler WP\Auswertung\Strom Wärmepumpe Verbrauch T1]*/ ,read_value($IPS_VALUE,'77070100010801ff',32,range(7,14,1))/10000);
SetValueFloat(25327 /*[Stromzähler auslesen\Register Variable Stromzähler WP\Auswertung\Strom Wärmepumpe Verbrauch T2]*/ ,read_value($IPS_VALUE,'77070100010802ff',32,range(7,14,1))/10000);
SetValueFloat(36133 /*[Stromzähler auslesen\Register Variable Stromzähler WP\Auswertung\Strom Wärmepumpe Verbrauch Gesamt]*/ ,read_value($IPS_VALUE,'77070100010800ff',38,range(11,18,1))/10000);

?>

Schau mal den Link aus der Doku an, der erklärt, wie du von DPT auf EIS kommst: http://www.it-gmbh.de/support/service/knowledge-base/knowledge-base-single/article/kb050087-interpretation-von-dpt-als-eis.html

paresy

Hallo paresy,

vielen Dank für den Tipp. Jetzt habe ich also EIS9 genommen. Mit EIB_Value bekomme ich jetzt aber eine Fehlermeldung:

Gruppe ist nicht als ‚value‘ definiert.

Gibt es eine andere Methode um EIS9 Werte auf den BUS zu schreiben? In der Online-Hilfe von IP-Symcon bin ich nicht fündig geworden.

Viele Grüße

Alexander

EIB_FloatValue ist der korrekte Befehl für EIS9. Es fehlt aber in der Tat eine Liste welche Befehle für welchen EIS Typen gelten.

paresy

Vielen Dank.

Also werden die Befehle für die anderen Datentypen wohl lauten

EIB_UnsignedValue für EIS 11.000
EIB_SignedValue für EIS 11.001

und für EIS5 EIB_2ByteFloatValue?

EIB_UnsignedValue
EIB_SignedValue

Einen Versuch war’s wert, aber diese Befehle gibt es leider nicht. Gibt es eine Liste mit Befehlen pro EIB Typ?

Oder kann man irgendwo die PHP Objekte ansehen? Da müssten die Methoden ja definiert sein.

Schau doch mal in die Doku. Ggf. musst du pro Typ ein klein wenig raten.

paresy

Hallo zusammen,

habe in der Doku zwar keine Befehlsliste gefunden, aber über STRG-Space im Script Editor kann man sich ja alle Funktionen anzeigen lassen.

Die Lösung: Funktion „EIB_Counter32bit“ verwenden.

Asche auf mein Haupt. Der Befehl fehlt komplett in der Doku. Notiz ist erstellt und wird dann im neuen Jahr nachgereicht :slight_smile:

paresy