openHAB 2.5

Der Release der SmartHome-Software openHAB 2.5 steht in den Startlöchern. Über die neuen Funktionen der Version 2.5 habe ihc nur einen DRAFT der Release Notes gefunden (dort stehen aber aktuell nur die „Breaking Changes“ beschrieben).

Aktuell gibt es den Milestone 6 (M6) zum herunterladen.

Die Planung der Veröffentlichung sieht den 15.12.2019 als Termin vor. Am 08.12.2019 soll der RC1 erscheinen.

Hat jemand schon eine Aktualisierung auf die Testversionen 2.5 durchgeführt? Welche neuen Funktionen sind enthalten?

Steuerung der Weihnachtsbeleuchtung mit openHAB 2.4

Hier hatte ich 2016 schon einmal beschrieben wie ich über EIB / KNX und damals über Mr. House einfach die Weihnachtsbeleuchtung automatisiert habe. Mittlerweile sind ein paar mehr Steckdosen im Haus und außerhalb notwendig. Auch wurde das System von Mr. House auf openHAB portiert.

In vorherigen Artikeln hatte ich beschrieben für was ich EIB-Steckdosen und warum ich MQTT-Steckdosen nutze. Eine übergreifende Steuerung der verschiedenen Technologien habe ich einfach per Uhrzeit mit folgender Regel erstellt:

rule "Weihnachtsbeleuchtung Morgen Ein"
    when
        Time cron "0 30 5 * * ?"
    then

        Steckdose_Garage_xxx.sendCommand(ON)

        actions.publishMQTT("cmnd/sonoff-111111/POWER","ON")    // Büro
        actions.publishMQTT("cmnd/sonoff-222222/POWER","ON")    // Wohnzimmer
        actions.publishMQTT("cmnd/sonoff-333333/POWER","ON")    // Bad
        
        logInfo("INFO","Weihnachtsbeleuchtung eingeschalten")
end

rule "Weihnachtsbeleuchtung Morgen Aus"
    when
        Time cron "0 0 8 * * ?"
    then
        Steckdose_Garage_xxx.sendCommand(OFF)

        actions.publishMQTT("cmnd/sonoff-111111/POWER","OFF")
        actions.publishMQTT("cmnd/sonoff-222222/POWER","OFF")
        actions.publishMQTT("cmnd/sonoff-333333/POWER","OFF")

        logInfo("INFO","Weihnachtsbeleuchtung ausgeschalten")
end

rule "Weihnachtsbeleuchtung Abend Ein"
    when
        Time cron "0 0 17 * * ?"
    then
        Steckdose_Garage_xxx.sendCommand(ON)

        actions.publishMQTT("cmnd/sonoff-111111/POWER","ON")
        actions.publishMQTT("cmnd/sonoff-222222/POWER","ON")
        actions.publishMQTT("cmnd/sonoff-333333/POWER","ON")
        
        logInfo("INFO","Weihnachtsbeleuchtung eingeschalten")
end

rule "Weihnachtsbeleuchtung Abend Aus"
    when
        Time cron "0 0 22 * * ?"
    then
        Steckdose_Garage_xxx.sendCommand(OFF)

        actions.publishMQTT("cmnd/sonoff-111111/POWER","OFF")
        actions.publishMQTT("cmnd/sonoff-222222/POWER","OFF")
        actions.publishMQTT("cmnd/sonoff-333333/POWER","OFF")

        logInfo("INFO","Weihnachtsbeleuchtung ausgeschalten")
end
Hier sieht man wie die EIB-Steckdose außen an der Garage und die In-House MQTT-Steckdosen von 05:30 – 08:00 Uhr und von 17:00 – 22:00 Uhr eingeschalten werden. Die Regel könnte natürlich noch um Astronomische Werte wie z.B. Sonnenaufgang oder Sonnenuntergang ergänzt werden.
Welche Regeln nutzt Ihr noch in eurem SmartHome? Habt Ihr noch Ideen zur Ergänzung?

Alle SmartHome-Geräte in der Alexa-App löschen

Aus irgendeinem Grund waren alle SmartHome-Geräte aus OpenHAB in meiner Alexa-App mehr als einmal (eher 3 x) vorhanden. Dadurch konnten alle Alexa-Devices nicht mehr auf die Haussteuerung zugreifen. Das ist natürlich ein blödes Szenario 🙂

