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.

Swen Hopfe

Schreibe einen Kommentar

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