Xiaomi Mijia Temperatur- und Luftfeuchtigkeitssensor in Home Assistant verwenden

In diesem Artikel möchte ich Euch zeigen, wie Ihr einen Xiaomi Mijia Temperatur- und Luftfeuchtigkeitssensor mit einem MH-ET Live ESP32 und ESPhome in Home Assistant einbinden könnt.

Mit dieser Technik können übrigens auch andere auf BT basierende Sensoren oder Switche eingebunden werden.

Zunächst zu Hardware. Ich habe folgende Hardware verwendet:

Alle Details zu ESPhome könnt ihr auch auf der Homepage von ESPhome nachlesen. https://esphome.io
Dorf findet Ihr auch eine Lister der unterstützten Geräte und Sensoren. Hier zeige ich Euch am Beispiel des Xiaomi Mijia, wie das Prinzip funktioniert.

Wir beginnen im Home Assistant und müssen zunächst das ESPhome installieren. Dies könnt Ihr unter dem Hass.io Menü im Add-on Store tun. Ihr müsst nur das Repository https://github.com/esphome/hassio zufügen und anschließend ist das ESPhome in der Liste der Add-on’s zu finden.

Nach der Installation müsst Ihr noch folgendes in das Config Feld des ESPhome eintragen und dann könnt Ihr das Add-on auch schon starten.

{
   "ssl": false,
   "certfile": "fullchain.pem",
   "keyfile": "privkey.pem"
 }

Wenn Ihr die Funktion „Show in sidebar“ des Add-On’s aktiviert habt, erscheint ein entsprechendes Symbol in der Sidebar.

Wenn Ihr das ESPhome gestartet habt, werdet Ihr auch direkt aufgefordert ein neues Gerät zu konfigurieren. Also klickt Ihr auf das kleine Kreuz oben rechts.

Nun öffnet sich ein Assistent, der bei der Konfiguration helfen soll.

Hier müsst Ihr zunächst einen Namen für das Gerät wählen, aber Ihr dürft nur Kleinbuchstaben, Zahlen von 0-9 und einen _ Unterstrich verwenden. Anschließend müsst Ihr das Bord aussuchen, das Ihr verwendet. Die Einträge sind bis auf den Namen aber nicht so wichtig, denn Ihr könnt diese anschließend noch anpassen oder von diesem Blog kopieren, wenn Ihr die gleiche Hardware verwendet wie ich.

Anschließen wurde im Home Assistant Installationsordner /Config/ ein Ordner ESPhome angelegt in dem sich nun ein Verzeichnis mit dem Namen Eures Gerätes befindet und eine yaml Datei mit dem gleichen Namen. Dies ist Eure Konfigurationsdatei, mit der Ihr zukünftig den ESP32 konfigurieren könnt.

Mann kann diese Datei auch über die ESPhome Weboberfläche öffnen, aber bei mir hat das ESPhome Änderungen nicht richtig gespeichert. Aus diesem Grund arbeite ich direkt in der yaml und kann die Änderungen dann in der Weboberfläche sehen.

Als erstes müssen wir eine .bin Datei erstellen, um den ESP32 über das USB-Kabel und der Software ESPhome Flasher Link zu Flashen. Damit der flasher unter macOs richtig funktioniert, muss noch ein CP210x VCP Driver installiert werden. Hier der Link.

Ich bearbeite die yaml Datei in Visual Studio Code. Für das erste flashen muss folgender Code verwendet werden.

esphome:
  name: DeinGeräteName
  platform: ESP32
  board: esp-wrover-kit

wifi:
  ssid: "DeinWLAN"
  password: "DeinWLANPasswort"

api:
web_server:
  port: 80
logger:
# Ein Passwort für Over The Air flashen
ota:
  password: '0000'
# einschalten des Bluetooth scanning für den MH-ET Live ESP32
esp32_ble_tracker:

Wenn Ihr ein Anderes Bord verwendet müsst Ihr den Code eventuell anpassen. Schaut dafür bitte in der oben Verlinkten Doku von ESPhome nach.

Nach dem Sichern, können wir auf der ESPhome Weboberfläche in Home Assistent nachschauen, ob unser Code zu sehen ist. Mit einem klick auf EDIT wird er aufgerufen.

