Zum Inhalt

2020

CO2 Ampel mit ESPHome und Home Assistant

Das Corona-Virus wird uns wohl noch lange begleiten. Gerade in Räumen mit vielen Personen aus unterschiedlichen Haushalten ist die Ansteckungsgefahr hoch. Gleiches gilt aber schon lange für Grippeviren. Die US-Wissenschaftler Rudnick und Milton steckten dazu 30 Personen, darunter eine mit Grippe-Infektion 4 Stunden in einen Raum. Bei einem CO2-Gehalt in der Luft von 1000 ppm infizierten sich fünf Personen, bei 2000 ppm waren es schon 12 und bei 3000 ppm 15 Personen.

Ein niedriger CO2 Wert hat aber auch abseits von Infektionskrankheiten eine wichtige Bedeutung. Bei zu hohen CO2-Werten in der Raumluft sinkt die Aufmerksamkeit und Konzentration merklich und kann Kopfschmerzen und Müdigkeit verursachen, was gerade an Schulen beachtet werden sollte – auch ganz ohne Corona-Problematik.

Welche CO2 Werte sind für eine Ampel geeignet

Das war genau die Frage, die sich nach meinen Recherchen sehr schwer beantworten lässt. Gerne wird die Pettenkofer-Zahl, nach dem deutschen Hygieniker Prof. Max von Pettenkofer (1818-1901) genannt. Dieser fand heraus, dass 1.000 ppm CO2 der Grenzwert für eine gute Luftqualität sind. Allerdings gab es 1858 noch keine hochdichten Gebäudehüllen oder Isolierglasfenster. Zudem war der natürliche CO2 Gehalt in der Außenluft mit 350 ppm noch deutlich niedriger als heute mit durchschnittlich 400 ppm (in Städten oft 450 – 500 ppm). So fand die Pettenkofer-Zahl auch keinen Einzug mehr in die entsprechende DIN-Normen.

In der DIN 1946-2 ging man von 1.500 ppm als Grenzwert für den CO2-Gehalt in der Luft von Innenräumen aus, ohne aber wissenschaftliche Grundlagen dafür zu nennen. Diese DIN-Norm wurde durch die DIN 13779 ersetzt und hier wurden 4 IDA-Kategorien (In Door Air) definiert, die eine CO2 Konzentration über der Außenluft definieren:

Kategorie Beschreibung Erhöhung gegenüber Außenluft in ppm Absoluter CO2 Gehalt bei 400 ppm CO2 in Außenluft
IDA 1 Hohe Raumluftqualität <= 400 <= 800
IDA 2 Mittlere Raumluftqualität > 400 – 600 > 800 – 1000
IDA 3 Mäßige Raumluftqualität > 600 – 1000 > 1000 – 1400
IDA 4 Niedrige Raumluftqualität > 1000 > 1400

Einteilung der Raumluftqualität in IDA-Kategorien

Wohnt man in einer belebten Innenstadt, kann man für die Außenluft schon Werte um 500 ppm annehmen und die absoluten Werten erhöhen sich entsprechend.

Lüftungs-Ampel mit ESPHome und MH-Z19B Sensor

Um die CO2-Belastung in der Luft messen zu können, benötigt man einen entsprechenden Sensor. Sehr gut verfügbar und relativ preiswert sind die CO2-Sensoren vom Typ MH-Z19B, die 25 Euro kosten. Diese Sensoren arbeiten nach dem NDIR-Prinzip. Eine kleine Glühlampe wird als breitbandige Infrarotquelle genutzt, damit eine Probenkammer durchleuchtet und dann über einen Filter auf einen Infrarotsensor geleitet. Der Filter ist dabei so schmalbandig ausgelegt, dass die CO2-Moleküle das Infrarotlicht absorbieren und somit weniger Licht auf den Sensor fällt. Je höher die CO2-Konzentration in der Messkammer, desto weniger Infrarotstrahlung fällt auf den Sensor.

Ausgelesen wir der MH-Z19 per seriellem UART-Interface mit 9600 Baud, kann also ganz einfach angebunden werden. Wichtig ist, dass er mit 5 Volt versorgt wird. Er funktioniert zwar grundsätzlich auch mit 3,3 Volt, allerdings weichen die gemessenen Werte dann stark ab. Das Datenblatt nennt einen Spannungsbereich von 3,6 bis 5,2 Volt. Schön ist hingegen, dass man die seriellen RX/TX-Anschlüsse ohne Pegelkonverter an 3,3 Volt-GPIOs wie etwa am ESP8266 oder Raspberry Pi nutzen kann.

Prototyp mit MH-Z19 Sensor

Da ich den Sensor ohnehin mit Home Assistant (HA) nutzen wollte, musste das Rad dazu nicht neu erfunden werden und man muss das auch nicht von ganz vorne programmieren.

Home Assistant bringt mit ESPHome seine eigene Plattform für ESP-Microcontroller mit, die sich über Home Assistant flashen, programmieren und aktualisieren lässt. Außerdem werden sie über eine native API an HA angebunden und nicht per MQTT, was die ganze Sache noch schneller und komfortabler macht.

ESPHome-Verwaltung in Home Assistant

ESPHome-Verwaltung in Home Assistant

Wenn man einen jungfräulichen ESP, Wemos oder auch Sonoff vor sich hat, kann man die passende Firmware direkt in HA erstellen und kompilieren lassen. Entweder steckt man dann den Mikrocontroller an einem USB-Anschluss des HA-Rechners an und kann damit die Firmware direkt flashen oder man speichert sich die Binary-Datei und flasht sie z. B. mit einem Tool wie dem NodeMCU-Flasher oder dem ESPHome-Flasher auf einem anderen Rechner. Hatte man schon einmal eine Firmware wie Tasmota, ESPEasy (mein Favorit vor ESPHome) oder Espurna drauf, kann man die von HA erzeugte Firmware direkt über deren Firmware-Update aufspielen.

Wichtig zu wissen ist dabei, dass ESPHome im Gegensatz zu etwa Tasmota kein eigenes Webinterface hat. Sämtliche Konfiguration geht von Home Assistant aus.

Anschluss und Programmierung

Ich habe für meinen Prototyp einen einfachen ESP8266 mit Adapterplatine eingesetzt. An welche GPIOs der MH-Z19 und die anderen Bauteile angeschlossen werden müssen, hängt von eurem Board ab. Nach den Einstellungen für das WLAN und ggf. einen Fallback-Hotspot für den ESPHome, werden ab Zeile 34 die UART-Pins definiert. In meinem Fall ist das GPIO 4 für den RX-Pin und GPIO5 für den TX-Pin des Sensors. Die Baudrate wird auf 9600 bps eingestellt.

Die Bibliotheken für den MH-Z19 Sensor kennt Home Assistant schon und sie stehen ohne weitere Installation zur Verfügung. Die Sensor-Plattform wird ab Zeile 39 gesetzt. Mit on_value_range ab Zeile 44, können nun die LEDs angesteuert werden. Diese sind über 150 Ohm Widerstände an den GPIOs 16 (grün), 14 (gelb) und 12 (rot) angeschlossen und können mit den YAML-Anweisungen below, above und then entsprechend auf HIGH oder LOW gesetzt werden. Innerhalb Home Assistant werden die LEDs als switch-Plattform behandelt (ab Zeile 68).

esphome:
  name: co2
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: "MEINE-SSID"
  password: "MEIN-WLAN-PASSWORT"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Co2 Fallback Hotspot"
    password: "MEIN-PASSWORT"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "MEIN-API-PASSWORT"

#Service fuer HA definieren um Kalibrierung aus HA steuern zu koennen
  services:
    - service: mhz19_calibrate_zero
      then:
        - mhz19.calibrate_zero: sens1

ota:
  password: "MEIN-OTA-PASSWORT"


# Serielle Schnittstelle definieren
uart:
  rx_pin: GPIO4
  tx_pin: GPIO5
  baud_rate: 9600

# Sensor konfigurieren
sensor:
  - platform: mhz19
    co2:
      name: "MH-Z19 CO2 Value" #Entity-ID in HA
      id: co2val
      on_value_range: # Schwellwerte für die Ampel
        - below: 1200
          then:
            - switch.turn_on: green_pin
            - switch.turn_off: yellow_pin
            - switch.turn_off: red_pin
        - above: 1200
          then:
            - switch.turn_off: green_pin
            - switch.turn_off: red_pin
            - switch.turn_on: yellow_pin
        - above: 1800
          then:
            - switch.turn_off: green_pin
            - switch.turn_off: yellow_pin
            - switch.turn_on: red_pin
    temperature:
      name: "MH-Z19 Temperature"
    update_interval: 60s
    automatic_baseline_calibration: false
    id: sens1


# Switch Plattform und GPIOs fuer LEDs definieren
switch:        
  - platform: gpio
    pin: GPIO12
    id: red_pin
    name: "CO2 rot"
  - platform: gpio
    pin: GPIO14
    id: yellow_pin
    name: "CO2 gelb"
  - platform: gpio
    pin: GPIO16
    id: green_pin
    name: "CO2 grün"

Mit dieser Konfiguration kann der ESPHome auch ohne Home Assistant als CO2-Ampel arbeiten, denn die LEDs werden direkt von der Logik auf dem ESPHome geschaltet.

Interessant ist die Zeile 63: Wird diese auf TRUE gesetzt, kann der MH-Z19 kalibriert werden. Dazu lässt man ihn 24 Stunden bei einer definierten CO2-Konzentration, also am besten in einem gut gelüfteten Raum ruhen. Bei guter Lüftung beträgt der CO2 Gehalt etwa 400 ppm. Der Sensor misst über den Kalibrierzeitraum die aktuelle Konzentration und schreibt den niedrigsten Wert als Baseline in sein EPROM, welcher dann als Referenz genommen wird. Danach stellt man die automatic_baseline_calibration wieder auf false.

Noch komfortabler geht es, wenn man einen Service für Home Assistant definiert, mit dem man die Kalibrierung aus HA aktivieren kann. Das geschieht in der ESPHome Konfiguration in Zeile 24.

Kalibrierung über einen Service in HA starten

In HA muss dann nur noch in den Developer Tools der Service ausgewählt und mit Call Service gestartet werden. Dabei sollte sich der Sensor wieder in einer Umgebung mit 400 ppm Kohlendioxid befinden. Nach einigen Stunden Kalibrierung startet man den ESP einfach neu. Damit beendet sich auch der Service und der Sensor arbeitet wieder im Normalbetrieb mit neuer Kalibrierung.

Der Sensor wird alle 60 Sekunden ausgelesen und die Werte zu Home Assistant übertragen. Über die Konsole von HA kann man sehen, was der neue ESPHome gerade macht:

Konsolen-Ausgabe des neuen ESPHome mit CO2 Ampel

Apropos Kalibrierung: nachts sind die CO2 Werte außen tatsächlich höher als am Tag. Der Grund dafür ist die geringere Photosynthese der Pflanzen. Gleiches gilt für die kalte Jahreszeit. Das ist selbst mit dem MH-Z19 messbar, hat aber wenig Einfluss auf die Kalibrierung, da es sich im 2-stelligen Bereich bewegt. Dieses Dokument zu “15 Jahre CO2 Messung in Hessen” erklärt das sehr interessant.

Messwerte und Erfahrungen

Ich habe die Messwerte mit meinem Airthings Wave Plus verglichen und die Messwerte korrelieren sehr gut. Die CO2-Ampel springt nun beim Überschreiten von 1200 ppm CO2 gelb und ab 1800 ppm rot. Lüftet man mehrere Minuten, wird die CO2-Ampel wieder grün.

Ein dauerhafter Wert von unter 1000 ist selbst in einem Raum mit 25 qm nur zwei Personen dauerhaft nicht möglich. Spätestens nach 2 Stunden überschreitet der Wert die 1000er Marke, bewegt sich aber dann bei Werten bis maximal 1500 ppm. 5 Minuten Stoßlüften mit offener Terrassentür senkt den Wert dann wieder an die 400er Grenze.

Schöne Diagramme Influx und Grafana

24 Stunden CO2-Messung im Homeoffice mit 2 Personen

Diese Messwerte erfasse ich mit der InfluxDB und dem Visualisierungs-Tool Grafana, das in Home Assistant einfach nachinstalliert werden kann. Die Auswertung für den Verlauf sieht in Grafana so aus:

Grafana Einstellungen und Query für die Verlaufsanzeige

Die “Gauge” Anzeige so:

In Grafana kann man auch Schwellwerte konfigurieren, die nicht nur der optischen Anzeige dienen, sondern auch aktiv für Benachrichtigungen eingesetzt werden können. Grafana unterstützt hier neben E-Mail auch Telegram, Slack, Microsoft Teams oder Google Hangouts. Eine Übersicht dazu gibt es HIER. Ich ziehe es jedoch vor, die Benachrichtigungen direkt aus Home Assistant heraus zu machen, dann habe ich nicht unterschiedliche Systeme.

Da die Werte nun auch in Home Assistant zur Verfügung stehen können sie hier z. B. genutzt werden, um ebenfalls Benachrichtigungen per Telegram zu versenden oder als Alexa Sprachnachricht mit freundlicher Aufforderung zu Lüften. Das kann Grafana nicht.

Die CO2-Ampel in Home Assistant

Die LEDs zeigen ihren Status als Schalter an. Ebenso könnte man Home Assistant und die Switches der Ampel dazu nutzen einen automatischen Fensterantrieb und ein Lüftungssystem zu steuern.

Was kommt noch?

Der Sensor läuft nun seit dem 30. Oktober ohne Probleme und animiert uns dazu öfter zu lüften, als wie es sonst getan hätten. Nicht weil wir uns vor Corona schützen wollen, sondern weil die Luft angenehmer ist und man sich so im Homeoffice besser und länger konzentrieren kann.

Nun muss ich noch eine Platine dafür entwerfen. Ein BME280 Sensor für Luftfeuchtigkeit und genaue Temperaturmessung kommt auch noch drauf und ein kleiner Lautsprecher erinnert mit dezentem Piepsen dran, wieder mal das Fenster aufzumachen – oder auch zu schließen, wenn die Temperatur zu stark abfällt. Noch ein schönes Gehäuse gedruckt und fertig ist die CO2 Ampel für weniger als 40 Euro.

Darum ist Home Assistant die beste Smarthome Software!

Der Hauptgrund für die Auswahl von Symcon war bei mir die gute Unterstützung unseres LCN Issendorf Gebäudeautomationssystems. Bei OpenHAB wird das Thema nur sehr stiefmütterlich behandelt, weil die Verbreitung auch nicht sehr hoch ist – zumindest im privaten Bereich. Die anderen Systeme habe ich mir damals aus reinem Interesse angesehen und getestet.

Vom gesamten Konzept ist Symcon sehr schlüssig, unterstützt alle wichtigen Komponenten, Systeme und Protokolle und war für mich als PHPler schön, da mir damit das Schreiben von eigenen Skripten und Funktionen sehr leicht gefallen ist.

Was mich daran stört, sind die Dashboards, die nicht so richtig sexy und teilweise ziemlich unhandlich sind. Auch die Darstellung von Diagrammen ist nicht besonders praktisch und schön gelöst und gerade die sind für mich sehr wichtig, konnte ich mit diesen Auswertungen doch unsere komplette Heizung um 30 % optimieren.

Da schon einiges an Konfigurationsaufwand und Gehirnschmalz in Symcon geflossen ist und ich grundsätzlich damit zufrieden war, Stand ein Wechsel bislang nicht im Raum. Bislang …

Home Assistant und Unraid

Begonnen hat alles mit meinem Umstieg auf Unraid bei meinem Smarthome-Server/NAS (Details dazu HIER). Mit der Docker-Integration von Unraid konnte ich schnell einen Blick auf Home Assistant werfen, ohne einen Raspi startklar machen zu müssen, da Home Assistant Core als fertige Anwendung in den Unraid Community Apps zu finden ist.

Home Assistant (kurz: HA) hatte ich mir 2016 schon einmal genauer angesehen, als wir uns für den Kauf unseres Hauses entschieden hatten. Da das Projekt damals aber erst 3 Jahre jung war, keine LCN-Unterstützung bot und auch sonst noch keinen vollständigen Eindruck machte, habe ich es als Smarthome-Lösung für unser Haus wieder verworfen.

Per Autodiscover gefundene Sensoren und Eingänge

2020 war mein Eindruck von Home Assistant ein völlig anderer: Schicke, sehr detailliert konfigurierbare Dashboards, tolle Anzeigen und Elemente und flotte Bedienung. Noch interessanter war aber, dass Home Assistant beim Start automatisch per Autodiscover nach bekannten Geräten und Systemen suchte und ZigBee (über den Conbee-Stick), TV-Geräte, Fritzbox und vieles mehr bereits fix und fertig integriert und nutzbar waren.

Mit der Smartphone-App von Home Assistant war sogar mein Samsung mit Akkustand, Standort (Geofencing out of the Box), Speicherplatz, Bluetooth-Verbindungen etc. sofort Teil des Smarthome Systems. Eine Visualisierung ist bereits im Grundsystem möglich.

Home Assistant und Hass.io

Das Docker-Image von Home Assistant für Unraid besteht aus dem Home Assistant Core, mit dem ich die ersten Versuche gemacht habe. Es gibt jedoch auch Hass.io. Das ist ein komplettes Betriebssystem mit allen notwendigen Voraussetzungen für Home Assistant. Zusätzlich bringt es aber Updates per Mausklick, Backup, einen Community-Store für Erweiterungen und jede Menge anderer Vorzüge mit.

Mit Home Assistant starten- welche Plattform wählen?

Hass.io kann als fertiges Image auf einem Raspberry Pi innerhalb von Minuten betriebsbereit sein, wobei aktuell noch kein Raspbery Pi 4 unterstützt wird. Hass.io läuft aber auch auf einem PC, QNAP und Synology NAS-Systemen, einem Intel NUC oder – wie in meinem Fall – als virtuelle Maschine in Unraid.

Für Hass.io gibt es ein Abo für $5 pro Monat, das den Fernzugriff und die Nutzung von Amazon Alexa extrem vereinfacht. Zudem unterstützt man damit die Weiterentwicklung von Home Assistant. Grundsätzlich braucht man es aber nicht, muss jedoch etwas mehr Aufwand in die Konfiguration von Alexa stecken.

Konfiguration, YAML, VS Code und Node-Red

Die Konfiguration von HA erfolgt mittels YAML, einer Auszeichnungssprache zu der auch JSON gehört. In der configuration.yaml legt man alle Sensoren, Schalter, Lichter, Anbindungen etc. an, die in HA zur Verfügung stehen sollen.

Das ist anfänglich ein bisschen ungewohnt und die Syntax mit ihren Einrückungen muss man verstehen. In Hass.io kann jedoch Microsofts VS Code direkt in HA integriert und genutzt werden. Durch die Home Assistant Erweiterung für VS Code können die Konfigurationsdateien komfortabel mit entsprechenden Fehlerhinweisen etc. bearbeitet werden.

Tatsächlich lassen sich dann aber auch ziemlich komplexe Automationen über recht einfache YAML-Konstrukte realisieren. Entitäten, also ein Messwert eines Sensors, ein Schalter oder eine Lampe können einfach zu Gruppen zusammengefasst werden, die sich dann gemeinsam schalten und steuern lassen. Mit den aktuellen Versionen von Hass.io kann aber auch immer mehr ohne YAML über die Bedienoberfläche konfiguriert werden.

Node-Red Integration in Home Assistant

Vollständig baff war ich, als ich die Integration von Node-Red in Home Assistant gesehen habe. Durch die speziellen Home Assistant Nodes, bilden Home Assistant und Node-Red eine Einheit und man kann auch Node-Red für Automationen etc. nutzen. Viele HA-Nutzer setzen bei ihren Konfigurationen vollständig auf Node-Red, da man hier eine visuelle Darstellung einer Automation hat.

Wem das noch nicht genügt, kann über die Erweiterung AppDaemon Python Programme zur Automation einsetzen und damit auch die komplexesten Aufgaben bewältigen.

Lovelace – das Home Assistant Frontend

Das Frontend von HA wurde Anfang 2019 auf Lovelace umgestellt. Vorher organisierte sich das Frontend nach einem Algorithmus von selbst und konnte nur durch YAML angepasst werden. Mit Lovelace kann man sich nun seine Frontends beliebig gestalten.

Mit 24 Cards können die unterschiedlichsten Funktionen und Sensoren übersichtlich und attraktiv dargestellt werden. So lassen sich z. B. auch einzelne Schalter zu einer Gruppe kombinieren, die dann auch gleich einen zentralen Schalter hat, die auf alle Elemente in der Gruppe wirkt. Die Cards lassen sich individuell in Look and Feel konfigurieren. Über den Community-Store kann man zig weitere Cards und Themes installieren. Die Anzahl der Frontends ist beliebig und zukünftig sollen diese auch automatisierbar sein. Man könnte dann etwa je nach Tageszeit oder anwesenden Personen ein angepasstest Dashboard einblenden.

Gerade bei Integration neuer Geräte und Sensoren ist die Minimal-Ansicht sehr hilfreich, in der automatisch alle neuen Entitäten aufgelistet und bedienbar sind.

Optisch macht das HA Frontend einen sehr sauberen, modernen und attraktiven Eindruck. Dazu zählen auch die schicken Mediaplayer.

Eine Visualisierung des Smarthomes ist Grundbestandteil des Frontends und lässt sich sehr flexibel umsetzen.

Home Assistant Smartphone App

Die Smartphone-App für Android und iOS hat es ebenfalls in sich und wird ebenso schnell weiterentwickelt, wie HA selbst. Geofencing, Personenerkennung und Daten zum Smartphone wie Standort, Akkustand oder Alarmeinstellungen sind schon mit dabei und die App kann Push-Nachrichten von HA empfangen.

Sehr neu ist die Integration von NFC-Tags. Diese kleinen Aufkleber können mit einem NFC-fähigen Smartphone gelesen und in HA sehr komfortabel entsprechenden Funktionen zugeordnet werden. So könnte man das Smartphone im Auto auf ein entsprechendes Tag legen und damit das Garagentor öffnen oder schließen lassen – natürlich nur, wenn man sich auch im Geofencing-Bereich befindet.

Home Assistang App

Ein NFC-Tag an der Wand kann zusammen mit dem Smartphone auch ein Lichtschalter oder eine Zugangskontrolle sein. Man braucht also keinen NFC-Leser am Eingang, sondern nur das robuste und billige NFC-Tag – und das Smartphone. Die Home Assistant App dient dabei auch als Schreiber für NFC-Tags. Allein diese Funktion bietet unendlich viele Möglichkeiten.

Home Assistant und LCN

Ein Großteil meiner Steuerung setzt auf LCN. Die Einrichtung meiner vielen LCN-Module, Relais und Variablen bedeutete etwas Tipparbeit. Nachdem alle Ausgänge, Bewegungsmelder und Sensoren angelegt sind, funktioniert LCN mit Home Assistant tadellos. Tastenbefehle können ganz offiziell genutzt werden und HA lässt auch den Zugriff auf Regler, Schwellwerte, LEDs und Logik zu. Natürlich kann man auch die Texte der LCN-GT4 und LCN-GT12 Displays von HA aus ansteuern.

VS Code in Home Assistant und die LCN Configuration

In der Konfiguration der Ausgänge können Rampenzeiten für dimmbare Ausgänge vorkonfiguriert werden. Damit geht die Beleuchtung sanft an und aus, ohne das dafür zusätzlicher Konfigurationsaufwand anfällt.

Home Assistant Add-On Store

Hat man Hass.io installiert, hat man auch den Add-On Store zur Verfügung. Darin findet man bekannte Anwendungen wie Grafana, InfluxDB, AdGuard, NGINX Reverse Proxy, Let’s Encrypt, Mosquitto MQTT Broker und vieles mehr. Diese Anwendungen können per Mausklick installiert und konfiguriert werden. Auch Updates werden von Hass.io aus gesteuert. Noch mehr: Die Anwendungen sind perfekt in Home Assistant integriert und von der konfigurierbaren Menüleiste links erreichbar.

Home Assistant Add-on Store

Gerade die Integration von InfluxDB und Grafana ist kinderleicht und man hat damit eine mächtige und sehr attraktive Lösung für Diagramme, Statusmeldungen und andere Darstellungen zur Verfügung. HA kann alle Ereignisse in die InfluxDB schreiben, es lassen sich aber auch bestimmte Sensoren oder Gruppen definieren, die eingeschlossen oder ausgelassen werden sollen.

Zum Add-On Store gesellt sich zusätzlich HACS – der Home Assistant Community Store. Hier findet man noch einmal hunderte von Integrationen z. B. für Plex, OpenSprinkler, Bosch Indego Rasenroboter aber auch zusätzliche Cards (Anzeigeelemente) für das Frontend oder fertige Automationen als Vorlage. Insgesamt kann man damit auf über 1600 Integrationen und Add-Ons zurückgreifen.

ESPHome – perfekte Integration für Sonoff, ESP8266 etc.

Ich stehe ja auf DIY-Sensoren auf Basis von ESP8266 oder ESP32. Bislang habe ich dazu auf ESPeasy gesetzt, um auch die Sonoff-Geräte in Symcon einzubinden. Home Assistant bring hier eine eigene Plattform mit, ESPHome, die perfekt in HA integriert ist. ESPHome unterstützt praktisch alle bekannten Sensoren und Aktoren und kann aus der HA Oberfläche heraus programmiert und auf den neuesten Stand gebracht werden. So kann man alle ESPHome Geräte per Mausklick über das WLAN aktualisieren. Neue Konfigurationen werden in HA kompiliert und per OTA (Over the Air) zum ESP-Gerät übertragen.

Sonoff Geräte über WLAN-Konfigurieren und flashen

Programmiert werden die ESPs auch wieder mit YAML, was aber sehr viel einfacher ist, als es klingt. Ein Vorteil dabei: Man kann eine Konfiguration ganz schnell auf mehreren Geräten verteilen.

Was mir an ESPHome besonders gut gefällt, ist die Möglichkeit auch umfangreiche Berechnungen oder Automationen direkt im Modul zu erledigen. Damit kann ein Modul wichtige Steuerungsaufgaben auch unabhängig von Home Assistant erledigen. Mein ESP8266 Wemos Modul mit BME280 Sensor (Temperatur, Luftfeuchtigkeit, Luftdruck), liefert so auch gleich die absolute Luftfeuchtigkeit, Taupunkt und den höhenkorrigierten Luftdruck.

Sonoff Konfiguration mit Berechnungen im Modul

Wer bislang auf die alternative Firmware Tasmota gesetzt hat, findet bei Home Assistant mit TasmoAdmin ebenfalls ein Werkzeug, um alle Tasmota/Sonoff Geräte zentral bearbeiten und aktualisieren zu können – oder man steigt gleich auf ESPHome um.

Home Assistant Grundlagen mit Kaffeemaschine und Alexa

Die Home Assistant Community

Home Assistant gehört zu den 10 größten Open-Source-Projekten auf Github. 1900 Core-Entwickler sorgen für eine rasante Weiterentwicklung des Systems, bei dem es praktisch wöchentlich ein neues Release gibt. Weitere 63.000 Entwickler sorgen für Erweiterungen und Anpassungen anderer Systeme.

Die Home Assistant Community ist riesig, sehr aktiv und hilfsbereit. Neben dem eigenen Forum gibt es ein Sub-Reddit für HA und einen Discord-Channel mit 53.000 Mitgliedern.

Der einzige Nachteil könnte für manchen Anwender sein, dass bei HA englisch gesprochen wird und auch die hervorragende Dokumentation englisch ist.

Wenn Englisch (mit einem leichten australischem Einschlag) kein Problem ist, kann ich den Home Assistant Podcast wärmsten empfehlen. Hier erfährt man nicht nur in sehr unterhaltsamer Weise Neuigkeiten zu Home Assistant, sondern auch, was andere HA Anwender umgesetzt haben, denn in jeder Episode gibt es einen Gast aus der Community. Der Podcast läuft seit Tagen in meinem Tesla.

Fazit

Home Assistant hat mich mehr als überzeugt. Home Assistant und Hass.io bieten einen bislang unerreichten Funktionsumfang, bei gleichzeitiger Stabilität und durchdachter Konfiguration und Bedienung. Die riesige Community und die viele freiwilligen Entwickler sorgen für ein enormes Tempo bei der Weiterentwicklung.

Gerade die direkte Integration von zusätzlichen Diensten und Anwendungen wie InfluxDB, MariaSQL, MotionEye (Überwachungskameras), Grafana, Deconz (Conbee Stick) usw. machen Home Assistant zur besten Lösung für anspruchsvolle Smarthome-Besitzer. Integriertes Backup mit Snapshots, Versionierung der eigenen Einstellungen mit Github und Hass.io als zugrundeliegendes Betriebssystem schützen vor Konfigurationsfehlern und sichern den problemlosen Betrieb.

Manuelle und automatische Snapshots und Backups

Natürlich muss man sich erst einmal einarbeiten, Begrifflichkeiten und Architektur verstehen. Dabei hilft die Community ungemein, wo viele Anwender auch ihre Konfiguration auf Github zur Verfügung stellen. Viele Automationen kann man sich dort einfach abschauen, kopieren und an die eigenen Anforderungen anpassen. Das führt dazu, dass man anhand dieser vielen Praxisbeispiele sehr schnell einen Einstieg in Home Assistant schafft.

Ich bin gerade dabei meine bisherige Symcon-Konfiguration zu Home Assistant zu übertragen. Eigene PHP-Skripte habe ich bereits umgeschrieben oder konnte auf fix und fertige Lösungen von HA zurückgreifen. Symcon ist eine tolle Smarthome-Zentrale. In größeren Ausbaustufen allerdings auch nicht so ganz günstig und hat als Closed-Source Anwendung mit Fokus auf deutschsprachige Anwender auch nicht die Möglichkeiten, welche die große Home Assistant-Gemeinde hat. Letztendlich war es das Gesamtpaket aus tollem Frontend, umfassender Integration von anderen Systemen wie Node-Red oder DeConz und schneller Weiterentwicklung die mich dazu bewegten Symcon abzulösen.

Um nun noch einmal die Überschrift aufzugreifen: Ja, Home Assistant ist für mich die beste Smart Home Software und wenn die Entwicklung so schnell weitergeht wie bisher, werden es andere Lösungen zukünftig schwer haben. Home Assistant hat das Zeug, den Standard in diesem Bereich zu definieren.

Mehr Infos: https://www.home-assistant.io/

ESP32-Cam Probleme beheben

Die ESP-Familie von Espressif ist durch den ESP8266 bekannt geworden, der sich in vielen WLAN-Steckdosen, Lampen und anderen Geräten findet. Eine günstige Variante kommt mit einer Kamera und lässt sich zur Überwachungskamera umbauen. Es ist sogar eine Gesichtserkennung möglich. Die Kamera liefert einen Live-Stream und bietet jede Menge Einstellungsmöglichkeiten per Web-Interface:

Das Web-Interface des ESP32-CAM Beispiels

Das Web-Interface des ESP32-CAM Beispiels

ESP32-Cam mit der Arduino-IDE flashen

Die ESP-Mikrocontroller lassen sich mit der Arduino-IDE flashen und programmieren. Hier in aller Kürze die wichtigsten Einstellungen.

In der Arduino-IDE wird zunächst die Quelle für die Board-Informationen eingebunden:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Zusätzliche Board-Verwalter URLs in der Arduino IDE eintragen

Die URL wird unter “Zusätzliche Boardverwalter-URLs” eingetragen

Mehrere Einträge werden mit einem Komma getrennt. Damit kann man im Anschluss unter Werkzeuge->Board->Boardverwalter die Definitionen für die ESP32 Boards installieren. Einfach ESP32 in der Suche eingeben und das Board installieren.

ESP32 Board installieren

ESP32 Board installieren

Nach der erfolgreichen Installation wählt man das Board ESP32 Wrover Module aus. Die Board-Einstellungen erfolgen normalerweise automatisch und sollten wie im Screenshot aussehen:

ESP32 Wrover Module auswählen

ESP32 Wrover Module auswählen

Zur Programmierung der günstigen ESP32-Cam Boards braucht man einen FTDI-Adapter. Der 3,3 Volt und GND-Anschluss des FTDI-Adapters kommt auf den 3,3 V und GND auf dem Board, dabei nicht vergessen, den Jumper für die Spannung auf dem FTDI-Adapter auch auf 3,3 Volt zu stecken, sonst killt ihr euren ESP32! Der RX-Anschluss des Adapters kommt auf den UOT-Anschluss am ESP32 und der TX-Anschluss auf den UOR-Anschluss des ESP. Wenn ihr den FTDI-Adapter an eurem Rechner anschließt, zeigt er sich als neuer COM-Port (PC). Diesen COM-Port stellt ihr in den Board-Einstellungen (letzter Screenshot) unter Port ein. Um den ESP32 flashen zu können, braucht ihr eine Brücke zwischen GND und IO0, nur dann kann der ESP32 programmiert werden.

Unter Datei->Beispiele->ES32->Camera könnt ihr nun das CameraWebServer Script laden. Hier müssen folgende Zeilen angepasst werden:

#include "esp_camera.h"
#include <WiFi.h>

//
// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,
//            or another board which has PSRAM enabled
//

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER

#include "camera_pins.h"

const char* ssid = "DEINE-SSID";
const char* password = "DEIN-WLAN-PASSWORT";

void startCameraServer();

void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  Serial.println();

Hat man das Script wie oben geändert und abgespeichert, kann der ESP32 geflasht werden. Dazu klickt ihr auf den Pfeil oben links in der Arduino-IDE und gleich danach die Reset-Taste auf dem ESP32. Nun sollte das Programm zum ESP32 hochgeladen werden. Die IDE bestätigt euch den erfolgreichen Upload. Das sollte in etwa so aussehen:

Erfolgreicher ESP32-Cam Flash-Vorgang

Erfolgreicher ESP32-Cam Flash-Vorgang

Nun entfernt ihr die Brücke zwischen GND und IO0 wieder, da sonst das Programm nicht gestartet wird (der ESP32 bleibt dann im Programmiermodus). Danach öffnet ihr die serielle Konsole in der IDE und drückt erneut die Reset-Taste. Wenn ihr nun nach einigen Zeilen

1
2
3
4
WiFi connected
Starting web server on port: '80'
Starting stream server on port: '81'
Camera Ready! Use 'http://192.168.1.34' to connect

seht, lief alles super und ihr könnt über die angegebene IP-Adresse das Setup-Interface aufrufen und über http://192.168.1.34:81/stream (natürlich mit eurer IP-Adresse) das Live-Bild der Kamera betrachten.

Probleme mit dem ESP32-Cam Modul beheben

Eines der größten Probleme des Moduls ist der “Brownout”. Als Brownout wird ein kurzzeitiges Absinken der Spannung bezeichnet und genau das passiert bei vielen ESP32-Cam Clones, sobald das WLAN starten möchte. Viele FTDI-Programmer und die dazu angeschlossenen USB-Kabel können die kurzzeitig hohen Ströme beim Start der WLAN-Verbindung nicht liefern und in der seriellen Konsole der Arduino IDE wird dann “Brownout detector was triggered rst:0xc …” angezeigt.

Erste Abhilfe schaffen bessere USB-Kabel. Zudem sollte man im Echtbetrieb den ESP32 über den 5 Volt-Anschluss mit Strom versorgen. Ebenso ist ein 220 µF Elko am 5V- und GND-Pin hilfreich.

Elko am ES32

Ein weiteres Problem ist aber die Stromversorgung selbst. Viele USB-Ports und Powerbanks liefern gerade mal so 5 Volt. Bei dem kurzzeitigen Strombedarf des ESP32 brechen diese aber schnell auf 4,8 Volt und weniger ein. Auf dem ESP32 befindet sich jedoch ein Spannungsregler vom Typ AMS1117, der nicht zu den allerbesten seiner Art gehört. Zwar kann er die gewünschte Ausgangsspannung von 3,3 Volt noch bis zu einer Eingangsspannung von 4,35 Volt (laut Datenblatt) stabil erzeugen. In der Praxis klappt das jedoch nicht wirklich und der Brownout wird provoziert.

In einem Test an meinem Rigol DP832 Labornetzteil habe ich festgestellt, dass der ESP32 erst ab 5,4 Volt am Eingang stabil arbeitet. Einige billige China-USB-Netzteile liefern genau diese überhöhten Spannungen und damit funktioniert der ESP32-Cam einwandfrei.

Da der AMS1117 Spannungsregler Eingangsspannungen bis 15 Volt verträgt, kann man den ESP32 mit 6 oder 7 Volt betreiben und vermeidet damit die genannten Probleme. Höhere Spannungen führen bei dem Linear-Regler natürlich auch zu mehr Verlusten und Abwärme.

Streifen im Bild

Ebenfalls mit einer zu niedrigen Versorgungsspannung hängen die horizontalen Streifen im Bild zusammen, die häufig bemängelt werden. Auch hier hilft eine einfache Anhebung der Versorgungsspannung am 5 Volt Eingang des ESP32 auf 5,5 Volt oder mehr.

Mangelnde WLAN-Reichweite

Die EPS32 Clones sind keine Reichweiten-Monster, wenn es um die WLAN-Verbindung geht. Allerdings befindet sich auf dem Board eine Mini-Coax-Buchse (MHF IV, I-PEX, HSC MXHP32). Das Problem daran ist, dass sie nicht einfach so genutzt werden kann. Um eine externe Antenne am ESP32 anschließen zu können, muss ein Bauteil umgelötet werden, das die Coax-Buchse statt der eingebauten Antenne verbindet.

Dabei handelt es sich um eine einfache SMD-Brücke im 0402 (01005) Format. Wir reden hier also von einem Bauelement, das weniger als einen halben Millimeter lang ist. So ein Teil von Hand aus- und wieder einzulöten ist selbst mit der besten Ausstattung praktisch unmöglich. Da es sich nur um eine Brücke handelt, kann man das Teil aber einfach auslöten und mit viel Fingerspitzengefühl gegen ein Stückchen Draht aus einer Ader einer Litze ersetzen. Ein Mikroskop macht diese Arbeit deutlich leichter.

Einfacherer Umbau für eine externe Antenne

Wer es einfacher möchte, trennt die interne Antenne an der Speiseleitung auf und lötet da die externe Antenne an. Ich habe übrigens die Antenne samt Coax-Kabel einer alten Fritzbox recycelt.

Fazit

Abgesehen von kleineren Quirks, ist die ESP32-Cam ein wirklich hilfreiches und preiswertes Teil, für die es jede Menge Anwendungen gibt.

Warum Nextcloud daheim eine schlechte Idee ist

Ein eigener Server, der Dienste wie Dropbox, OneDrive oder Google Drive überflüssig macht und daheim die eigene Datenhoheit ermöglicht, klingt verführerisch. Auch lässt sich ein Nextcloud-Server schnell und kostenlos aufsetzen. Mit dem Raspberry Pi 4 und seinen USB3.0 Schnittstellen, geht das sogar mit dem beliebten Bastelrechner und damit extrem preiswert. Schnelle DSL- oder sogar Glasfaser-Anbindungen daheim bringen heutzutage auch die notwendigen Bandbreiten mit und viele Netz-Provider bieten statische IPs an.

HP Proliant Microserver

Auch ich hatte auf meinem Heimserver eine Nextcloud-Installation unter OMV (Open Media Vault) auf einem HP Microserver Gen 8 im Einsatz. Nun habe ich den Stecker gezogen und den Nextcloud-Dienst deaktiviert. Warum? Einmal ist der Einsatz eines eigenen Nextcloud-Servers für nur zwei Personen ein absoluter Overkill. Der Server will gepflegt und regelmäßig mit Updates versehen werden. Das ist essenziell wichtig. Dabei sind die Updates leider nicht mit einem einfachen Klick auf einen Button erledigt. Zumindest unter OMV muss man sich auf dem Server einloggen und zuerst eine .well-known Dateil verschieben, damit das Nextcloud-Update überhaupt startet.

Unter OMV klappt leider auch die automatische Erneuerung des Lets-Encrypt-Zertifikates nicht, sodass man dieses alle 3 Monate manuell anstoßen muss. Das ist alles in die Kategorie “nervig” einordenbar, aber noch kein K.O.-Kriterium.

Heimserver als beliebtes Angriffsziel

Wirklich geschockt ist man aber, wenn man sich mal den fremden Traffic ansieht, der beim eigenen Nextcloud-Server anklopft. Mit einem nach außen erreichbaren Server am DSL-Anschluss ist man unter Dauerbeschuss. Die Anfälligkeit betrifft ja nicht nur den eigentlichen Nextcloud-Server, sondern auch die Infrastruktur dahinter. Sicherheitslücken in OMV, ein ungepatchter Linux-Server, auf dem Nextcloud läuft, oder einfach Sicherheitslücken durch zu geringe Absicherung, die meist von Unwissenheit rührt führen dazu, dass man ein beliebtes Ziel für Hacker wird.

TheDigitalArtist / Pixabay

Gerade ein Raspberry Pi verleitet schnell dazu, ihn nach außen zu öffnen, um irgendwelche Dienste freizugeben. Als sehr verbreitetes System ist er aber ein willkommener Angriffspunkt, nachdem das Internet automatisiert durchforstet wird und der das heimische Netzwerk sperrangelweit öffnen kann. Unter Umständen erlangen die Angreifer so auch Zugriff auf eine Smarthome-Steuerung etc.

Man muss sich bei einem eigenen Nextcloud-Server aber auch selbst um die regelmäßigen Backups kümmern und Ransomware-Angriffe zeigen, warum das kein Luxus, sondern absolute Mindestvoraussetzung ist. Das Problem sieht man an den noch immer regelmäßigen Hacks bei diversen NAS-Systemen. Es ist einfach keine gute Idee als Privatanwender einen öffentlich im Netz erreichbaren Server am DSL-Anschluss zu betreiben.

Nextcloud bei professionellen Hostern

Ich schätze das Risiko eines solchen Angriffs um Größenordnungen höher ein, als einen Dienst wie Google Drive zu nutzen. Zudem gibt es auch dedizierte Hoster, die Nextcloud-Server mit professioneller Betreuung und Sicherheitsmanagement anbieten, wie z. B. Pixelx. Bis 5 GB Speicherplatz bekommt man hier seinen privaten Nextcloud-Server sogar kostenlos. Die gesparte Zeit und Hardware kann man anders besser nutzen.

ArduMower: OpenSource Rasenmähroboter ohne Begrenzungsdraht

Rasenroboter sind sicher eine praktische Hilfe im Garten. Allerdings haben wir keines dieser geometrischen exakten Neubaugrundstücke, sondern einen eingewachsenen Garten mit allerlei Winkeln, ohne feste Rasenkanten und Bereiche, die nicht zusammenhängend sind. Auch ist unsere Terrasse noch nicht fertig, sodass der Draht ohnehin noch einmal neu verlegt werden müsste und der Einsatz eines Vertikutierers wäre auch keine gute Idee. Daher wäre die Verlegung eines Begrenzungsdrahts nicht nur sehr aufwendig, in unserem Fall sogar fast unmöglich. So höre ich von vielen Seiten immer wieder, wie oft ein durchtrennter Begrenzungsdraht gefunden und repariert werden muss.

Leider ist Drahtschleife noch immer die gängige Technik aller Rasenroboter, egal ob Gardena, Bosch, Worx und wie sie alle heißen. Erst kürzlich machte eine Kickstarter-Kampagne zum “Toadi” Mähroboter auf sich aufmerksam. Der Toadi soll allein mit Objekterkennung navigieren und seinen Weg finden. Dafür hat man mittlerweile 1,5 Millionen Euro eingesammelt, nur leider erfährt man keinerlei Details zur Technik und irgendwie macht die ganze Sache einen ziemlich unglaubwürdigen Eindruck. Ich habe HIER bereits darüber berichtet. Mit 2471 Euro für die Unterstützer der Kickstarter-Kampagne ist er auch nicht gerade preiswert.

Rasenroboter mit GPS-Navigation

Die einzig sinnvolle Möglichkeit einen Mähroboter ohne Begrenzungsdraht exakt fahren zu lassen, ist GPS. Der herkömmliche GPS-Empfang ist dazu jedoch zu ungenau und bewegt sich im Bereich von 5 – 10 Meter Abweichung – viel zu unpräzise für diese Aufgabe. Abhilfe schafft das Differential-GPS. Hier werden die GPS-Daten des fahrenden Objekts mit denen einer fixen Empfangseinheit verglichen. Aus der Abweichung beider Empfänger lässt sich ein Korrekturwert errechnen, der dann eine Genauigkeit von 1 cm ermöglicht. Diese Technik ist unter dem Namen GPS/RTK (Real Time Kinematic) bekannt, aber leider recht aufwendig und damit teuer.

Eine Fläche, die für einen Begrenzungsdraht zu aufwendig wäre – für den ArduMower kein Problem

Der Rasenmähroboter-Hersteller Husqvarna wirbt derzeit mit dem Husqvarna EPOS Mähsystem, das auf GPS-RTK setzt. Der Hersteller schreibt dazu allerdings, dass das System vorerst für professionelle Anwender (Fussballplätze, Golfanlagen, Parks) angeboten werden soll und das erst ab 2021. Für Privatanwender dürfte die Technologie noch in weiter Ferne liegen, wird der Preis für einen so ausgestatteten Rasenmähroboter doch im Bereich von 10.000 Euro veranschlagt.

So war ein, für unseren Garten passender Mähroboter, außer Reichweite – dachte ich zumindest.

ArduMower: nachhaltiger Rasenmähroboter mit GPS-RTK selbstgebaut

Vom ArduMower-Projekt habe ich zum ersten Mal auf der Maker Faire 2015 in Berlin gehört. Hier zog ein selbst gebauter Rasenmähroboter lustig seine Kreise. 5 Jahre später mäht der ArduMower nicht nur in Bahnen, sondern auch ohne Begrenzungsdraht. Die Jungs haben es geschafft, GPS/RTK in einer vergleichsweise günstigen Variante in ihren Open-Source-Mähroboter zu integrieren. Damit kann man mit dem Smartphone den ArduMower die Grenzen der Rasenfläche anlernen, in dem man ihn einfach einmal die Ränder abfahren lässt. Ab da kann der ArduMower per GPS/RTK präzise die gelernte Fläche mähen – ganz ohne fehleranfällige Drahtschleife oder Kamerafunktionen.

Der ArduMower selbst besteht aus robusten Bauteilen, die man sich selbst herstellen, oder aber im ArduMower-Shop Marotronics bestellen kann. Hier bekommt ihr sämtliche Bauteile und nützliches Zubehör. Das Gehäuse besteht aus gefrästem PE-Plattenmaterial, neuerdings wird aber auch eine Dibond-Version erhältlich sein, die bei gleicher Stabilität deutlich leichter ist.

Der ArduMower von innen

Das Herz und Intelligenz des ArduMower ist ein Arduino an dem gängige Sensoren und Module aus der Arduino-Welt angebunden sind. Marotronics bietet dazu ein Mainboard an, das alle Komponenten verbindet. Dieses Board bekommt ihr für knapp 60 Euro auch allein.

Ardumower Mainboard mit Arduino Due

Grundsätzlich lässt sich mit dem ArduMower Projekt auch ein vorhandener (defekter) Rasenroboter umbauen und mit einem 3D-gedruckten Gehäuse kann er auch sehr schick aussehen. Ein reines Elektronik-Set für den DIY Rasenroboter gibt es ab knapp 440 Euro.

Arctic Hare: Gehäuse aus dem 3D-Drucker

Angetrieben wird er von einem 25,2 Volt Lithium-Ionen-Akku mit 5 Ah, zwei kräftigen Getriebemotoren für den Radantrieb sowie einem Motor für die Messer. Man kann den ArduMower natürlich auch mit einer Drahtschleife betreiben, wirklich interessant ist aber die neue GPS/RTK-Version.

Ein komplettes ArduMower-Kit für Drahtschleifen kostet inkl. Installationskit für die Schleife derzeit 669,54 Euro plus ca. 130 Euro für den Akkupack. Dafür erhält man einen robusten, frei konfigurierbaren und vor allem reparierbaren Mähroboter mit viel Erweiterungsmöglichkeiten und offener Software-Plattform. Gerade das spielt für mich eine immer größere Rolle: Ich möchte keine Geräte mehr wegwerfen müssen, weil ein winziger Defekt eine Reparatur unrentabel macht oder der Hersteller die Software nicht weiterentwickelt.

Für die GPS/RTK Version gibt es zwei Möglichkeiten:

ArduMower mit eigener Basis oder per SAPOS-Dienst

Wie oben bereits erwähnt, benötigt der ArduMower zur präzisen Navigation per GPS ein Korrektursignal. Dieses kann man über den “SatellitenPostitionierungsdienst” der deutschen Landesvermessung SAPOS per Internetdienst erhalten.

Dazu wurden mehrere Stationen installiert, die ihre Daten per Webdienst zur Verfügung stellen. Hier schlägt aber nun wieder der Föderalismus zu, denn während der Dienst in manchen Bundesländern kostenlos ist, verlangt man hier in Bayern 10 Cent pro Minute Nutzung für den hochgenauen HEPS-Dienst oder pauschal 250 Euro pro Monat (!!).

Ardumower mit GPS/RTK Antenne

Kann man SAPOS HEPS in seinem Bundesland kostenfrei nutzen, hätte das den Vorteil, dass man nur einen GPS/RTK-Empfänger im Roboter benötigen würde. Mit knapp 390 Euro ist dieser Empfänger nämlich nicht gerade billig. Der ArduMower setzt hier auf das ArduSimple-System mit uBlox Empfänger.

Ein Komplett-Kit hierfür wird bei Marotronic für 961,83 Euro angeboten. Die SAPOS-Daten werden dann per WLAN an den Roboter übertragen und abgeglichen. Hierfür ist natürlich auch eine WLAN-Abdeckung der Rasenfläche notwendig, z. B. über einen Outdoor-Accesspoint.

Ich muss auf einen eigenen stationären GPS/RTK setzen, den ich auf dem Hausdach montieren werde. Auch hier bekommt man im ArduMower-Shop ein komplettes Mäher-Kit für 1.363,73 €. Die Verbindung zwischen dem stationären Empfänger und dem ArduMower erfolgt hier über XBee-Module, es ist also kein WLAN im Garten erforderlich.

Mein eigener ArduMower

Das Komplett-Set für meinen ArduMower ist bestellt und er wird ein rotes Dibond-Gehäuse mit weißem Deckel bekommen. Der größte Aufwand dürfte die Bestückung des Mainboards sein. Zudem muss ich eine Halterung für den GPS/RTK Empfänger vorsehen und eine Roboter-Garage mit Kontakten zum Aufladen bauen.

Natürlich kann man auch in den nächsten Baumarkt oder Gartenmarkt und sich dort einen 08/15 Rasen Mähroboter für weniger Geld holen, der vielleicht auch schicker aussieht. Beim ArduMower bekommt man aber eine nachhaltige Mähroboter-Plattform die erweiterbar und reparierbar ist. Der ArduMower arbeitet außerdem nicht nach dem Chaos-Prinzip, sondern in Bahnen oder Mustern. Das ist hinsichtlich der Akkukapazität und dem Messerverschleiß sehr viel effizienter, als das zufällige Muster der bekannten Systeme.

Gerade denkt man bei den Machern über eine zusätzliche Kamera nach, die Objekte frühzeitig erkennen kann und der Bumper-Duino, der Berührungen mit Hindernissen nicht per mechanischen Schaltern, sondern durch Luftdruckänderung in einem Schlauch erkennen kann, ist schon fast genial. Zudem besagt der Ikea-Effekt ja, dass man Dinge umso mehr schätzt, wenn man sie selbst hergestellt hat. Ein paar eigene Ideen habe ich auch schon. Ein weiteres Thema wird die Einbindung in unser Smart Home mit Symcon sein und demnächst soll ja auch noch eine automatische Rasenbewässerung kommen.

Mehr Infos:

https://www.ardumower.dehttps://www.marotronics.de
https://wiki.ardumower.de

Xiaomi Roborock Saugroboter von der Cloud befreien

Wir haben seit 2 Jahren einen Xiaomi Roborock S50 Saugroboter, der sich zu unserem Vorwerk VR200 und einem iRobot gesellt. Dabei ist es für den S50 ein Leichtes, die beiden anderen Sauger in praktisch jeder Disziplin zu degradieren. Einzig der Zwang zur chinesischen Cloud war mir ein Dorn im Auge. Mir ist es zwar egal, ob die Chinesen den Grundriss unseres Hauses kennen oder wann wir saugen. Sollte die Cloud jedoch ausfallen, fehlen auch viele Funktionen.

Auf dem Roborock läuft auch mit der Original-Software ein vollständiges Ubuntu-Linux als Betriebssystem. Findige Hacker haben geschafft, auf dessen Basis eine gepatchte Firmware zu entwickeln, die alle Funktionen der Xiaomi Home-App bietet und noch ein bisschen mehr.

Mit der Valetudo RE Firmware, kann man verschiedene Roborock-Sauger vom Cloud-Zwang befreien und man erhält zusätzliche Funktionen, die sehr interessant sind. Valetudo RE ist ein Fork der Valetudo Firmware, die mehr Funktionen bietet.

Dabei wird auf dem Saugroboter ein Webserver installiert, der eine Benutzeroberfläche für alle Funktionen zur Verfügung stellt. Damit lässt sich der Roboter komfortabel bedienen und einrichten.

Die Original-App von Xiaomi funktioniert mit dem Update auf Valetudo RE nicht mehr, sodass auch der Fernzugriff nur noch per VPN möglich wäre. Die Valetudo-Entwickler haben jedoch eine Schnittstelle zum Telegram Messenger integriert, über die man den Roboter auch aus der Ferne steuern kann und Statusmeldung zurückbekommt – inklusive Karte. Außerdem versteht der Roborock mit Valetudo-Herz nun auch MQTT und lässt sich damit ohne Tricks in viele Smarthome-Systeme einbinden.

Zum Upgrade auf die alternative Firmware braucht man einen Linux-Rechner mit WLAN. Am einfachsten geht das mit einem Raspberry Pi samt Monitor und Tastatur. Alternativ kann man ein Live-Linux von einem USB-Stick booten. Mit dem LinuxLive USB Creator kann man sich so ein Live-Linux aus einem ISO-Image selbst generieren. Ich habe für solche Basteleien immer ein bootbare Linux Mint Cinnamon auf einem Stick parat.

DustBuilder baut euch die passende Firmware

Während bislang recht viele Schritte notwendig waren, die alternative Firmware auf den Roborock zu bekommen, geht das mit dem Dustbuilder recht einfach. Hier kann man sich die passende Firmware als Installations-Paket generieren lassen.

Dustbuilder-Einstellungen für die Valetudo Firmware meines S50

Den Download-Link bekommt man nach einigen Minuten an die angegebene E-Mail-Adresse geschickt. Mit dem Firmware-Paket erhält man auch ein Schlüsselpaar für einen SSH-Zugang. Damit kann man z. B. mit Putty direkt per SSH auf den Sauger zugreifen. Das solltet ihr aber nur tun, wenn ihr damit vertraut seid, denn hier habt ihr einen Root-Zugang und könnt damit auch jede Menge zerschießen.

Valetudo-Installation

Hinweis

Seid euch bitte im Klaren darüber, dass ihr bei Fehlern und unsachgemäßem Update den Roborock in die ewigen Jagdgründe schicken könnt. Ihr solltet bereits etwas Erfahrung mit dieser Art von Bastelei haben.

Um die Firmware zu installieren, benötigt man zunächst eine Python-Umgebung auf dem Linux-Rechner:

Einen Ordner anlegen:

mkdir valetudo

Vorsichtshalber die Paketquellen updaten und upgraden:

sudo apt-get update  
sudo apt-get upgrade

In den neuen Ordner gehen und die Python-Umgebung einrichten:

cd valetudo  
python3 -m venv venv

und danach das Flash-Tool miio-tools installieren:

1
2
3
4
source venv/bin/activate  
pip3 install wheel  
pip3 install python-miio  
cd ..

Um nun die Firmware flashen zu können, müssen die WLAN-Einstellungen des Saugers zurückgesetzt werden, damit er wieder einen Access Point öffnet. Dazu kann man entweder den Sauger aus der Xiaomi-Home-App löschen oder (ab Gen2 Saugern) den Reset-Taster unter der Klappe bei der blauen Wifi-LED mehrere Sekunden lang drücken. Bei anderen Modellen müssen die beiden äußeren Tasten (Spotreinigung und Docking) lange gleichzeitig gedrückt werden. Dann sollte im WLAN ein Gerät mit dem Namen Xiaomi- oder Roborock-Irgendwas erscheinen. Damit verbindet ihr euren Linux-Rechner – ein WLAN-Passwort ist nicht erforderlich.

Als Nächstes benötigt ihr den Token eures Saugers:

mirobo --debug discover --handshake true

Hier bekommt ihr eine Ausgabe, in der ihr eine Zeile mit dem Token findet. Diesen kopiert ihr euch in die Zwischenablage oder noch besser: in eine Textdatei.

Zwischenzeitlich solltet ihr auch den Download-Link des Dustbuilder bekommen haben. Ladet die .pkg Datei herunter und speichert sie im Valetudo-Verzeichnis auf eurem Linux-Rechner mit dem Dateinamen valetudo.pkg

Nun geht es ans eigentliche Firmware-Update. Der Sauger sollte dazu vollständig geladen sein und sich möglichst nahe an eurem Linux-Rechner befinden. Die IP-Adresse des Saugers ist im Access-Point-Modus übrigens immer 192.168.8.1

mirobo --ip 192.168.8.1 --token DEINTOKEN update-firmware valetudo.pkg

Damit wird die Firmware zum Sauger hochgeladen und installiert. Das dauert einige Minuten und ihr solltet hier nicht ungeduldig werden. Die Fortschrittsanzeige ist hier nicht sonderlich hilfreich und stockt oft schon bei wenigen Prozent. Das Update geht trotzdem weiter.

War das Update erfolgreich, bekommt ihr eine entsprechende Sprachausgabe. Nun müsst ihr den Sauger noch einmal Neustarten: Sauger von der Ladestation nehmen, Power-Taste lange drücken, bis er ausschaltet und dann wieder einschalten.

Verbindet euch wieder mit dem WLAN des Saugers (siehe oben). Nun sollte der Sauger per Browser unter der 192.168.8.1 erreichbar sein und ein Webinterface anzeigen:

Unter “Einstellungen -> WLAN” kann man den Sauger nun ins heimische WLAN hieven.

Sollte die Installation fehlschlagen, habt ihr vermutlich eine sehr neue Original-Firmware auf eurem Sauger. So war es auch bei mir. Abhilfe schafft ein Werks-Reset: Docking-Taste 3 Sekunden gedrückt halten und dann die Reset-Taste für 10 Sekunden ebenfalls gedrückt halten. Damit ist der Sauger wieder komplett auf der Software-Version bei der Auslieferung. Er macht damit auch wieder seinen Access-Point auf, allerdings hat sich nun auch der Token geändert, sodass ihr den erst noch einmal neu – wie oben beschrieben – auslesen müsst.

Roborock Saugroboter aufgebohrt

Auch mit der alternativen Firmware lassen sich Zonen-, Räume und Verbotslinien einzeichnen. Man kann nun auch mehrere Zonen einrichten, die der Sauger dann anfährt.

Für die einzelnen Zonen/Räume lässt sich auch festlegen, wie oft sie pro Durchgang gesaugt werden sollten.

Wer möchte, kann detaillierte Zeitpläne anlegen, die dann automatisch abgearbeitet werden:

Fernsteuerung mit Valetudo

Durch den Wegfall der Mi-Home-App und Cloud-Anbindung könnt ihr den Sauger nun nicht mehr von außerhalb eures WLANs steuern. Ein Weg ist natürlich, das Webinterface per VPN aufzurufen. Valetudo RE lässt sich aber auch per Telegram steuern. Dazu richtet ihr einen Telegram-Bot ein und damit habt ihr auch unterwegs volle Kontrolle über den Saugroboter, inkl. Zonenauswahl, Statusmeldungen und Karte.

Wer bereits eine Haussteuerungssoftware wie Symcon, FHEM, OpenHAB etc. im Einsatz hat, kann den Sauger dort auch per MQTT einbinden und ihn z. B. dann automatisch losschicken, wenn man das Haus verlassen hat.

Fazit

Die Roborock-Sauger sind meiner Ansicht und Erfahrung nach, die beste Wahl, wenn es um einen Saugroboter geht. Mit dem Valetudo Update ist man unabhängig vom Cloud-Zwang und bekommt obendrein noch zusätzliche Funktionen. Der Aufwand ist überschaubar und mit etwas Linux-Übung, hat man das Update in 20-30 Minuten erledigt.

Ist man mit der alternativen Firmware trotzdem nicht zufrieden (was ich für sehr unwahrscheinlich halte), kann man über einen Werksreset immer wieder zurück zur Hersteller-Firmware.