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?

 

Tasmota-Software auf Sonoff S20 Steckdosen

In diesem Beitrag möchte ich kurz beschreiben, wie man Sonoff S20 Steckdosen für die lokale Verwendung im SmartHome anpasst und die Bindung zur Hersteller-Cloud löst. Dafür notwendig ist die Tasmota-Firmware auf den Steckdosen.

Informationen

Im ersten Schritt findet Ihr hier ein paar Quellen für die die Anpassung der Hard- und Software:

Notwendige Komponenten

Folgende Hardware:Komponenten waren für die Anpassung notwendig

  • FTDI Adapter FTL232RL USB zu TTL Serial (ca. 6,79 Euro bei Amazon)
  • Jumper Wire Kabel (3 x 40 Stück) (ca. 6,29 Euro bei Amazon)
  • 2 x Sonoff S20 Wifi Smart Steckdose (ca. 20,97 Euro bei Ebay)
    20,97 Euro für 2 Stück

Für die Software habe ich die Arduino IDE mit ein paar Anpassungen für das Board verwendet.

Arduino IDE

In diesem Kapitel wird die Verwendung der Software-Umgebung auf Basis der Arduino IDE beschrieben.

Installation

  • Download Arduino IDE 1.8.8
  • Version 1.8.8 für Windows als ZIP-Datei (ohne Installation, abhängig vom Betriebssystem)
  • Entpacken des Pakets und Start der Software (mit arduino.exe)

Erstkonfiguration

Nun wird eine erste Grundkonfiguration der IDE vorgenommen:

  • Datei – Vorsteinstellungen – Zusätzliche Boardverwalter-URLs
  • Datei – Voreinstellungen – Sketchbook-Speicherort auf entsprechenden Pfad setzen
    • Ansonsten werden die Anpassungen im „Dokumente & Einstellungen“ Verzeichnis von Windows gespeichert
  • Werkzeuge – Board – Boardverwalter (Einrichtung ESP8266-Board)
    • Suche nach: esp8266
    • Neueste Version installieren (hier 2.4.2 – keine Beta verwendet)

Sonoff (Hardware)

Jetzt kann etsprechend die Sonoff S20 Hardware angepasst werden.

Die Funksteckdose kann einfach mit einem Kreuz-Schraubendreher und drei Schrauben geöffnet werden. Nach Abschluß des Flash-Vorgangs wird die Steckdose wieder zusammengeschraubt.

Danach wird die Verbindung zum FTDI-Adapter hergestellt:

Wichtig ist, dass während des Flash-Vorgangs die Steckdose nie am Stromnetz betrieben werden darf.

In der Hardware-Vorbereitung wird genau beschrieben wie Ihr die Pins verbinden müsst. Die Umsetzung war für mich als „Nicht-Elektroniker“ auch einfach zu machen.

Tasmota (Software)

Nun muss die Firmware auf der Steckdose von der Herstellerfirmware gegen Tasmota getauscht („geflasht“) werden.

Installation und Konfiguration

Bei der Tasmota-Firmware handelt es sich um eine Software für auf ESP8266 basierende Geräte von itead z.B. Sonoff. Hier können erweitertee Funktionen wie Web, MQTT und OTA hinzugefügt werden. Als Arbeitsumgebung kann Arduino IDE  PlatformIO verwendet werden. Ich habe mich für die Arduino IDE entschieden.

Die erste Einrichtung habe ich wie folgt vorgenommen:

  • Download von https://github.com/arendst/Sonoff-Tasmota (Clone or download, Download ZIP)
  • Entpacken der Datei sonoff-Tasmota-development.zip in ein beliebiges Verzeichnis
  • Sketch „sonoff“ von …\Sonoff-Tasmota-development in den vorher hinterlegten Sketchbook-Speicherort kopieren
  • Libraries „lib“ von …\Sonoff Tasmota\Sonoff-Tasmota-development in den vorher hinterlegten Sketchbook-Speicherort + \libraries kopieren

Damit ist die Grundkonfiguration der Firmware schon einmal vorhanden.

Anpassung Sonoff-Projekt

Jetzt muss das entsprechende Sonoff-Projekt an die eigenen Vorstellungen angepasst werden:

  • Arduino IDE starten und Projekt laden (Datei – Öffnen) – Sketchbook-Speicherort + \sonoff\sonoff.ino
  • Anpassung der Datei my_user_config.h (benutzerdefinierte Konfigurationen)
    • WIFI_IP_ADRESS auf „0.0.0.0“ kontrollieren (damit wird DHCP verwendet)
    • STA_SSID1 mit entsprechender WLAN-SSID anpassen
    • STA_PASS1 mit entsprechendem WLAN-Passwort anpassen
    • WIFI_CONFIG_TOOL auf „WIFI_RETRY“ kontrollieren (bei WLAN-Abbruch Verbindung wieder herstellen)
    • #define MY_LANGUAGE de-DE (// als Kommentar entfernen für deutsche Firmware)
  • Dann wird die Vorbereitung zum Flash-Vorgang (Verbindung) wie folgt konfiguriert:
    • Diese Einstellungen sind dann abhängig von den verwendeten Modulen und Elementen
    •  Werkzeuge
      • Board: „Generic ESP8266 Module“ auswählen
      • Flash Mode: „DOUT“
      • Flash Size: „1M (no SPIFFS)“
      • Debug port: „Disabled“
      • Debug Level: „Keine“
      • IwIP Variant: „v1.4 Higher Bandwith“
      • Port: Entsprechenden Port aus der Windows-Geräte-Verwaltung auswählen
    • Die Einstellungen dort sind abhängig von den entsprechenden Boards

Flash-Vorgang starten

Nun kommt der eigentliche Flash-Vorgang, der aber auch recht einfach funktioniert:

  • Button auf dem Sonoff S20 drücken
  • Gerät am USB einstecken (Power)
  • Button loslassen
  • Sonoff S20 ist im Programmiermodus
  • Software flashen
  • Ausstecken und ohne Button wieder einstecken (Gerät bootet normal und sollte im WLAN sein)

Netzwerkintegration

WLAN-Integration

Nachdem man die Steckdose wieder zusammen geschraubt hat, ist ein erster kompletter Test im eigenen WLAN möglich.

Dazu einfach im Router (bei mir eine FritzBox) in den Netzwerkgeräten nach „sonoff“ Ausschau halten.

Hier findet Ihr dann die IP-Adresse und der entsprechende Name des Geräts. Nun kann über einen Web-Browser auf das Webinterface zugegriffen werden. Auf der Weboberfläche kann auch gleich ein erster Funktionstest (Schalttest) vorgenommen werden.

Tasmota-Konfiguration

Folgende Einstellungen habe ich in der Tasmota-Weboberfläche noch vorgenommen:

  • Einstellungen – Gerät konfigurieren
    • Gerätetyp: Sonoff S2X (8)
  • Einstellungen – Sonstige Konfiguration
    • Name: sonoff-xxx
    • Emulation: Belkin WeMo
  • Einstellungen – MQTT konfigurieren
    • Host: xxx.xxx.xxx.xxx
    • client: sonoff-%06X
    • topic: sonoff-xxx

Durch die Emulation ist auch eine direkte Verwendung in Amazon Echo / Alexa möglich. Die MQTT-Einstellungen sind nur für meine openHAB-Integration vorgesehen.

Alexa-Integration

Für die Verwendung mit Alexa muss in der Alexa-App noch ein Suchlauf gestartet werden. Danach können die Geräte per Sprache geschalten werden:

  • „Schalte sonoff-xxx ein“
  • „Schalte sonoff-xxx aus“

Fazit

Mit diesen paar Schritten ist es relativ einfach ein Sonoff-Endgerät mit der alternativen Firmware Tasmota zu „flashen“. Auch die Integration in das heimische Netzwerk klappt ohne größeren Aufwand. Damit habe ich für ca. 10 Euro pro Steckdose eine sehr günstige Variante um unsere Weihnachtsbeleuchtung mit vielen Steckdosen Ende 2019 entsprechend zu schalten.

Die MQTT-Konfiguration für openHAB und die Integration in Alexa über openHAB muss ich im nächsten Schritt noch genau testen.

Vom Arbeitsaufwand war es eigentlich recht überschaubar (dies hätte ich mir komplizierter) vorgestellt.

Habt Ihr auch schon einmal Endgeräte mit Tasmota geflasht?

„Hue Emulation“ bei Beleuchtungsgruppen nach Update auf openHAB 2.4

Nach dem Update auf openHAB 2.4 funktioniert der folgende Sprachbefehl nicht mehr „Alexa, schalte das Licht Wohnbereich aus“ in unserem SmartHome. Das zugehörige Item ist wie folgt definiert:

Switch Licht_EG_Wohnbereich     "Licht Wohnbereich"         (gLicht_EG, gLicht)             [ "Lighting" ]

Mit diesem Item schalte ich dann in einer Regel alle Lichter in den gewünschten Zimmern aus. Mit openHAB 2.3 hat das auch noch alles ohne Probleme funktioniert. Das Problem trat bei uns im Haus auf, wenn ein physikalischer Lichtschalter aktiviert wurde und dann dieses Licht per Sprache ausschalten wollte (das passiert bei uns öfter).

Ein ähnliches Problem wurde hier im openHAB-Forum leider ohne Lösung beschrieben.

Scheinbar gab es eine Änderung in dem Binding zwischen den Versionen 2.3 / 2.4 bezüglich der Stati ON / OFF / NULL. Ein Verweis auf den aktuellen Snapshot-Build hat das Problem gelöst.

Ich habe den Snapshot (Testversion) wie folgt eingespielt:

  • Hue Emulation deinstallieren –  PaperUI – Add-ons – MISC (misc-hueemulation – 2.4.0
  • Download der Datei org.openhab.io.hueemulation-2.5.0-SNAPSHOT.jar
    • Weitere Informationen zu den Änderungen gibt es hier
  • Die Datei wird in den Ordner /addons auf dem openHAB-System kopiert
  • Ergebnis kontrollieren – PaperUI – Configuration Services – IO – Hue Emulation
  • Optional: Die Logs auf entsprechende Fehler / Hinweise durchsehen

Nach dieser kleinen Änderung können „Gruppen-Schalter“ (in unserem Fall Lichter) wieder über Alexa komplett geschalten werden.

Egal wie zuverlässig man alles testet, kommt bei jedem Software-Update immer eine „Kleinigkeit“ dazu die man vergessen hat. 🙂

Hattet Ihr ähnliche Erfahrungen nach dem openHAB 2.4 Update?

 

Installation und erste Tests mit MQTT und openHAB 2.4

Vorbereitend für unsere Sonoff-Steckdosen zum Schalten der Weihnachtsbeleuchtung habe ich mich etwas mehr mit dem Thema MQTT beschäftigt.

Was ist MQTT?

Ein guter Einstiegsartikel zum Thema MQTT mit dem Fokus auf openHAB findet Ihr in diesem Blog-Beitrag.

MQTT steht für Message Queuing Telemetry Transport und entspricht dem ISO Standard – ISO/IEC PRF 20922. Es handelt sich dabei um das meist verwendete Protokoll im Internet der Dinge (IoT). Bei MQTT handelt es sich um ein „publish-subscribe“ basiertes Nachrichtenprotokoll.

In einem MQTT-System kommunizieren Clients mit einem Server (dieser wird oft „Broker“ genannt). Ein Client kann Nachrichten verteilen (Publisher) oder empfangen (Subscriber).

Installation MQTT in openHAB

In diesem Artikel wird nur die MQTT-Integration von openHAB 2.4 und neuer betrachtet (in den vorherigen Versionen sind andere Installationen und Konfigurationen notwendig).

Im ersten Schritt wird das MQTT Binding wie folgt installiert:

  • Paper UI – BINDINGS – MQTT Binding (binding-mqtt-24.0) – INSTALL

Im Zweiten Schritt wird der MQTT Broker hinzugefügt:

  • Paper UI – MISC – Embedded MQTT Broker (misc-mqttbroker-2.4.0) – INSTALL
  • Optionaler Konfiguration: Paper UI – Configuration – Services – MQTT – MQTT Embedded Broker – CONFIGURE

Danach befindet sich ein Item „MQTT Broker“ (embedded-mqtt-broker) in der Inbox und muss akzeptiert und als Thing hinzugefügt werden (hier ist keine weitere Konfiguration notwendig).

Im letzten Schritt wird noch die MQTT Action aktiviert:

  • Paper UI – Add-ons – ACTIONS – MQTT Action (action-mqtt-1.13.0) – INSTALL

Konfiguration einer Regel

Um den integrierten MQTT Broker zu testen habe ich folgende MQTT.rules-Datei erstellt:

rule "MQTT_TEST"
when
    Time cron "0 */1 * ? * *" //every 1 Minute
then
val actions = getActions("mqtt","mqtt:systemBroker:embedded-mqtt-broker")
actions.publishMQTT("test/system/started","true")
end

Damit wird jede Minute eine Test-Nachricht auf das MQTT Topic „test/system/started“ mit dem Wert „true“ geschrieben.

MQTT-Client zum Test

Da ich aktuell noch kein MQTT-fähiges Endgerät im Haus habe, konnte ich mit mqtt-spy das Ergebnis testen. Den direkten Download der Version findet Ihr hier.

Die Konfiguration des Clients kann wie folgt aussehen:

  • Configuration – Konfiguration erstellen
  • Connections – Manage Connections
  • Verbindung zum MQTT Broker: IP:1883 (Port 1883 stellt die unverschlüsselte Verbindung dar)
  • Im Control panel kann dann …
    • … „Publish message“ mit Topic „test/system/started“ gesendet werden
    • „Subscription and received messages“ „test/system/started“ empfangen werden

Damit kann ich dann an den in openHAB 2.4 integrierten MQTT Broker Nachrichten senden und von dort empfangen.

Eine mögliche Konfiguration sieht so aus:

Zusammenfassung

Mit openHAB 2.4 und dem zugehörigen Blog-Eintrag war eine einfache und schnelle Einarbeitung in MQTT mit den neuen openHAB-Elementen möglich. Jetzt habe ich die MQTT-Basis verstanden und ein MQTT-System installiert und konfiguriert.

Das Basis-System steht damit und ich kann in die Detailkonfiguration der Things / Items in openHAB einsteigen. Für die nächsten Tests fehlt mir noch ein MQTT-fähiges Endgerät. Hier habe ich bereits ein paar Sonoff S20 Steckdosen bestellt, die ich mit Tasmota flashen möchte.

Nutzt Ihr MQTT in euren SmartHome-Szenarien? Welche Endgeräte habt Ihr damit angebunden?

Erstinstallation des HABot mit openHAB 2.4

Mit obenHAB 2.4 kam als neue Funktion der HABot hinzu (in openHAB 2.3 und früher konnte man den Chat-Bot leider nicht integrieren). In diesem Artikel beschreibe ich wie einfach man einen Chat-Bot für sein SmartHome mit openHAB in Betrieb nehmen kann.

Was ist ein Chat-Bot?

Ein Chat-Bot ist ein textbasiertes Dialogsystem das die schriftliche Kommunikation mit technischen Systemen erlaubt. Einen Chatbot kann man als bessere Volltextsuchen oder erste Ansätze von künstlicher Intelligenz verstehen.

Der Bot basiert auf der Eclipse SmartHome Laufzeitumgebung, kann offline verwendet werden und speichert keine Daten in „Third-Party-Anbieter-Clouds“.

Welche Technologien werden für HABot benutzt?

Der HABot basiert auf folgenden Technologien:

  • Einer „Machine Learning“ Sprache basierend auf Apache OpenNLP
  • Ein modulares System auf Basis OSGi
  • Ein Karten basierendes „User Interface“ basierend auf einer REST API und dem dem Quasar Framework
  • Ein auf Eclipse SmartHome basierenden Human Language Interpreter
  • Progressive Web App als Basis für die Integration in die mobile Welt z.B. Push-Nachrichten, Spracherkennung und Ressourcenverwaltung

Wie wird der HABot eingerichtet?

Der Bot wird in der Paper UI wie folgt aktiviert:

  • Add-ons – USER INTERFACES – HABot (2.4.0)

Danach kann der HABot ohne weitere Konfiguration für einen ersten Test verwendet werden. In diesem einfachen Beispiel wurden noch keine erweiterten Attribute wie semantische TagsMetadaten oder  Kategorien verwendet.

Wie wird der HABot benutzt?

Für den Start des HABot wird einfach folgende URL im Webbrowser aufgerufen:

http://IP:PORT/habot/

Danach kann durch die Eingabe der folgenden Beispiel-Elemente mit dem Bot kommuniziert werden („Christbaum“ ist ein vorhandenes openHAB-Item in meiner Umgebung):

  • „Schalte den Christbaum ein“
  • „Schalte den Christbaum aus“

Im User-Interface sieht das wie folgt aus:

Wo gibt es weiterführende Informationen?

Ein gutes Video vom SmartHome Day 2018 zum Thema HABot gibt es hier:

Gibt es Anwendungsfälle im SmartHome?

Es ist immer schön wenn man sich mit neuen und innovativen Technologien beschäftigen kann, aber für mein privates SmartHome habe ich bis jetzt noch keine Anwendungsfälle für einen Chat-Bot gefunden. Die meisten Geräte werden bei uns per Sprache oder physischen Schaltern aktiviert.

Wie sieht es bei euch aus? Seht Ihr Anwendungsfälle für einen Chat-Bot im SmartHome? Welche Szenarien sind für euch denkbar?

„Günstige“ Alternative zur Steuerung der Weihnachtsbeleuchtung / Steckdosen

Ich benötige saisonal (also an Weihnachten) ca. 10 – 15 schaltbare Steckdosen für unsere gesamte Weihnachtsbeleuchtung im Haus.

Aktuell werden die „Lichterketten“ über manuelle Zeitschaltuhren gesteuert. Das klappt mal besser und mal nicht so gut z.B. verschiedene Steckdosen gehen zu verschiedenen Zeiten an.

Als Alternative wollte ich die gesamte Beleuchtung über openHAB und Regeln zentral steuern. Hierfür war mir aber die Schaltung der EIB / KNX Steckdosen im Haus zu teuer bzw. im Keller habe ich nicht überall schaltbare Steckdosen. Auch der HomeMatic Funk-Schaltaktor für ca. 40 Euro ist preislich nicht angemessen.

Ich habe mir in der Facebook-Gruppe OpenHAB Germany ein paar Ideen / Anregungen eingeholt.

Herausgekommen ist jetzt erst einmal folgende Idee:

  • Verwendung der Sonoff S20 Steckdosen (4 Stück für ca. 40 Euro bei Ebay) (das scheint für meinen Anwendungsfall die günstigste Variante zu sein)
  • Da ich die Steckdosen nur bei mir lokal mit dem Protokoll MQTT verwenden möchte ist die Firmware Tasmota auf den Endgeräten notwendig
  • Die Firmware kann ohne Löten bei der S20 aufgespielt werden (Beispiel), da an der S20 „Jumping Wires“ direkt einstecken kann (das war mir wichtig, da mir das Löten zu aufwändig erschien)
  • Für den Flash-Vorgang ist ein FTDI-Adapter notwendig und ein paar Kabel
  • Die Firmware-Tasmota kann dann mit Atom oder der ArduinoIDE entsprechend angepasst / geflasht werden

Danach hat man eine per MQTT schaltbare Steckdose die mit dem heimischen WLAN verbunden ist. Die Einbindung per MQTT an openHAB ist dann kein Problem mehr.

Ich denke der manuelle Aufwand sollte nach den ersten ein / zwei Versuchen recht minimal sein. Damit wäre das die bisher günstigste Variante von schaltbaren Steckdosen in meinem SmartHome.

Habt Ihr schon einmal auf Endgeräte Tasmota geflasht? Wie sind eure Erfahrungen?

Aktualisierung openHAB 2.3 auf 2.4

Ich habe in den vorherigen Artikeln bereits beschrieben welche Mehrwerte und neue Funktionen openHAB 2.4 hat. In diesem Beitrag beschreibe ich kurz die Aktualisierung von openHAB 2.3 auf 2.4 und mögliche „Stolpersteine“ nach dem Update.

Aktualisierung der Installation

Das Update in einer Linux-Distribution auf Debian-basieren wird wie folgt durchgeführt:

sudo systemctl stop openhab2.service
sudo apt-get update
sudo apt-get upgrade

Mit dem ersten Befehl wird der openHAB-Dienst beendet. Die beiden nächsten Zeilen starten die Aktualisierung.

Nach der Aktualisierung kann man das System mit folgendem Befehlt komplett neu starten:

sudo shutdown -r now

Damit ist die Installation von Version 2.3 auf 2.4 aktualisiert. Am Ende der Installation werden jetzt auch noch die „Breaking Changes“ angezeigt d.h. die Änderungen die Ihr manuell durchführen müsst.

Manuelle Anpassungen der Konfigurationen

Folgende Bindings habe ich nicht im Einsatz und damit nicht weiter betrachtet:

  • Jeelink Binding
  • Milight Binding
  • WeatherUndergroundBinding
  • ZWave Binding
  • Synop Binding

Folgende Bindings habe ich im Einsatz und musste ich kontrollieren:

  • Astro Binding
  • AmachonEchoControl Binding
  • Hue Binding

Astro Binding

The ‚kilometer‘ and ‚miles‘ channels have been replaced by a new ‚distance‘ channel

Die kleineren Anpassungen (nur wenn man Distanzen verwendet hat) findet man hier.

AmazonEchoControl Binding

The account thing does not have settings anymore. The new version will not longer store your amazon credentials. You have to login at amazon once again through the proxy server http(s):///amazonechocontrol. This will create a refresh token which is internal stored for the authentication. Furthermore is the polling replaced through a web socket connection.

Hier musste ich mehrere Anpassungen durchführen:

  • Beta-Version aus 2.3 unter /usr/share/openhab2/addons löschen
  • Installation der Version 2.4:
    • Paper UI – Add-ons – BINDINGS – Amazon Echo Control Binding (2.4.0) – INSTALL
  • siehe oben, damit eine neue Authentifizierung durchgeführt wird

Hue Binding

Hue emulation: The item to hue ID mapping is no longer stored in files, but in the openHAB storage service. You need to rediscover „devices“ in all services that use the hue emulation (Amazon Echo, Google Home, etc).

Bei der Hue Emulation gab es leider ein paar mehr Probleme in meinem Fall:

  • Hue Emulation war nicht mehr installiert / aktiviert
  • Installation der Version 2.4: Paper UI – Add-ons – BINDINGS – Hue Binding (2.4.0) – INSTALL
  • Aktivierung der temporären Option:
    • Paper UI – Configuration – Services – Hue Emulation – Device Pairing + Amazon Echo device discovery fix – AKTIVIEREN
  • Amazon Echo App – Suchen der Geräte
  • „Switchable“ Elemente (bei mir Steckdosen) werden nicht mehr erkannt und müssen auf „Lighting“ gestellt werden (siehe Link1 und Link2)

Weiterführende Informationen

Folgende Links und weiterführende Informationen habe ich bei meinen Recherchen noch gefunden:

Fazit

Nach etwas zwei Stunden Arbeit und etwas Vorbereitung läuft meine Installation nun auf openHAB 2.4. Was sich in der Anleitung so leicht liest, ist im täglichen Einsatz leider doch etwas mehr Aufwand (vor allem der Test aller Endgeräte im Haushalt darf nicht vernachlässigt werden).

Etwas ärgerlich waren die Änderungen in der Hue Emulation und im Amazon Echo Control Binding. Diese Auswirkungen waren mir zum Teil nicht klar bzw. das Thema mit dem „Switchable“ habe ich so gar nicht gesehen.

Jetzt ist das Update aber eingespielt und die neuen Funktionen werden von mir getestet.

Habt Ihr auch schon auf openHAB 2.4 aktualisiert? Hab es bei euch Probleme? Welche neuen Funktionen nutzt Ihr?

Optimiertes Log-Verhalten für openHAB

Da unser openHAB-System in einem RaspberryPi mit einer SD-Karte läuft, wollte ich einmal die Schreibzugriffe auf die Karte kontrollieren bzw. optimieren.

Die meisten Schreibzugriffe werden beim Logging durchgeführt. Hier habe ich gesehen, dass noch INFO-Meldungen protokolliert werden.

Den Tipp für die Deaktivierung der Loggings und damit einer längeren Lebensdauer habe ich bei getmob.de gelesen. Die komplette Dokumentation zum Logging in openHAB findet Ihr hier.

Konfiguration

Viele Log-Level sind bei openHAB im Standard auf „INFO“. Während des Aufbaus der Installation ist das auch interessant. Aber wer liest schon im laufenden produktiven Betrieb später noch Log-Dateien?

In meinem Fall führt auch jede Logausgabe zu einem Schreibzugriff auf der SD-Karte und damit zu einer verminderten Lebenszeit des Flash-Speichers.

Das Logging-Verhalten kann hier angepasst werden:

/var/lib/openhab2/etc/org.ops4j.pax.logging.cfg

Ich habe die folgenden Log-Level auf „WARN“ gestellt:

  • org.openhab
    • Alt: #log4j2.logger.openhab.level = INFO
    • Neu: log4j2.logger.openhab.level = WARN
  • org.eclipse.smarthome
    • Alt: #log4j2.logger.smarthome.level = INFO
    • Neu: log4j2.logger.smarthome.level = WARN
  • smarthome.event
    • Alt: #log4j2.logger.events.level = INFO
    • Neu: log4j2.logger.events.level = WARN

Die Änderungen in der Konfiguration sollten ohne Neustart übernommen werden.

Fazit

Bei einem Neustart des Systems und im laufenden Betrieb sieht man wesentlich weniger Log-Meldungen. Damit sollten weniger Schreibzugriffe im Gesamtsystem vorhanden sein.

Leider sieht man jetzt auch keine Meldungen mehr vom KNX-Bus z.B. Licht geht an, Licht geht aus. Hier müsste ich vor einer tieferen Fehlersuche dann die Konfiguration wieder ändern (aber es sind ja nur ein paar Handgriffe im laufenden Betrieb).

Weiterführende Informationen

Hier gibt es noch einen weiteren Artikel über das Thema Logging – https://andreas.scherbaum.la/blog/archives/967-Avoid-wear-out-of-SSD-cards-in-an-openHAB-system.html

Dort wird auch beschrieben wie man die Log-Dateien auf eine RAM-Disk auslagern kann. Das dortige Beispiel basiert auf Ansible.