Warum eine Heizung einbauen
Natürlich ist es das Ziel, den Sternenhimmel mit der Kamera zu beobachten. Wetterphänomene können das verhindern. Es können Regentropfen auf dem Glasdom nach einem Regen zurückbleiben. Bei hoher Luftfeuchte kann die Domkuppel beschlagen. Frostige Temperaturen lassen Eiskristalle auf dem Dom wachsen oder er kann mit Schnee bedeckt werden. Das folgende Video zeigt, ein schönes Kristallwachstum während eine Winternacht im Januar 2024.
Die einfachste Lösung wäre es einfach eine Heizung im Dauerbetrieb zu betreiben. Das erfordert keine Steuerung. Ich habe mich aber dagegen entschieden. Einerseits um Strom zu sparen und andererseits um die Hitze unter der Domkuppel im Sommer nicht zusätzlich in die Höhe zu treiben. Es musste also eine Steuerung her. Nachfolgen beschreibe ich erst mal wie die Heizung funktioniert. Danach, was die Steuerung macht.
Aufbau der Heizung
Wie die Heizung elektrisch aufgebaut ist habe ich im Beitrag Allsky Kamera – Bau beschrieben.
Mit dem Raspberry PI wird die Heizung über ein Relais ein- und aus geschaltet. Bei eingeschalteter Heizung fließt Strom durch die drei Heizwiderstände in der Kuppel. Diese erwärmen sich und heizen so die Luft in der Kuppel. Dadurch wird die Kuppel und die sie umgebende Luft ebenfalls aufgeheizt.
Technische Daten
- Einzelwiderstand 18 Ohm.
- Gesamtwiderstand R = 54 Ohm (3 Stück in Reihe geschaltet).
- Betriebsspannung U = 12 V.
- elektrische Leistung = U²/R = 12²/54 = 2,7 W.
Die elektrische Leistung ist mit 2,7 W nicht besonders groß, jedoch völlig ausreichend. Das zeigen Erfahrungen von Daniel Nimmervoll mit der gleichen Heizung bei ähnlichem mechanischen Aufbau.
Die Steuerung
Die Steuerung übernimmt ein Programm im Raspberry PI. Es muss die Heizung zum richtigen Zeitpunkt einschalten und dann, nach getaner Arbeit, wieder ausschalten. Was aber ist der richtige Zeitpunkt und wann ist die Arbeit getan?
Etwas Theorie
Welche Ziele verfolge ich mit der Steuerung. Zunächst ist wohl klar, dass die Steuerung vom Wetter abhängt.
Wenn es regnet, oder schneit und bei Nebel sind keine Sterne zu sehen. Die Heizung kann ausgeschaltet bleiben. Hört es jedoch auf zu regnen oder zu schneien, sollen die Regentropfen bzw. die Schneeflocken „weggeheizt“ werden, um wieder klare Sicht zu haben, wenn der Himmel aufzieht. Aber auch bei klarem Himmel kann die Sicht auf die Sterne versperrt werden, wenn der Dom beschlägt oder zufriert. Auch dagegen gilt es „anzuheizen“.
Damit Regentropfen, Schnee, Eis und beschlagenes Glas verschwinden, muss das Wasser verdampfen. Dazu muss eine winzige Luftschicht um die Kuppel so weit aufgeheizt werden, dass die Taupunkttemperatur überschritten wird. Dann geht das Wasser in den gasförmigen Zustand über und verdampft. Je weiter der Taupunkt überschritten wird, umso schneller erfolgt der Übergang. Die Taupunkttemperatur hängt wiederum von der Lufttemperatur selber ab. Warmer Luft kann mehr Wasserdampf aufnehmen als kalte Luft. Den Taupunkt kann man einfach bestimmen, wenn man die relative Luftfeuchte bestimmen kann. Sie ist am Taupunkt 100%. Die Luft kann keinen Wasserdampf mehr aufnehmen und alles weitere Wasser kann nicht mehr verdampfen. In Wikipedia findet sich die folgende Abbildung, die die Abhängigkeit von Lufttemperatur relativer Luftfeuchte und Taupunkt zeigt.

Um die Wirkung der Heizung auszuprobieren, habe ich eigene Messungen mit der Kamera im Wohnzimmer gemacht. Das folgende Diagramm zeigt den Temperatur- und Luftfeuchteverlauf direkt über dem Dom.

Zunächst sieht man die Wirkung der Temperatursteigerung auf die relative Luftfeuchte. Sie sinkt mit dem Temperaturanstieg. Das wollen wir ja erreichen. Nach etwa einer Stunde hat sich ein Gleichgewicht eingestellt und die Temperatur bleibt auf dem gleichen Niveau. Dann wird genau so viel Wärme nach außen abgeführt, wie die Heizung innen erzeugt.
Und nun zum Wetter...
Wir wissen nun, wie wir mit der Heizung dem Wetter begegnen können. Aber wie bestimmt man das Wetter? Hier kommt uns die Allsky-Gemeinde zu Hilfe. Die Allsky Software lässt sich um sogenannte „Module“ erweitern. Diese Module kann man nachträglich installieren und dann in der Allsky-Software aktivieren. Eines dieser Module liefert aktuelle Wetterdaten zum Standort über den kostenlosen Dienst „Open Weather Map„. Die Modulsoftware wandelt die empfangenen Daten in Umgebungsvariablen um, z.B. die Temperatur und die Luftfeuchte. Diese Daten können dann auch im Livebild und in den Videos angezeigt werden. Ich habe mir drei Datenpunkte herausgesucht:
OWWEATHER = Wetter als englisches Stichwort (Clouds, Clear, Rain, usw.)
OWTEMP = Luftemperatur in °C
OWHUMIDITY = Relative Luftfeuchte in %
Diese brauche ich, um die Heizung zu steuern.
Open Weather Map
Mit dem folgenden URL-Aufruf kann man einen aktuellen
Wetterdatensatz erhalten:
https://api.openweathermap.org/data/2.5/weather?lat=52.5628124&lon=-13.1317989&units=metric&appid=xxxxxxxxxxxxxxx
{„coord“:{„lon“:-13.1318,“lat“:52.5628},
„weather“:[
{„id“:804,
„main“:“Clouds“,
„description“:“overcast clouds“,
„icon“:“04n“}],
„base“:“stations“,
„main“:{
„temp“:14.35,
„feels_like“:14.19,
„temp_min“:14.35,
„temp_max“:14.35,
„pressure“:1016,
„humidity“:90,
„sea_level“:1016,
„grnd_level“:1016},
„visibility“:10000,
„wind“:{
„speed“:13.75,
„deg“:161,
„gust“:22.21},
„clouds“:{
„all“:100},
„dt“:1730922039,
„sys“:{
„sunrise“:1730879926,
„sunset“:1730913215},
„timezone“:-3600,
„id“:0,
„name“:““,
„cod“:200}
Mit der weather.id kann zwischen Niederschlagswetter und „trockenem“ Wetter unterscheiden. Alle Werte ab 800 sind „trocken“.
Wetter Situationen
Frost:
Herrscht Frost, muss die Kamera unabhängig vom Wetter „aufgetaut“ werden. So, wird verhindert, dass sich Eiskristalle bilden, oder Schnee den Dom bedeckt.
Niederschlag:
Falls kein Frost herrscht, wird bei jeglichem Niederschlag, ob Regen, Schnee, oder Nebel, die Heizung abgeschaltet.
Hört der Niederschlag auf, muss die Heizung angeschaltet werden, um die Regentropfen oder den Schnee zu trocknen.
Tau:
Steigt die relative Luftfeuchte über den Taupunkt, beschlägt der Dom. Das wird mit der Heizung verhindert.
Betriebs Modi
Je nach Wettersituation wird die Heizung in einen bestimmten Betriebsmodus gehen:
- Warten (auf Wetteränderung)
- Trocknen (nach Regen, Niederschlag, oder bei Tau)
- Enteisen (bei Frost)
Heizungzustände
Die Heizung kann ein und ausgeschaltet werden. Damit ergeben sich nur zei Zustände, nämlich „An“ und „Aus“. Aus den oben beschriebenen Wettersituationen ergibt sich, wann die Heizung eingeschaltet wird. Allerdings kann nur ein einsetzender Niederschlag die Heizung wieder ausschalten. Ansonsten würde sie dauerhaft laufen. Daher habe ich mich entschlossen, die Heizung nach einer gewissen Zeitspanne abzuschalten. Die maximale Heizdauer wird fest vorgegeben (aktuell 6h). Sie wird, abhängig von der relativen Luftfeuchte, verkürzt. Je geringer die Luftfeuchte ist, umso kürzer die Heizzeit.
Wir haben oben im Theorieteil gesehen, dass die Heizung mit einer Verzögerung von etwa einer Stunde ein Gleichgewicht erreicht. Ich nehme an, dass nach dem Abschalten der Heizung ebenfalls eine Stunde vergeht, bis sich die Kamera auf das ursprüngliche Gleichgewicht abgekühlt hat. Wenn die Heizung in dieser Abkühlungsphase wieder eingeschaltet wird, muss nicht erneut eine Stunde gewartet werden, bis die Heizung das Gleichgewicht erreicht hat, denn die Heizwirkung startet ja von einem höheren Niveau. Daraus ergeben sich folgende drei Heizzustände:
- Heizen (An)
- Abkühlen (Aus)
- Abgekühlt (Aus)
Zustände
Die folgenden Zustandsdiagramme zeigen das Verhalten der Steuerung: Es gibt drei Zustandsmaschinen:
- Wetter
- Betriebsmodus
- Heizung
Wetter:
Trocken (dry) und Niederschlag (percipitation) wird von der Wetter ID aus weather_map.org gesteuert. In den Tau-Zustand (dew) wird aus dem Trocken-Zustand gewechselt, wenn das Luftfeuchtelimit (humidity_limit) überschritten wird. Nach Frost wird immer geschaltet, wenn die Frosttemperatur unterschritten wird. Die Limits werde ich dann aus Erfahrungswerten anpassen. Bei jedem Zustandsübergang werden Signale erzeugt, die die nächste Zustandsmaschine (Betriebsmode) steuern. Aus der Heizungszustandsmaschine wird ein Signal empfangen, wenn die Heizung abgeschaltet wird (heating_timeout). Dann wird die gesamte Wetterzustandsmaschine wieder auf Anfang gesetzt und kann so z.B. wieder in den Frostzustand schalten, falls der Frost weiter anhält.

Betriebsmode:
Hier finden wir die oben beschriebenen Betriebsmodi wieder: Trocknen (DRY), Warten (IDLE) und Auftauen (DEFROST). Je nach Wetteränderung wird zwischen den Modi umgeschaltet. Wenn die Heizung ausgeschaltet wird (heating_timeout) geht auch diese Zustandsmaschine in den Wartezustand. An die Heizung werden Signale gesendet:
an (heater_on(heizdauer)) und
aus (heater_off).

Heizung:
Die Heizung ist entweder an (HEATER_ON) oder aus (HEATER_OFF). Im ausgeschalteten Zustand kühlt sie ab (COOLING) oder befindet sich wieder im Gleichgewicht (EQILIBRIUM). Wenn die Heizung nach abgelaufener Heizdauer abschaltet (heating_timeout), wird dieses Signal an die anderen Zustandsmaschinen gesendet.

Mit Python programmiert
Die Module der Allsky Software sind in der Programmiersprache Python geschrieben worden. Der Plan ist es, das Open Weather Map Modul, um die Heizfunktion zu erweitern. Das geht am einfachsten mit Python. Im Archiv allsky_heater befindet sich das komplette Python Project als Microsoft Visual Studio Community 2019 Solution.
Die Allsky Module können von https://github.com/AllskyTeam/allsky-modules heruntergeladen werden. In der Projektbeschreibung findet sich die Anleitung zur Installation auf dem Raspberry Pi (in Englisch). Danach wird das Installationsskript ./install.sh ausgeführt. Bei der Auswahl der Module zur Installation wird das Modul „allsky_openweathermap“ ausgewählt und installiert. Danach muss das Modul noch in der Allsky Web UI aktiviert werden:

Mit dem Browser die Web UI aufrufen und einloggen.
- Den Menüpunkt „Module Manager “ auswählen.
- Aus der Liste der Workflows „Periodic jobs“ auswählen.
- Das Feld mit dem Open Weather Map Modul vom Linken Feld in das rechte Feld schieben.

Anzeige Wetter und Heizung
Auf die Schaltfläche „Settings“ klicken. Ein Dialogfeld öffnet sich.
API Key
Dieser Schlüssel muss zuvor bei https://openweathermap.org/appid besorgt werden.
Filename
Dieser Dateiname kann auf openwether.json belassen werden. Darin werden die empfangenen Daten im JSON Format gespeichert.
Read Every
Habe ich auf 600 gestellt, sodass sich die Wetterdaten alle 10 Minuten aktualisieren. Das ist für die Steuerung völlig ausreichend und entspricht dem empfohlenen Limit für den kostenlosen Zugang zur Open Weather Map API (Application Programming Interface).
Units
„metric“ auswählen.
Expiry Time
3600 hat sich hier bewährt. Es ist bereits vorgekommen, dass dieses Limit überschritten wurde. Das ist aber sehr, sehr selten der Fall.
Zum Schluß noch mit „Save“ speichern und das Kontrollkästchen „Enabled“ aktivieren.
Um die Arbeit der Heizung überwachen zu können, wurden der Heizzustand und die relevanten Wetterdaten in die Livebildanzeige integriert. Das Open Weather Map Modul schreibt die zuletzt empfangenen Wetterdaten in eine Art Datenbank. Das allsky Programm hat ebenfalls Zugriff auf diese Datenbank. Jeder Datenpunkt erhält ein Schlüsselwort, mit dem er in der Datenbank gefunden werden kann.
Um die Datenbankwerte im Livebild anzuzeigen, wird zunächst im Web UI der „Overlay Editor“ geöffnet.

Anschließend wird der „Variable Manager“ geöffnet. Um die Datenbankvariable im Overlay Editor verfügbar zu machen, muss aus der Datenbankvariablen eine Allsky Variable gemacht werden. Dazu wählt man den Reiter „All Variables“ aus, sucht die Datenbankvariable mit ihrem Schlüsselwort und drückt auf das „+“ Zeichen.


Danach kann noch die Allsky Variable mit Details und einem Datentyp versehen werden.

Die Platzhalter-Variable z.B. ${OWHEATER} kann nun im „Overlay Editor“ in einen Anzeigetext eingefügt werden.
Nach dem Speichern der Overlay Konfiguration wird der Platzhalter durch den Wert der Variablen im Livebild ersetzt. Ich zeige das Wetter, die Lufttemperatur, die Luftfeuchte und den Heizungszustand (Heater) an.

So kann ich im Livebild und auch in den Nachtvideos beobachten, wie die Heizungssteuerung auf die Wetteränderungen reagiert.
Erfahrungen
Die Wetterstation, aus der die Daten zu meinem Standort kommen, liegt einige Kilometer entfernt in Berlin. Dort scheint es in der Regel etwas wärmer und die Luft auch trockener zu sein, als an meinem Standort in Falkensee. So beschlägt der Dom bereits, wenn die Luftfeuchte deutlich unter 90% liegt. Auch bildet sich bereits Reif, wenn die Temperatur noch über 0° liegt. Daher musste ich meine Schwellwerte anpassen.
Meine aktuellen Werte sind
frostLimit = 2.0 (°C)
humidityLimit = 80.0 (%)
Die Wettersituation scheint dagegen sehr gut zu passen.
Im nachfolgenden Video kann man sehen, wie die Heizung bei Regen abgeschaltet wird und danach wieder angeschaltet wird.