Ein Thermostat regelt einen Punkt, nicht einen Raum
Ein Raumthermostat hält eine einzige Zahl an einer einzigen Stelle: genau dort, wo sein Fühler zufällig montiert ist. Jeder andere Quadratmeter bekommt seine Temperatur nur als Folge davon, und niemand misst nach, ob diese Folge etwas taugt.
In einem kleinen, quadratischen Raum mit nur einer Fassade ist das in Ordnung — der Unterschied über den Raum hinweg beträgt Bruchteile eines Grads, und die Annahme trägt. Kommen eine Glasfassade, eine Fußbodenheizung und eine Tür zum Treppenhaus dazu, hört die Annahme still und leise auf zu stimmen.
Woher der Fehler kommt
Nichts Exotisches — nur die gewöhnliche Physik eines modernen Hauses, die überall gleichzeitig wirkt:
- Verglasung und solare Last: Der Streifen entlang des Fensters ist nachts kälter und nachmittags wärmer als jede andere Stelle im Raum.
- Zugluftstrecken aus Diele und Treppenhaus, die kalte Luft am Boden entlangführen.
- Wärme aus Geräten und von Personen — ein Medienschrank oder ein voll besetzter Esstisch ist eine stehende Last.
- Schichtung über die Höhe: unter der Decke und in Knöchelhöhe ist thermisch nicht derselbe Raum.
- Die Trägheit der Fußbodenheizung: Der Boden gibt noch lange Wärme ab, nachdem der Heizkreis längst geschlossen hat.
- Die Nähe zu einem Heizungsstrang oder einem Verteiler, der die Wand erwärmt, an der der Fühler sitzt.
Wie groß der Fehler in der Praxis ist
In einem Raum von 40 m² mit Glasfassade erreicht die Spreizung zwischen den Punkten mehrere Grad. Ein Thermostat an der Innenwand — der übliche Ort, weil dort nun einmal die Leitung lag — sitzt im wärmsten Teil des Raums und meldet den Raum wärmer, als er ist.
Eine Zone ist eine Gruppe von Fühlern, nicht ein Fühler
Die Lösung besteht darin, einen einzelnen Messwert nicht länger für den Raum zu halten. Eine Zone fasst einen bis vier Fühler zusammen, verdichtet sie zu einem einzigen repräsentativen Wert und veröffentlicht diesen für den Regelkreis. Der Regelkreis selbst ändert sich überhaupt nicht — er verarbeitet weiterhin eine einzige Zahl; die Zahl beschreibt jetzt nur den Raum statt einer Stelle an der Wand.
Die Aggregation in einem eigenen Modul zu halten, wiegt schwerer, als es aussieht. Der Regelkreis bleibt einfach genug, um ihn in einem Zug zu lesen, und das Messproblem wird einmal für alle Zonen gelöst, statt in jedem Raum neu erfunden zu werden.
Ein toter Fühler ist der einfache Fall
Ein ausgefallener Fühler meldet in der Regel null oder eine leere Zeichenkette. Er wird aus der Stichprobe genommen, und die Zone arbeitet mit dem, was übrig bleibt — drei Fühler statt vier beschreiben den Raum immer noch weit besser als der eine Fühler, auf den sich die meisten Anlagen verlassen.
Bleibt kein gültiger Wert übrig, wird der Wert gar nicht erst aktualisiert. Die letzte bekannte Zahl zu halten ist sicherer, als einen Heizkreis aus Müllwerten zu fahren.
cfg.sensors.forEach(function (control) {
var value = dev[control];
// Ein ausgefallener Fuehler meldet meist null oder eine leere Zeichenkette.
if (typeof value === 'number' && isFinite(value)) {
readings.push(value);
}
});
if (readings.length === 0) {
log.warning('temperature_zone_{}: no valid sensors, value not updated', id);
return;
}Ein hängender Fühler ist der schwierige Fall
Die Mittelwertbildung löst die Spreizung über den Raum. Sie löst nicht den Fühler, der eine plausible, aber falsche Zahl meldet. Eine Typprüfung erwischt ihn nicht — 25,4 °C ist eine völlig gültige Gleitkommazahl. Er zieht schlicht den Mittelwert mit, und der Regelkreis arbeitet danach auf einen Sollwert, der still und leise verschoben ist.
Vergleicht man jeden Messwert mit dem Median der Gruppe, fällt er auf. Der Median lässt sich von einem einzelnen Ausreißer nicht bewegen, anders als der Mittelwert, und gibt damit eine stabile Referenz, gegen die sich die Abweichung messen lässt. Messwerte, die weiter davon entfernt liegen als der Schwellwert, werden verworfen und protokolliert. Unter drei Messwerten gibt es keine Mehrheit zum Vergleich, daher wird die Prüfung ausgesetzt, statt zu raten.
Fühleranzahl, Platzierung und Schwellwert wählen
- Ein Fühler reicht in einem kleinen, quadratischen Raum mit einer Fassade und ohne Fußbodenheizung tatsächlich aus. Bauen Sie keine Hardware ein, nur um recht zu behalten.
- Zwei bis vier Fühler, sobald ein Raum eine Glasfassade hat, größer als etwa 30 m² ist oder zwei thermische Situationen umfasst — eine offene Küche mit Essbereich sind wärmetechnisch zwei Räume.
- Setzen Sie sie auf Arbeitshöhe und verteilen Sie sie über die thermischen Situationen des Raums, statt sie an einer Wand zu bündeln.
- Setzen Sie sie nicht über eine Wärmequelle, in die direkte Sonne, neben einen Heizungsstrang oder unmittelbar neben eine Tür zu einem unbeheizten Bereich — solche Punkte beschreiben die Störung, nicht den Raum.
- Setzen Sie den Abweichungsschwellwert weiter als die reale Spreizung, die Sie zwischen den Punkten erwarten, sonst verwirft die Prüfung einen echten Gradienten. Gehen Sie von der Spreizung aus, die die Fühler über eine Woche normalen Betriebs tatsächlich zeigen.
Was das nicht löst
Die Medianprüfung braucht eine Mehrheit, die richtig liegt. Hängen zwei von vier Fühlern auf ähnlich falschen Werten, wandert der Median mit ihnen, und die Prüfung bestätigt den Fehler, statt ihn zu erwischen.
Sie kann außerdem eine Störung nicht von einem echten Gradienten unterscheiden. Ein offenes Fenster im Winter erzeugt genau das Muster, das ein hängender Fühler erzeugt — ein Messwert weit ab von den übrigen — und die Regel verwirft einen Wert, der völlig richtig ist.
Beide Grenzen haben dieselbe Wurzel: Die Prüfung betrachtet einen einzigen Augenblick. Einen defekten Fühler von einem realen Ereignis zu unterscheiden, verlangt die Vorgeschichte der Messwerte und die Geschwindigkeit, mit der sie sich ändern, und nicht eine einzelne Momentaufnahme. Das ist ein anderes Modul, und wir haben es noch nicht geschrieben.
Das Modul — und wo es läuft
Das Ganze umfasst rund hundert Zeilen und ist in fünf Minuten gelesen. Es ist unter MIT veröffentlicht — nehmen Sie es, passen Sie die Namen der Stellgrößen an Ihre eigene Anlage an, und es läuft unverändert auf wb-rules 2.0.
temperature-zone.js — MITDas Projekt mit 350 m², in dem es läuftWie die Zone den Wert nutzt: Totband, SaisonsperreKNX-Programmierung als Dienstleistung