Als ich gerade die schöne Alexa-Smartphone-App (unter Android) gesehen habe, habe ich festgestellt das man Elemente nur einfach löschen kann und nicht mehrere bzw. alle Elemente auf einmal. Das ist beim Löschen von 200 der 300 Geräte bei einem sehr aufwändig gestalteten Löschdialog keine sehr schöne Aufgabe.

Wenn Ihr ein ähnliches Problem habt, schaut euch mal den Link bim hueblog.de an. Der Lösungsansatz dort ist sich bei https://alexa.amazon.de anzumelden und das Löschen dort durchzuführen. Im Web-Client gibt es die Option „Alle verwerfen“ und genau diesen Punkt gibt es in der App nicht 🙂

Audio Station Skill für Amazon Alexa und Abspielen lokaler Medien

Hier gab es den Hinweis, das nach langem Warten nun der Audio Station Skill von Synology für Amazon Alexa verfügbar ist. Ich hatte dort beschrieben wie man man „My Media for Amazon Alexa“ auf seine lokale Musik des Synology NAS zugreifen kann.

Nun ist der Audio Station Skill für die Synology auch in Deutscher Sprache lokalisiert worden – https://www.amazon.de/Synology-Inc-Audio-Station/dp/B076PBX4LL

Eingerichtet ist der Skill sehr schnell und damit per Sprachsteuerung auch der Zugriff einfach möglich. Ein paar mehr Details werden hier beschrieben – Audio Station Skill auf Amazon Alexa aktivieren

Informationssammlung zu Mini-PV-Anlagen

Ich überlege schon länger für unser Haus eine Mini-PV-Anlage zu kaufen und damit den Stand-By-Verbrauch des Stroms im Haushalt per Sonnenenergie eigenständig zu erzeugen.

Bei siio.de habe ich eine ganz interessante Artikelserie gefunden, die sich mit dem Thema Mini-PV-Anlagen beschäftigt.

Im Artikel Balkonkraftwerk: die Mini-PV Anlage kommt, bald! werden die Grundlagen beschrieben z.B. ein kleiner Anbietervergleich, Watt vs. wpeak, Beispiel- und Amortisationsrechnung.

Im zweiten Artikel Projekt Mini-PV: Endlich Strom selber ernten erhält man mehr Informationen über den Aufbau und die ersten Tests einer Mini-PV-Anlage.

Im dritten Teil der Serie erfährt man, wie eine komplette Monate auf dem Dach erfolgen kann – Aufs Dach gestiegen – die Mini PV Anlage ist montiert.

Meine nächsten Überlegungen

Ich müsste mir für unsere eigene Anlage erst einmal einen vernünftigen Ort zur Montage suchen. Aber wo hat man die größte „Sonnenausbeute“? Auf dem Flachdach der Garage? Auf der Südseite des Hausdachs? Oder am Geländer der Terrasse?

Außerdem müsste ich erst einmal den genauen Stand-By-Verbrauch unseres Hauses messen (eine grobe Tendenz hätte ich, da ich die Hauptverbraucher bereits ermittelt habe).

Was mich aber immer noch von dem Vorhaben abhält ist, dass der Stromzähler bei uns getauscht werden und ich die Mini-PV-Anlage erst einmal beantragen muss.

Eure Erfahrungen

Hat von euch jemand Erfahrungen mit Mini-PV-Anlagen? Bei welchem Verbrauch habt Ihr euch eine Anlage zugelegt? Wie groß habt Ihr die Anlage bemessen?

Lokale Musik (Synology) mit Amazon Echo Geräten (Alexa) abspielen

Ich hatte hier schon vor längerer Zeit geschrieben, dass ich gerne meine lokale Musiksammlung von einem Synology-NAS auf Amazon Echo Geräten abspielen möchte.

Mein Favorit war die direkte Integration der Synology Audio Station mit einem Alexa-Skill um die Musiksammlung auszugeben. Leider ist der Skill zwei Jahre später nur in Englisch möglich und kann auf deutschen Amazon-Konten nicht aktiviert werden. Auch zahlreiche Rückfragen bei Synology haben keinen genauen Termin oder Zeitplan ergeben.

Da ich aber jetzt nicht länger warten wollte, habe ich mir die Alternative My Media for Amazon Alexa angesehen. Der Medienserver kann aber nur 7 Tage kostenlos getestet werden und dann ist eine Subscription von 5 Euro pro Jahr notwendig (abhängig von den Anforderungen). Dieses Modell finde ich für den Test und für den Funktionsumfang aber sehr fair.

In dem Artikel beschreibe ich, wie ich das System auf meiner Synology Diskstation installiert und konfiguriert habe.

Docker und Synology

Die My Media for Alexa Applikation ist leider nicht direkt auf der Synology Diskstation als Paket vorhanden und kann aber per Docker eingebunden werden. Damit kann ich auch gleich mal die Virtualisierung der Container über dem NAS testen. 😉

Folgende Schritte habe ich durchgeführt:

  • Anmeldung an der Synology DSM Adminoberfläche
  • Öffnen das Paket-Zentrums und dort das Paket Docker – INSTALLIEREN
  • Das Docker-Paket starten und öffnen
  • Das Register „Registrierung“ öffnen und dort nach „mymediaforalexa“ im Docker Hub suchen
  • Den Download „bizmodeller/mymediaforalexa“ (latest) per DOWNLOAD durchführen
  • Auf das Register „Abbild“ gehen und den Container konfigurieren (ich habe den Docker im gleichen Netzwerk wie meinen Host aktiviert und auch die Freigabe auf meinen Musik-Ordner lesend hinzugefügt)
  • Dann habe ich in meiner Firewall den Port 52051 entsprechend für die Verwendung freigegeben
  • Der Container wird dann entsprechend gestartet

Jetzt kann per http://IP:52051 die Applikation gestartet werden.

Konfiguration „My Media for Amazon Alexa“

Folgende Schritte habe ich dann im Medien-Server durchgeführt:

  • Nach dem Start der Admin-Oberfläche wird der Wizard gestartet und man kann die Lizenzbedingungen akzeptieren
  • Danach erfolgt eine Anmeldung am Amazon-Account und man muss den Zugriff von „My Media“ akzeptieren
  • Jetzt kann man unter https://alexa.amazon.de den Skill für seine Echo-Geräte aktivieren
  • Optional kann man jetzt Demo-Medien herunterladen und verwenden oder man greift direkt auf seinen gemounteten Ordner auf dem Synology-NAS zu
  • Im Register „Watch Folder“ kann man nun über „Add Folder“ seine Medien hinzufügen und dann werden diese Indexiert
  • In den Settings habe ich dann noch den Media Server Label etwas sprechender für das Netzwerk / DLNA angepasst

Das Indexieren der Audio-Dateien dauert etwas (abhängig von der Anzahl). Eine einfache Konfiguration ist damit abgeschlossen.

Verwendung mit dem Sprachassistenten

Alle möglichen Kommandos sind auf dieser Seite in Deutsch beschrieben.

Ich habe folgende Kommandos für den ersten Test verwendet:

  • Alexa, frage Meine Medien und spiele das Album „xxx“
  • Alexa, frage Meine Medien und spiele den Artist „xxx“
  • Alexa, frage Meine Medien und spiele die Playlist „xxx“
  • Alexa, (frage Meine Medien) weiter
  • Alexa, (frage Meine Medien) stop
  • Alexa, frage Meine Medien was gerade läuft

Damit kann ich meine lokale Musik komplett per Sprache aufrufen und bedienen.

Fazit

Mit der My Media for Amazon Alexa kann ich relativ einfach auf die Musik in meinem lokalen NAS zugreifen. Die Installation und Basiskonfiguration ist recht einfach möglich.

Ich werde jetzt diese Woche noch einmal testen und wenn es gut funktioniert eine Basismitgliedschaft für 5 Euro im Jahr abschließen.

Habt Ihr Erfahrungen mit dem Skill und der Applikation gemacht? Was nutzt Ihr für das lokale Streaming von Musik mit Alexa zur Sprachsteuerung?

Integration Sonoff S20 mit Tasmota in openHAB

In diesem Beitrag habe ich beschrieben wie eine MQTT-Infrastruktur mit openHAB 2.4 aussehen kann. Jetzt sind Sonoff S20 Steckdosen als Geräte vorhanden und wurden mit Tasmota MQTT-fähig gemacht.

Jetzt müssen natürlich die Steckdosen vorbereitend für Weihnachten 2019 auch in openHAB integriert werden 🙂

Weiterführende Informationen

Ein Beispiel für die Anbindung an MQTT mit openHAB 2.4 findet man im  Tasmota-Wiki. Dort wird der alte Weg und die neue Variante mit openHAB 2.4 grob beschrieben.

Die generelle MQTT-Architektur in openHAB 1 / 2 könnt Ihr hier nachlesen. Damit hat man schon einmal etwas Basiswissen über die Systemarchitektur.

Ein kleines Beispiel für die Integration von Sonoff S20 mit Tasmota-Firmware habe ich im openHAB-Forum gefunden. Recht ähnlich habe ich dann meine Konfiguration aufgebaut.

Genereller Aufbau

Da ich bereits openHAB 2.4 verwende, benutze ich MQTT v2 als „Binding“. Ich gehe nicht mehr auf die Unterschiede der beiden Versionen ein.

Jedes physikalische vorhandene Sonoff-Gerät wird als ein Thing definiert. Am Thing wird auch die Verbindung zum MQTT-Broker hinterelegt. Außerdem werden am Thing die notwendigen Channels z.B. POWER zum schalten parametriert.

Anschließend wird am Item definiert das auf den Channel zugreift. Am Schluss wird alle in der Sitemap visualisiert und optional in Regeln automatisiert.

things-Datei

In der Things-Datei wird nun die Bridge zum MQTT-Broker und die Things incl. Channels wie folgt definiert:

