Kabellose Temperaturmessung für die Loxone Haussteuerung

Kabellose Temperatursensoren für Loxone - POE Gateway und zwei Varianten der Funktemperatursensoren

Beschreibung

Meine bestehende Haussteuerung auf Basis von Loxone möchte ich um zusätzliche Temperaturfühler erweitern. Die Messungen sollen an verschiedenen Stellen im Haus erfolgen, insbesondere zur Erfassung der Vor- und Rücklauftemperaturen der Heizkreise sowie der Raum- und Außentemperatur.

Eine klassische Umsetzung wäre mit verkabelten Sensoren in Verbindung mit einer 1-Wire Extension möglich. Dies bedeutet jedoch einen erheblichen Installationsaufwand, da die Leitungen möglichst unsichtbar verlegt werden müssen. Neben dem handwerklichen Aufwand entstehen dabei auch nicht unerhebliche Material- und Erweiterungskosten.

Im Rahmen der Entwicklung meines hydrostatischen Füllstandsmessers konnte ich bereits umfangreiche Erfahrungen sammeln, wie sich UDP-Datenpakete zuverlässig per WLAN an eine Loxone-Steuerung übertragen lassen. Diese Art der Datenübertragung ist äußerst flexibel und kann sogar ohne zusätzliche Erweiterungen oder Add-ons ausschließlich mit den Bordmitteln der Loxone Config realisiert werden.

Auf dieser Grundlage entsteht nun ein vollständig kabelloses Temperaturmesssystem. Die Sensoren werden als kompakte und einfach nachbaubare Baugruppen mit Funkschnittstelle realisiert. Jedes Sensormodul arbeitet batterie- oder akkubetrieben, befindet sich die meiste Zeit im energiesparenden Deep-Sleep-Modus und wird nur für die eigentliche Messung kurzzeitig aktiviert.

Die erfassten Messwerte werden anschließend über das äußerst energieeffiziente ESP-NOW-Protokoll übertragen. Der gesamte Mess- und Sendevorgang dauert lediglich etwa 88 ms. Als Controller kommt das kostengünstige SEEED XIAO ESP32-C6-Modul zum Einsatz. Es verfügt über eine integrierte Ladefunktion für den Akkubetrieb und überzeugt mit einem Deep-Sleep-Stromverbrauch von unter 16 µA – ideale Voraussetzungen für eine sehr lange Batterielaufzeit.

Ein separates Gateway auf Basis eines zweiten ESP32 empfängt die Funksignale aller Sensoren, bündelt die Messdaten und überträgt sie anschließend per LAN und UDP an die Loxone-Steuerung.

Sowohl das ESP-NOW-Gateway als auch die Temperatursensoren lassen sich komfortabel über eine integrierte Weboberfläche mit jedem Browser konfigurieren. Programmierkenntnisse oder zusätzliche Programmiergeräte sind dafür nicht erforderlich. Alle vorgenommenen Einstellungen – beispielsweise Sensornummer, Sendeintervall oder weitere Konfigurationsparameter – werden dauerhaft gespeichert und bleiben auch bei vollständig entladenem oder entferntem Akku erhalten.

zwei unterschiedliche Temperatursensoren

Bei einem ersten Laufzeittest mit meinem Breadboard-Aufbau konnte ich durch Messungen bei einem Messintervall von 15 Minuten und einer 220-mAh-LiPo-Akkuzelle eine Laufzeit von einem Jahr berechnen und diese anschließend in einem Langzeittest bestätigen.

Die Temperaturmessung erfolgt mit DS18B20-Sensoren. Um eine sehr kurze Wachzeit des ESP32-C6 von lediglich 88 ms zu realisieren, spreche ich die OneWire-Temperatursensoren über ihre individuelle Adresse direkt an. In der Web-Konfiguration können die verwendeten DS18B20-Sensoren ausgelesen und gespeichert werden. Jeder Sensor arbeitet mit maximaler Auflösung und liefert Temperaturwerte mit einer Auflösung von 0,05 °C.

Das kleinere Layout verfügt über einen fest verlöteten Sensor und eine steckbare LiPo-Akkuzelle. Ein zweites Layout ist für zwei DS18B20-Kabelsensoren vorgesehen und verwendet eine LiPo-Rundzelle im AAA-Format. Diese besitzt eine Kapazität von 350 mAh und kann den Temperatursensor ebenfalls deutlich länger als ein Jahr mit Energie versorgen.

Beide Temperatursensoren können den Akku bequem über den USB-C-Anschluss des eingesetzten ESP32-C6 laden. Da auch die Akkuspannung an Loxone übertragen wird, ist eine Überwachung des Ladezustands jederzeit möglich. Erreicht der Akku einen definierten unteren Schwellwert, wird das Sendeintervall automatisch zunächst auf eine Übertragung pro Stunde und später auf eine Übertragung pro Tag reduziert.

Bild vom Musteraufbau über ein Beadboard.

Layout Temperatursensor mit einem integrierten DS18B20

Batteriebetriebener Funk Temperaursensor mit DS18B20 - Loxone Haussteuerung

Auf einer sehr kompakten Leiterplatte befinden sich der SEEED XIAO ESP32-C6, ein DS18B20-Temperatursensor sowie die wenigen weiteren benötigten Bauteile. Der Akku wird über einen JST-2.0-Steckverbinder angeschlossen.

Ursprünglich waren auf der Platine die Lötbrücken X1 bis X6 vorgesehen, um die Sensornummer sowie das Sendeintervall einzustellen. Im Laufe der Entwicklung erhielt jedoch jeder Sensor eine eigene Weboberfläche. Darüber lassen sich nun sämtliche Einstellungen komfortabel mit einem beliebigen Webbrowser konfigurieren und jederzeit ändern. Lötbrücken und Lötkolben werden daher nicht mehr benötigt.

Download der Schaltung vom Temperatursensor mit ESP32C6 als PDF (10Kb)


// 16.05.2026 Jens Dietrich Loxone Sender von Temperaturdaten
// Pin 15 LED ist low active
// D1 als analog Input mit 2,7M + 2,7M um Spannung der Batterie zu messen
// Eine Sendung benötigt etwa 245ms Zeit
// Neuer fester WLAN-Kanal 5

#include <WiFi.h>
#include <esp_now.h>
#include <esp_sleep.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define SLEEP_TIME 60                              // Sekunden 300 = 5 Minuten
#define LED_PIN    15
#define DEVICE_ID   1                              // Gerätenummer
#define ONE_WIRE_BUS 1                             // Am XIAO mit Pin D1 verwendet

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempDeviceAddress;

// MAC-Adresse vom Empfänger M5 CoreInk
uint8_t receiverMAC[] = {0x64,0xB7,0x08,0xB8,0xDF,0xFC};

typedef struct {                                   // Datenstruktur (11 Byte)
  uint8_t device;
  uint32_t counter;
  float temperature;
  uint16_t battery;
} SensorData;

SensorData data;

RTC_DATA_ATTR uint32_t bootCount = 0;

void onSent(const wifi_tx_info_t *tx_info, esp_now_send_status_t status)
{
  Serial.print("Sendestatus: ");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "OK" : "Fail");
}

void setup() {

  pinMode(LED_PIN , OUTPUT);
  digitalWrite(LED_PIN, LOW);                      // LED ein

  pinMode(A0, INPUT);                              // A0 ist ADC-Input

  Serial.begin(115200);

  data.device = DEVICE_ID;                         // Device-ID

  // 1-Wire-Bus für die Temperaturmessung
  sensors.begin();

  sensors.requestTemperatures();

  // Temperatur auf 0.5 Grad runden
  data.temperature =
      round(sensors.getTempCByIndex(0) * 2.0) / 2.0;

  // Counter im nichtflüchtigen Speicher
  bootCount++;
  data.counter = bootCount;

  WiFi.mode(WIFI_STA);
  WiFi.disconnect();

  if (esp_now_init() != ESP_OK) {
    Serial.println("ESP-NOW Init Fehler");
    return;
  }

  // Batteriespannung ermitteln
  uint32_t Vbatt = 0;

  for (int i = 0; i < 16; i++) {
    Vbatt += analogReadMilliVolts(A0);             // 16x lesen
  }

  // Berechnen und kompensieren
  Vbatt = float(2 * Vbatt / 16);

  data.battery = Vbatt;

  esp_now_register_send_cb(onSent);

  esp_now_peer_info_t peerInfo = {};

  memcpy(peerInfo.peer_addr, receiverMAC, 6);

  peerInfo.channel = 5;                            // Fester WLAN-Kanal 5
  peerInfo.encrypt = false;

  esp_now_add_peer(&peerInfo);

  // Versenden
  esp_now_send(receiverMAC,
               (uint8_t *)&data,
               sizeof(data));

  digitalWrite(LED_PIN, HIGH);                     // LED vor Sleep aus

  esp_deep_sleep(SLEEP_TIME * 1000000ULL);
}

void loop() {
}

Layout Temperatursensor für zwei kabelgebundene DS18B20

Batteriebetriebener Funk Temperaursensor für zwei DS18B20 Kabelsensoren - Loxone Haussteuerung

Bei diesem Layout kommt eine LiPo-Rundzelle im AAA-Format (Baugröße 10440) zum Einsatz, die in einem Batteriehalter untergebracht ist. Diese kompakten Akkuzellen sind mit Kapazitäten ab 350 mAh erhältlich und können direkt auf der Platine über den USB-C-Anschluss geladen werden.

Die beiden DS18B20-Temperatursensoren werden über robuste WAGO-2086-Klemmen angeschlossen, wodurch sich Sensoren und Leitungen einfach austauschen lassen.

Bei Bedarf kann der für die Akkuzelle vorgesehene Teil der Leiterplatte entlang der Trennkante abgetrennt werden. Der Akku wird anschließend über einen JST-2.0-Steckverbinder angeschlossen und kann so auch extern positioniert werden.

Die ursprünglich vorgesehenen Lötbrücken X1 bis X6 zur Einstellung der Sensornummer und des Sendeintervalls werden nicht mehr benötigt. Stattdessen verfügt jeder Sensor über eine integrierte Weboberfläche, über die sämtliche Einstellungen komfortabel mit einem Webbrowser vorgenommen werden können – ganz ohne Lötkolben.

Download der Schaltung Variante 2 vom Temperatursensor mit ESP32C6 als PDF (12Kb) 

ein perfektes (ESP-NOW to UDP) Gateway für die Sensoren

Für die neuen Temperatursensoren habe ich das für mich ideale Gateway gefunden. Es besteht aus dem M5 Atom PoE Base Adapter und einem aufgesteckten M5 Atom Lite (grauer ESP32-Controller). Der ESP32 empfängt alle per ESP-NOW übertragenen Datenpakete und leitet diese anschließend über LAN per UDP an die Loxone-Steuerung weiter.

Zur schnellen Funktionskontrolle signalisiert die integrierte RGB-LED den aktuellen Betriebszustand:

Rot (Dauerlicht): Keine DHCP-Adresse verfügbar.
Gelb: Es wird versucht, über DHCP eine IP-Adresse zu beziehen.
Grün (für 5 Sekunden): Der Konfigurationsmodus kann jetzt durch Drücken des Tasters gestartet werden.
Grün (kurzes Aufblinken): Ein gültiges ESP-NOW-Paket wurde empfangen und erfolgreich per UDP an die Loxone-Steuerung weitergeleitet.

Die Konfiguration der Netzwerkeinstellungen, wie IP-Adresse und UDP-Port, erfolgt komfortabel über eine integrierte Weboberfläche. Dort können außerdem die für das ESP-NOW-Sensormodul benötigte MAC-Adresse sowie die aktuell installierte Softwareversion angezeigt werden.

Selbstverständlich kann das Gateway auch ohne PoE betrieben werden. In diesem Fall wird der M5 Atom Lite einfach über seinen USB-C-Anschluss mit Spannung versorgt.

Die Einstellungen in der Loxone orientieren sich an den Einstellungen die notwendig sind, um UDP Pakete vom hydrostatischen Füllstandsmesser in die Loxone zu bekommen. Eine Gateway kann aber von bis zu 255 Sensoren Daten bekommen. Weitere virtuelle Eingänge in der Loxone müssen dafür nicht angelegt werden. Mit simplen Boardmitteln (Analogvergleicher, Analogspeicher und Merker) kann die Loxone über die Sensornummer die Sensoren unterscheiden und die Messwerte in passende Marker für eine Weiternutzung verschieben. Im Bild unten habe ich das für zwei unterschiedliche Sensoren realisiert.
Ein Analogvergleicher erkennt das UDP Paket mit der richtigen Sensornumme und speichert die Werte über Analogspeicher ab. Für die Visualisierung und Statistik habe ich dann diese Werte in Merkern abgelegt.
…ein Klick auf das Bild vergrößert die Darstellung. 

Temperatursensor mit ESP32C6 und Nanotimer TLP5110 mit nur 30 nA Strom versorgen 

