Xiaomi MiFlora über MQTT an Home Assistant anbinden

Ich hatte mir vor einigen Wochen bei einem MyDealz Deal zwei Xiaomi MiFlora Pflanzensensoren gekauft, welche diese Woche nun endlich den Weg zu mir geschafft haben. Bei einem Preis von ca. 8 Euro pro Stück konnte ich nämlich leider nicht widerstehen.

Unsere Home Assistant Installation befindet sich ja nicht auf einem Raspberry Pi, sondern als virtuelle Maschine auf meinem Server. Entsprechend ist die benötigte Bluetoothverbindung zu den MiFlora Sensoren sehr schlecht. Aus diesem Grund habe ich die benötigte Software auf einem Raspberry Pi im Wohnzimmer installiert, an dem auch unsere Wetterstation hängt.

Der MiFlora MQTT Daemon von Thom Dietrich fragt mittels Bluetooth auf dem RPi3 die zwei Sensoren ab und schickt sie via MQTT Message an meinen MQTT Server (Docker Container). Die Software ist recht einfach nach der Anleitung von Thom zu installieren. Man muss nur darauf achten, dass man den MQTT Topic in der config.ini entsprechend an Home Assistant anpasst.

Als Topic für die Home Assistant Sensoren kommt im MQTT Server dann folgendes an:

miflora/sensor/{Pflanzenname}/state

Mich hatte zuerst das „State“ verwundert. Die Daten werden allerdings dann in einem json Stream gesendet und mittels Sensor Template auseinander genommen. Für meine Yukka sieht das z. B. dann so aus:

sensor:
  - platform: mqtt
    name: wz_yukka_moisture
    state_topic: "miflora/sensor/yukka/state"
    value_template: '{{ value_json.moisture }}'
  - platform: mqtt
    name: wz_yukka_battery
    state_topic: "miflora/sensor/yukka/state"
    value_template: '{{ value_json.battery }}'
  - platform: mqtt
    name: wz_yukka_temperature
    state_topic: "miflora/sensor/yukka/state"
    value_template: '{{ value_json.temperature }}'
  - platform: mqtt
    name: wz_yukka_conductivity
    state_topic: "miflora/sensor/yukka/state"
    value_template: '{{ value_json.conductivity }}'

Nach den üblichen Maßnahmen wie Neustart von Home Assistant sollten nach einer kurzen Zeit die Werte erscheinen. Anschließend habe ich noch die Pflanzenkomponente aktiviert. In die configuration.yaml kommt dann folgendes:

plant:
  office_yukka:
    sensors:
      moisture: sensor.wz_yukka_moisture
      battery: sensor.wz_yukka_battery
      conductivity: sensor.wz_yukka_conductivity
    min_moisture: 15
    max_moisture: 60
   min_battery: 10
   min_conductivity: 250

Ich hatte mir dann noch eine eigenen View im „alten“ Frontend angelegt, damit die doch recht großen Karten nicht meine Hauptseite unnötig aufblähen. Entsprechen sieht das dann so aus:

Screenshot aus Home Assistant

Die längste Zeit hat es ich gekostet die Topic für den MQTT Broker herauszufinden. Aus diesem Grund wollte ich euch die Sucharbeit erleichtern und habe diesen Beitrag geschrieben. Sollten Fragen dazu aufkommen, meldet euch einfach in den Kommentaren. Bei Interesse könnt ihr euch auch meine komplette Konfiguration auf Github ansehen.

2 Kommentare

  1. Wieso hast in einem Client nicht einfach # abonniert und dir alle Topics angeschaut? Dann hättest du ja eine Übersicht über alle, inkl. der MiFlora Sensoren gehabt.

    • Weil es auf dem Mac so gut wie keine MQTT Clients gibt die noch unter Mojave funktionieren. -.- Es hat mich länger gedauert parallel ein Client zu finden der funktioniert als das mit den Topics.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.