Beiträge zu “openhab”

Einen Müllkalender im ICAL Format in Openhab darstellen

Unser Abfallentsorger ist so innovativ seinen Müllkalender elektronisch im ICAL Format darzustellen. Das ist an sich schon mal sehr schön. Jetzt möchte ich es erreichen, dass ich die Mülltermine der kommenden 4 Wochen in Openhab (und später noch woanders) angezeigt bekomme. Ja ich könnte auch den gesamten Kalender als Overlay in meinem Kalender halten aber da ist eh schon soviel drin. Leider gibt es kein ICAL Modul für Openhab und das Google Kalenderbinding kann ich auch nicht darstellen.

Nun bin ich folgenden Weg gegangen. Ich lade mir den gesamten Kalender mit meinen Müllterminen auf den Raspberry Pi. Diese Datei wandele ich mit ical2html in eine html Datei und werfe diese Datei einem “monströsen” sed Script vor. Dieser sed Aufruf löscht alle html und sonstigen Informationen die ich nicht brauche und wandelt die “technischen Begriffe” in normale Begriffe um.

Dann habe ich eine Textdatei die ich eigentlich schon über das html Binding von Openhab importieren könnten. Nun gefällt mir aber das “iframe” nicht in dem diese Datei dargestellt wird. Deswegen wandele ich diese Textdatei noch in ein kleines Bild um und dieses Bild wird dann in Openhab dargestellt.

Zuerst die Voraussetzungen installieren

  apt-get install ical2html

Und so sieht das ganze dann am Ende aus

   ical2html $(date +%Y%m%d) P4W /path/to/RSAG_Abfuhrtermine_Stand_20150304.ICS  \
      | sed -f sed-muell.txt |  paste -d " " - - | convert label:@- /var/www/rsag.png

Die sed Befehle sehen so aus

 vi /root/sed-muell.txt 
    s/^<t.*//g
    s/^<!.*//g
    s/^<m.*//g
    s/^<\/t.*//g
    s/^<lin.*//g
    s/^<span class=veve.*//g
    s/^<span class=catego.*//g
    s/^<div class=veve.*//g
    s/^<span class=notime.*//g
    s/^title=\"1D".*//g
    s/^<\/div>//g
    s/title="//g
    s/">(whole<\/abbr> <abbr class\=duration//g
    s/<span class=summary>//g
    s/<\/span>//g
    s/^  \"http.*//g
    /^$/d
    s/^\(201.\)\(..\)\(.*\)/\3.\2.\1/g
    s/RSAG//g
    s/Papiertonne 4-wö/Papier/g
    s/Restmülltonne 2-wö/Restmüll/g
    s/Wertstofftonne oder -sack 4-wö./Gelber Müll/
    s/Biotonne 2-wö. (inklusive Bündel-Mitnahme)/Bio Müll/g
    s/Biotonne-Zusatzleerung (keine Bündel-Mitnahme)/Bio Zusatz/g

Das ganze kann man natürlich noch etwas schöner gestalten aber die Informationen sind erst mal da. Für andere ical Datein müsste man sich diese Ersetzungen natürlich anders zusammensetzen.

In die Sitemap wird das dann so eingebunden

 vi /etc/openhab/configurations/sitemaps/default.sitemap
   Image item=rsag label="Müllabfuhr" url="http://your.web.server/rsag.png" 

alternat-txt

9.3.15
Weitere Beiträge zu: openhab  

Mit Sonos Weckern und Openhab eine Kaffemaschine einschalten

Eine der wesentlichen Eigenschaften von den alten manuellen Espresso Maschinen ist die Tatsache, daß sie vor der Benutzung eine gewisse Zeit brauchen um aufzuheizen. Einfach anmachen und Espresso ziehen ist nicht. Es wäre also schön wenn man morgens die Espresso Maschine durch den Wecker gesteuert einschalten könnte. Bisher mache ich dies zu relativ festen Zeiten über eine Rapsberry Pi und eine billige Funksteckdose. Viel schöner wäre es doch wenn wir unseren Wecker des Sonos Gerätes nutzen könnten um dies morgens immer zur richtigen Zeit einzuschalten. Die Zeit die man im Bad verbringt reicht ungefähr um die Espressomaschine aufzuheizen.

Mit Openhab und dem Wecker von Sonos kann man so etwas machen.

Zuerst die Schnittstelle (Binding) von Openhab für Sonos installieren

apt-get install openhab-addon-binding-sonos 

Nach dem Neustart kann man im Logfile die IDs der ganzen Sonos Geräte finden

2015-02-28 22:06:58.356 [INFO ] [.service.AbstractActiveService] - HTTP Refresh Service has been started
2015-02-28 22:06:58.445 [INFO ] [o.o.b.h.i.bus.HomematicBinding] - 
2015-02-28 22:06:58.448 [INFO ] [.b.h.i.c.HomematicCommunicator] - Starting Homematic communicator
2015-02-28 22:06:58.550 [INFO ] [o.o.b.h.i.c.client.CcuClient  ] - Starting CcuClient
2015-02-28 22:06:58.619 [INFO ] [.b.sonos.internal.SonosBinding] - Found a Sonos device (S1) with UDN uuid:RINCON_B8E9...
2015-02-28 22:06:58.679 [INFO ] [b.h.i.communicator.StateHolder] - Loading Homematic datapoints
2015-02-28 22:06:58.724 [INFO ] [.b.sonos.internal.SonosBinding] - Found a Sonos device (Sub) with UDN uuid:RINCON_000..

Die Zahlen die mit uuid:RINCON anfangen brauchen wir gleich. Das sind nämlich die eindeutigen Adressen der Sonos Player.

Zuerst brauchen wir einen “Schalter” der über das Sonos Binding geschaltet wird. Und natürlich den Schalter für die Espressomaschine

vi items/demo.items 
 Switch Wecker_Eltern  (DG_Schlafzimmer)   {sonos="[RINCON_000E5835....:alarmrunning]", autoupdate="false"}
 Switch Light_GF_Living_Espresso "Espresso"              (EG_Kueche)  { exec="ON:/opt/caserio/tools/rpi-schalter.sh 1 1 , OFF:/opt/caserio/tools/rpi-schalter.sh 1 0" }

Hier brauchen wir diese ID die mit RINCON…. beginnt.

Und dann die Regel

vi rules/wecker.rules
 rule "MorgenWecker"
 when
    Item  Wecker_Eltern changed from false to true
 then
    sendCommand(Light_GF_Living_Espresso, ON)
 end

Wenn man jetzt einen Wecker auf dem Sonos Player einrichtet überwacht Openhab ob dieser Wecker auf “1” steht und wenn ja dann geht der Schalter an.

4.3.15
Weitere Beiträge zu: openhab   Sonos  

Ein bewegungsgesteuerter Heizkörper mit Homematik und Openhab

Ich möchte es erreichen das in meinem Büro in dem dieser Bewegungsmelder arbeitet das Homematik Heizungsthermostat solange auf einem definierten Komfortlevel eingestellt bleibt wie innerhalb eines Zeitraumes von x (20) Minuten Bewegungen erkannt werden. Dazu habe ich in Openhab einen “Status” mit dem Namen “Buero_Besetzt” eingefügt.

vi items/demo.items 
     Switch Buero_Besetzt "Büro" (DG_Buero) {ON,OFF}

Dieser Schalter wir von dem Bewegungsmelder Script über die REST API auf ON gesetzt wenn eine Bewegung erkannt worden ist.

vi pir_1.py 
 ...
 ...
 # PIR is triggered
  print "  Motion detected!"
  subprocess.call("/root/DG_B_motion.sh")
  # Record previous state

Das aufgerufene Script macht dann:

  vi DG_B_motion.sh 
#!/bin/sh
    /usr/bin/curl --header "Content-Type: text/plain" --request PUT --data "ON" http://deine.openhab-addres.se:8080/rest/items/Buero_Besetzt/state

So jetzt haben wir einen Mechanismus der regelmäßig eine Openhab Variable auf ON setzt wenn eine Bewegung gemeldet worden ist. Jetzt möchte ich aber nicht “minütlich” meine Heizung neu einstellen, sondern es soll nur die Temperatur geändert werden wenn sich über einen längeren Zeitraum (20 oder 30 Minuten) nichts bewegt hat. Dazu habe ich diese Openhab Regel etwas angepasst

vi rules/DB_Buero_Motion.rules 
var Number DG_B_counter = 0
var Number DG_B_lastCheck = 0
rule "Dachgeschoss_Buero_Heizung_On"
when
    Item Buero_Besetzt changed from OFF to ON or
then
    DG_B_counter = DG_B_counter + 1
    sendCommand(DG_Buero_Mode_Low,OFF)
    sendCommand(DG_Buero_Mode_Comfort, ON)
end

rule "Dachgeschoss_Buero_Heizung_Off"
when
    Time cron "0 */20 * * * ?"
then
    if(DG_B_lastCheck == DG_B_counter) {
            DG_B_counter = 0
            DG_B_lastCheck = -1;
            sendCommand(Buero_Besetzt, OFF)
sendCommand(DG_Buero_Mode_Comfort, OFF)
sendCommand(DG_Buero_Mode_Low,ON)
    } else {
            DG_B_lastCheck = DG_B_counter
    }
end

Jetzt fehlen noch die “Schalter” für Wohlfühl- und Niedrigtemperatug

vi items/demo.items
  Switch DG_Buero_Mode_Comfort "Comfort" <temperature>  {homematic="address=LEQ1287169, channel=4, parameter=COMFORT_MODE"}
  Switch DG_Buero_Mode_Low "Niedrig" <temperature>  {homematic="address=LEQ1287169, channel=4, parameter=LOWERING_MODE"}

Fertig. Das ganze hätte man natürlich auch mit einem fertigen Funkmodul von Homematik machen können. Der kostet aber fast das doppelte wie die Lösung mit dem Pi und wahrscheinlich kann ich an einem Pi auch mehrere naheliegende Räume überwachen und noch weitere Sensoren anschließen.

1.3.15
Weitere Beiträge zu: openhab   Homematic  

Openhab: Aussenbeleuchtungen Jahreszeiten abhängig steuern

Ziel ist es täglich in Abhängigkeit von der Helligkeit eine LED Licherkette ein- und auszuschalten. Die Zeiten für Sonnenauf- und -untergang kann man in Abhängigkeit von dem eigenen Standort mit Hilfe der Openhab Schnittstelle “Astro” erhalten

apt-get install openhab-addon-binding-astro
vi /etc/openhab/configurations/openhab.cfg 
  v################################# Astro Binding 
    # The latitude
     astro:latitude=xx.xxx
    # The longitude
     astro:longitude=x..xx

Die beiden Werte kann man einfach über Google Maps finden. Dann habe ich einen “virtuellen Schalter” eingerichtet. Er schaltet sich 20 Minuten nach Sonnenuntergang ein (Mit den Werten werden ich noch etwas spielen müssen). Wir brauchen noch “Schalter” für die Lichterkette. In diesem Fall verwende ich meine Funksteckdosen

vi /etc/openhab/configurations/items/demo.items 
  Switch Sunset_Event  "Sunset" <clock>  {astro="planet=sun, type=set, property=end, offset=20"}
  Switch Light_GF_Garden_lichterkette            "Lichterkette"                (GF_Garden, Lights) { exec="ON:/path/to/rpi-schalter.sh 4 1 , OFF:/path/to/rpi-schalter.sh 4 0 " 

Und jetzt noch die Regeln nach denen diese Steckdose automatisch ein und ausgeschaltet werden soll

vi /etc/openhab/configurations/rules/daemmerung.rules
rule "Licherkette-Ein"
when
        Item Sunset_Event received update ON
then
    sendCommand(Light_GF_Garden_lichterkette, ON)
end
rule "Lichterkette-Aus"
when
    Time cron "0 0 45 22 * ?"
then
    sendCommand(Light_GF_Garden_lichterkette, ON)
end
21.2.15
Weitere Beiträge zu: openhab  

Hausautomation: Benachrichtigung wenn das Fenster zu lange offen ist

Es soll eine Benachrichtigung (per Telefon) erfolgen wenn ein Fenster (in diesem Fall das Badezimmerfenster) einen bestimmten Zeitraum offen steht. Verwendet werden dazu die Homematic Zentrale und Openhab. Man könnte das ganze auch komplett in Homematic abbilden aber ich fühle mich unter Linux mit Openhab einfache wohler ;-)

Dazu wird in der Homematic Zentrale zuerst eine Systemvariable eingefügt welche auf 1 gesetzt wird wenn das Fenster 10 Minuten offen ist.

alternat-txt

Dieser Variable muss auch wieder gelöscht werden wenn das Fenster geschlossen wird

alternat-txt

Um die Änderung in der Systemvariablen von Homematic auch an Openhab zu senden ist noch der zusätzliche Reload Trigger notwendig.

Dann noch die Variable die man in Openhab verwendet

 vi /etc/openhab/configurations/items/demo.items 
     String  Badezimmer_Fenster_Alarm        (Fenster)            {homematic="variable=BadFensterWarnung"}

Und die Regel

 vi /etc/openhab/configurations/rules/alarm.rules

   rule "Window_Bathroom_opened"
   when
   Item Badezimmer_Fenster_Alarm2 changed from false to true
   then
    sendCommand(SIPCALL_WINDOW_BATHROOM, ON)
   end

In diesem Fall verwende ich einen Script welches ein Telefon im Haushalt anruft.

Wenn es wieder wärmer wird möchte ich die Regel noch um die Außentemperatur erweitern.

14.2.15
Weitere Beiträge zu: openhab   Homematic  

Openhab mit externen Informationen versorgen

Ziel ist es Informationen wie Sonnen Auf- und Untergang in Openhab zur Steuerung von Außenlampen zu verwenden. Im wesentlichen bin ich nach dieser Anleitung vorgegangen.

Zuerst ist ein HTTP Binding zu installieren

apt-get install openhab-addon-binding-http
/etc/init.d/openhab restart

Für die Werte verwende ich zu Beginn die Informationen von Wonderground. Dort muss man sich anmelden und einen Developer API Key beantragen.

Die notwendigen Informationen von Openhab sehen dann wie folgt aus

vi items/default.items
  String strSunset "Sonnenuntergang [%s]" <clock> { http="<[http://api.wunderground.com/api/api-key/conditions/forecast/astronomy/lang:DL/q/Germany/Meckenheim.xml:21600000:XSLT(wunderground_sunset.xsl)]" }

Um aus der langen XML Seite genau die Uhrzeit für den Sonnenuntergang zu bekommen brauchen wir noch eine xsl Definition

 vi transform/wunderground_sunset.xsl

 <?xml version="1.0"?>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output indent="yes" method="xml" encoding="UTF-8" omit-xml-declaration="yes" />
    <xsl:template match="/">
    <!-- format: hh:mm:ss -->
    <xsl:value-of select="//sunset/hour/text()" /><xsl:text>:</xsl:text><xsl:value-of select="//sunset/minute/text()" /><xsl:text>:00</xsl:text>
    </xsl:template>
  </xsl:stylesheet>

Im Logfile kann man dann auch sehen das eine entsprechende Variable eingerichtet wurde.

tail /var/log/openhab/events.log
   2015-02-09 16:52:07 - strSunset state updated to 17:37:00
   2015-02-09 16:52:09 - Var_Holidaymode state updated to false

In der Sitemap kann man sich die Uhrzeit dann anzeigen lassen

vi sitemaps/default.sitemap
   Text item=strSunset

Eigentlich sollte das eine schnelle Sache sein. Es scheint aber so zu sein, daß einige der Änderungen im Zusammenspiel mit den Variablen nicht nach dem Editieren neu geladen werden sondern ein Neustart des Openhab Servers notwendig ist.

Wenn es also nicht geht einfach mal den Service neustarten Ziel ist es Informationen wie Sonnen Auf und Untergang in Openhab zur Steuerung von Aussenlampen zu verwenden. Im wesentlichen bin ich nach dieser Anleitung vorgegangen

Zuerst ist ein HTTP Binding zu installieren

apt-get install openhab-addon-binding-http
/etc/init.d/openhab restart

Für die Werte verwende ich zu Begin die Informationen von Wonderground. Dort muss man sich anmelden und einen Developer API Key beantragen.

Die notwendingen Informationen von Openhab sehen dann wie folgt aus

vi items/default.items
  String strSunset "Sonnenuntergang [%s]" <clock> { http="<[http://api.wunderground.com/api/api-key/conditions/forecast/astronomy/lang:DL/q/Germany/Meckenheim.xml:21600000:XSLT(wunderground_sunset.xsl)]" }

Um aus der langen XML Seite genau die Uhrzeit für den Sonnenuntergang zu bekommen brauchen wir noch eine xsl Definition

 vi transform/wunderground_sunset.xsl

 <?xml version="1.0"?>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output indent="yes" method="xml" encoding="UTF-8" omit-xml-declaration="yes" />
    <xsl:template match="/">
    <!-- format: hh:mm:ss -->
    <xsl:value-of select="//sunset/hour/text()" /><xsl:text>:</xsl:text><xsl:value-of select="//sunset/minute/text()" /><xsl:text>:00</xsl:text>
    </xsl:template>
  </xsl:stylesheet>

Im logfile kann man dann auch sehen das eine entsprechende Variable eingerichtet wurde.

tail /var/log/openhab/events.log
   2015-02-09 16:52:07 - strSunset state updated to 17:37:00
   2015-02-09 16:52:09 - Var_Holidaymode state updated to false

In der Sitemap kann man sich die Uhrzeit dann anzeigen lassen

vi sitemaps/default.sitemap
   Text item=strSunset

Eigentlich sollte das eine schnelle Sache sein. Es scheint aber so zu sein, daß einige der Änderungen im Zusammenspiel mit den Variablen nicht nach dem Editieren neu geladen werden sondern ein Neustart des Openhab Servers notwendig ist.

Wenn es also nicht geht einfach mal den Service neu starten.

11.2.15
Weitere Beiträge zu: openhab  

Homematic Variablenänderung an Openhab senden

Ja es steht in der Doku nur leider habe ich das erst nach einigem Trial und Error gefunden.

Homematik erlaubt das Setzen von “Systemvariablen” z.B. “DerChefIstDa” oder “BadezimmerfensterAlarm” wenn sich der Status von Geräten verändert.

Diese Variablen werden beim Starten von Openhab auch ausgelesen. Nur leider bekommt Openhab nichts davon mit wenn sich Variablen ändern :-(

The CCU only sends a message if a datapoint of a device has changed. There is (currently) no way to receive a event automatically when a variable has changed. But there is a solution … variable sync. This is done with the help of the ‘Virtual remote control’ feature of the CCU. The CCU supports 50 virtual remote control channels and you can use one of them for variable sync.

Der Workaround ist dann. Wir definieren uns eine virtuelle Fernbedingung auf der Zentrale

alternat-txt

Erstellen ein Item dafür

 Switch Reload_Variables {homematic="address=BidCoS-RF, channel=1, parameter=PRESS_SHORT, action=RELOAD_VARIABLES"}

Und können da diese “Fernbedienung” in Programmen verwenden um ein Reload der Variablen zu triggern

alternat-txt

10.2.15
Weitere Beiträge zu: openhab   Homematic  

Fritzboxtelefone zur Benachrichtigung anrufen

Ziel ist es, Telefone die an einer Fritzbox angeschlossen zum Klingeln zu bekommen. Ich möchte dies als “Notification” für Ereignisse in der Hausautomation verwenden. Den Ansatz habe ich von hier

Zuerst habe ich über die Weboberfläche der Fritzbox ein neues SIP Telefon eingerichtet. Für die Anrufe verwende ich einen Kommandozeilen SIP Client (https://github.com/tmakkonen/sipcmd)

 apt-get install alsa-base
 apt-get install libopal-dev libpt-dev
 wget https://github.com/tmakkonen/sipcmd/archive/master.zip
 unzip master.zip 
 cd sipcmd-master/
 make

Dann ein Testlauf

./sipcmd -u meinenummer -c meinkennwort -P sip -w fritzbox -x "c**zielnummer;h"

Es gibt auch die Möglichkeit hier WAV Dateien abspielen zu lassen. Aber da dies nicht auf Anhieb geklappt hat und ich es eigentlich noch nicht brauche habe ich das erst einmal weggelassen.

8.2.15
Weitere Beiträge zu: openhab   Fritz!Box  

Integration von Homematik Fensterkontakten in Openhab

Mit der Einführung der ersten Homematik Module steht natürlich auch deren Integration in den vorhandenen Openhab Service an. Zwar bietet auch Homematik eine Web Übersicht an und es gibt auch Apps, aber natürlich sind beide ausschließlich auf Homematik ausgerichtet und bieten keine Integration anderer Dienste an.

Zuerst das openhab Modul installieren

  apt-get install openhab-addon-binding-homematic

und die Adresse der Zentrale in die Konfiguration eintragen

 vi ../openhab.cfg 
    # Hostname / IP address of the Homematic CCU
    homematic:host=ccu2.your-domain.de

Dann sollte man nach dem Neustart Einträge zum Homematic im Logfile sehen

 /etc/init.d/openhab restart
 tail /var/log/openhab/openhab.log 
 2015-02-07 22:43:35.182 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Classic UI at /openhab.app
 2015-02-07 22:43:39.868 [INFO ] [o.o.b.h.i.bus.HomematicBinding] - HomematicConfig[host=ccu2.caserio.lcl,callbackHost=192.168.221.5,callbackPort=9123,aliveInterval=300]
 2015-02-07 22:43:39.870 [INFO ] [.b.h.i.c.HomematicCommunicator] - Starting Homematic communicator
 2015-02-07 22:43:39.893 [INFO ] [.service.AbstractActiveService] - Exec Refresh Service has been started
 2015-02-07 22:43:40.110 [INFO ] [.b.h.i.c.HomematicCommunicator] - Homematic ServerId[name=CCU,version=2.11.9,address=LEQ1324009]
 2015-02-07 22:43:40.118 [INFO ] [o.o.b.h.i.c.client.CcuClient  ] - Starting CcuClient
 2015-02-07 22:43:40.173 [INFO ] [b.h.i.communicator.StateHolder] - Loading Homematic datapoints
 2015-02-07 22:43:40.935 [INFO ] [b.h.i.communicator.StateHolder] - Finished loading 258 Homematic datapoints
 2015-02-07 22:43:40.936 [INFO ] [b.h.i.communicator.StateHolder] - Loading Homematic Server variables
 2015-02-07 22:43:40.960 [INFO ] [b.h.i.communicator.StateHolder] - Finished loading 2 Homematic server variables
 2015-02-07 22:43:40.961 [INFO ] [b.h.i.c.s.BinRpcCallbackServer] - Starting BinRpcCallbackServer at port 9123
 2015-02-07 22:43:41.110 [INFO ] [.o.b.h.i.c.client.BinRpcClient] - Interface BidCos-Wired not available, disabling support.
 2015-02-07 22:43:41.111 [INFO ] [.o.b.h.i.c.client.BinRpcClient] - Interface CUxD not available, disabling support.
 2015-02-07 22:43:41.112 [INFO ] [.b.h.i.c.HomematicCommunicator] - Scheduling one datapoint reload job in 60 seconds
 2015-02-07 22:43:41.113 [INFO ] [.service.AbstractActiveService] - Homematic server keep alive thread has been started

Um nun den Fensterkontakt darzustellen müssen drei Dateien geändert werden.

Eine “Map” Datei in der die Umwandlung von den Zahlenwerten in Text definiert ist:

vi transform/fenster-kontakt.map
  0=Zu
  1=Offen
  -=UNKNOWN

Die Items Datei (address=seriennummer des Kontakts):

 vi items/demo.items
   Group   Fenster
   Number  Badezimmer_Fenster                      "Badezimer [MAP(fenster-kontakt.map):%d]" <contact>     (Fenster, Badezimmer)    {homematic="address=LEQ1058224, channel=1, parameter=STATE" }

Und natürlich die Sitemap in der der Kontakt dargestellt werden soll.

vi sitemaps/default.sitemap
Frame {
           ....
           ....
           ....
            Group item= Fenster {
                    Text item=Badezimmer_Fenster
            }
    }

Natürlich kommen hier noch weitere Darstellungen hinzu.

alternat-txt

Mit dem Binding Beispiel von hier bin ich mit dem Fensterkontakt nicht zum Ziel gekommen

Ein

   Number lrWindowRight "Window Right [MAP(contact.map):%d]" <contact> (gRLvng) { homematic="IEQ0203214:1#STATE" }

führte zu der Meldung

Binding configuration of type 'homematic' of item 'lrHeaterRight' could not be parsed correctly. org.openhab.model.item.binding.BindingConfigParseException: Each entry must have a key and a value
8.2.15
Weitere Beiträge zu: openhab   Homematic  

Statusänderungen an Openhab senden

Wenn man das hier beschriebene Script von der Kommandozeile aufruft wird zwar der Funkschalter entsprechend aufgerufen - nur leider "weiß" Openhab nichts davon das sich der Status geändert hat. Im Display ist der Status unverändert.

Erweitert man das in dem verlinkten Dokument beschriebene Shell Script um folgende Elemente werden solche Statusänderungen auch dem Openhab Server mitgeteilt und die "Lampen" ändern sich korrekt im Dashboard

ssh rp1 sudo send 10111 $1 $2
case "$1" in
        1) item="Light_GF_Living_Espresso" ;;
        2) item="Light_GF_Living_Schranklicht" ;;
        3) item="Light_GF_Garden_aussenlicht" ;;
        *) item="Light_GF_Garden_lichterkette" ;;
esac
case "$2" in
        1) status="ON" ;;
        0) status="OFF" ;;
esac
curl --header "Content-Type: text/plain" --request PUT --data "$status" http://w3:8080/rest/items/$item/state
10.2.14
Weitere Beiträge zu: openhab  

Erste Schritte mit OpenHab, Raspberry Pi und Funksteckdosen

Ich war auf der Suche nach einer Möglichkeit die Funksteckdosen, die ich über meinen Raspberry Pi ansprechen kann, über ein Webfrontend und meine mobilen Android und IOS Geräte zu steuern. Seit langem schon beobachte ich Lösungen zu Home Automation und dabei bin ich auf openhab gestossen. Da es dafür auch Schnittstellen für VDR, Asterisk und Sonos gibt müssten sich noch weitere Möglichkeiten ergeben.

Hier die Schritte.

mkdir openhab
cd openhab/
wget https://openhab.googlecode.com/files/openhab-runtime-1.2.0.zip
wget https://openhab.googlecode.com/files/openhab-addons-1.2.1.zip
unzip openhab-runtime-1.2.0.zip
cd configurations/
cp openhab_default.cfg openhab.cfg
cd ..
mv openhab-addons-1.2.1.zip addons/
cd addons/
unzip openhab-addons-1.2.1.zip
cd ..
wget https://openhab.googlecode.com/files/openhab-demo-1.2.0.zip
unzip openhab-demo-1.2.0.zip

Für meine kleine Konfiguration möchte ich zwei Steckdosen im Erdgeschoss ansteuern. Dazu muss ich zwei Dateien anpassen

vi demo.sitemap

sitemap demo label="Main Menu"
{ Frame 
   {Group item=GF_Living label="Erdgeschoss" icon="firstfloor"}
}

vi demo.items

Group GF_Living         "Wohnraum"      <video>         (gGF)
Switch Light_GF_Living_Espresso "Espresso"              (GF_Living )  { exec="ON:rpi-schalter.sh 1 1 , OFF:rpi-schalter.sh 1 0 " }
Switch Light_GF_Living_Schranklicht            "Schranklicht"                (GF_Living, Lights) { exec="ON:rpi-schalter.sh 2 1 , OFF:rpi-schalter.sh 2 0 " }

Das Program das die eigentlichen Kommando sendet logt sich auf dem Raspberry Pi

vi /usr/bin/rpi-schalter.sh
ssh rpi.caserio.de sudo send 10111 $1 $2

Im Browser und Android sieht das dann so aus.

201306-openhab-browser-1.png201306-openhab-browser-2.png

 

 

14.6.13
Weitere Beiträge zu: raspberrypi   openhab  

Dies ist ein privater Blog von Hagen Bauer- berufstätiger Vater, Ehemann, Naturliebhaber, Läufer, Zelter, technikverliebt.


Creative Commons License
This blog is licensed under a Creative Commons License