16.08.2026
Der schon sehr geringe Deep-Sleep Strom von nur 16 µA kann durch eine Schaltungsanpasssung / -erweiterung mit einem kleinen Nano Timer von Texas Instruments noch sehr viel weiter reduziert werden. Aus den 16 µA sind superkleine 0,03 µA geworden. Das weiter unten zu sehende Bild ist kein Fake. Der Nano Timer TLP5110 wird mit einem externen Widerstand programmiert und versorgt den ESP32 Controller über einen P-Mosfet mit Spannung. Die Software signalisiert über einen high Pegel auf einem Portpin, dass alle Aufgaben abgeschlossen sind. Im Anschluss schaltet der TLP5110 den ESP32 Controller wieder komplett ab. Nach der über eine Widerstand programmierbare Intervallzeit wird wieder der ESP Controller wieder neu geweckt und für die nächsten Messung mit Spannung versorgt.
Ich habe eine neue Schaltung bei gleicher Baugröße entwickelt und wahlweise kann man per Lötbrücke festlegen, ob man den extrem geringen Deep Sleep Strom von 30 nA oder den Deep Sleep Strom von 1.23 µA verwenden möchte. Im Letzten Fall wird der DS18B20 dauerhaft aus der Akkuzelle versorgt und verbraucht aus diesem Grund auch einen etwas höheren Strom. Der Vorteil ist aber, dass die Zeit der Verarbeiteung+Messung+Versenden sich um 0,5 sec verringert.

Der sehr kleine Strom von 0,00000003 A = 30 nA kann kaum noch mit meinen hochwertigen Messgeräten gemessen werden. Die neue Schaltung folgt in einigen Tagen.

Temporäres Test-Gateway zur Datensammlung

Hier ist das aktuell eingesetzte, provisorische Gateway zu sehen. Es empfängt die Funksignale der einzelnen Sensormodule, sammelt die Messdaten und überträgt diese anschließend per UDP zuverlässig an die Loxone Steuerung weiter.

Zum Testen und zur Entwicklung ist das Gateway momentan mit einem besonders energiesparenden E-Paper-Display ausgestattet. Dort werden aktuell beispielhaft die Daten des ersten Sensors angezeigt – darunter die gemessene Temperatur, die Sensornummer, ein Übertragungszähler sowie die Batteriespannung des Sensormoduls. Diese Anzeige erleichtert die Inbetriebnahme, Diagnose und Funktionskontrolle während der Entwicklungsphase erheblich.

Für den späteren Dauerbetrieb ist ein Display jedoch nicht zwingend erforderlich. Das finale Gateway wird kompakter aufgebaut sein und dauerhaft über ein kleines USB-C-Netzteil mit Strom versorgt werden. Dadurch entsteht eine wartungsfreie zentrale Einheit, die unauffällig im Hintergrund arbeitet und sämtliche Sensordaten zuverlässig an die Loxone Haussteuerung weiterleitet.

Loxone - Anschluss von einfachen selbstgebauten Funk Temperatursensoren mit Batteriebetrieb

Analyse des Stromverbrauchs beim Sendevorgang

Das folgende Messbild zeigt den Stromverbrauch des Sensormoduls während eines kompletten Sendevorgangs. Zur Messung wurde in die Plusleitung des Akkus ein 1-Ohm-Shunt-Widerstand integriert. Über den Spannungsabfall an diesem Widerstand kann mit dem Oszilloskop direkt der momentane Stromverlauf aufgezeichnet werden.

Die einzelnen Aktivitätsphasen des Senders wurden im Oszillogramm mit kleinen Zahlen markiert und anschließend energetisch ausgewertet. Daraus ergibt sich der Energiebedarf eines vollständigen Mess- und Übertragungsvorgangs:

AbschnittDauer & SpannungEnergiebedarf
125 ms @ 22 mVca. 0,00015 mAh
220 ms @ 35 mVca. 0,00019 mAh
350 ms @ 22 mVca. 0,00030 mAh
4110 ms @ 25 mVca. 0,00070 mAh
59 ms @ 75 mVca. 0,00019 mAh
60,66 ms @ 500 mVca. 0,00009 mAh
750 ms @ 70 mVca. 0,00100 mAh

Gesamtenergie pro Sendevorgang:
nur 0,002599 mAh

Diese Messung bestätigt, dass der eigentliche Funk- und Messvorgang nur einen sehr kleinen Anteil am Gesamtenergieverbrauch hat — eine entscheidende Voraussetzung für lange Batterielaufzeiten.

Berechnete Laufzeiten mit einem 100 mAh LiPo-Akku

Ausgehend vom gemessenen Energiebedarf ergeben sich folgende theoretische Betriebszeiten:

  • Sendeintervall 1 Minute
    → ca. 23,8 Tage bzw. rund 34.560 Sendungen
    (der durchgeführte Langzeittest hat alle Messungen und Berechnungen bestätigt – siehe Text weiter unten)
  • Sendeintervall 5 Minuten
    → ca. 83 Tage
  • Sendeintervall 15 Minuten
    → ca. 142 Tage

Die Ergebnisse zeigen deutlich, wie stark sich längere Messintervalle auf die Batterielaufzeit auswirken. In Kombination mit intelligenten Sendealgorithmen – beispielsweise einer Übertragung nur bei relevanten Temperaturänderungen – lassen sich Laufzeiten von deutlich über einem Jahr realisieren.

Ergebnisse Laufzeit & Langzeittest

Heute am 10.06.2026 hat der Temperatursensor mit seiner kleinen 100mAh Akkuzelle die berechnete Laufzeit erreicht. Es ist immer wieder schön, wenn sich aufwendige Messungen, Überlegungen und Berechnungen in der Praxis bestätigen. Erwartet wurde bei einem Messintervall von 1 Minuten und einem 100mAh Akku eine Laufzeit von fast 24 Tagen und insgesamt 34560 Messungen. Wie im Bild weiter unten zu sehen ist, wurde diese Marke problemlos erreicht. Der Akku hätte noch weitere Reserven. Er soll aber geschont werden und so werde ich ihn gleich wieder passend aufladen.

Auch wurde heute aus den 3D Modellen / Animationen der beiden Aufbauvarianten echte reale Baugruppen. Auch hier habe ich ein Bild eingestellt.

In der Zwischenzeit ist die Software weitere gereift. Es sind viele Optimierungen bei der Messung eingeflossen, die sehr viel geringere Wachzeiten des ESP32C6 ermöglichen. Die Batterielaufzeit wird sich damit weiter stark steigern lassen.

Mit einem sehr kleinen Softwarekniff konnte die Wachzeit des ESP32C6 von 255ms auf 88ms verkürzt werden. Diese Anpassung verlängert natürlich dramatisch die Batterielaufzeit. 

Besonderheiten des SEEED Studio ESP32C6

Der Controller-Baustein Seeed Studio ESP32-C6 kann über eine LiPo-Zelle mit Spannung versorgt werden und diese auch direkt mit Hilfe des USB-C-Anschlusses laden, doch einen echten Unterspannungsschutz gibt es nicht. Im schlimmsten Fall zieht der ESP32 den Akku so weit leer, dass dieser tiefentladen wird. Als sinnvolle Abhilfe werde ich in der Software den Sendeintervall dynamisch anpassen. Sobald der Akku einen entladenen Zustand erreicht, wird der Sendeintervall zum Akkuschutz schrittweise erhöht (oder: die Sendefrequenz schrittweise reduziert).

Wenn die Spannung des Akkus unter 3,3 Volt sinkt, werde ich nur noch einmal pro Stunde senden.
Bei einer Akkuspannung von kleiner 3,1 Volt nur noch einmal pro 24 Stunden. 

Infos und Historie

25.05.2026 – Der Sensor hat mit Stand jetzt 11981 Einzelsensendungen erreicht und die Batteriespannung vom 100 mAh Akku beträgt 3,884 Volt. 
28.05.2026 – Schaltungen und Layouts erstellt
10.06.2026 – der Testsensor mit der 100mAh Batterie hat die berechnete Laufzeit erreicht, die bestückten Leiterplatten beider Varianten sind fertig
12.06.2026 – durch nur eine weitere kleine Softwareanpassung wird sich die Batterielaufzeit um Faktor 3 verlängern
11.07.2026 – zusätzlicher Akkuschutz durch dynamische Anpassung der Sendefrequenz bei geringer Akkuspannung
24.07.2026 – Gateway über einen ESP32 Lite mit AtomPoE ist fertig – es landen saubere Pakete in der Loxone
28.07.2026 – die Weboberflächen zur Konfiguration sind für die Sensoren und für das ESP-NOW UDP Gatway fertig und funktionieren einwandfrei und spielen Daten in die Loxone
16.08.2026 – Deep Sleep Strom nur noch 0,03µA, neues Layout und Einsatz eines Nano Timers TPL5110

Stand 16.08.2026 – wird bald weitergeführt