Monitor your plants with Home Assistant

I love to have a lot of plants in my apartment, but unfortunately I sometimes forget to water them. So why not using modern technology to make sure, I don’t ever forget it again.

What you need

  • A Raspberry Pi or a Linux-PC with a supported Bluetooth LE interface.
  • Bluez
  • Mi Plant flower sensor for every plant
  • Home assistant

Setup

Home assistant

First you should install Home Assistant and make sure everything works well. Home assistant provides good documentation how to setup the platform.

Bluetooth software

The Linux bluetooth software might not yet be installed on your system.

Check communication with the plant sensor

The easiest way to make sure your PC can read data from the sensor is using the hcitool command line tool.

hcitool lescan
LE Scan ...
XX:XX:XX:XX:XX:XX (unknown)
XX:XX:XX:XX:XX:XX Flower mate

It might list a lot of other devices. Just make sure, it can also see the “Flower mate” device. If you can’t see this device, the distance between the flower sensor and your PC might be too large. Try moving the plant near your PC and check if it works then.

Integrate polling into Home Assistant

First, you need to poll the data from the sensor in Home Assistant:

sensor
  platform: miflora
  mac: xx:xx:xx:xx:xx:xx
  name: Flower 1
  force_update: false
  monitored_conditions:
   - moisture
   - light
   - temperature
   - conductivity

As the MAC address, you need to use the address that is shown in the hcitool lescan output.

Notify yourself when you come home

It doesn’t make much sense to send you a notification during the day that you should water the flowers. You might have forgotten it already when you come home. So let’s just send a notification when you come home.

Setup presence detection

Home Assistant documentation how to do this. There are a lot of different device trackers. Have a look and decide what works best for you.

Setup notifications

The next step is sending a notification to you. For this guide I use Pushetta, but Home Assistant provides a large number of notification mechanisms. Have a look at them and select the one that fits best for you.

An example notifier configuration might look like this:

notify
  name: pushetta
  platform: pushetta
  channel_name: mychannel
  api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Define the automation

Now comes the new rule:

automation:
  alias: Alarm me to water plants
  trigger:
    platform: state
    entity_id: device_tracker.myname
    from: 'not_home'
    to: 'home'
  condition:
    condition: numeric_state
    entity_id: sensor.flower1_moisture
    below: 20
  action:
    service: notify.pushetta
    data:
      message: 'Water Flower 1!'

What does this do? First it checks it check, if you came from (device tracker changes from not_home to home) and check then if the moisture is below a well-defined threshold. The value might be a bit different for your plant, you need to adjust this. If the moisture is too low, it sends a notification via Pushetta.

You can combine multiple plants in the condition statement or create an automation for every single plant. I personally prefer the latter as I then know exactly which plant I should water.

Long-term monitoring

It often helps to have long-term data available to optimize not only watering, but also fertilize in the right intervals. While you can store the whole history within Home assistant, it isn’t really optimized for this use case. Therefore I recommend to use InfluxDB for this. This is a time-series database specifically designed to store sensor data over a long period. To visualize the data, I use Grafana. With this, you can create nice reports like this:
TODO

Günstige Temperatur- und Luftfeuchtigkeitssensoren

Eines der ersten Dinge, die man in der Regel bei der Hausautomatisierung implementiert sind Messungen von Temperatur und Luftfeuchtigkeit. Diese beiden Werte haben nicht nur einen hohen Einfluss auf das persönliche Wohlbefinden, sondern sind auch einfach zu messen. Meist werden hierfür die DHT-Sensoren genutzt. Diese sind nicht nur sehr günstig, es existieren auch sehr viele Codeschnippsel und Bibliotheken für Arduino, ESP8266 und Raspberry Pi. Das macht die Integration sehr einfach. Aber wie unterscheiden sich die Sensoren?

DHT11

Das ist die kleinste Version und billgste Version. Sie ist einfach an der blauen Farbe zu erkennen.Die Auflösung von Temperatur und Luftfeuchtigkeit sind ganze Grad bzw. %
Der Sensor kann einfach auf eine Leiterplatte gelötet oder auf ein Steckbrett gesteckt werden. Das macht Experimente sehr einfach.

DHT22

Dieser Sensor sieht dem DHT11 sehr ähnlich, ist allerdings etwas grösser und weiss. Er bietet eine Auflösung von 0.1°/0.1%. Auch dieser Sensor kann direkt auf eine Leiterplatte gelötet oder auf ein Steckbrett gesteckt werden.

AM2301 (DHT21)

Das ist der grösste Sensor. Er unterscheidet sich von den beiden vorherigen vor allem dadurch, dass er Kabel als Anschlüsse hat. Das macht das Experimentieren auf einem Steckbrett etwas komplizierter. Die Grösse und die Anschlusskabel machen diesen Sensor vor allem für grössere Geräte interessant.Wenn die Schaltung selbst viel Wärme abgibt, ist dieser Sensor auch zu empfehlen, da man ihn in einiger Entfernung von der Wärmequelle positionieren kann.

Genauigkeit

Wie genau sind diese Sensoren? Der DHT11 hat im Vergleich zum DHT21/22 nur eine Auflösung von 1%/1°. Allerdings sollte man die Auflösung nicht mit Genauigkeit verwechseln. Man könnte jetzt die Datenblätter anschauen. Allerdings empfehle ich die Seite von Robert. Er hat viele Messungen mit diesen Sensoren gemacht. Daraus ist zu erkennen, dass DHT11 und DHT22 ähnlich genau sind.
Allerdings würde ich dennoch eher die Sensoren mit 0.1° Auflösung empfehlen, da sich damit langsame Änderungen besser beobachten lassen. Da die Sensoren wenig Rauschen lassen sich mit der höheren Auflösungen Trend besser erkennen. Gerade in modernen Wohnräumen ändert sich die Temperatur oft nur sehr langsam. Selbst wenn man die Heizung abschaltet, dauert es Stunden, bis die Temperatur um 1°C gesunken ist. Mit einer Auflösung von 0.1°C kann man diese Änderungen besser beobachten.

Das folgende Bild zeigt das:
trend
Mit 0.§% Auflösung sieht man den Trend recht gut (grüne Linie), während es mit 1% Auflösung (orangene Linie) schwer möglich ist.

Defekte

Es gibt einige Berichte im Internet über defekte Sensoren. Ich habe gestern einen Prototyp auf dem Steckbrett in ein anderes Zimmer verschoben. Danach sahen die Messungen so aus:
Screenshot 2016-08-01 09.58.35
Das ist sicher nicht korrekt. Die neue Messung besteht praktisch nur noch aus Rauschen und ist praktisch nutzlos. Es scheint, dass der Sensor beschädigt wurde. Ob es sich um ein ESD-Problem handelt oder etwas anderes schiefgegangen ist, kann ich im Moment allerdings nicht sagen.

Empfehlung

Aufgrund der geringen Auflösung würde ich den DHT11 nicht nutzen. Speziell für die Heizungssteuerung ist eine Auflösung von 1°C zu gering. Abhängig von der Anwendung sollte man daher DHT21 oder DHT22 wählen. Generell müssen die Sensoren in einiger Entfernung von Teilen platziert werden, welche Wärme abgeben. Ansonsten werden die Messungen völlig falsch sein.

Reingeschaut: Xiaomi Mi Temeratur-/Luftfeuchtigskeitssensor

Viele dürften Xiaomi aus dem Bereich Smartphones kennen. Diese Geräte werden auch in Europa immer populärer. Im Heimatmarkt in China verkauft Xiaomi allerdings noch viele andere Produkte, u.a. Hausautomatisierungskomponenten. Ich persönlich fand dem Mi Temperatursensor sehr interessant. Er ist sehr klein mit einem Durchmesser von lediglich 36mm. Damit lässt er sich einfach an vielen Stellen installieren. Positiv anzumerken ist die sehr gute Fertigungsqualität. Auch wenn das Gehäuse aus Plastic besteht, ist es doch sehr gut verarbeitet. Manch “westliches” Gerät könnte sich davon eine Scheibe abschneiden.

Der Sensor ist dafür gedacht, mit einem Xiaomi Smarthub zusammen zu arbeiten. Aber geht es evtl. auch ohne? Lässt sich der Sensor in bestehende Hausautomatisierungen einbinden? Schauen wir doch mal rein:

P7260896

Als Stromversorgung dient eine XR2032 Batterie. Ich hoffe, dass diese wenigstens ein Jahr hält. Was finden wir auf dem Board?

mi-therm-board

Auch hier sieht man eine sehr gute Verarbeitungsqualität. Als Hauptprozessor dient ein JN5169 von NXP. Dabei handelt es sich um einenZigbee controller. Erinnert sich noch jemand an Zigbee? Auch wenn heute die meisten neuen Lösung eher auf Bluetooth-Basis gebaut werden, ist Zigbee eigentlich eine recht spannende und stromsparende Funktechnologie. Da es seit Jahren stabil funktioniert (so benutzt z.B. Philips Zigbee für seine Hue Beleuchtungen), spricht nichts gegen den Einsatz. Der einzige Haken besteht darin, dass kein PC direkt mit einem Zigbee-Gerät kommunizieren kann. Es ist daher immer noch etwas Zusatzhardware nötig. Einen entsprechenden Zigbee-Controller kann man jedoch recht einfach an PC, Arduino oder Raspberry Pi anschliessen. Ist es damit einfach zu integrieren? Das hängt davon ab, wie die Datenübertragung selbst funktioniert. Wir werden uns das in einem zukünftigen Artikel noch genauer anschauen.