Smarthome

Zuerst dachte ich "was für ein Quatsch, was macht es schon für einen Unterschied wie ich mein Licht an oder aus schalte?". Ganz im Gegenteil, erst das Handy suchen damit ich das Licht einschalten kann?

Die meisten System die sich als "Smart Home" verkaufen machen nichts Besonderes. Es wird oft nur der Lichtschalter in eine App verlegt - was eigentlich eine ziemlich dumme Idee ist, denn so muss ich mein Telefon suchen, entsperren, die App starten, warten bis sie sich aktualisiert hat, den Button für das gewünschte Licht suchen und dann, endlich, habe ich Licht. Die Hardware-Alternative: klick, Licht ist an.
Klar, theoretisch könnte ich das Licht von der Couch aus steuern, aber da habe ich selten mein Telefon dabei und muss sowieso aufstehen.

Eines Tages im Herbst aber kaufte ich eine farbige LED von Ikea und fand es sehr angenehm abends eine warme Beleuchtung zu haben. Im Lauf der Zeit kamen neue Birnen und Sensoren hinzu und inzwischen habe ich ein recht umfangreiches Sortiment an Geräten die mit den verschiedensten Methoden angebunden sind.

 

Sonoff-Schalter als Sensoren

Da die chinesischen Sonoff-Schalter sehr günstig sind hatte ich geplant sie als Schalter einzusetzen. Leider habe ich noch nicht geschafft Home Assistant beizubringen die Schalter zu verwenden.


', '

Sonoff-Schalter als Sensoren


Ein Motiv dafür meine Beleuchtung auf Smarthome-Komponenten umzustellen war dass meine Lichtschalter ungünstig verteilt sind bzw. auch gar nicht funktionieren. Ich hatte geplant mir überall dort wo ich einen Schalter möchte Funkschalter zu installieren und diese über Home Assistant mit den Lampen zu koppeln. Allerdings sind diese Schalter relativ teuer, die günstigsten Wandschalter  die ich gefunden habe kosten etwa 30 Euro. Dagegen gibt es Sonoff-Schalter für fünf bis zehn Euro, je nachdem wo man sie kauft. Meine Idee war es diese als Wandtaster zu verwenden.


Zunächst habe ich mir drei Schalter besorgt die mit 5V betrieben werden können damit ich keinen Elektriker benötige. Diese habe ich dann mit der Tasmota-Firmware bespielt um sie in mein System zu integrieren und nicht mehr von einem Server in China abhängig zu sein. Dann mussten diese in Home Assistant eingebunden werden.


Die Tasmota-Firmware sendet MQTT-Sequenzen an einen zentralen MQTT-Broker den ich auf dem Raspberry eingerichtet habe. Sie in Home Assistant anzumelden erfolgt mit einem kleinen Konfigurationsblock den ich aus dem entsprechenden Home Assistant Forum übernommen habe. Sowohl als Schalter als auch als Licht konnte ich die Schalter problemlos einrichten:



switch:
- platform: mqtt
name: "Sonoff 210"
state_topic: "stat/sonoff/POWER"
command_topic: "cmnd/sonoff/POWER"
availability_topic: "tele/sonoff/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: true

 
 Sonoff210 Switch
light:
  - platform: mqtt
    name: "Sonoff 211 - LED Licht"
    state_topic: "stat/sonoff211/POWER"
    command_topic: "cmnd/sonoff211/POWER"
    availability_topic: "tele/sonoff211/LWT"
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: true
 Sonoff211 Light


Schaltvorgänge und ob der Schalter verfügbar ist oder nicht erkennt Home Assistant problemlos.


Allerdings ist das Einrichten als Schalter nicht unbedingt sinnvoll, denn ein Schalter ist eher etwas das Home Assistant bedient und nicht abfragt. Korrekt wäre es eigentlich den Sonoff als Sensor einzutragen.


Dennoch habe ich versucht eine Automation zu erstellen die eine Lampe umschaltet je nachdem wie dieser Schalter steht - leider ohne Erfolg. Ob das daran liegt dass Home Assistant keine Schalter abfragen kann oder meine Konfiguration nicht stimmt weiß ich leider nicht.

Sonoff-Schalter

Sonoff Smarthome-Schalter


Ein Punkt der mich sehr an der Automatisierung interessiert hat sind die Sonoff-Schalter der Firma ITead. Dieses sind relativ billige Schalter die sich ins WLan hängen und darüber gesteuert werden können. Normalerweise bauen sie eine Verbindung zu einem chinesischen Server auf, aber das kann man ändern.


Wie verwendet man diese Sonoff-Schalter mit Home Assistant?


', '

 


Sonoff Smarthome-Schalter



Sonoff Schalter mit 5V-VersorgungSeit eingier Zeit lese ich von den "Sonoff"-Schaltern der Firma ITead. Diese sind sehr billig zu bekommen, beim Einkauf in China kostet das Stück vier bis sechs Euro wenn man bereit ist die Wartezeit in Kauf zu nehmen.


Normalerweise werden sie in die Stromleitung eingeschleift und schalten den Verbraucher dahinter. Das bedeutet dass Arbeiten mit diesen Schaltern nur von Elektrikern durchgeführt werden sollten. Es gibt aber auch eine Variante die mit 5V-Versorgung funktioniert und an einem USB-Anschluss betrieben werden kann und ich hoffte diese als dezentrale Schalter verwenden zu können ohne dass dahinter ein Verbraucher hängt.


So bestellte ich mir mal drei Stück (bei China-Bestellungen waren schon ein paar Mal defekte Geräte dabei) und wartete auf deren Ankunft.


Betriebsmodus


Zunächst bemerkte ich dass der Schalter immer nur für eine kurze Zeit an blieb. Nach kurzer Suche stellte sich heraus dass es zwei Betriebsmodi gibt: "inching" und "self-lock". Umgestellt werden diese mit dem unteren Schalter, der Schalter hinter der USB-Buchse ist der Ein/Aus-Schalter.


Im "Inching"-Modus bleibt der Schalter für eine Sekunde aktiv und schaltet sich dann wieder ab. Damit kann der Sonoff ideal als Umschalter verwendet werden. 


Der "Self-Locking" -Modus ist eher wie ein normaler Lichtschalter. 


Nach Hause telefonieren


Normalerweise verbindet sich der Schalter mit einem Server on China und sendet die Befehle dorthin und wieder zurück. Die Steuerung erfolt mit einer eigenen chinesischen App.


Das wollte ich so natürlich nicht. Es ist mir zwar relativ egal ob ein Chinese überwacht wann ich mein Licht einschalte, aber ich will nicht NOCH eine App verwenden sondern den Schalter in Home Assistant integrieren. Von der Laufzeit und der Gefahr dass der Server irgendwann einmal nicht mehr funktioniert ganz abgesehen.


Glücklicherweise ging das anderen Leuten auch so und so wurde eine neue Firmware \'Tasmota\'  erstellt die keinen chinesischen Server mehr benötigt. Normalerweise benötigt man dazu aber die Arduino-Umgebung sowie einen USB-auf-Seriell-Konverter. Um das wiederum zu vermeiden hat jemand das Programm SonOTA geschrieben mit dem das gesamte Update über das WLAN erfolgen kann.


Sonoff über WLAN auf Tasmota-Firmware umstellen


Man benötigt einen PC mit WLAN der auch ins Internet kann, idealerweise über ein zweites Netzwerk denn der Zugang zum WLAN wird später gekappt.


Außerdem darf der Sonoff-Schalter keine Firmware von (für Sonoff Basic) 1.6 oder höher haben, denn bei dieser weigert sich der Schalter die neue Firmware zu akzeptieren. 


Ich habe die Version unter Windows laufen lassen, darum erkläre ich dieses Vorgehen.


Zuerst startet man Sonota.exe, wählt den WLAN-Adapter aus und gibt die Zugangsdaten für das WLAN an. Diese werden später an den Sonoff weitergegeben damit er sich ins WLAN einwählen kann. Wenn man eine Kommandozeile oder Powershell startet kann man auch Parameter mitgeben:


sonota.exe --wifi-ssid <Name des WLAN> --wifi-password <Passwort>


Damit spart man sich die erneute Eingabe wenn man mehrere Schalter umprogrammieren will.


Dann schließt man den Sonoff an den Strom an und setzt ihn in den Einrichtungsmodus. Dazu muss man den Ein/aus-Taster für ca. sieben Sekunden gedrückt halten bis die LED zu blinken beginnt. Bei manchen Schaltern (bei meinen zum Beispiel) musste ich dann den Schalter erneut für sieben Sekunden gedürckt halten bis er schnell blinkte.


Danach erscheint ein neues WLAN mit Namen ITEAD<XXXXXX> wobei <XXXXXX> eine kryptische Ziffernfolge ist. Mit diesem verbindet man sich, das Passwort ist 12345678.


Das Sonota-Programm wird sich daraufhin mit dem Schalter verbinden und loslegen - und dann irgendwann stehen bleiben. Spätestens hier muss man die Windows-Firewall komplett deaktivieren. Ich habe versucht geringere Freigaben zu schalten, aber nur die komplette Abschaltung nutzte etwas.


Irgendwann erscheint dann ein WLAN "FinalStage". Das ist das Zeichen dafür dass man die Verbindung beenden und den Schalter neu starten kann. Bei mir war das meiner Erinnerung nach nicht notwendig, ich konnte mich direkt mit diesem WLAN verbinden. Der Schalter war dann im Browser unter 192.168.4.2 zu finden und im dargestellten Menü müssen dann die eigenen WLAN-Daten erneut eingegeben werden. Nach einem Neustart meldet sich der Schalter dann im heimischen WLAN an und erhält von diesem eine IP-Adresse. Auch die Firewall kann man jetzt wieder einschalten. 


 Ab sofort läuft der Schalter über die Tasmota-Firmware und ohne eine Verbindung nach China.


 

Home Asssistant - MQTT einrichten

MQTT - eine zentrale Instanz zum Austausch von Nachrichten


Um die verschiedensten Geräte miteinander kommunizieren lassen zu können wurde MQTT entwickelt. Es handelt sich um ein textbasiertes Protokoll bei dem durch kurze Nachrichten Befehle oder Statusmeldungen ausgetauscht werden. Das Programm welche die Kommunikation steuert wird "Broker" genannt.


Diese Nachrichten sehen etwa so aus: "/Schalter/Bad/Licht/Status" könnte die Meldung enthalten welchen Zustand der Lichtschalter im Bad hat. Die Lampe im Bad könnte diese Nachricht empfangen und,wenn der Status auf "AN" steht sich einschalten. Dadurch wird die physische Verbindung zwischen Schalter und Lampe getrennt und durch diese logische Verknüpfung ersetzt. Der Vorteil ist dass dann andere Teilnehmer einfach auch nur diese Nachricht schicken müssen und damit die Lampe im Bad ein- und ausschalten können.


Meist senden die Teilnehmer erheblich mehr Informationen als man benötigt, hier ist eine Nachricht eines Schalters:


20:19:51 MQT: tele/sonoff210/STATE = {"Time":"2018-04-10T20:19:51", "Uptime":1, "Vcc":3.238, "POWER":"OFF", "Wifi":{"AP":2, "SSId":"ByteBox", "RSSI":86, "APMac":"C8:0E:14:AA:EE:50"}}

Home Asssistant kann daraus die notwendingen Informationen ziehen indem es eine Art Parser darauf anwendet, in diesen habe ich mich aber noch nicht genug eingearbeitet.


Einrichtung des Brokers


Die Installation erfolgt über den Add-On-Schirm gemäß der Anleitung und verursachte bei mir keine Probleme. Eine Rückmeldung der Form "Ok, alles ist eingerichtet" wäre schön gewesen, aber offenbar reicht das Ausbleiben von Fehlern als "alles ist gut" aus.


Die Konfiguration kann im Schirm angepasst werden, dazu dient ein YAML-Segment:


{
"plain": true,
"ssl": false,
"anonymous": true,
"logins": [
{"username": "YOUR_USERNAME", "password": "YOUR_PASSWORD"}
],
"customize": {
"active": false,
"folder": "mosquitto"
},
"certfile": "fullchain.pem",
"keyfile": "privkey.pem"
}

Für den Anfang kann man das so übernehmen, ich habe allerdings anonyme Logins gleich abgeschaltet und ein Passwort vergeben. 


Um per Home Assistant auf diese Komponente zuzugreifen müssen diese Einträge in die configuration.yaml:


mqtt:
broker: core-mosquitto
username: YOUR_USERNAME
password: YOUR_PASSWORD

 


Einrichtung eines Schalters


 Um einen Schalter zu definieren trägt man in der configuration.yaml in der Sektion "switch:" einen solchen Block ein. In meinem Fall handelt es sich um einen Sonoff-Schalter mit aufgespielter Tasmota-Firmware.


  - platform: mqtt
name: "Sonoff 210"
state_topic: "stat/sonoff210/POWER"
command_topic: "cmnd/sonoff210/POWER"
availability_topic: "tele/sonoff210/LWT"
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: true

Der Name ist Freitext und wird so angezeigt.


Im state_topic und command_topic werden die Begriffe eingegeben die man im Schalter konfiguriert hat. So habe ich bei einem meiner Schalter zum Testen die IP mit integriert so dass er nun "sonoff210" heißt und auch überträgt.


Die Payload-Einträge sind die Werte die vom Schalter gesendet werden. 


"retain" gibt an ob der letzte Wert nach einem Neustart gleich wieder gesetzt werden soll oder ob der Schalter als "undefiniert" geführt wird.


Was bei mir nicht zu funktionieren scheint ist der "state_topic". Ich hatte gehofft dass man mit diesem den Zustand des Schalters abfragen kann, habe das aber bisher noch nicht geschafft. 


 


 

hass.io - Konsolenzugang via SSH

hass.io - Konsolenzugang via SSH


Hin und wieder muss man tiefer in das System einsteigen als die Oberfläche erlaubt. Dazu stellt hass.io einen Zugang via Kommandozeile zur Verfügung.


Achtung! Dieser Zugang ist keine vollwertige Shell, viele Kommandos funktionieren nicht!


Auch dieses Modul wird über den Add-On-Schirm installierung und kann dort eingerichtet werden.


HA AddOnsWithSamba


Um den Zugang zu kontrollieren gibt es zwei Möglichkeiten: einfach via Passwort, oder über eine Schlüsseldatei. Der Zugang via Passwort ist unsicherer da es erraten werden kann, der Zugang via Schlüssel ist deutlich sicherer.


TODO: Erzeugen des Schlüssels beschreiben

Home Assistant: Samba einrichten

Home Assistant: Windows-Zugriff mit Samba


Da viele Konfigurationseinstellungen in .YAML-Dateien abgelegt werden macht es Sinn die Dateistruktur des Raspberry für den Windows-PC zur Verfügung zu stellen. Das geschieht mit der Samba-Erweiterung.


Glücklicherweise ist das einfach einzurichten und die Anleitung gibt alle notwendigen Schritte vor.


Man wählt einfach im Add-On-Schirm "Samba Share" aus und installiert dieses. 


HA AddOns


Im Konfigurationsschirm müssen dann noch gegebenenfalls die Gruppe und Passwörter definiert werden, aber normalerweise sollte nach kurzer Zeit der PC einen Netzwerkpartner "HASSIO" sehen. Darin befinden sich verschiedene Verzeichnisse - interessant sind primär "config" - hier befinden sich alle Konfigurationsdateien und "share", hier legt man allgemein genutzte Dateien ab.