This project provides a Dockerized edge collector that measures wireless/network performance and publishes metrics to an MQTT broker (e.g., HiveMQ Cloud). It is designed for Raspberry Pi edge deployment and also supports PC/WSL/macOS for development and testing.
The Docker image includes a first-run interactive setup wizard that stores configuration inside a persistent Docker volume.
Each interval, the collector publishes a JSON payload that includes:
latency_ms_avg – average ping latencyjitter_ms – ping jitter (mdev approximation)packet_loss_pctrssi_dbm – Wi-Fi RSSI (Linux + real Wi-Fi only, e.g., Raspberry Pi)MQTT topic format:
<MQTT_TOPIC>/<DEVICE_ID>
Default:
wmn/metrics/<device hostname>
Docker Hub:
irfanuruchi/wmn-collector:latest
This is a multi-architecture image:
linux/amd64 – PCs, Windows WSL, macOS(older Intel based Macs)linux/arm64 – macOS (Apple M series of chips) , Raspberry PiUse this mode on Raspberry Pi to enable Wi-Fi RSSI collection via
iw.
docker pull irfanuruchi/wmn-collector:latest
docker run -it --name wmn-collector \
--restart unless-stopped \
--net=host --privileged \
-v wmn_config:/config \
-v wmn_data:/data \
irfanuruchi/wmn-collector:latest
The container will prompt for:
8883)1)Configuration is saved to:
/config/config.env
inside the Docker volume wmn_config.
Press:
Ctrl + P, then Ctrl + Q
docker logs -f wmn-collector
docker stop wmn-collector
docker start wmn-collector
docker rm -f wmn-collector
In WSL/macOS/PC Docker environments, RSSI is expected to be
nullbecause Wi-Fi radio information is not accessible inside the container VM.
docker pull irfanuruchi/wmn-collector:latest
docker run -it --name wmn-collector \
--restart unless-stopped \
-v wmn_config:/config \
-v wmn_data:/data \
irfanuruchi/wmn-collector:latest
docker logs -f wmn-collector
If preferred, configuration can be passed directly via environment variables.
docker run -d --name wmn-collector \
--restart unless-stopped \
-e MQTT_BROKER="xxxxxx.s1.eu.hivemq.cloud" \
-e MQTT_PORT="8883" \
-e MQTT_TLS="1" \
-e MQTT_USERNAME="wmn-client" \
-e MQTT_PASSWORD="YOUR_PASSWORD" \
-e DEVICE_ID="irfanwmn" \
-e MQTT_TOPIC="wmn/metrics" \
-e PING_TARGET="1.1.1.1" \
-e INTERVAL_SEC="5" \
-v wmn_data:/data \
irfanuruchi/wmn-collector:latest
On Raspberry Pi, add
--net=host --privilegedto enable RSSI.
This image uses Docker volumes for persistence:
wmn_config → /config/config.envwmn_data → /data/spool.dbVolumes remain even if the container is removed.
List volumes:
docker volume ls
rssi_dbm)null on Windows Docker, WSL, and macOSSuccessful connection shows:
[mqtt] on_connect rc=0 connected=True
docker rm -f wmn-collector
iw dev wlan0 link
docker logs -f wmn-collector
This project demonstrates:
Content type
Image
Digest
sha256:5dbe87d5a…
Size
52.3 MB
Last updated
9 months ago
docker pull irfanuruchi/wmn-collector