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

ItemNotes
Raspberry Pi 3B+ or newerPi Zero 2W also supported
USB measurement microphoneUMIK-1 or UMIK-2 recommended (pre-calibrated)
MicroSD card (8 GB+)Class 10 or better
Power supplyOfficial Pi PSU or PoE HAT

Provisioning a new monitor

The easiest way is the one-line script from the dashboard:

  1. In the dashboard, go to Monitors → Add monitor.
  2. Copy the generated provisioning command (it includes your controller IP and a unique token).
  3. SSH into the Raspberry Pi and paste the command.
  4. 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.yaml

Minimum 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: 500

Microphone 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.cal

Monitor 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

SymptomLikely causeFix
Monitor shows "Offline"MQTT connection lostCheck network; run sudo systemctl status zonal-monitor
SPL reads 0 dBWrong ALSA deviceRun arecord -l on the Pi and update mic_device
Readings seem too high/lowNo calibration fileApply the per-unit .cal file from your mic manufacturer