Lese-Ansicht

Home Assistant: Gaszähler mit ESPHome auslesen, flashen unter WSL

Zu einem Smart Home gehört es fast selbstverständlich, dass der Verbrauch von Energie aufgezeichnet wird. Der Stromzähler ist eine der wesentlichen Energiezählern im Haushalt, auch der Gaszähler ist sehr wichtig. Vor allem in Haushalten, in denen der primäre Energieträger Erdgas ist, ist der Gasverbrauch essenziell und wird im Smart Home auch optimiert. Das ist, zumindest für meine Begriffe, eine der wesentlichen Aufgaben des Smart Homes.

Das Schöne an den Gaszähler ist es, dass sie sich in der Regel sehr einfach auslesen lassen. Es ist keine komplizierten und teuren Geräte dafür notwendig. Bei den meisten Gaszählern reicht nämlich ein einfacher Reed-Kontakt aus, die es für einige Cent bei Ebay oder anderen Shops zu kaufen gibt. Als Intelligenz wird der sehr vielseitige ESP8266 verwendet. Dieser ist sehr energiesparend, hat integriertes WLAN, lässt sich verhältnismäßig einfach einrichten und kostet ebenfalls nur sehr wenig Geld.

Wenn der Gaszähler eine Aufschrift wie „1 im = 0,01m³“ trägt, lässt er sich mit wenig Aufwand digitalisieren. Ein Reed-Schalter könnte bereits genügen, um den Gaszähler ins Smart Home einzubinden.

Hardware: ESP8266 und Reed-Kontakt verlöten

Die Einkaufsliste für diesen Sensor:

  • ESP8266, beispielsweise den Wemos D1 Mini
  • Reed-Kontakt
  • optional: 5V Netzteil
  • optional: Schrumpfschlauchsortiment

Für einen geübten Maker ist diese Aufgabe im Handumdrehen erledigt. Für nicht geübte Maker ist es das perfekte Einsteigerprojekt. Es sind nur sehr wenige Lötstellen zu setzen und man kann kaum etwas falsch machen. Beim ESP8266, in meinem Fall ein Wemos D1 mini, müssen nur die beiden Pinleisten angelötet werden. Für Minimalisten würde sogar je ein Pin bei G (Ground) und D1 (GPIO5) reichen. An diese Pins gehören jeweils die Kabel, idealerweise Litzen 0,15mm², an deren Ende der Reed-Kontakt gehört. Bei diesem Schalter muss man keine Richtung beachten, man kann ich nicht falsch herum anlöten. Das fertige Produkt sieht dann so aus. Ich habe noch versucht, die Lötstellen mit Schrumpfschlauch zu verschönern. Das ist optional.

Update (02.05.2022)  Weiterhin habe ich eine optionale LED zur Visualisierung des Signals eingebracht. Diese blinkt immer dann, wenn der Reed-Kontakt schaltet. Das ist vor allem dann sehr nützlich, wenn man den Reed-Schalter am Gaszähler anbringt. Die LED ist eine Hilfe, sie ist aber nicht zwingend nötig. Ihren Vorwiderstand kann man über Online-Tools berechnen, bei mir waren es 220 Ohm.

Der Schaltplan mit optionaler LED
ESP8266 an der Pinleiste mit einem Reed-Schalter verlötet. Der Reed-Schalter geht auf Pin G und Pin D1

ESPHome auf ESP8266 installieren unter Windows 10

Unter Windows 10 lässt sich über den „Microsoft Store“ Ubuntu installieren. Das ist der kleine Umweg, den ich häufig gehe, um ein fast vollständiges Linux unter Windows 10 zum laufen zu bringen. Dass es leider nicht vollständig ist, sieht man den nun folgenden, etwas umständlichen Herangehensweise, wie man ESPHome auf dem ESP8266 installiert.

Wer ein vollständiges hass.io bzw. Home Assistant hat, kann das übrigens über den Addon-Store mit dem Add-on „ESPHome“ deutlich beschleunigen. Da ich aber, wie bereits beschrieben, Home Assistant als Container laufen habe, ist für mich der Umweg notwendig.

Man startet Ubuntu unter Windows und gelangt in das Terminal. Dort installiert man sich (falls noch nicht geschehen) Python 3 und das nötige Paket „esphome“ aus dem Python-Repsitory. Anschließend prüft man, ob die Installation geklappt hat, indem man sich die Versionsnummer ausgeben lässt.

$ sudo apt-get install python3 python3-pip
$ pip install --user esphome
$ esphome version 

Der Einfachheit halber empfehle ich, den Wizard von ESPHome zu verwenden. Er wird benutzt, um die *.yaml zu erstellen. Genau wie bei Home Assistant ist sie dafür da, den Controller zu konfigurieren. Der Wizard zeigt einem glücklicherweise gleich alle möglichen Alternativen auf, die man eingeben kann. Beantwortet also wahrheitsgemäß die 4 Fragen den Wizards und wir erhalten eine Konfigurationsdatei mit dem angegebenen Namen. Ich habe hier willkürlich gaszaehler.yaml gewählt.

$ esphome wizard gaszaehler.yaml
$ nano gaszaehler.yaml

Die nun folgende Datei sieht dann beispielsweise so aus:

esphome:
  name: gaszaehler

esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "1234"

ota:
  password: "1234"

wifi:
  ssid: "hier die Wifi-SSID eintragen"
  password: "hier das Wifi Passwort eintragen"
  manual_ip:
    static_ip: "auf Wunsch"
    gateway: "IP-Adresse des Gateways"
    subnet: "Subnet Maske"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Gaszaehler Fallback Hotspot"
    password: "hier steht automatisch ein Passwort"

captive_portal:

Das Fallback-Wifi wird gebraucht, falls der Sensor das eigentliche WLAN nicht erreichen kann. Dann baut der ESP8266 eigenständig ein WLAN auf, über das er sich konfigurieren lässt.

Update (02.05.2022)  Vor diesem Update habe ich den Pulse_counter von ESPHome verwendet. Dieser liefert leider keine zuverlässigen Werte. Gleiches gilt für den pulse_meter, der eigentlich besser sein sollte. Stattdessen bin ich nach einiger Tüftelei wieder bei dem binary_sensor herausgekommen, der wunderbar funktioniert. Zusätzlich ist eine LED auf GPIO0 angebracht, die schaltet, sobald der Reed-Schalter zieht. Damit könnt ihr live am Gerät sehen, ob ein Puls anliegt. Sie ist nur eine Hilfe und nicht zwingend erforderlich.

globals:
  - id: total_pulses
    type: int
    restore_value: false
    initial_value: '0'  # hier kann der Gaszählerstand initialisiert werden

binary_sensor:
  - platform: gpio
    id: internal_pulse_counter
    pin:
      number: GPIO5
      mode: INPUT_PULLUP
    name: "Live-Impuls"
    filters:
      - delayed_on: 10ms
    on_press:
      then:
        - lambda: id(total_pulses) += 1;
        - output.turn_off: led  # optional: für eine LED, die den Gaszählerpuls visualisiert
    on_release:
      then:
        - output.turn_on: led  # optional: für eine LED, die den Gaszählerpuls visualisiert

sensor:
  - platform: template
    name: "Gasverbrauch"
    device_class: gas
    unit_of_measurement: "m³"
    state_class: "total_increasing"
    icon: "mdi:fire"
    accuracy_decimals: 2
    lambda: |-
      return id(total_pulses) * 0.01;

# Optional: Diese LED soll blinken, sobald ein Signal vom Gaszähler erkannt wird
output:
  - platform: gpio
    pin: GPIO0
    id: 'led'

Fertig mit der Konfiguration. Wir speichern mit Strg + O und schließen Nano mit Strg + X

Mit dem folgenden Befehl wird der Code für den ESP8266 kompiliert. Ich habe es leider nicht geschafft, ihn direkt per USB-Kabel auf meinen Controller zu bekommen. Daher bin ich einen Umweg gegangen.

$ esphome run gaszaehler.yaml

Das endet mit einer Fehlermeldung (connection failed bad indicator errno=11), dass der Code nicht auf den Controller gebracht werden konnte. Stattdessen kopieren wir den Code auf das Laufwerk C: unter Windows und arbeiten von dort aus weiter (sorry Leute!!).

$ cp ~/esphome/.esphome/build/gaszaehler/.pioenvs/gaszaehler/firmware.bin /mnt/c/Users/<Benutzername>

Mittels ESPHome-Flasher, den es auch für Windows gibt und der nicht installiert werden muss (!!) geht es weiter. Die eben kopierte Datei auswählen, den ESP8266 mit USB am PC anstöpseln und den entsprechenden COM-Port auswählen (bei mir wurde nur einer angezeigt). Bestätigen, und warten bis es fertig ist.

ESPHome in Home Assistant installieren

Mit der Entität „ESPHome“ kann der Sensor in den Home Assistant eingebunden werden. Das geht sehr fix, es muss nur die IP-Adresse und das festgelegte Passwort eingegeben werden. Damit er auch korrekt als Energiequelle erkannt wird, muss man noch folgende Zeilen in die configuration.yaml anfügen, besser noch, in die sensor.yaml

Update (15.04.2022): Manchmal fällt der ESP kurzzeitig aus, was den Gasverbrauch kurzfristig auf 0 m³ setzt. Sobald er wieder da ist, gibt es einen unlogischen Peak in der Statistik. Dieser wird über die kleine IF-Schleife herausgefiltert.

- platform: template
  sensors:
# Gaszähler, kommend von ESPHome, aufbereiten für Energy
    gasincubicmeter:
      value_template:  >
          {% if states('sensor.gasverbrauch') | float == 0 %}
           {{ states('sensor.gasincubicmeter') }}
          {% else %}
           {{ states('sensor.gasverbrauch') | float }}
          {% endif %}
      unit_of_measurement: m³
      device_class: gas
      attribute_templates:
        state_class: total_increasing

Nach einem Neustart des Servers klickt man im Home Assistant auf „Einstellungen“, „Energie“ und klickt auf den Gaszähler. Dort taucht nun die neue Entität gasincubicmeter auf und kann ausgewählt werden.

In Home Assistant kann über Einstellungen → Energie eine neue Gasquelle hinzugefügt werden
Der Gasverbrauch wird auf dem Energie-Dashboard von Home Assistant angezeigt

Reed-Schalter am Gaszähler positionieren

Wer Zugriff auf einen 3D-Drucker hat, sollte sich bei Thingiverse mal umsehen, ob dort ein Halter für seinen Gaszähler vorhanden ist. Die Chance dort, oder woanders, einen zu finden, halte ich für sehr hoch. Andernfalls kann man mit etwas Geschick und gutem Klebeband den Schalter direkt am Gaszähler montieren. Er muss in der vorgesehenen Kerbe möglichst genau unter der letzten Ziffer positioniert werden. Wer darauf achtet, wird bemerken, dass die letzte drehende Ziffer einen kleinen Magneten hat. Genau darunter muss der Reed-Schalter geklebt werden.

The post Home Assistant: Gaszähler mit ESPHome auslesen, flashen unter WSL first appeared on bejonet - Linux | Smart Home | Technik.

  •  

Home Assistant: Animiertes Regenradar einfügen

Zu einem guten Smart Home gehört natürlich auch eine schöne „Kommandozentrale“. Obwohl das Haus ja schlau ist und alles selbst entscheiden soll, möchte man ja dennoch wissen, was gerade los ist. Der Home Assistant, eine freie und open source Software für Hausautomatisierung, bietet mit seinen Dashboards genau solche Übersichten an. Mit wenigen Klicks lassen sich die Messdaten aus dem Haus und um das Haus visualisieren.

Einen Regenradar in Home Assistant kann man einbinden, wenn man die Bild-URL als Kachel im Dashboard hinzufügt.

Regenradar und weitere Wetterdaten

Das Wetter spielt natürlich eine entscheidende Rolle für das Haus und die Bewohner. Die erste Anlaufstelle für aktuelle Wetterdaten und Vorhersagen könnte beispielsweise OpenWeatherMap sein. Die API ist gut dokumentiert, die Einbindung in den Home Assistant ist reibungslos, der Dienst ist kostenlos und es fällt keine Werbung an. Einzig eine Registrierung auf der Webseite ist nötig, um den verpflichtenden API-Schlüssel zu erhalten.

Was leider fehlt, ist der Regenradar. Jede Vorhersage ist ja nur so gut, wie die, die man mit eigenen Augen sieht. Darum lohnt es sich, einen Regenradar in das Home Assistant Dashboard einzubinden.

Die meisten Regenradare lassen sich nicht besonders einfach einbinden. Und falls doch, sind sie meistens mit Werbung übersät. Um so schöner ist es, dass die Webseite morgenwirdes.de den Regenradar vom Deutschen Wetterdienst (DWD) aufbereitet und uns als animierte gif-Datei zur Verfügung stellt. Die Einbindung in den Home Assistant ist explizit erlaubt und funktioniert folgendermaßen.

Einbindung in den Home Assistant

Zunächst bastelt man sich die URL zusammen, die man für sein Dashboard braucht. Das geht relativ einfach, wenn man sich die Struktur der URL ansieht.

https://morgenwirdes.de/api/v3/gif4.php?plz=12345&delay=70&type=1&zoomlvl=1&bar=0&map=1&textcol=ffffff&bgcol=03a9f4

Die Flagge „plz“ gibt die Postleitzahl vor. Delay ist die Zeit in Millisekunden, die pro Zeitstufe angezeigt wird. Es gibt zwei Farbschemen der Karte, typ=0 oder 1. Der Zoomlvl gibt den Zoomlevel an (hier 1 für ganz Deutschland). Eine Zeitleiste (bar) und Hintergrundkarte (map) können optional eingeblendet werden. Farblich anpassen kann man die Karte mit den beiden letzten Flaggen.

In der configuration.yaml habe ich das dann als Kamera eingebunden. Das hat den Vorteil, dass die Daten immer aktualisiert werden. Würde man es als Bild einbinden, könnte es sein, dass der Regenradar nur aus dem Cache geladen wird und deshalb nicht aktuell ist.

##### Kameras und Wetterkarten
camera:
  - platform: generic
    still_image_url: 
https://morgenwirdes.de/api/v3/gif4.php?plz=12345&delay=70&type=1&zoomlvl=1&bar=0&map=1&textcol=ffffff&bgcol=03a9f4
    name: regenradar

In Lovelace, dem Dashboard von Home Assistant, fügt man nun ein Picture-Glance hinzu, schon ist das Radar da:

type: picture-glance
title: Regenradar
entities: []
camera_image: camera.regenradar

Update 15.04.2022:

Ich habe den Artikel angepasst, das Bild wird nicht mehr als normales Bild, sondern als Kamera eingebunden. Dadurch wird das Radar zuverlässiger aktualisiert.

The post Home Assistant: Animiertes Regenradar einfügen first appeared on bejonet - Linux | Smart Home | Technik.

  •  

Homematic IP: Wochenprogramm via Home Assistant wechseln

Mit den Heizthermostaten von Homematic IP lassen sich die Heizkörper minutengenau zeitsteuern. In der Zentrale, in meinem Falle die Homematic CCU3, lassen sich Zeitprofile für jedes Heizthermostat hinterlegen. Die ganze Woche lässt sich damit detailliert planen. Es ist offensichtlich, dass nicht jede Woche eine Kopie der vorherigen Woche ist. Manchmal arbeitet man die ganze Woche von Zuhause aus, manchmal ist man im Urlaub. Damit ergibt sich auch, dass die Räume anders geheizt werden müssen.

Die Homematic CCU3 ermöglicht es, bis zu drei verschiedene Wochenprogramme anzulegen. Die Frage ist nun, wie kann man komfortabel zwischen diesen Wochenprogrammen wechseln? Diesem Thema widme ich diesen Artikel.

nn man über das WebUI jedem Thermostat ein detailliertes Wochenprogramm hinterlegen. Bis zu drei verschiedene Wochenprogramme können vorkonfiguriert werden.
In der Homematic CCU3 kann man über das WebUI jedem Thermostat ein detailliertes Wochenprogramm hinterlegen. Bis zu drei verschiedene Wochenprogramme können vorkonfiguriert werden.

Automatisierung ftw!

Der Grundgedanke eines Smart Homes ist natürlich, dass es „smart“ ist, also eigenständig Entscheidungen trifft. In meinem konkreten Fall könnte das bedeuten, dass meine Heizungssteuerung automatisch erkennt, wann mein Wochenprogramm sich ändern müsste. Mit entsprechenden Bewegungsmeldern ist das sicherlich möglich, wenn auch relativ aufwendig und kostspielig.

Ich habe mich dafür entschieden, eine übergeordnete Steuerung zu verwenden, den Home Assistant. Die Homematic CCU3 tritt dort nur als Client auf. Das ist insofern eine ganz gute Idee, als dass sich Home Assistant über eine App steuern lässt. Das ist komfortabel und zukunftssicher, dank einer engagierten Community im Hintergrund.

Einbindung von Homematic CCU3 in Home Assistant

Der Home Assistant und die Homematic CCU3 lassen sich glücklicherweise sehr einfach miteinander verbinden. Einzig ein Eintrag in der configuration.yaml von Home Assistant ist notwendig. Im Beispielcode sind die Passwörter in eine secrets-Datei ausgelagert.

# Homematic
homematic:
  interfaces:
    ip:
      host: 192.168.1.123
      port: 2010
      resolvenames: json
      username: !secret homematic_user
      password: !secret homematic_pw
    groups:
      host: 192.168.1.123
      port: 9292
      resolvenames: json
      username: !secret homematic_user
      password: !secret homematic_pw
      path: /groups
  hosts:
    ccu3:
      host: 192.168.1.123
      username: !secret homematic_user
      password: !secret homematic_pw

Damit man das Wochenprogramm umschalten kann, braucht es einen Service, den wir folgendermaßen zusammensetzen.

  1. Man erstellt auf einem Dashboard einen neuen Button.
  2. Bei den Einstellungen des Buttons wechselt man in die Code-Ansicht und gibt dort folgendes ein.

Address ist die Serialnummer des Gerätes, Value ist das Wochenprofil.

type: button
tap_action:
  action: call-service
  service: homematic.set_device_value
  service_data:
    address: 000a1d8991xxxx
    channel: 1
    param: ACTIVE_PROFILE
    value: '2'
    value_type: int
  target: {}
entity: climate.000a1d8991xxxx
icon: mdi:bed-outline
name: Kein Besucher im Gästezimmer

Um das Wochenprofil auf einen anderen Wert zu stellen, dupliziert man die Kachel und ändert die „Value“. Leider habe ich nicht herausgefunden, wie man den aktuellen Wert für das Wochenprofil ausliest. Mit dieser Info könnte man einen einzelnen Button verwenden und diesen togglen.

The post Homematic IP: Wochenprogramm via Home Assistant wechseln first appeared on bejonet - Linux | Smart Home | Technik.

  •  

Home Assistant: Absolute Luftfeuchtigkeit berechnen

Das Heizsystem ist für viele der erste Einstieg in das Thema „Smart Home„. So ist es auch bei mir. Viele meiner Heizkörper laufen mittlerweile mit Heizthermostaten von Homematic. Zusammen mit der übergeordneten Software Home Assistant ist jetzt meine Menge möglich in meinen vier Wänden. Das Wandthermostat von Homematic ist sogar in der Lage, die relative Luftfeuchtigkeit zu messen. Das ist schon sehr nützlich und kann für weitere Auswertungen verwendet werden. In meinem Fall interessiere ich mich allerdings für die absolute Luftfeuchtigkeit, die sich von der relativen Luftfeuchtigkeit unterscheidet. Glücklicherweise lassen sich die beiden Werte ineinander umrechnen, und das Wandthermostat liefert auch alle notwendigen Messwerte dafür.

Unterschied zwischen relativer und absoluter Luftfeuchtigkeit

Mir als ausgebildeten Thermodynamiker liegt es natürlich am Herzen, dass man den Unterschied zwischen relativer und absoluter Luftfeuchtigkeit kennt. Der Unterschied liegt eigentlich auf der Hand und lässt sich schon anhand der Einheiten gut unterscheiden.

Viele Wandthermostate messen die relative Luftfeuchtigkeit

Die relative Luftfeuchtigkeit wird in Prozent angegeben. Die Luft ist ein Gemisch aus Gasen, ein Teil davon kann Wasserdampf sein. Wie viel das maximal ist, hängt von der Temperatur der Luft ab: je kälter es ist, desto weniger Wasserdampf kann dampfförmig in der Luft vorkommen. Sollte dieser Wert überschritten werden, bildet sich Nebel. Die relative Luftfeuchtigkeit gibt an, bis zu welchem Grad die Luft bereits mit Wasserdampf gesättigt ist. Sind die 100% erreicht, kondensiert alles zusätzliche Wasser und es wird neblig. Etwas thermodynamischer ausgedrückt, klingt die Definition so: Die relative Luftfeuchtigkeit gibt den Partialdruck des Wasserdampfs relativ zum Maximalwert bei aktueller Temperatur an.

Die absolute Luftfeuchtigkeit hingegen wird in g/m³ angegeben (andere Einheiten sind möglich). Bildlich kann man es sich so vorstellen, dass in einem Kubikmeter Luft die angegebene Menge Wasserdampf vorhanden ist.

Warum sollte man die absolute Luftfeuchtigkeit wissen wollen?

Eine typische Textaufgabe in Thermodynamik 1 könnte lauten: Im Wohnzimmer herrschen 22 °C und 40 % Luftfeuchtigkeit. Außen hat es 8 °C und 80 % Luftfeuchtigkeit. Steigt oder fällt die Luftfeuchtigkeit im Wohnzimmer, wenn man das Fenster öffnet?

Eine andere Fragestellung lässt sich ebenfalls darüber beantworten: Im Wohnzimmer herrschen 22 °C und 20 % Luftfeuchtigkeit. Das Raumvolumen beträgt 75 m³. Wie viele Kilogramm Wasser muss man verdunsten lassen, um auf 50 % Luftfeuchtigkeit zu kommen?

Wenn ihr es wisst, könnt ihr das gerne in den Kommentaren hinterlassen 🙂

Die Physik dahinter

Es sind zwei wichtige Formeln miteinander kombiniert. Die eine Formel, Antoine-Gleichung, berechnet den Sättigungsdampfdruck der Luft bei vorgegebener Temperatur. Die zweite Formel, die ideale Gasgleichung, berechnet daraus die absolute Feuchtigkeit. Die Temperatur und relative Feuchtigkeit werden vom Wandthermostat zur Verfügung gestellt.

Mit der Antoine-Gleichung kann der Sättigungsdampfdruck berechnet werden. Die hier gewählten Parameter A, B und C sind so gewählt, dass die Gleichung für Wasser angewendet werden. Die Temperatur T muss hier in Grad Celsius angegeben werden
Die Ideale Gasgleichung wird verwendet, um den Zustand eines idealen Gases zu beschreiben. Die spezifische Gaskonstante für Wasserdampf ist hier bereits eingesetzt. Die Temperatur T muss hier in Grad Celsius angegeben werden

Die Berechnung in Home Assistant

In Home Assistant legt man sich für diese Berechnung einen neuen Sensor an. Das geschieht über Templates. Dieser Sensor existiert nur softwareseitig und sein Messwert wird berechnet, nicht direkt gemessen. Ich habe das beispielsweise umgesetzt, indem ich in die configuration.yaml folgende Zeile ergänzt habe:

sensor: !include sensor.yaml

Mittels des folgenden Befehls habe ich besagte Datei erstellt und ihr den folgenden Inhalt gegeben.

$ touch sensor.yaml
$ nano sensor.yaml
- platform: template
  sensors:
    absolute_humidity:
	friendly_name: "Absolute Feuchte"
	unit_of_measurement: "g/m^3"
	icon_template: mdi:water-percent-alert
	value_template: "{{ 1000*e**(19.016-(4064.95/(float(states('sensor.wandthermostat_wohnzimmer_eg_actual_temperature'))+236.25)))*100/(461.66*(float(states('sensor.wandthermostat_wohnzimmer_eg_actual_temperature'))+273.15)) * float(states('sensor.wandthermostat_wohnzimmer_eg_humidity'))/100 | float }}"

In Home Assistant wird dieser Sensor in der Liste der Entitys angezeigt. Das Template hat sozusagen den neuen Sensor ins System integriert.

Im Home Assistant wird der neu angelegte Sensor als Entität aufgeführt. Jetzt kann er regulär verwendet werden.

The post Home Assistant: Absolute Luftfeuchtigkeit berechnen first appeared on bejonet - Linux | Smart Home | Technik.

  •  

Home Assistant Container installieren

Smart Homes sind in aller Munde. Bei Neubauten sowieso, aber auch bestehende Immobilien werden gerne zu so genannten Smart Homes umgerüstet. Den großen Markt teilen sich natürlich kommerzielle Anbieter, aber gerade auf der Softwareseite konkurrieren auch freie und open source Software um die Kunden. Die bekanntesten Teilnehmer im open source Bereich sind FHEM, OpenHAB und Home Assistant (früher bekannt als hass.io).

Diese Software soll verschiedene smarte Geräte vereinen, so dass sie alle unter einer Haube stecken. Anstatt jeweils eine Anwendung für die Heizung, das Licht und die Energieversorgung zu verwenden, soll die Software übergeordnet sein. Sie bildet damit die Schnittstelle zwischen den Geräten und mir.

Ich möchte mein Haus mit dem Home Assistant smart machen, bzw. einige der vorhandenen Komponenten dort einbinden. In diesem Artikel möchte ich zunächst auf die Installation von Home Assistant Container eingehen.

Unterschied zwischen Home Assistant und Home Assistant Container

Der mächtige Home Assistant wird gerne auf einem Raspberry Pi installiert. In der Regel verwendet man dafür gleich ein ganzes Image für das Betriebssystem. Das bedeutet, dass man statt des üblichen Raspbian das „Home Assistant Operating System“ installiert.

Der Vorteil liegt darin, dass man den Home Assistant in vollem Umfang nutzen kann. Der Nachteil ist, dass man über ein stark angepasstes OS verfügt. Möchte man noch weitere Software darauf laufen lassen, könnte das zu Konflikten führen.

In meinem Fall laufen noch andere Prozesse auf dem Raspberry. Somit kommt für mich das OS nicht infrage. Stattdessen möchte ich auf Home Assistant Container setzen. Hier läuft die Software über Docker.

Benutzt man den Home Assistant Container, muss man mit Einschränkungen leben. Es ist beispielsweise nicht möglich, Add-ons zu installieren. Der Grund liegt meines Wissens darin, dass Add-ons als (Docker-)Container installiert werden. Und das geht nicht, wenn bereits die Hauptanwendung in einem (Docker-) Container läuft. [Falls das jemand genauer weiß, gerne einen Kommentar hinterlassen!]

Installation von Home Assistant Container

Was man als Vorbereitung braucht, ist ein installiertes Linux-System. In meinem Beispiel ist es Raspbian auf einem Raspberry Pi 4. Dort meldet man sich via SSH an.

Schritt 1: Docker installieren. Gegebenenfalls hat man eine alte Version bereits installiert. Diese muss man entfernen und die aktuelle Version installieren. Dazu wird das Docker-Repository hinzugefügt und die Software daraus installiert. Am Ende wird eine Benutzergruppe „docker“ erstellt (ggf. geschieht das automatisch). Der aktuelle Benutzer – hier nennt er sich pi – wird der Gruppe hinzugefügt.

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo   "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo groupadd docker
sudo usermod -aG docker pi

Schritt 2: Home Assistant Container installieren. Der folgende Befehl holt sich das entsprechende Image aus dem Dockerhub, lädt es herunter und installiert es. Es ist wichtig, dass der Ordnerpfad für die Konfigurationsdatei korrekt angegeben wird. Wie oben bereits beschrieben, fehlt die Add-on-Funktion. Um die configuration.yaml bearbeiten zu können, muss man an diese Datei herankommen. Mit der Flag -v mountet man einen existierenden Ordner in den Docker-Container und kann damit die Datei weiterhin bearbeiten.

mkdir /home/pi/homeassistant/config
docker run -d \
  --name="homeassistant" \
  --privileged \
  --restart=unless-stopped \
  -e "TZ=Europe/Berlin"
  -v /home/pi/homeassistant:/config \
  --net=host \
  homeassistant/home-assistant:stable

Wer lieber Docker Compose verwendet, kann den folgenden Eintrag in die *.yaml eintragen:

name: smart_home_p10
services:
    home-assistant:
        container_name: homeassistant
        privileged: true
        restart: unless-stopped
        environment:
            - TZ=Europe/Berlin
        volumes:
            - /home/pi/homeassistant:/config
        network_mode: host
        image: ghcr.io/home-assistant/home-assistant:stable

Schritt 3: Docker-Image verwalten. Die gesamte Home Assistant Installation kann man über den Container starten und stoppen. Ein Update führt man ebenfalls über das Docker-Image aus. Die Befehle hierfür lauten folgendermaßen.

# Update installieren
docker pull homeassistant/home-assistant:stable
# Container stoppen und entfernen
docker stop homeassistant
docker rm homeassistant

Schritt 4: Auf Home Assistant zugreifen. Ab jetzt erfolgt die Verwaltung des Home Assistant über die Weboberfläche. Mit http://<IP-Adresse des Raspberrys>:8123 kann man von einem PC des gleichen Netzwerks auf die Installation zugreifen. Änderungen an der configuration.yaml müssen weiterhin über die Systemoberfläche, also z.B. mit nano oder vim über SSH erfolgen.

nano /home/pi/homeassistant/config/configuration.yaml

The post Home Assistant Container installieren first appeared on bejonet - Linux | Smart Home | Technik.

  •  

Nest Hub: Google ersetzt Cast OS mit eigenem Fuchsia OS

Seit dem Jahr 2016 entwickelt Google nach Android und Chrome OS mit Fuchsia ein komplett neues Betriebssystem, das nicht auf Linux basiert, und als Basis für eigene Geräte dienen soll. Nun wird das Betriebssystem auf dem Google Nest Hub der 1. Generation (Test), Googles Smart-Display mit Google Assistant, ausgerollt.

  •  
❌