. Z-Wave – Smarthome

bookmark_borderTestbericht – Eurotronics Spirit

Bisher konnte jedes Problem mit einem Z-Wave Gerät gelöst werden. Sei es durch Hilfe im OpenHAB-Forum oder mit Hilfe des Herstellersupports. Mit dem Eurotronics Spirit sollte es jedoch nicht so sein.

Auf der Suche nach schicken Heizkörperthermostaten wurde ich vom einem Freund auf die Spirit Ventile gebracht und erste Berichte wie beispielsweise auf SiiO.de lasen sich auch sehr gut. Zunächst einmal ließ sich das Gerät auch problemlos in das Z-Wave Netz inkludieren und auch die kleine Antenne auf dem Display signalisierte empfang. Fix das Ventil mit den beiliegenden Adaptern an die Heizung geschraubt und nach kurzer Einrichtung konnte ich auch Temperatur etc. ändern. Leider ging am nächsten Tag schon nichts mehr. Nach vielem ausprobieren konnte ich feststellen, dass es wohl an fehlenden Nachbarn liegt. Nicht, dass es keine weiteren Z-Wave Geräte im Raum gibt, nein, das Spirit reportet einfach keine Nachbarn an den Controller, der somit das Gerät nicht zuverlässig erreichen kann, da die direkte Entfernung doch schon etwas größer ist. Fix an den Support gewendet, von dem jedoch nur eine sehr lapidare Antwort kam:

Der Z-Wave Controller verwaltet und pflegt die Routingtabelle seines Z-Wave Netzwerks. Bedeutet er weiß welche Geräte in seinem Funknetz sind und über welche Wege(andere Funkteilnehmer) man diese erreichen kann.

Beim Hinzufügen in ein Z-Wave Netzwerk veranlasst der Z-Wave Controller, dass das neue Gerät in seiner Nachbarschaft prüft welche Geräte erreichbar sind. Der Z-Wave Controller aktualisiert dann entsprechend seine Routingtabelle. Warum das hier nicht korrekt klappt können wir Ihnen leider nicht beantworten.

Ok, das war mir durchaus bekannt, aber das Gerät meldet einfach keine Nachbarn auch nach mehrmaliger Aufforderung durch den Controller. Wohl bemerkt, die 3 anderen Geräte von Popp und Aeotec finden jede Menge Nachbarn, bis auf das Spirit natürlich…

Der Support reagierte auch leider nicht mehr auf weitere Rückfragen. Andere Nutzer in der OpenHAB Community konnten das Verhalten ebenfalls nachvollziehen und somit habe ich mich entschlossen meine beiden Spirit zurückzusenden, was zum Glück mit dem freundlichen Support von Notebooksbilliger trotz Überschreitung des 14-tägigen Rückgaberechts kein Problem war.

Schade nur, dass das wirklich schicke und ansonsten auch ordentlich verarbeitete Gerät dieses Problem hat.

 

bookmark_borderOpenHAB2 – Überwachung der Waschmaschine

Meine Ausgangssituation ist eine Waschmaschine, welche im Keller steht. Keiner möchte mehrmals hinlaufen um festzustellen ob der Waschvorgang abgeschlossen ist.

Was wird benötigt? Im Endeffekt nur eine Schaltsteckdose mit Energiemessfunktion die auch die Leistung der Waschmaschine verträgt. In meinem Fall habe ich nun eine Devolo Home Control Schaltsteckdose/Messsteckdose 2.0 im Einsatz welche bis zu 3000 Watt verträgt. Zunächst wollte ich einen Aeon Smart Switch 6 verwenden, welcher jedoch eine schlechte Funkreichweite und somit leider hinter der Waschmaschine nicht funktioniert hat.

Folgende Items habe ich angelegt:

Switch  SD3_on       "WaMa Steckdose"               {channel="zwave:xxx:switch_binary"}
Number  SD3_kwh      "Verbrauch Gesamt [%.2f kWh]"  {channel="zwave:xxx:meter_kwh"}	
Number  SD3_volt     "Spannung [%.0f Volt]"	    {channel="zwave:xxx:meter_voltage"}	
Number  SD3_watt     "Leistung [%.1f Watt]"	    {channel="zwave:xxx:meter_watts"}
Number  SD3_kwh_akt  "Verbrauch aktuell [%.2f kWh]"
Number  SD3_kwh_save "Verbrauch Speicher [%.2f kWh]"	