Wir schließen das Fenster mit Close wieder. Mit Upload können wir später Änderungen o.t.a. „over the Air“ flashen.
Nun klicken wir auf die drei Punkte rechts an unserem Gerät und wählen „Compile“.

Wenn das File fertig Compileiert ist. kann es mit Download Binary gespeichert werden.

Anschließend muss die .bin Datei auf den ESP32 geflasht werden. Hierzu verwende ich des ESPhome Flasher . Wenn Ihr auf dem Mac flashen wollt, müsst Ihr noch den CP210x VCP Driver installieren. Hier der Link.

Bild

Wenn Ihr den ESP32 mit dem USB-Kabel anschließt erkennt die Software automatisch den richtigen Anschluss. Anschließend braucht Ihr nur noch die .bin Datei auswählen und den Flashvorgang starten. Sobald das Flashen beendet ist und der ESP32 neu startet, kann man Das Gerät im Home Assistant im ESPhome online sehen.

Bild

Ab jetzt kann der ESP32 an einem USB-Ladegerät an einer beliebigen Steckdose betrieben werden und alle Änderungen können O.T.A (Over the Air) auf den ESP32 übertragen werden.

Nun können wir den Xiaomi Mijia mit dem ESP32 bekannt machen. Dazu starten wir den Log auf der ESPhome Seite zum grade angelegten Gerät und können in einem hellen blau sehen was der ESP32 über seine BT-Schnittstelle erkennt. Sobald der Xiaomi Mijia eingeschaltet wird sollte er in diesem Log auftauchen. Wenn das nicht der Fall ist müsst Ihr den kleinen BT-Knopf auf der Rückseite des Xiaomi Mijia kurz gedrückt halten, bis das BT-Symbol auf dem Display des Xiaomi Mijia blinkt.

Ihr müsst nun den Gerätetyp und die MAC-Adresse kopieren, damit wir auf dem ESP32 einen Sensor für dieses Gerät erstellen können.

Hierzu öffnet Ihr wieder die Konfigurationsdatei .yaml im ESPhome Ordner und fügt folgenden Code unten an. Hier im Code müsst Ihr Eure Werte anpassen.

sensor:
  - platform: xiaomi_lywsdcgq
    mac_address: 58:2D:34:38:A8:8D
    temperature:
      name: "Büro Wandtermostat"
    humidity:
      name: "Büro Luftfeuchtigkeit Wandtermostat"
    battery_level:
      name: "Baterie Wandtermostat"

Nachdem Ihr das gespeichert habt, könnt Ihr diesen Code über das ESPhome Webinterface direkt hochladen.

Ich habe in einem ESPhome Forum gelesen, das sich der ESP32 nach längeren Betrieb auf mal aufhängen kann und aus diesem Grund wurde dort empfohlen einen Timer einzubauen der den ESP32 alle 24 Stunden neu startet. Hier ist der passende Code dafür, den Ihr nur am ende der .yaml Datei anfügen müsst.

time:
  - platform: homeassistant
    on_time:
      - seconds: 0
        minutes: 0
        hours: 4
        days_of_week: MON-SUN
        then:
           - switch.toggle: re_switch

Optional könnt ihr auch noch einen Switch für HA anfügen, mit dem Ihr den ESP32 dann auch manuell neu starten könnt. Dieser muss auch in die Konfiguration für Euren ESP32. Also bitte nicht in HA eintragen.

switch:
  - platform: restart
    name: "ESP_Erdgeschoss Restart"
    id: re_switch

Am Schluss müssen wir den ESP32 noch in unser HA integrieren, damit wir die Sensoren die wir grade erzeugt haben auch in unserem HA verwenden können. Dazu wechseln wir in HA zu den Integrationen.

Und fügen die ESPhome Integration hinzu.

Jetzt müsst Ihr nur noch den Gerätenamen angeben, den Ihr Eurem Gerät in ESPhome gegeben habt und auf „Absenden“ klicken.

Anschließend stehen die Sensoren und der Switch in HA zur Verfügung und können wie gewohnt auf der Oberfläche platziert werden.

Mit Home Assistant auf der Apple Watch einen Node-Red Flow starten

Hier beschreibe ich Euch, wie Ihr mit der Home Assistant watchOS App einen Flow in Node-Red starten könnt.

Wenn ihr meinen Artikel oder das Video zur Einführung der App nicht gesehen habt, findet Ihr alle Infos hier.

Beginnen wir mit Node-Red:

Im ersten Artikel habe ich beschrieben, das die watch App, wenn auf einen Button geklickt wird ein Event „ios.action_fired“ auslöst. Dieses müssen wir nun mit Node-Red abfragen. Dazu habe ich das „events: all“ Node verwendet.

Anschließend habe ich ein „switch“ Node verwendet, um die ankommenden Actions zu bewerten.

Die Adresse der Eigenschaft msg, könnt ihr aus einen „debug“ Node kopieren.

Nun müsst ihr nur noch ein „call service“ Node verwenden, um wie hier im Beispiel eine Lampe einzuschalten.

Genauere Beschreibungen findet ihr im oben verlinkten Video. Viel Spaß bei der Umsetzung.

Home Assistant auf der Apple Watch

In diesem Artikel beschreibe ich, wie Du watchOS App von Homme Assistant verwenden kannst. Hierzu musst du natürlich die Home Assistant App auf deinem iPhone installiert haben.

https://apps.apple.com/de/app/home-assistant/id1099568401

Wenn deine Apps nicht automatisch auf deine Uhr installiert werden, kannst diese über die Watch App auf deinem iPhone zuweisen.

Um nun einen Button für die Apple Watch zu erstellen, musst Du auf deinem iPhone in die Home Assistant App wechseln und dort über das Menü in die App-Konfiguration.

Anschließend unter Integrationen in Aktionen wechseln.

Hier können Buttons einfach über hinzufügen erstellt werden. Anschließend in den neu erstellten Button wechseln.

Nun kann der neue Button konfiguriert werden.

Name: Dies ist der actionName, der beim klicken über das Event iOS.action_fired an Home Assistant gesendet wird.

Text: Dies ist der Beschreibende Text des Buttons auf der Uhr.

Die nächsten vier Bereiche sind selbsterklärend und ganz unten sieht man noch eine Vorschau des Buttons, so wie er auf der Uhr aussehen wird. Die Vorschau ist auch schon ein funktionierender Button und kann durch klicken getestet werden. Nur wird jetzt noch nichts passieren.

Damit nun in unserem Home Assistant etwas geschaltet wird, brauchen wir im Home Assistent noch eine Automatisierung. Diese muss auf den Trigger Ereignis hören. Ich habe Euch hier ein Beispiel eingestellt, das in die Automation.yaml eingefügt werden muss.

  - alias: "watch action Stehlampe Büro"         
    trigger:       
      - platform: event         
        event_type: ios.action_fired         
        event_data:           
          actionName: 'StehBuero'     
    action:       
      service: light.toggle       
      entity_id: switch.stehlampe_buro

Ihr könnt diese Automatisierung natürlich auch über den Assistenten im Home Assistant eingeben.

HomematicIP Alarm mit Code über Home Assistant steuern

In diesem Artikel möchte ich Euch zeigen, wie Ihr die Alarmfunktion von HomematicIP mit einem Code zum aktivieren und deaktivieren über Home Assistant steuern könnt.

Hierzu benötigt Ihr drei Dinge:

Home Assistant Manual Alarm Control Panel:
als erstes müsst Ihr folgenden Code in Eure configuration.yaml eintragen.

alarm_control_panel:
  - platform: manual
    name: Home Alarm
    code: 1234
    pending_time: 10

Nach einem Neustart des Home Assistant habt ihr ein neues Alarm_Control_Panel in Eurer Entity Liste.

Die Alarm Card auf die Oberflache:
Um die Card zu erstellen, müsst Ihr folgenden Code in Eure
ui-lovelace.yaml oder in den RAW-Editor eintragen.

  - icon: mdi:bell
    cards:
      - type: alarm-panel
        name: Haus Alarm
        entity:  alarm_control_panel.home_alarm

Anschließend solltet Ihr das oben im Artikel zu sehende Controlpanel haben.

Drei Automatisierungen:
Ich habe Euch die drei benötigten Automatisierungen für die automations.yaml hier zum kopieren hier eingetragen.

- id: '1552079906058'
  alias: Alarm Home
  trigger:
  - entity_id: alarm_control_panel.home_alarm
    from: pending
    platform: state
    to: armed_home
  condition: []
  action:
  - entity_id: alarm_control_panel.hmip_alarm_control_panel
    service: alarm_control_panel.alarm_arm_home
- id: '1552122798347'
  alias: Alarm Unterwegs
  trigger:
  - entity_id: alarm_control_panel.home_alarm
    from: pending
    platform: state
    to: armed_away
  condition: []
  action:
  - entity_id: alarm_control_panel.hmip_alarm_control_panel
    service: alarm_control_panel.alarm_arm_away
- id: '1552123028682'
  alias: Alarm disarmed
  trigger:
  - entity_id: alarm_control_panel.home_alarm
    from: armed_home
    platform: state
    to: disarmed
  - entity_id: alarm_control_panel.home_alarm
    from: armed_away
    platform: state
    to: disarmed
  condition: []
  action:
  - entity_id: alarm_control_panel.hmip_alarm_control_panel
    service: alarm_control_panel.alarm_disarm

Wartungspläne mit Home Assistant erstellen

Auf diese Lösung bin ich aufgrund eines Posts in meiner Facebook Gruppe https://www.facebook.com/groups/HomeAssistantDE/ gestoßen. Jeder kennt es und jeder vergisst es. Ob es das Spülen des Wasserfilters oder das regelmäßige reinigen des Wärmepumpenfilters im Trockner. Sicher fallen Euch noch mehr Dinge ein, die regelmäßig am und um das Haus herum erledigt werden müssen. Hier möchte ich Euch eine Möglichkeit zeigen, wie Ihr diese Termine schön in der Lovelace Oberfläche sehen könnt und Euch das System zur richtigen Zeit eine Telegramnachricht schicken kann.

Um so eine Oberfläche zu erstellen, brauchen wir folgende Dinge:
– Input Date Time Felder
– Template Sensoren
– Automatisierung für die Benachrichtigung
– Gauge Card für die Oberfläche

Input Date Time Felder erstellen:

Für jede Wartungsmaßnahme brauchen brauchen wir zunächst ein Input Feld. Das wird in der configuration.yaml mit folgendem Code definiert.
Doku zu Input Datetime

input_datetime:
  wasserfilter:
    name: Wasserfilter rückspülen
    has_date: true
    has_time: false

Anschließend wie gewohnt die Konfiguration überprüfen und einen Home Assistant restart durchführen, damit das Feld angelegt wird.

Template Sensor erstellen:

Nun müssen wir einen Sensor erstellen, der berechnet, wie viel Tage vergangen sind nachdem wir das letzte mal die Wartung durchgeführt haben. Also vergleichen wir das Datum aus dem Input Feld mit dem aktuellen Datum.
Doku zu Template Sensoren

sensor:
  wasserfilter_spuelen:
  value_template: '{{ ((as_timestamp(now())-(states.input_datetime.wasserfilter.attributes.timestamp)) | int /60/1440) | round(0) }}' 
  unit_of_measurement: 'Tage'
  entity_id: input_datetime.wasserfilter,sensor.time
  

Gauge Card erstellen:

Bevor die Gauge Card erstellt werden kann, muss das System natürlich neu gestartet werden, damit der entsprechende Sensor vorhanden ist.
Anschließend wird die Card wie folgt über die ui-lavelace.yaml erstellt.

- type: gauge
  entity: sensor.wasserfilter_spuehlen
  max: 60
  min: 0
  severity:
    green: 0
    yellow: 30
    red: 50

Automatisierung für die Telegram Nachricht:

Wie der Notifyer für Telegram eingerichtet wird könnt Ihr hier nachlesen:
Link
Für die Automatisierung braucht Ihr nur als Auslöser den Wert des Sensors wasserfilter_spuelen mit dem Wert 60 oder je nachdem wann ihr die Mitteilung bekommen wollt eintragen. Anschließend wie in dem Link beschrieben eine Nachricht verschicken.

Automatisierung ab HA 0.100.1 mit And und Or

Ich bin mir nicht sicher ob diese Technik genau mit dieser Version eingeführt wurde, aber irgendwo in diesem Bereich der Versionierung wurde diese Technik eingeführt. In diesem kleinem Artikel möchte ich kurz beschreiben, wie man Automatisierungen mit And und Or erstellt.

Zunächst ist alles beim alten. Außer das ein Infodialog hochpopt, nachdem auf das Plus Symbol geklickt wird.

Anschließend sieht der Automatisierungsbildschirm wie gewohnt aus und man kann zunächst keine Neuheiten entdecken.

Wie gewohnt wird der Trigger eingegeben, also die Startbedingung der Automatisierung.

Die Änderung liegt in der Bedingung. Hier ist es nun Möglich auch ein „And“ oder „Or“ zu wählen. Bisher war es nur möglich unterschiedliche Bedingungen untereinander zu schreiben, die dann automatisch mit „And“ verknüpft wahren.

Ein „And“ oder „Or“ rückt die Bedingung etwas ein, was wie ich finde sehr übersichtlich gelöst ist. Hier können dann entsprechende Bedingungen sehr flexibel aufgebaut werden.

Ich hoffe diese Info hilf Euch beim erstellen besserer Automatisierungen. Für mich hat es die Anzahl der Automatisierungen reduziert.

Command’s via Telegram an Home Assistant

Um ein Command von Telegram in HomeAssistant zu verarbeiten muss das ankommende Command von einer Automatisierung aufgenommen werden.

Wir erstellen also über Einstellungen->Automatisierung mit dem Plus eine neue Automatisierung.

Als Titel verwenden wir Telegram Command Hallo.
Im Bereich Trigger muss „Ereignis“ ausgewählt werden.
In das Feld Entity schreiben wir „telegram_command“
Nun schreiben wir in das Ereignisdaten Feld:

{"command":"/hallo"}

Die Bedingung lassen wir aus und wählen in den Aktionen „Dienst ausführen“.

Als Dienst muss „telegram_bot.send_messagee“ ausgewählt werden.

In „Dienstdaten“ schreiben wir:

{"message":"Hallo Welt"}

Wenn wir nun an unseren Telegram Bot den Befehl „/hallo“ senden. Antwortet er mit „Hallo Welt“.

Es ist auch möglich Sensordaten zu senden. In diesem Beispiel wird die Temperatur von Darksky in °C angezeigt:

{"message":"Darksky:{{states('sensor.dark_sky_temerature')}}°C"}

Wir können auch Zeilenumbrüche in unsere Nachricht einbauen, um den Antworttext etwas zu formatieren. In diesem Beispiel sorgt der Befehl „\n“ für einen Zeilenumbruch.

 {"message":"Temperatur: \n Darksky:{{states('sensor.dark_sky_temerature')}}°C"} 

Notify via Telegram bot

Um den Telegram bot im Home Assistant nutzen zu können, müsst ihr zunächst Telegram für Euer Betriebssystem runterladen und installieren.

https://telegram.org/apps

Anschließend startet Ihr Telegram und sucht nach „BotFather“

Nun müsst Ihr auf Start klicken und anschließend den Befehl „/newbot“ eingeben.

Nun folgt Ihr einfach den Anweisungen und gebt dem neuen Bot einen Namen. Wenn Ihr alles richtig gemacht habt. Erhaltet Ihr am ende die gewünschte API.

Anschließend muss der eigene Bot einmal angeschrieben werden. Denn es ist verboten, das ein Bot aktive einen User anschreibt.

Nun müsst Ihr noch Eure eigene Telegram ID raus bekommen. Dazu müsst ihr im Telegram nach dem User „get id“ suchen.

Auch hier einfach auf Start klicken und schon habt Ihr eure eigene ID. Nun machen wir in der configuration.yaml weiter.

telegram_bot:
- platform: polling
api_key: DeinAPIKey
allowed_chat_ids:
- DeineTelegramID

notify:
- name: HA_Message
platform: telegram
chat_id: DeineTelegramID

Nach einem Reboot steht euch der Service zur Verfügung.

Diesen könnt Ihr dann in jeder Automatisierung verwenden.

Verlauf schlank halten…

Nach einiger Zeit wird der Verlauf in Home Assistent leicht träge, weil alles in die Home Assistant Datenbank geschrieben wird. In unserer Facebook Community wurde zu diesem Thema folgender Code für die configuration.yaml gepostet.

recorder:
purge_keep_days: 14
purge_interval: 1
include:
domains:
- switch
- light
- climate
- cover
entities:
- alarm_control_panel.external
- sensor.netatmo_public_data_temperature
- sensor.netatmo_public_data_humidity
- sensor.netatmo_public_data_pressure
- sensor.netatmo_public_data_wind_strength
- sensor.netatmo_public_data_rain

Hier werden die gespeicherten Daten auf 14 Tage beschränkt und nur die angegebenen Domains bzw Entities im Verlauf gespeichert.