Projects / Dome weather sensors
A weather-sensor network for SAAO's telescope domes
SAAO Intelligent Observatory, 2026 · ESP32 firmware in C++ (Arduino) · housing designed in Fusion 360 · Python tools
Conditions inside a telescope dome matter for observing. Humidity decides whether the optics risk condensation, and temperature differences between the dome, the outside air and the mirror blur the images. For SAAO's Intelligent Observatory I built small, robust sensor nodes that measure temperature, humidity and air pressure inside the domes, and that any computer on the observatory network can read.
How it works
- One cable. Each node is an Olimex ESP32-POE board with a BME280 sensor, powered over Ethernet, so a single cable carries both power and data.
- Pull, don't push. A node reads its sensor every second in the background and runs a small web server. Any computer on the network asks it for the latest reading and gets JSON back. Nodes never need to know where a central server lives, or cope with it being down.
- Trustworthy timestamps. Readings are stamped in UTC from the observatory's GPS-disciplined time server. Until its clock has synced, a node reports no time rather than a wrong one.
- Set and forget. A hardware watchdog restarts a node that hangs, a mistyped network setting falls back to automatic addressing instead of taking the node offline, and every node announces itself on the network by name. A Wi-Fi version covers domes without an Ethernet cable.
A reading looks like this (abridged):
{
"device_id": "dome-zenith",
"status": "ok",
"ntp_status": "synced",
"timestamp": "2023-12-04T21:04:04Z",
"temperature": 21.5,
"humidity": 45.8,
"pressure": 1012.5
}
A small Python script polls a node and exits with a different code depending on whether the node is unreachable or reporting a sensor fault, so it can be used directly in automated health checks.
The housing
I designed a four-part housing and 3D-printed it: a case that holds the board, a lid that slides into grooves in the case, and a separate frame and snap-on lid for the sensor, which is wired to the board. Both parts have slots for cable ties, because a jumper wire working loose is the most common failure in the field.