Temperaturerfassung: Den DS18B20 am ESP32 für Home Assistant einrichten
Für die Umsetzung dieses Setups wird ein funktionsfähiges Home-Assistant-System mit installiertem ESPHome-Add-on benötigt. Die Schritte zur Ersteinrichtung des Mikrocontrollers sind im Beitrag ESP32 NodeMCU mit ESPHome in Home Assistant einrichten detailliert beschrieben.
Temperaturmesswerte lassen sich für zahlreiche Automatisierungen im Smart Home nutzen – etwa für die Heizungssteuerung, die Überwachung der Temperatur in einem Serverschrank oder die Kontrolle eines Aquariums. In diesem Beitrag erfährst du zunächst, wie du einen digitalen Temperatursensor vom Typ DS18B20 physisch an einen ESP32 anschließt und konfigurierst. Anschließend schauen wir uns an, wie sich mehrere Sensoren gemeinsam an einem 1-Wire-Bus betreiben lassen.
Die Kernkomponenten für den Aufbau
Für die Messstation konzentrierst du dich auf die folgenden Bauteile:
ESP32 NodeMCU Development Board
Dieses ESP32 NodeMCU Development Board* (Werbung) bildet das Gehirn des Projekts. Es verarbeitet die ankommenden Daten des Sensors und leitet sie per WLAN an Home Assistant weiter.
Wir verwenden hier die weit verbreitete 30-Pin-Variante. Sie bietet ausreichend viele Anschlüsse und lässt sich über den integrierten USB-C-Anschluss unkompliziert mit Strom versorgen.
DS18B20 Temperatursensor (wasserdicht)
Der DS18B20 Temperatursensor* (Werbung) ist ein digitaler Messfühler. Im Gegensatz zu analogen Sensoren überträgt er den Messwert digital. Das reduziert die Anfälligkeit für Störungen bei der Übertragung. Lange Leitungen, eine ungünstige Bus-Topologie oder eine instabile Versorgung können die Kommunikation dennoch beeinträchtigen.
Die Ausführung mit gekapselter Edelstahlhülse kann sich für Messungen in Flüssigkeiten oder feuchten Umgebungen eignen. Vor dem Einsatz sollte geprüft werden, ob auch Kabelübergang und Anschlussleitung für die jeweiligen Umgebungsbedingungen ausgelegt sind. An Heizungsleitungen misst der Fühler die Oberflächentemperatur und sollte dafür gut thermisch angekoppelt und isoliert werden.
ESP32 Breakout-Board und Widerstand
Da die Sensoren mit losen Kabelenden geliefert werden, nutzen wir für den ersten Testaufbau ein ESP32 Breakout-Board mit Schraubklemmen* (Werbung). So lassen sich die Kabel ohne Lötkolben sicher fixieren.
Zusätzlich wird für den 1-Wire-Bus ein Pull-up-Widerstand von ungefähr 4,7 kΩ* (Werbung) benötigt. Dieser sorgt dafür, dass das Datensignal des Sensors stabil vom ESP32 gelesen werden kann.
Basis-Setup: Einen einzelnen DS18B20 anschließen
Wir starten mit der Installation und Konfiguration eines einzelnen Sensors. So lässt sich das Grundprinzip der Verkabelung und der Software-Einrichtung am einfachsten nachvollziehen.
Die Verkabelung
Beim hier verwendeten Sensor sind die Leitungen wie folgt belegt: Rot für die Stromversorgung, Schwarz für Masse/GND und Gelb für die Datenleitung. Die Farbzuordnung kann je nach Hersteller abweichen. Prüfe deshalb vor dem Anschluss das Datenblatt oder die Angaben des Anbieters.
Klemme die drei Kabelenden in die entsprechenden Schraubklemmen des Breakout-Boards. Der 4,7 kΩ Widerstand wird als Brücke zwischen den 3,3V-Anschluss und den Daten-Anschluss geklemmt.
| DS18B20 Kabel | ESP32 Breakout-Board Pin | Funktion |
|---|---|---|
| Rot | 3V3 | Stromversorgung (3,3 Volt) |
| Schwarz | GND | Gemeinsame Masse |
| Gelb (oder Grün/Weiß) | GPIO 4 | Datenleitung |
| Wichtig: Der 4,7 kΩ Widerstand wird mit dem einen Ende in die Klemme 3V3 und mit dem anderen Ende in die Klemme GPIO 4 geschraubt. Er verbindet diese beiden Pins. | ||
Achte beim Festschrauben darauf, dass sich die Beinchen des Widerstands nicht mit anderen Pins berühren, um einen Kurzschluss zu vermeiden. Für den hier gezeigten Aufbau werden Sensor und Pull-up-Widerstand an 3V3 angeschlossen. Dadurch liegt auch die Datenleitung innerhalb des für den ESP32 geeigneten 3,3-Volt-Pegelbereichs. Der Pull-up-Widerstand darf nicht mit 5V verbunden werden.
ESPHome-Konfiguration für einen Sensor
Öffne die Konfiguration deines ESP32 in ESPHome. Zuerst müssen wir den sogenannten one_wire-Hub
definieren. Er teilt dem ESP32 mit, an welchem Pin und über welche Plattform nach Sensoren gesucht werden soll.
esphome:
name: esp32-temperatur
# ... (WLAN und API Einstellungen bleiben unberührt)
# Definiert den Pin und die Plattform, an dem der Sensor hängt
one_wire:
- platform: gpio
pin: GPIO4
Klicke auf 'INSTALL' und lasse das Log-Fenster nach dem Flashen geöffnet. ESPHome scannt nun den Pin 4 und zeigt die eindeutige Hardware-Adresse des gefundenen Sensors im Log an:
[14:29:05.730][C][gpio.one_wire:020]: GPIO 1-wire bus:
[14:29:05.730][C][gpio.one_wire:152]: Pin: GPIO4
[14:29:05.730][C][gpio.one_wire:087]: Found devices:
[14:29:05.741][C][gpio.one_wire:090]: 0xf619f77d0a646128 (DS18B20)
Kopiere dir diese hexadezimale Adresse (beginnend mit 0x...). Schließe das Log, öffne den Editor erneut
und füge den sensor-Block hinzu, um den Sensor dauerhaft in Home Assistant anzulegen.
# ... (Bestehender Code inkl. one_wire-Hub)
sensor:
- platform: dallas_temp
address: 0xf619f77d0a646128 # Ersetze dies durch DEINE Adresse
name: "Pooltemperatur"
Nach einem erneuten Klick auf 'INSTALL' überträgt der ESP32 nun regelmäßig die gemessene Temperatur.
[14:45:16.393][D][dallas.temp.sensor:053]: 'Pooltemperatur': Got Temperature=23.875000°C
[14:45:16.494][S][sensor]: 'Pooltemperatur' >> 23.9 °C
[14:46:16.398][D][dallas.temp.sensor:053]: 'Pooltemperatur': Got Temperature=23.500000°C
[14:46:16.494][S][sensor]: 'Pooltemperatur' >> 23.5 °C
[14:47:16.397][D][dallas.temp.sensor:053]: 'Pooltemperatur': Got Temperature=23.250000°C
[14:47:16.496][S][sensor]: 'Pooltemperatur' >> 23.2 °C
Erweiterung: Mehrere Sensoren über eine gemeinsame Leitung betreiben (1-Wire-Bus)
Ein Vorteil des DS18B20 ist seine Unterstützung des 1-Wire-Busses. Dadurch lassen sich mehrere Sensoren über einen gemeinsamen GPIO-Pin ansprechen. Wie viele Sensoren zuverlässig funktionieren, hängt unter anderem von Leitungslänge, Verkabelung, Versorgung und Abfrageintervall ab.
Die Parallelschaltung am Breakout-Board
Um zwei oder mehr DS18B20-Sensoren zu betreiben, verkabelst du sie am Breakout-Board wie folgt:
- Alle roten Kabel (Stromversorgung) werden zusammen in die Klemme 3V3 geschraubt.
- Alle schwarzen Kabel (Masse/GND) werden zusammen in die Klemme GND geschraubt.
- Alle gelben/grünen Kabel (Datenleitung) werden zusammen in die Klemme GPIO 4 geschraubt.
Du benötigst für dieses gesamte Multi-Sensor-Setup weiterhin nur einen einzigen 4,7 kΩ Widerstand, der wie gewohnt als Brücke zwischen 3V3 und GPIO 4 sitzt.
Die Konfiguration in ESPHome
Die Software-Konfiguration bleibt durch dieses Prinzip übersichtlich. Sobald du das System flashst, scannt ESPHome den 1-Wire-Bus an GPIO 4 und listet die gefundenen Hardwareadressen im Log auf. Diese eindeutigen Kennungen trägst du einfach nacheinander in deine YAML-Konfiguration ein:
one_wire:
- platform: gpio
pin: GPIO4
sensor:
- platform: dallas_temp
address: 0xf619f77d0a646128 # Eindeutige Adresse des ersten Sensors
name: "Vorlauf Temperatur"
- platform: dallas_temp
address: 0xafbb2b720a646128 # Eindeutige Adresse des zweiten Sensors
name: "Rücklauf Temperatur"
Nach der Installation erscheinen die Messwerte beider Sensoren im ESPHome-Log.
[15:13:01.418][D][dallas.temp.sensor:053]: 'Rücklauf Temperatur': Got Temperature=22.187500°C
[15:13:01.514][S][sensor]: 'Rücklauf Temperatur' >> 22.2 °C
[15:13:01.958][D][dallas.temp.sensor:053]: 'Vorlauf Temperatur': Got Temperature=22.125000°C
[15:13:02.056][S][sensor]: 'Vorlauf Temperatur' >> 22.1 °C
[15:14:01.417][D][dallas.temp.sensor:053]: 'Rücklauf Temperatur': Got Temperature=22.125000°C
[15:14:01.515][S][sensor]: 'Rücklauf Temperatur' >> 22.1 °C
[15:14:01.959][D][dallas.temp.sensor:053]: 'Vorlauf Temperatur': Got Temperature=22.125000°C
[15:14:02.058][S][sensor]: 'Vorlauf Temperatur' >> 22.1 °C
Darstellung und Nutzung in Home Assistant
Ist das ESPHome-Gerät in Home Assistant eingebunden, stehen dort die konfigurierten Sensorentitäten mit der Einheit °C zur Verfügung.
Für die Visualisierung auf dem Dashboard bietet sich beispielsweise eine Verlaufsdiagrammkarte an. Sie stellt die von Home Assistant aufgezeichneten Temperaturwerte über die Zeit dar. Das ist besonders praktisch, um Trends zu erkennen – etwa wie schnell ein Raum abkühlt oder wie konstant die Temperatur in einem Gehäuse gehalten wird.
Verwendete Hardware-Komponenten
Folgende Komponenten kamen in diesem Projekt zum Einsatz:
- ESP32 NodeMCU Development Board* (Werbung) – Mikrocontroller-Board mit WLAN zur Erfassung und Übertragung der Messwerte.
- DS18B20 Temperatursensoren in gekapselter Ausführung* (Werbung) – Digitale Temperaturfühler mit Anschlussleitung.
- ESP32 Breakout-Board mit Schraubklemmen* (Werbung) – Vereinfacht den Anschluss der Leitungen im Test- und Dauerbetrieb.
- 4,7-kΩ-Widerstand* (Werbung) – Dient als Pull-up-Widerstand zwischen 3V3 und der Datenleitung des 1-Wire-Busses. Alternativ ein Widerstand-Sortiment* (Werbung), das den benötigten Widerstand enthält.
Weitere Praxisprojekte
Aufbauend auf der ESP32 Ersteinrichtung können verschiedene Hardware-Komponenten und Sensoren an den Mikrocontroller angebunden werden. Bisher dokumentierte Projekte:
Schritt-für-Schritt-Anleitung zum Anschluss mehrerer RGB-LED-Module mittels G-V-S Expansion Board und der Erstellung individueller Lichteffekte in ESPHome.
Schritt-für-Schritt-Anleitung zum Anschluss eines mechanischen Pegelschalters. Erfahre, wie du den Wasserstand misst, mehrere Sensoren für ein Min/Max-Setup kombinierst und Signale gegen Wellenbewegung filterst.
Schritt-für-Schritt-Anleitung zur Einbindung des GPS-Moduls BE-220 in ESPHome und Visualisierung der Standortdaten in Home Assistant.
Schritt-für-Schritt-Anleitung zum Anschluss des wasserdichten Ultraschallsensors JSN-SR04T an einen ESP32 sowie zur Konfiguration der Entfernungsmessung in ESPHome.