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.

Die präzise Temperaturmessung ist eine der wichtigsten Grundlagen für Automatisierungen im Smart Home – sei es für die Heizungssteuerung, die Überwachung der Server-Temperatur 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 das System problemlos auf zwei oder mehr Sensoren erweitern lässt.

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 gemessenen Wert bereits als fertiges Digitalsignal. Dadurch ist die Messung unempfindlich gegenüber Kabellängen oder Schwankungen der Versorgungsspannung.

In der wasserdichten Variante mit gekapselter Edelstahlhülse eignet er sich optimal für Messungen in Flüssigkeiten, im Heizungsvorlauf oder in feuchten Kellerräumen.

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 zwingend ein 4.7 kΩ (Kiloohm) Widerstand* (Werbung) benötigt. Dieser fungiert als sogenannter "Pull-up-Widerstand" und sorgt dafür, dass das Datensignal des Sensors stabil vom ESP32 gelesen werden kann.

Einsatzzweck des Breakout-Boards Das Breakout-Board eignet sich hervorragend für den schnellen Versuchsaufbau auf dem Schreibtisch, um die Funktionalität zu prüfen. Da lose Kabel in Schraubklemmen auf Dauer korrodieren oder sich durch Vibrationen lösen können, ist für den dauerhaften und produktiven Einsatz im Smart Home ein direktes Verlöten der Kontakte dringend zu empfehlen.

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

Der Sensor besitzt drei Kabel: Rot (Stromversorgung), Schwarz (Masse/GND) und Gelb (Datenleitung). Bei manchen Chargen ist die Datenleitung auch grün oder weiß ausgeführt.

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. Da der ESP32 mit einer Logikspannung von 3,3 Volt arbeitet, muss der Sensor zwingend an den 3V3-Pin (nicht an den 5V/VIN-Pin) angeschlossen 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)

Der eigentliche Clou des DS18B20 ist seine ausgeprägte Bus-Fähigkeit (1-Wire-Bus). Du musst nicht für jeden Sensor einen neuen Pin am ESP32 opfern und separate Leitungen legen. Stattdessen kannst du nahezu beliebig viele Sensoren parallel an einen einzigen GPIO-Pin anschließen.

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 sitsst.

Warum nicht pro Sensor ein eigener Pin? Theoretisch lässt sich für jeden Sensor ein eigener GPIO-Pin am ESP32 reservieren. Das ist im Smart Home jedoch selten sinnvoll: Du verbrauchst für jeden Sensor einen wertvollen Pin, musst für jede Leitung einen eigenen Pull-up-Wisterstand verbauen und verlierst den Hauptvorteil des DS18B20 – die effiziente Bus-Topologie. Über die gemeinsame 1-Wire-Leitung belegst du dauerhaft nur einen einzigen Pin, unabhängig davon, ob du zwei, fünf oder zehn Messfühler betreibst.

Die Konfiguration in ESPHome

Die Software-Konfiguration bleibt durch dieses Prinzip extrem übersichtlich. Sobald du das System flasht, scannt ESPHome den GPIO 4 und listet dir im Log-Fenster alle gefundenen Hardware-Adressen untereinander 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 einem erneuten Klick auf 'INSTALL' überträgt der ESP32 nun regelmäßig die gemessene Temperatur.

[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

In Home Assistant stehen dir nun die Entitäten deiner Sensoren zur Verfügung. Sie werden vom System automatisch erkannt und mit der korrekten Einheit (°C) versehen.

Für eine übersichtliche Visualisierung auf dem Dashboard bietet sich die Standard-Diagrammkarte an. Sie zeichnet den Temperaturverlauf über die Zeit auf. 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.