DCF77 Live Details
DCF77 Meteotime – Technical Overview
This setup implements a complete end-to-end decoding pipeline for the DCF77 signal, including the proprietary Meteotime weather service.
The system consists of a low-power receiver unit (Raspberry Pi Zero) and a web server (Mini-PC), which together provide real-time visualization of the decoded data.
Hardware
- DCF77 ferrite antenna receiver module
- Raspberry Pi Zero 2 WH
- 3.3 V GPIO input (digital signal)
- Optional: plastic enclosure for noise shielding
The receiver outputs a digital pulse signal corresponding to the DCF77 amplitude modulation.
Note 1: For reliable 24/7/365 operation, a high-quality SD card is strongly recommended. To maximize its lifespan, minimize write cycles by disabling unnecessary logging and avoiding continuous file writes to the card wherever possible.
May the card live long and prosper.
Note 2: Proper alignment of the ferrite antenna is essential for good reception. The rod should be oriented with its length pointing roughly towards Frankfurt (DCF77 transmitter). Slight rotation may be required to achieve the best signal quality at your location.
GPIO Interface
The DCF77 receiver is connected to a GPIO input pin of the Raspberry Pi:
- Signal: GPIO input (e.g. GPIO17)
- Mode: pull-up enabled
- Logic: active low pulse
The pulse width encodes the bit value:
- ~100 ms → bit 0
- ~200 ms → bit 1
- missing pulse → minute marker
Software Architecture
The decoding pipeline is implemented in Python and runs continuously as a systemd service on the Raspberry Pi.
- Pulse detection and classification
- Bitstream reconstruction (per second)
- DCF77 time decoding
- Meteotime triplet assembly (3-minute blocks)
- Decryption using time-derived key
Data Flow
DCF77 Signal ↓ Raspberry Pi (Decoder) ↓ /tmp/status.json (RAM) ↓ Push (1 Hz via systemd timer) ↓ Mini-PC Web Server ↓ Caddy → /dcf77/status.json ↓ Ghost Website (Live View)
JSON Interface
The decoder publishes its current state as a JSON file:
/dcf77/status.json
The JSON contains:
- rf: raw signal and bitstream
- dcf: decoded time and sync status
- meteotime: weather data and decode status
- stats: decoding statistics
Web Integration
The Mini-PC hosts the JSON file using Caddy and makes it available under:
https://oe6vag.net/dcf77/status.json
A custom JavaScript frontend fetches this data every two second and renders the live view inside Ghost.
System Services
- dcf77.service → decoder
- dcf77-web.service → local web server
- dcf77-push.timer → 2 Hz upload to Mini-PC
Live Visualization
The web interface provides a real-time view of the decoding process:
- Current bitstream (updated every second)
- Automatic trimming to 59 bits
- Detection of missing minute markers
- Signal anomaly detection (pulse timing)
- Persistent display of last valid Meteotime decode
For a detailed explanation of the Meteotime protocol and decryption method, see: