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

Transparenz-Check Damit ich diesen Blog werbefrei halten kann, verwende ich Affiliate-Links (mit * markiert). Wenn du darüber etwas kaufst, erhalte ich eine kleine Provision von Amazon – für dich ändert sich am Preis rein gar nichts. Danke für deinen Support meiner Projekte!

Für die Messstation konzentrierst du dich auf die folgenden Bauteile:

ESP32 NodeMCU Development Board

Nahaufnahme eines physischen ESP32 NodeMCU Development Boards mit modernem USB-C Anschluss auf hellem Untergrund
ESP32 NodeMCU Board mit integrierter USB-C-Schnittstelle

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)

Wasserdichter DS18B20 Temperatursensor mit Edelstahlhülse und drei Anschlusskabeln
Wasserdichter DS18B20 Sensor

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

ESP32 Breakout-Board mit seitlichen Schraubklemmen und einem 4,7 kOhm Widerstand
Breakout-Board zur Verschraubung der losen Kabelenden

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.

Einsatzzweck des Breakout-Boards Das Breakout-Board eignet sich für einen schnellen Versuchsaufbau und kann bei fachgerechter Montage auch dauerhaft verwendet werden. Dafür sollten die Leiter passend vorbereitet und zugentlastet werden. Bei feindrähtigen Leitern eignen sich beispielsweise passende Aderendhülsen für die Schraubklemmen. In feuchten Bereichen müssen Board und Anschlüsse zusätzlich durch ein geeignetes Gehäuse geschützt werden.

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.

Nahaufnahme der Verkabelung eines DS18B20 Temperatursensors an den grünen Schraubklemmen des ESP32 Breakout-Boards mit dem 4,7 kOhm Pull-up-Widerstand
Physischer Anschluss des Sensors inklusive Pull-up-Widerstand am Breakout-Board

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.

Warum nicht pro Sensor ein eigener Pin? Alternativ kann für jeden Sensor ein eigener 1-Wire-Bus an einem separaten GPIO-Pin eingerichtet werden. Für einen einfachen Aufbau ist ein gemeinsamer Bus meist übersichtlicher und benötigt nur einen GPIO-Pin sowie einen gemeinsamen Pull-up-Widerstand. Separate Busse können jedoch bei langen oder ungünstig verlegten Leitungen die Fehlersuche und den stabilen Betrieb erleichtern.

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:

Weitere Praxisprojekte

Aufbauend auf der ESP32 Ersteinrichtung können verschiedene Hardware-Komponenten und Sensoren an den Mikrocontroller angebunden werden. Bisher dokumentierte Projekte:

Ansteuerung eines 3-Farben RGB-LED-Moduls

Schritt-für-Schritt-Anleitung zum Anschluss mehrerer RGB-LED-Module mittels G-V-S Expansion Board und der Erstellung individueller Lichteffekte in ESPHome.

Schwimmschalter am ESP32: Füllstand mit ESPHome überwachen

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.

GPS-Tracker mit dem Beitian BE-220 am ESP32

Schritt-für-Schritt-Anleitung zur Einbindung des GPS-Moduls BE-220 in ESPHome und Visualisierung der Standortdaten in Home Assistant.

Zisternen-Füllstand mit dem JSN-SR04T am ESP32 messen

Schritt-für-Schritt-Anleitung zum Anschluss des wasserdichten Ultraschallsensors JSN-SR04T an einen ESP32 sowie zur Konfiguration der Entfernungsmessung in ESPHome.