EIB-Werte setzen und abfragen
10. Januar 2010
Über linKNX lässt sich zum Beispiel auch eine Visualisierung realisieren.
Dazu spreche ich linKNX über die XML-Schnittstelle mit PHP an und gebe die Werte dann aus.
Um das ganze zu vereinfachen habe ich eine linknx.php Datei programmiert, welche mir die zentralen Funktionen getEibValue(id) und setEibValue(id, value) zur Verfügung stellt:
<?php
# ------------------------------------------------
# Datei: linknx.php
# ------------------------------------------------
# Beschreibung:
# Stellt zentrale Funktionen zur Verfuegung:
# - knxread()
# - knxwrite()
# - getEibValue()
# - openEib()
# - closeEib()
# ------------------------------------------------
# Autor: Christian Haeussler
# geändert am: 17.01.2008
# ------------------------------------------------
function knxread($fp, $id) {
$in = "<read><object id='$id'/></read>\n\4";
fwrite($fp, $in);
$ret = '';
$cnt = 0;
while ($cnt < 4 && $fp && !feof($fp)) {
$ret .= fgets($fp, 128);
$c = fgetc($fp);
if ($c == "\4") {
if (ereg ("<read status='success'>([^<]+)</read>", $ret,$regs))
$ret = $regs[1];
break;
}
$ret .= $c;
$cnt++;
}
return $ret;
}
function knxwrite($fp, $id, $value) {
$in = "<write><object id='$id' value='$value'/></write>\n\4";
fwrite($fp, $in);
$ret = '';
$cnt = 0;
while ($cnt < 4 && $fp && !feof($fp)) {
$ret .= fgets($fp, 128);
$c = fgetc($fp);
if ($c == "\4") {
if (ereg ("<write status='success'", $ret))
return 1;
break;
}
$ret .= $c;
$cnt++;
}
return 0;
}
function getEibValue($id) {
$fp = openEib();
$value = knxread($fp, $id);
closeEib($fp);
return $value;
}
function setEibValue($id, $value) {
$fp = openEib();
$status = knxwrite($fp, $id, $value);
closeEib($fp);
return $status;
}
function openEib() {
$address = "IP des linKNX Gateways";
$port = "Port des linKNX Gateways";
$fp = fsockopen($address, $port, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
}
return $fp;
}
function closeEib($fp) {
fclose($fp);
}
?>
Als Parameter übergebe ich den Funktionen immer die Objekt-ID (id), wie sie in der linknx XML-Konfiguration definiert wurden.
Bei der set-Funktion übergebe ich noch den zu setzenden Wert (value).
Diese Funktionen kann man dann z.B. in einer Visualisierungs-Seite nutzen. Hier ein Beispiel für die Visualisierung meiner EIB-Heizungs-Steuerung.
Ähnliche Artikel:
- EIB-Werte sammeln
- EIB-Visualisierung mit PHP
- AVR-Werte sammeln per PHP
- Werte als JPGraph Digramm darstellen