Bridge mqtt:broker:myMQTTBroker [
host="xxx.xxx.xxx.xxx",
secure=false,
username="xxx",
password="xxx" ,
clientID="myMQTTClient"
]
{
Thing topic Sonoff_xxx_xxx "Sonoff - xxx-5778" @ "MQTT" {
Channels:
Type switch : PowerSwitch "Power Switch 01" [ stateTopic="stat/sonoff-xxx/POWER", commandTopic="cmnd/sonoff-xxx/POWER", on="ON", off="OFF" ]
Type switch : PowerSwitchRes "Switch State 01" [ stateTopic="stat/sonoff-xxx/RESULT", transformationPattern="JSONPATH:$.POWER",on="ON",off="OFF"]
Type string : Version "Version 01" [ stateTopic="tele/sonoff-xxx/INFO1", transformationPattern="JSONPATH:$.Version"]
Type string : fallback "fallback topic" [ stateTopic="tele/sonoff-xxx/INFO1", transformationPattern="JSONPATH:$.FallbackTopic"]
Type string : hostname "hostname " [ stateTopic="tele/sonoff-xxx/INFO2", transformationPattern="JSONPATH:$.Hostname"]
Type string : IP "IP " [ stateTopic="tele/sonoff-xxx/INFO2", transformationPattern="JSONPATH:$.IPAddress"]
Type string : time "Time" [ stateTopic="tele/sonoff-xxx/STATE", transformationPattern="JSONPATH:$.Time" ]
Type string : uptime "Uptime" [ stateTopic="tele/sonoff-xxx/STATE", transformationPattern="JSONPATH:$.Uptime" ]
Type number : vcc "VCC" [ stateTopic="tele/sonoff-xxx/STATE", transformationPattern="JSONPATH:$.Vcc" ]
Type string : wifi-ap "Wifi AP" [ stateTopic="tele/sonoff-xxx/STATE", transformationPattern="JSONPATH:$.Wifi.AP" ]
Type string : wifi-ssid "Wifi SSID" [ stateTopic="tele/sonoff-xxx/STATE", transformationPattern="JSONPATH:$.Wifi.SSId" ]
Type string : wifi-channel "Wifi Channel" [ stateTopic="tele/sonoff-xxx/STATE", transformationPattern="JSONPATH:$.Wifi.Channel" ]
Type string : wifi-rssi "Wifi RSSI" [ stateTopic="tele/sonoff-xxx/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI" ]
Type string : devicestate "Device State" [ stateTopic="tele/sonoff-xxx/LWT" ]
}

items-Datei

Die Items werden wie folgt aufgebaut:

/************************************************** Gruppen ********************************************/
Group gSonoffSw1 "Sonoff S20 01"
Group gSonoffSw1Info "Info 01"
Group gSonoffSw2 "Sonoff S20 02"
Group gSonoffSw2Info "Info 02"
/************************************************** Items ********************************************/
/*
Sonoff_xxx_xxx
*/
Switch SonoffPs01Switch_Switch       "Switch 01"      (gSonoffSw1) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:PowerSwitch" }
Switch SonoffPs01Switch_State        "State 01" (gSonoffSw1) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:PowerSwitchRes"}
Number SonoffPs01Switch_Vcc          "VCC [%s]"          (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:vcc" }
String SonoffPs01Switch_WifiAp       "Wifi AP [%s]"      (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:wifi-ap" }
String SonoffPs01Switch_WifiSsid     "Wifi SSID [%s]"    (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:wifi-ssid" }
String SonoffPs01Switch_WifiChannel "Wifi Channel [%s]" (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:wifi-channel" }
String SonoffPs01Switch_WifiRssi     "Wifi RSSI [%s]"    (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:wifi-rssi" }
String SonoffPs01Switch_Uptime       "Uptime"         (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:uptime" }
String SonoffPs01Switch_Time         "Time"       (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:time" }
String SonoffPs01Switch_Version         "Version [%s]" (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:Version" }
String SonoffPs01Switch_Hostname     "Hostname [%s]"     (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:hostname" }
String SonoffPs01Switch_IP       "IP [%s]"   (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:IP" }
String SonoffPs01Switch_DeviceState "Device State" (gSonoffSw1Info) { channel="mqtt:topic:myMQTTBroker:Sonoff_xxx_xxx:devicestate" }

Falls gewünscht kann das Tag [„Lighting“] für die Alexa-Anbindung noch entsprechend integriert werden.

Nach der Änderung der Things und Items einmal die openHAB-Dienste neu starten.

Test der Konfiguration

Den Test der Konfiguration habe ich mit mqtt-spy vorgenommen.

Ich habe folgende Topics verwenden:

  • +/sonoff-xxx/+

Damit sehe ich alle Nachrichten zu dem Gerät. Es können folgende Wildcards verwendet werden:

  • + = Single Level
  • # = Multi Level

rules-Datei

Im nächsten Schritt möchte ich das Schalten der Steckdosen per Regel automatisieren:

rule "MQTT_TEST"
when
Time cron "0 */1 * ? * *" //every 1 Minute
then
logInfo("INFO","MQTT.rules - MQTT Test every minute")
val actions = getActions("mqtt","mqtt:systemBroker:embedded-mqtt-broker")
actions.publishMQTT("cmnd/sonoff-xxx/POWER","OFF")
end

Mit dieser Regel wird jede Minuten das Sonoff-Gerät ausgeschalten. Für einen einfachen Test ist das ausreichen.d

sitemap-Datei

Im letzten Schritt wird noch die Visualisierung in der Sitemap für die Web-Oberfläche und die App vorgenommen:

    Text label="Tasmota" icon="movecontrol" {
        Frame label="Sonoff S20 (B0B692 - 5778)" {
            Switch  item=SonoffPs01Switch_Switch
            Switch  item=SonoffPs01Switch_State
            Group item=gSonoffSw1Info
        }
    }

Fazit und nächste Schritte

Mit den oben genannten Dokumentationen und Beispielen ist ein sehr einfacher Einstieg in MQTT, den Sonoff-Endgeräte und der Tasmota-Firmware möglich. Ich muss mir jetzt noch eine bessere Struktur für meine  Topics und Messages erstellen. Im ersten Test habe ich die hinterlegten Nachrichten genommen, ich erst einmal die Funktionsfähigkeit testen wollte.

Nun kann ich auch die restlichen „Tasmoten“ bestellen und damit die Weihnachtsbeleuchtung 2019 vorbereiten 🙂

Wie sind eure Erfahrungen allgemein mit MQTT und mit der Integration in openHAB? Welche Szenarien lassen sich damit noch abbilden?