Saintummers Projekte

Temperatur Monitor für Zentralheizung

=== Datenquelle Schicht 1 Temperaturmessung ===
Für eine Heizung werden im allgemeinen vier Temperatur Kanäle benötigt.
• Vorlauf     • Rücklauf     • Warmwasser     • Außen
Zusätzlich ist auch der Stromverbrauch dazu von Interesse, welcher dann in einem eigenen Artikel E-Monitor vorgestellt wird.

Funktionalität: Schicht #1 Temperaturmessung
Input: Temperatur Messwerte (Bereich -30..70°C für Vorlauf, Rücklauf, Warmwasser und Außen)
Output: je eine Datei in Ramdisk pro Messwert (vl, rl, ww, aussen) Inhalt: eine Zeile mit Timestamp, Messwert (keine Unit) wird laufend überschrieben.
zB: die Datei /media/ramdisk/vl enthält eine Zeile: 2026-02-23 08:36:03,37.8

Software Schichtenmodell für Heizungs Monitor:
• #3  Darstellung per Webserver
• #2  Applikation Heizung - Speichern der Daten, berechnen von Tages- Monats- und Jahreswerten
• #1  Datenquellen Temperaturen    und    Stromverbrauch
• #0  Betriebssystem - (PC Hardware)
Die Skripte der unterschiedlichen Schichten kommunizieren via Files in der Ramdisk miteinander.
Die anderen Schichten #0, 1(Stromverbrauch), 2, 3 werden in zukünftigen Artikeln beschrieben.
ad Schicht #0 - Aufgrund des A/D Wandlers mit I2C Bus, ist ein Raspberry PI als Computer vorgesehen, da diese I2C unterstützen. Hier genügt ein Modell 4B mit 4GB Ram. Betriebssystem Raspberry PI OS64 (Debian13 Trixie), I2C freigeschaltet, USB-SSD anstatt SD Karte, XRDP zur Fernwartung, Samba zum Datenaustausch, Apache Webserver. Skripte bash oder Python3
Der I2C Bus ist für mich der einzige zwingende Grund hier einen Raspberry PI zu verwenden. Nachteile des Raspberry PI , Kühlung, Gehäuse, Mini HDMI und USB-C zur Stromversorgung. Mittlerweile kann man den nun ohne SDKarte betreiben. Aber es ist einiges bezgl. Mechanik zu bedenken.
Artikel zu den weiteren Schichten folgen.


Ansicht Live Daten:
=== Temperaturmessung + Vorgriff auf Schichten 3 (Darstellung am Webserver) Schicht 2 Verbrauchsrechnung und Schicht 1 Stromverbrauch ===

Hier werden im Minutentakt Messwerte gesammelt und auf einem Webserver grafisch dargestellt.
Drei unterschiedliche Datenquellen, Temperaturmessungen, Stromverbrauch, CPU Temperatur
Am Echtsystem kann jede Grafik per Klick größer dargestellt werden - (nicht hier auf der Seite)
WPmon Html  Ansicht

Motivation:
Meine alte Lösung von 2009 ist für eine Neue Anlage (Heizung beim Sohn) nicht mehr zweckmäßig, daher Neuentwicklung.
Die damalige Etherbox2 als 8 Kanal Analog Digital Wandler war teuer, Produktion ist mittlerweile eingestellt - daher ist neuer A/D Wandler notwendig.
PT1000 Sensoren sind genau, keine Ausfälle seit 2009. Das wird auch in der Industrie verwendet. Also neuer A/D Wandler mit PT1000 Sensor und Speicherung der Messwerte. Darstellung auf Webserver.
Die Verwendung fertiger Heim Automatisation Software sehe ich für mich nicht gegeben, da meistens schlecht Dokumentiert und Monolithischer Ansatz. Ich habe keine Lust mich mit den Produkten auseinander zu setzen. Daher eigene Entwicklung und Schicht-basierender Aufbau. Ich kaufe nur Komponenten, die gut Dokumentiert und deren Daten problemlos von der Betriebssystem Ebene aus abgefragt werden können. Hardware, die nur per Cloud oder Smartphone zu bedienen ist, wird nicht gekauft.

Nachbau
Das Projekt kann gerne privat nachgebaut werden. Die Verwendung in kommerziellen Projekten ist nicht gestattet
Die Python Skripte habe ich, teilweise auch mit Hilfe von ChatGPT erstellt.
Platinen können vom Autor bezogen werden.



Aufbau Temperatur Sensor + Hardware
•4 bis 16 Kanäle - Temperatur Sensoren PT1000
•PT1000 Messumformer pro Kanal erforderlich
•Analog Digitalwandler
•Speicherung der Daten und Darstellung auf Webserver. Plattform Linux, Raspberry P4B mit SSD
•Vernünftiges Industrienetzteil
•Montage in einem Verteilerkasten

Schaltung:
WPmon Pt1000  A/D  Schema
Eine Platine kann 4 Kanäle messen. Es können insgesamt bis zu 4 Platinen an einem I2C Bus betrieben werden. Der A/D Wandler wird mit 5V betrieben. Raspberry PI verwendet 3.3V Logik. Zur Logikanpassung 5V-3.3V bidirektional ist ein Levelshifter eingebaut. Die I2C Leitungen SDA und SCL werden darüber zum Raspberry Pi geführt. Die Hilfsspannung von 15V für die Messumformer wird aus 5V mittels Step UP Regler erzeugt. Am Print mit +24V bezeichnet, aber +15V sind OK.

Platine:
Auf der Platine ist ein AD1115AD Wandler und Vier Messwandler -30 70 Grad aufgelötet, dazu Levelshifter in SMD, Kontroll LEDs für die Spannungen, 3 Stufiger Anschl. für CPU Lüfter. Vom Netzteil gehen 5V direkt via USB-C Stecker zum Raspberry PI. Von dort wird über die 6 polige Flachbandleitung GND,5v,3.3V,SDA und SCL die Platine versorgt. Via Daisy Chain Kabel können weitere Platinen versorgt werden. WPmon Platine
Ein Step UP Regler erzeugt aus 5V die extra 15V Spannung für die Messwandler. Sensoren: Es erfolgt kein Eingriff die Heizungsanlage, alle Fühler werden nur Passiv an die Rohroberflächen gebunden.
PT1000 Sensor Einbau
Das Cu Rohr mit Sensor wird nachher wieder mit Schaumstoff Isolation umhüllt. Bei dem Warmwasserbehälter wird der Sensor zu dem schon eingebauten Sensor dazu gesteckt. Hier ist meistens ein kleine Klappe im Isolier Schaumstoff vorgesehen.

Messumformer:
Messumformer
Der Messumformer gibt 0-10V für Temperatur -30V .. +70V aus
DieseModule sind bei B+B Thermo-Technik GmbH, Conrad und anderen Distributoren erhältlich.

PT1000 mit Messumformer ist sind Industriestandard und genau. Verkabelung ist unkritisch.
 

A/D Wandler:
ADS1115
Der A/D Wandler ist bei AzDelivery erhältlich.
Über einen Spannungsteiler 15K, 10K wird die Ausgangs Spannung zu A/D Wandler Eingang geleitet - 0..4.096V 16bit
 

Levelshifter: Levelshifter
Der Levelshifter ist auf derPlatine in SMD realisiert. Der BSS138 ist in SMS erhältlich (Reichelt)
Dazu SMD 10K Widerstände in der Größe 0805
BSS138
Der Raspberry PI arbeitet mit 3.3V Logikspannung. Der ADS1115 könnte auch mit 3.3V arbeiten, dann darf aber auch der Eingang nicht 3.3V überschreiten. Das würde die Genauigkeit vermindern, daher Betrieb mit 5V und einem Logik Levelshifter zu 3.3V. Die Schaltung mit BSS138 ist bewährt, habe ich in Verbindung mit Arduino und Raspberry PI schon oft verwendet.
 

Test der Platine mit I2Cdetect I2Cdetect ist am Raspberry PI vorhanden.
Aus der Shell wird der I2CBus angesprochen, und die erkannten Geräte angezeigt.
i2cdetect -y 1
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- 48 49 -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
Hier wird Adresse 48 und 49 erkannt für zwei Platinen mit 8 Kanälen.
Der A/D Wandler kommuniziert via Levelshifter mit dem Raspberry PI


Software Skripte: In diesem Artikel geht es um Punkt 1.0 Datenquelle Temperaturen. Die vier Messwerte werden fortlaufend in vier Files in der Ramdisk abgespeichert.
Dateinamen: vl, rl, ww, aussen.
Datei Inhalt: timestamp:Messwert.---- zB. 2026-02-18 16:17:05,40.9

Schicht #1 , ein Skript zur Abfrage der Temperatur Sensoren, A/D Wandlung und Daten schreiben in die Ramdisk. Eine kleine Anfrage zu ChatGPT hat ein Skript dazu bereitgestellt..

Test Script
Mit diesem Testscript kann die Funktion der Platine mit Sensoren sofort überprüft werden. ads1115_test.py - Python Skript

File listing not supported by your software, please use an up-to-date browser

Einsatz Skript Aufruf aus Shell:
python3 ads1115_test.py Adresse Kanal Gain
Adresse ist 0x48 (siehe Lötbrücke auf Platine) Kanal ist 0 - 3, Gain ist immer 1
Es wird Digital Rohwert, Spannung am AD Eingang, Spannung Ausgang Messumformer (zurückgerechnet lt. Spannungsteiler), Temperaturwert ausgegeben
 python3 ads1115_test.py 0x48 0 1 
2026-02-22 10:16:29, raw=22337, vadc=2.792V, vin=6.981V, temp=39.81

Einsatz Skript
Aufruf per Shellscript. Hier erfolgt Zuordnung A/D Adresse und Kanalnummer zu Dateinamen in der Ramdisk.

./t-messung.sh  
t-messung.sh - Shell Skript
Aufruf Einsatz Skript per System Python3 mit Parameter I2C Adresse Kanalnummer und Ausgabedatei. Alles mit absoluten Pfaden.

File listing not supported by your software, please use an up-to-date browser
Das Shell Skript kann jede Minute per Cron, oder im Dauerlauf als Systemd Service unter Linux gestartet werden.
Voraussetzung für das Python Skript, es muss eine Ramdisk vorhanden sein.
Beschreibung im Artikel Schicht #0 (Installation Linux, Samba, Ramdisk, Webserver, Cron, Systemd Service) erfolgt noch.
Es werden die Messwerte permanent mit Timestamps in die Ramdisk geschrieben.
Je ein File mit VL, RL, Aussen, WW. Nur einen Zeile Timestamp, Messwert.
Die Files werden immer überschrieben.

ads1115_read.py - Python Skript

File listing not supported by your software, please use an up-to-date browser

Alle drei Skripte (ads1115_test.py, t-messung.sh und ads1115.py können hier aus dem grauen Code Fenster mit(CTL-A) und (CTL_C) heraus in die Zwischenablage kopiert werden.

Einbau:
Eigene Anlage mit 8 Kanälen. Die Messumformer habe ich von meiner alten 2009er Lösung übernommen.
Raspberry PI4B 4GB + Sata SSD 250GB, Industrie Netzteil, Step Up Regler, 1A Leitungsschutzschalter.
WPmon 8K ready

Bezugsquellen:
Messumformer -30..70Grad 0-10V Messumformer shop.bb-sensors.com , Messumformer Conrad
ADS1115 A/D Wandler ADS1115 AZ Delivery
Industrie Netzteil 5V 3A Netzteil Reichelt
Step UP Modul 5V-15V StepUp Amazon
Widerstände 0.1% Toleranz 10k und 15k für die Spannungsteiler 15K Reichelt und 10K Reichelt
Pfostenbuchsen 40 und 6 polig für Verbindungskabel Rasperry GPIO zur Platine PFL 40 Reichelt und PFL 6 Reichelt
Raspberry Pi USB-C Stecker Amazon


Nachbau
Das Projekt kann gerne privat nachgebaut werden. Die Verwendung in kommerziellen Projekten ist nicht gestattet
Die Python Skripte habe ich, teilweise auch mit Hilfe von ChatGPT erstellt.
Platinen können vom Autor bezogen werden.

H.Stummer Dateidatum: 11.03.2026

Zum Seitenanfang

Besucherzaehler