Poolthermometer V2

Mein, über mehrere Jahre, gut funktionierendes Poolthermometer ist mir doch tatsächlich kaputt korrodiert. Ich hatte es über den Winter in der Garage gelagert, was anscheinend nicht so gut funktioniert hat.

Da ich alle Teile da hatte, habe ich das Thermometer nochmal neu auf einer Lochrasterplatine aufgebaut. Die Hardware besteht wieder aus den bewährten Teilen, die ich schon beim alten Thermometer verbaut hatte. Bei der Software nutze ich diesmal ESPHome, die nach ein paar Anlaufschwierigkeiten bei mir jetzt gut funktioniert.

Hardware

Bei der Hardware gibt es leichte Veränderungen in der Verkabelung. Bei der alten Version hing der DS18B20 an den Pins D5, D6 und D7, und das Arduino Sketch sorgte für die richtigen Pegel. Beim neuen Poolthermometer ist die Verkabelung wie folgt:

  • DS18B20, Vdd - 5V Pin des WEMOS D1 mini
  • DS18B20, GND - GND Pin des WEMOS D1 mini
  • DS18B20, Data - GPIO1 des WEMOS D1 mini

Der Kabel des DS18B20 habe ich diesmal über ein Schraubterminal mit der Platine verbunden. Dann gibt es noch eine steckbare Brücke zwischen RST und GPIO16 des WEMOS D1 mini. Diese sorgt dafür, dass der WEMOS D1 mini auch wieder aus seinem Tiefschlaf aufwacht. Außerdem kann ich die Brücke abziehen, um den ESP8266 neu zu flashen. Das ist besser als eine Lötbrücke. Die beiden Kabel der Spannungsversorgung sind auch über eine Schraubverbindung mit dem 5V Pin und GND des WEMOS D1 mini verbunden. Ansonsten steckt die Hardware wieder in der altgedienten Kaffeeweißerdose.

Software

Diemal kommt ESPHome zum Einsatz. Nachdem ich den Testsensor erfolgreich zum Laufen gebraucht haben, ging es beim Thermometer recht schnell mit der Software.

 1# Board: Wemos D1 Mini (ESP8266) (Wemos)
 2# Definition: definitions/boards/d1_mini/manifest.yaml
 3
 4esphome:
 5  name: poolthermo2
 6  friendly_name: poolthermo2
 7  area: draußen
 8
 9esp8266:
10  board: d1_mini
11
12logger:
13  level: ERROR
14
15wifi:
16  ssid: !secret ssid
17  password: !secret password
18  ap:
19    ssid: poolthermo2 Fallback Hotspot
20    password: "1234567890"
21
22mqtt:
23  broker: 192.168.76.54
24  topic_prefix: pool
25
26
27sensor:
28  - platform: dallas_temp
29    name: pool_temperatur
30    id: sensor_dallas_temp_1
31
32one_wire:
33  - platform: gpio
34    pin: GPIO1
35    id: one_wire_gpio_1
36
37deep_sleep:
38  sleep_duration: 15min
39  run_duration: 10s

Ein paar, von ESPHome standardmäßig vorgegebene Komponenten, habe ich dann noch aus der Konfiguration entfernt. OTA Upates, benötige ich nicht, da das Thermometer die meiste Zeit im Deep-Sleep ist.

Integration in Home Assistant

Die Integration des neuen Poolthermometers kann über zwei Wege erfolgen. Man kann in die Temperatur über die ESPhome-API oder über MQTT schicken. Die API-Anbindung habe ich aus der Konfiguration entfernt. Ich möchte die MQTT-Anbindung an Home Assistant nutzen. Das Thermometer wird auch einwandfrei über das Autodiscovery erkannt und Home Assistant bindet es einwandfrei ein. Aber. Home Assistant wertet auch den Status des Thermometers aus. Das zeigt, aufgrund von Deep-Sleep, die meiste Zeit ‘offline’ an. Dadurch nimmt Home Assistant an, der Temperaturwerte sei nicht via MQTT vorhanden, und zeigt ihn als ’nicht vorhanden’ an. Der MQTT-Broker stellt den letzten Temperaturwert allerdings immer zur Verfügung, da das ‘Retain’-Flag gesetzt ist.

Ich habe das Poolthermometer dann wieder über einen Eintrag in der Konfiguratiosdatei in Home Assistant integriert. Dadruch habe ich eine ständige Anzeige des Temperaturwerts in Home Assistant. Was ich jetzt noch testen werde, ist die Batterielaufzeit. Im Moment schläft das Thermometer 15 Minuten und geht dann 10 Sekunden online. Mal schauen wie lange die Batterie in die Konfiguration hält….