Da meter_reset aktuell noch nicht implementiert ist habe ich mit mit SD3_kwh_akt und SD3_kwh_save eine Krücke gebaut und speichere beim Einschalten den bisherigen Gesamtverbrauch aus SD3_kwh in die save Variable und berechne bei jeder Änderung von SD3_kwh die akt Variable. Dazu dienen die folgenden Regeln:

rule "WaMa Verbrauchsdaten 1"
  when 
    Item SD3_on changed from OFF to ON
  then
    SD3_kwh_save.postUpdate(SD3_kwh.state)
    SD3_kwh_akt.postUpdate(0.0)
end

rule "WaMa Verbrauchsdaten 2"
  when 
    Item SD3_kwh changed
  then
    SD3_kwh_akt.postUpdate((SD3_kwh.state as DecimalType).doubleValue  - (SD3_kwh_save.state as DecimalType).doubleValue)
end

Für die eigentliche Regel musste ich zunächst den Standby Verbrauch der Waschmaschine ermitteln. Dieser liegt bei mir bei ca. 1,2 Watt, weshalb ich die Schwelle ab der die Waschmaschine als fertig erkannt wird auf 2 Watt festgelegt habe.  Die Regel wird natürlich bei jeder Änderung der Wattzahl ausgeführt. Wenn die Steckdose an, der Timer WAMAoff null und die aktuelle Leistung in Watt kleiner als der Schwellwert (2.0 Watt) ist, so wird ein Timer erzeugt. Der Timer läuft 5 Minuten, damit etwaige Pause der Waschmaschine die Benachrichtigung nicht auslösen und auch das Finale freigeben der Tür am Ende des Waschgangs erfolgt ist. Steig der Energieverbrauch wieder an während der Timer noch läuft, so wird der Timer gecancelt und auf den Initialwert null gesetzt.

Sobald der Timer abgelaufen ist wird die Schaltsteckdose ausgeschaltet, die Lautstärke der Sonos auf 40% gestellt und ein Text, welcher auch die benötigte Energie in kWh enthält über die Sonos ausgegeben. Schlussendlich noch eine Push Nachricht auf die Handys, falls gerade niemand die Sprachausgabe hört.

var Timer WAMAoff = null

rule "WaMa"
  when 
    Item SD3_watt changed
  then
    if (SD3_on.state == ON && SD3_watt.state < 2.0 && WAMAoff == null) {
      logWarn("Waschmaschine","Set Timer")
      WAMAoff = createTimer(now.plusMinutes(5), [|
        logWarn("Waschmaschine","aus")
        sendCommand(SD3_on, OFF)
        sendCommand(SON_volinfo, 40)
        say("Die Waschmaschine ist fertig und hat" + (SD3_kwh_akt.state as DecimalType).doubleValue.toString.replaceAll("\\.",",") + "Kilowattstunden verbraucht")
        sendBroadcastNotification("Waschmaschine fertig")
        ])		
    }
    if (SD3_on.state == ON && SD3_watt.state > 2.0 && WAMAoff != null) {
        logWarn("Waschmaschine","Reset Timer")
        WAMAoff.cancel
        WAMAoff = null
    }
end

Nun ist abwarten und Tee trinken angesagt ob sich die Regel auch bewährt.

bookmark_borderOpenHAB2 und Sonos – Projekt Frühstücksradio

Wäre es nicht schön, wenn morgens auf dem Weg zum Frühstückstisch das Radio automatisch angeht? Was für eine Frage. Natürlich wäre es das. Beschlossene Sache und los geht es. Zunächst muss also Sonos Binding installiert werden um die Sonos Box dann über die Inbox als „Thing“ hinzuzufügen. Danach legen wir das Volume und das Playuri item an. Über das Volume Item setzen wir später die Wunschlautstärke, dass die Musik uns nicht gleich umhaut falls z.B. am Abend vorher Musik auch etwas lauter gehört wurde. Über das Playuri Item setzen wir den Radio-Stream. Es gibt auch ein Radio Item aber damit wollte es bei mir nicht klappen.

//Sonos Wohnzimmer
Dimmer  SON_vol   "Volume [%.1f %%]" soundvolume>   (gSonos)	{channel="sonos:PLAY1:RINCON_XXX:volume"}
String  SON_uri		                                        {channel="sonos:PLAY1:RINCON_XXX:playuri"}

Nun fehlt nur noch die passende Regel.

var Timer SONRun = null
rule "Fruehstuecksradio"
   when
    Item MS1_mot changed from OFF to ON
   then
    if(SONRun == null && (now.getHourOfDay() >= 6 && now.getHourOfDay() < 9)){
      logWarn("Fruehstuecksradio", "Trigger!")
      sendCommand(SON_vol, 16)
      sendCommand(SON_uri, "x-rincon-mp3radio://http://sr.audiostream.io/sr/1009/mp3/128/sr1")
      SONRun = createTimer(now.plusHours(4), [|logWarn("Fruehstuecksradio","Timer Off")])	
    }
    else {
      logWarn("Fruehstuecksradio", "Job already done")
    }
end

Grundsätzlich würde es reichen, wenn die Box loslegt sobald mein Bewegungsmelder (MS1_mot) im Wohnzimmer auslöst und die aktuelle Uhrzeit in einem gewissen Bereich wie hier z.B. 6 und 9 Uhr liegt. Dies hätte aber zur Folge, dass es quasi nicht möglich ist die Box in dieser Zeit wieder stumm zu bekommen oder etwas anderes zu hören, da jede erneute Bewegung das Radio startet. Deshalb definiere ich den Timer SONRun. Dieser wird beim Auslösen auf 4 Stunden gestellt und erst wenn der Timer abgelaufen kann die Regel erneut ausgeführt werden. Da der Timer länger läuft als der mögliche Auslösezeitraum groß ist kann das Radio somit nur einmal gestartet werden.

bookmark_borderZ-Wave Versuchsaufbau – Aeotec Multi Sensor 6

Der Multisensor ist das zentrale Element in meinem Versuchsaufbau. Er liefert mir Temperatur, Luftfeuchte, Helligkeit sowie einen UV-Index. Den UV-Index lasse ich im weiteren Verlauf einmal unter den Tisch fallen, da ich dafür noch keine Verwendung habe.

Sensor

Temperatur, Feuchtigkeit und Helligkeit habe ich an die openHAB rd4j-Persistenz gekoppelt und erhalte somit mehr oder weniger schöne Graphen. Die Persistenz hat den Vorteil, dass nur sehr wenig Speicherplatz benötigt wird, dazu aber in einem späteren Artikel mehr. Hier seht ihr nun das Ergebnis welches sich ohne großen Aufwand erzeugen lässt:

Graphen

Das Coding dazu sieht wie folgt aus:

Chart item=Sensor_Living_Temp service=rrd4j period=D refresh=30000
Chart item=Sensor_Living_Hum service=rrd4j period=D refresh=30000
Chart item=Sensor_Living_Lum service=rrd4j period=D refresh=30000

Wie gesagt, es gibt deutlich ansprechendere Lösungen aber für meinen ersten Test ist es völlig ausreichend. Man muss lediglich das Item benennen, den Service (zumindest, wenn man mehr als eine Persistenz aktiv hat), die Periode sowie das Aktualisierungsintervall. Die Messwerte habe ich für Temperatur und Feuchte mit zwei anderen Wetterstationen abgeglichen und die Werte passen im Rahmen einer gewissen Toleranz. Man darf nicht vergessen, dass die relative Luftfeuchte in Relation zur gemessenen Temperatur steht und auch dadurch Abweichungen zu Stande kommen.

Des Weiteren ist die Bewegungserkennung für mich von zentraler Bedeutung. Hiermit schalte ich eine Schaltsteckdose mit angeschlossener Lampe sobald die Helligkeit unter einen gewissen Schwellwert (es haben sich 4 Lux bewährt) fällt. Darüber hinaus ist der Bewegungsmelder auch für die Aktivierung des Alarms bei scharf geschalteter Alarmanlage verantwortlich. Die Bewegungserkennung ist für einen solch günstigen Multisensor sehr gut. Man muss wie immer bei PIR-Bewegungsmelder darauf achten, dass diese nicht in der Nähe einer Wärmequelle angebracht werden und auch Wärmequellen im Raum Bewegungen überlagern können. Dies ist aber Systembedingt und kein Nachteil des Produkts.

Alles in allem ein sehr zuverlässiger Sensor den ich aktuell per USB mit Strom versorge weshalb ich leider nichts zur Batterielebensdauer sagen kann.

bookmark_borderRaZberry – Firmware Update

Mein heutiges Thema dreht sich rund um die Aktualisierung der Firmware auf dem RaZberry Board. Eigentlich ist dies ganz einfach und auch schnell erledigt, sobald man weiß was zu tun ist. Zunächst einmal bringen wir alles auf den aktuellen Stand. Bei mir musste ich danach die OpenHAB Bindings wieder nachinstallieren, was aber Problemlos über die PaperUI zu machen ist.

sudo apt-get updat
sudo apt-get upgrade

Danach widmen wir uns dem eigentlichen Thema. Dazu stoppen wir OpenHAB und starten den RaZberry Z Way Service

sudo systemctl stop openhab2.service
sudo systemctl start z-way-server

Hier wählen wir uns dann mit dem während der Installation erstellten Passwort ein oder erstellen ein neues Passwort (IP des Raspberry und Port 8083). Dann klicken wir oben rechts auf das Zahnrad (Configuration), dann Devices und in der Zeile Z-Wave auf Manage with Expert UI. Dort können wir dann unter Configuration das Update durchführen. Dies lief bei mir problemlos. Sind wir fertig, so stoppen wir den Z Way Service und starten einmal durch. OpenHAB sollte wieder automatisch starten da es ja im Autostart ist, zumindest, wenn Ihr nach meiner Installationsanleitung vorgegangen seid.

sudo systemctl stop z-way-server
sudo shutdown -r now

 

bookmark_borderZ-Wave Versuchsaufbau

In meinem heutigen Artikel möchte ich euch einmal kurz meinen Versuchsaufbau beschreiben.

Ursprünglich hatte ich den Fibaro Rauchmelder sowie den passenden Multi Sensor von Fibaro. Die Kaufentscheidung hatte ich auf Grund des Designs getroffen, was sich dann leider schnell rächte. Der Multisensor ließ sich zunächst ganz einfach mit dem Controller verbinden, da ich aber aus anderen Gründen den Controller resetten musste und so anschließend den Sensor wieder anlernen wollte war es jedoch vorbei mit der schönen heilen Welt. Trotz mehrfachen Reset des Sensors wollte er sich einfach nicht mehr mit meinem Controller verbinden, er wurde lediglich als unbekanntes Gerät angezeigt. Dies hat mich einiges an Nerven gekostet und hat mich fast dazu bewegt meine Z-Wave Experimente ad Acta zu legen. Bestärkt wurde dies durch den Fibaro Rauchmelder, welcher sich noch nicht mal in den „pairing Mode“ versetzen lies. Gut, so habe ich die Komponenten zurückgeschickt und mich ein paar Tage später dazu durchgerungen doch nochmal einen Anlauf zu nehmen und diesmal auf den Popp Rauchmelder sowie den Aeotec Multi Sensor zu setzen.

Was wollte ich nun mit meinem minimalen Versuchsaufbau alles bezwecken.

  1. Der Multi Sensor soll mir erstmal alle Standardwerte wie Helligkeit, Temperatur, Luftfeuchte liefern. Darüber hinaus erfasst er natürlich auch wenn sich vor seiner Linse etwas bewegt.
  2. Der Micro Smart Plug dient dazu eine Lampe zu schalten, es muss sich ja auch was tun, wenn ich mit dem Multi Sensor schon so tolle Werte wie Helligkeit und Bewegungserkennung habe.
  3. Eine Alarmierung, wenn jemand sich Zugang zu meiner Wohnung verschafft wäre darüber hinaus auch sehr toll. Damit er sich auch noch etwas erschrickt dient der Rauchmelder als Sirene.
  4. Darüber hinaus möchte ich auch auf meinem Handy alarmiert werden wenn sich in Sachen Feuer oder Einbruchsalarm etwas tut.

Mehr zu den einzelnen Teilbereichen gibt es dann bald zu lesen.

bookmark_borderopenHAB2 – Z-Wave Binding und HABmin

In diesem Artikel geht es darum das Z-Wave Binding sowie HABmin zu installieren. Dies ist mit OpenHAB2 und der PaperUI sehr einfach, wenn ihr die Installation wie zuvor von mir beschrieben durchgeführt habt.

Zunächst einmal geben wir im Browser http://raspberrypi:8080 ein wodurch die Startseite von OH2 geöffnet wird. Danach klicken wir auf Paper UI. Ich stelle das User Interface ganz gerne auf Deutsch, es ist zwar noch so gut wie nichts übersetzt, aber ich mache es trotzdem. Das geht unter Preferences.

Ist dies geschehen klicken wir auf Extensions (Ihr merkt, gut übersetzet 🙂 ) wo wir dann unter Bindings ganz unten das Z-Wave Binding finden und es installieren. Danach müssen wir den Controller hinzufügen. Dazu gehen wir auf die Inbox und klicken auf „+“, dann auf „Z-Wave Binding“ und schließlich auf „Z-Wave Serial Controller“. Hier müssen wir den Port „/dev/ttyAMA0“ angeben damit unser RaZBerry Board zugeordnet wird.

