DB-Access fuer die Homematic

Dabei handelt es sich um ein Plugin fuer die beliebte Hausautomation, welches es moeglich macht, mittels http-Aufrufen diverse Werte auszulesen oder zu setzen. Dazu stehen mehrere CGI-Files zur Verfuegung. Ein beispielhafter Aufruf koennte also folgendermassen aussehen:

 

http://ccu-ip/addons/db/table.cgi

 

In diesem Fall wird eine Liste sogenannter Datenpunkte zurueckgeliefert, an denen ich erkennen kann, wie der Zustand der Interfaces meiner eingebunden Geraete so ist. Bei „ccu-ip“ handelt es sich um die IP-Adresse der Steuerung im lokalen Netzwerk. Dabei funktioniert der Zugriff sowohl fuer die CCU genannte Zentraleinheit der aelteren Generation, wie auch fuer die in 2013 eingefuehrte neue CCU2. Der Aufruf

 

http://ccu-ip/addons/db/values.cgi

 

liefert nun eine Liste aller Datenpunkte zurueck, welche auch einen Wert zurueckliefern. Hier gibt es aber keine Klarnamen zur Identifikation. Wie man sieht, ist das API recht einfach zu beschicken. Natuerlich geht noch ein bisschen mehr, wenn man zum Beispiel einen konkreten Zustand checken moechte:

 

…/db/state.cgi?item=Dimmer%20Wohnzimmer

 

Der Parameter „item“ enthaelt hier den Namen des Dimmer-Aktors. Man kann auch anhand der ID abfragen. Darueber hinaus koennen saemtliche Items abgefragt werden, die etwas hergeben, also auch Sensoren oder Variablen. Das sieht dann so aus:

 

state.cgi?item=747

state.cgi?item=Abwesenheit

state.cgi?item=Wohnz_Kombisensor&dp=TEMPERATURE

 

Natuerlich wollen wir auch Werte zuweisen und das kann folgendermassen geschehen:

 

state.cgi?item=Schaltaktor&dp=STATE&value=true&force=1

 

Dadurch wird das hier mit „Schaltaktor“ benannte Geraet an seinem Datenpunkt „STATE“ in den Zustand „true“ gebracht. Eine „1“ mittels dem zusaetzlichen Parameter „force“ zu uebergeben, bewirkt, dass dies auch dann getan wird, wenn bereits der Status „true“ anliegt.

Diverse Ergebnisse werden bei einem Aufruf in der Adresszeile des Browsers dann auch logischerweise direkt im Browserfenster zurueckgeliefert. Jetzt wollen wir noch etwas automatisieren und unsere Aufrufe ueber ein Linux-Bash-Skript bewerkstelligen.

 

##!/bin/bash
c_str=“http://ccu-ip/addons/db/state.cgi?item=Abwesenheit“
w_val=$(wget -q -O – $c_str)
if [ „$w_val“ == „true“ ]
then
echo „Niemand im Raum.“
else
echo „Ich bin da.“
fi

 

Nur ein kleines Beispiel und machbar natuerlich auch als Windows CMD-Skript und in allen Skriptsprachen und kompilierbaren Programmen, wo ein Kommando bereitsteht, welches auf Web-Ressourcen mittels http zugreifen kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert