Home > PHP > EIB-Werte setzen und abfragen

EIB-Werte setzen und abfragen

Ü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:

  1. EIB-Werte sammeln
  2. EIB-Visualisierung mit PHP
  3. AVR-Werte sammeln per PHP
  4. Werte als JPGraph Digramm darstellen

PHP , ,


1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch nicht bewertet)
Loading ... Loading ...