Danach installieren wir HABmin (Extensions->User Interfaces). Sobald der HABmin installiert ist findet man ihn auf der Startseite (http://raspberrypi:8080).

Quellen:

bookmark_borderRaZberry – openHAB 2 & Z-Wave.Me auf dem Raspberry

Nachdem es mich einige Zeit gekostet hat den Raspberry inklusive des RaZberry Moduls und OpenHAB 2 ans Laufen zu bringen möchte ich nun zusammenfassend beschreiben wie ich vorgegangen bin. Die einzelnen Webseiten auf denen ich die Infos gefunden habe sind weiter unten verlinkt.

Los geht es also mit meinem Raspberry Pi 2 der mit einer 8GB SD-Karte mit Raspbian ausgestattet ist. Für neue Installationen sollten die folgenden Punkte entweder über (sudo) raspi-config oder über die GUI eingestellt werden:

  • Tastaturlayout anpassen
  • Sprache anpassen
  • Zeitzone anpassen
  • SSH aktivieren
  • Den Autostart der GUI deaktivieren

Initial muss die Z-Wave.me Software installiert werden, da sonst später der Zugriff auf den Controller nicht funktioniert. Wenn jemand eine andere Lösung hat würde ich mich sehr über eine Info freuen.

sudo wget -q -O - https://storage.z-wave.me/RaspbianInstall | sudo bash

Dann entfernen wir die Software aus dem Autostart und starten den Pi einmal durch. Wer möchte vorher auch einmal die Software starten. Diese ist unter der IP eures Raspberry am Port 8083 erreichbar. Hier muss beim ersten Mal ein Passwort vergeben werden, das man sich am besten notiert. Man benötigt die Software z.B., wenn man ein Firmware Update des Boards durchführen möchte.

sudo systemctl disable z-way-server
sudo shutdown -r now

Nun bringen wir alles auf den neusten Stand und installieren ein paar praktische/benötigte Pakete.

sudo apt-get updat
sudo apt-get upgrade

sudo apt-get install screen mc vim git htop apt-transport-https

Normalerweise ist Java installiert, falls nicht muss es nachinstalliert werden. Im Zweifel einfach die Installation starten.

sudo apt-get install oracle-java8-jdk

Dann kann es losgehen mit openHAB 2. Ich installiere hier das online Snapshot Release um die an neuen Entwicklungen zu partizipieren, wenn man eine produktiv genutzte Lösung aufbauen will ist OH2 sowieso noch mit Vorsicht zu genießen (OH2 ist mitlerweile offiziell und keine Beta mehr). Hier gehen wir für die Tests auf den Snapshot. Online heißt, dass nicht gleich alles in der Installation enthalten ist und im Bedarfsfall nachgeladen wird. Zunächst einmal machen wir OH2 für den Paketmanager verfügbar:

sudo nano /etc/apt/sources.list.d/openhab2.list

Im Texteditor tragen wir dann die folgenden Zeilen ein und speichern die Datei.

deb https://dl.bintray.com/openhab/apt-repo2 stable main

Dann brauchen wir noch den Repository Key.

wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -

Updaten die Pakete.

sudo apt-get update

und installieren die online Version des Snapshots

sudo apt-get install openhab2

Nun müssen wir dem User openhab noch Zugriff auf das RaZberry Board gewähren

sudo usermod -a -G tty openhab
sudo usermod -a -G dialout openhab

Damit der Port für unseren Z-Wave Controller zur Verfügung steht setzen wir noch die Umgebungsvariable. Dazu öffnen wir nano:

sudo nano /etc/default/openhab2

In der Datei steht bereits folgendes:

EXTRA_JAVA_OPTS=""

und wir machen daraus

EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0"

Danach starten wir einmal durch.

sudo shutdown -r now

OpenHAB2 kann dann mit den folgenden Befehlen gestartet oder beendet werden

sudo systemctl start openhab2.service
sudo systemctl status openhab2.service

Oder einfach in den Autostart aufgenommen werden

sudo systemctl enable openhab2.service

Nachdem ihr OH2 gestartet habt ist es über http://raspberrypi:8080 erreichbar. Achtung, der erste Start kann etwas dauern. Damit ist das initiale Setup abgeschlossen. Mehr zum weiteren Vorgehen folgt in einem meiner nächsten Posts

Nachtrag:

Es gibt auch noch eine alternative Lösung mit dem Z-Way Binding welches Openhab mit der Z-Way Software verbindet. Dies habe ich jedoch nicht getestet. Alle Infos dazu findet ihr hier.

Quellen: