Monitors
A monitor is a Raspberry Pi running the Zonal agent that continuously measures sound pressure level (SPL) using a calibrated USB microphone and reports readings to the controller over MQTT.
Hardware requirements
| Item | Notes |
|---|---|
| Raspberry Pi 3B+ or newer | Pi Zero 2W also supported |
| USB measurement microphone | UMIK-1 or UMIK-2 recommended (pre-calibrated) |
| MicroSD card (8 GB+) | Class 10 or better |
| Power supply | Official Pi PSU or PoE HAT |
Provisioning a new monitor
The easiest way is the one-line script from the dashboard:
- In the dashboard, go to Monitors → Add monitor.
- Copy the generated provisioning command (it includes your controller IP and a unique token).
- SSH into the Raspberry Pi and paste the command.
- The monitor registers itself and appears in the dashboard within 10–15 seconds.
Manual provisioning
# Install the agent
curl -fsSL https://steeplestack.org/provision | sudo bash
# Configure
sudo nano /etc/zonal-monitor/config.yamlMinimum config.yaml:
controller_host: 192.168.1.100 # IP of your Zonal controller
controller_port: 1883
monitor_name: "Sanctuary Left"
mic_device: hw:1,0 # ALSA device — use 'arecord -l' to find yours
sample_rate: 48000
report_interval_ms: 500Microphone calibration
For accurate dB readings, apply your microphone's calibration file. UMIK microphones ship with a per-unit calibration file downloadable from miniDSP's website.
# Place the .cal file on the Pi
sudo cp UMIK_12345678_90deg.cal /etc/zonal-monitor/mic.cal
# Reference it in config.yaml
calibration_file: /etc/zonal-monitor/mic.calMonitor zones
Monitors are organized into zones in the dashboard. A zone typically corresponds to a physical area (e.g., Sanctuary, Lobby, Kids Wing). Multiple monitors can belong to the same zone; the dashboard shows min, max, and average SPL across all monitors in a zone.
Assign a monitor to a zone from Monitors → [monitor name] → Edit → Zone.
Ganging monitors
Ganged monitors share the same SPL target and alert thresholds. When one monitor in a gang triggers an alert, the dashboard highlights the entire gang. Configure ganging from the Zones panel.
Alert thresholds
Set per-monitor or per-zone thresholds under Settings → Alerts:
- Warning — dashboard highlights the reading in amber.
- Critical — dashboard highlights in red and (optionally) sends a webhook notification.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Monitor shows "Offline" | MQTT connection lost | Check network; run sudo systemctl status zonal-monitor |
| SPL reads 0 dB | Wrong ALSA device | Run arecord -l on the Pi and update mic_device |
| Readings seem too high/low | No calibration file | Apply the per-unit .cal file from your mic manufacturer |