Poolthermometer

Den Sommer über habe ich bei mir einen kleinen Aufstellpool bei mir im Garten stehen. Der Pool ist 2x3 Meter groß, und deckt damit fast die ganze Rasenfläche ab. An einem Shelly im Schuppen hängt eine Umwälzpumpe, die zeitgesteuert das Wasser durch einen Filter pumpt und es sauber hält.

DS18B20 im Pool

Um die Wassertemperatur nicht von einem bis dahin verwendeten Badewannenthermometer ablesen zu müssen, habe ich mir ein smartes Thermometer gebaut.

Das smarte Thermometer ist recht robust, und verrichtet jetzt schon im dritten Jahr zuverlässig seinen Dienst. Jedesmal, wenn wir im Mai den Pool wieder aufbauen, muss ich nur neue Batterien in das Thermometer einsetzen, und es funktionert sofort ohne Probleme. Mit einem Satz Batterien liefert das Poolthermometer ca. 2 1/2 Monate Werte.

Hardware

Elektronik

Die Hardware ist recht einfach. Sie besteht aus folgenden Komponenten:

  • einem Dallas Temperaturfühler DS18B20 in der wasserdichten Ausführung,
  • einem ESP8266 in Form eines WEMOS D1 mini
  • und einem Batteriehalter für 3 Mignonzellen (AA) zur Erzeugung von 4,5V (das reicht…)

Die Komponenten sind wie folgt auf eine kleine Lochrasterplatine aufgebaut:

Das Batteriepack geht mit seinen 4,5V Pluspol an den 5V-Pin des Wemos. Der Minuspol geht an GND. Zwischen D0(GPIO 16) und dem RST-Pin gibt es eine Drahtbrücke, die den Chip aus seinem Tiefschlaf aufweckt. Der DS18B20 liegt mit

  • der scharzen Leitung für GND auf D5 (GPIO14)
  • der roten Leitung für die Versorgungsspannung auf D7 (GPIO13)
  • der Datenleitung des 1-Wire Bus des DS18B20 liegt bei mir an D6 (GPIO 12).

Zusätzlich liegt ein Pullup-Widerstand von 4,7kOhm zwischen Datenleitung D6 und Versorgungspannung D7. Die Festlegung welche Pins Versorgungsspannung, GND und Datenleitung sind, erfolgt über das Arduino Sketch.

Als Gehäuse verwende ich eine leere Kaffeeweißer-Dose, die alles zuverlässig gegen Regen schützt.

DS18B20 im Pool

Arduino IDE

Zur Programmierung des ESP8266 verwende ich die Arduino IDE. Das Sketch sendet den aufgenommenen Temperaturwert via MQTT an meinen MQTT-Broker. Eine Temperaturmessung erfolgt alle 15 Minuten, danach geht der ESP8266 in Deep Sleep, um die Batterie zu schonen.

Arduino Sketch: Poolthermometer

Home Assistant

Die Integration des Poolthermometers in Home Assistant ist dank MQTT sehr einfach.

DS18B20 im Pool

Die Konfiguration ist über eine separate Datei mit packages und der Zeile pool: !include pool.yaml in die Hauptkonfigurationsdatei eingebunden.

1mqtt:
2  sensor:
3    - name: "Pool Temperatur"
4      state_topic: "pool/temperature"
5      unit_of_measurement: "°C"
6      device_class: "temperature"

Ich nutze in meiner Home Assistant Installation die Telegram Integration zusammen mit einem Bot. Der Bot antwortet auf Anfragen mit entsprechenden Werten der Home Assistant Entitäten.

Telegram Bot

Dadurch kann man überall schnell schauen, ob sich der Pool schon badefertig aufgeheizt hat. Für eine Schwellwerte habe ich dazu Automationen eingerichtet, die mir bei Überschreiten einer Temperatur Nachrichten via Telegram senden. Meine Telegram Integration in Home Assistant wird noch einmal Inhalt eines späteren Artikels sein…

Grafana

Da die Temperaturdaten in Home Assistant eingespeist werden, werden sie auch automatisch mit in meine InfluxDB geschrieben. Mit Grafana kann man Temperaturverläufe sehr schön darstellen.

Pooltemperatur in Grafana

Im Vergleich mit der Außentemperatur (Datenquelle ist hier der Sensor der Heizung) sieht man, wie träge der Pool auf Temperaturänderungen reagiert. Der Pool fasst ca. 3000l Wasser.

Pool- und Außentemperatur

Noch eine wichtige Bemerkung zum Schluss: Bauanleitung für die Hardware und das Arduino Sketsch sind nicht selbst erdacht, sondern stammen vom Blog AngInf - Angewandte Informatik in der Praxis.