1 unstable release
0.1.0 | Mar 7, 2022 |
---|
645KB
303 lines
🚀 deconz-exporter
A very simple (and naive) Prometheus exporter for deCONZ Phoscon zigbee gateway. Exports prometheus metrics for sensors connected to Conbee II USB gateway.
📈 Exported metrics
# HELP deconz_battery Battery level of sensors
# TYPE deconz_battery gauge
deconz_battery{manufacturername, modelid, name, swversion}
# HELP deconz_humidity Humidity level
# TYPE deconz_humidity gauge
deconz_humidity{manufacturername, modelid, name, swversion, type}
# HELP deconz_pressure Pressure level
# TYPE deconz_pressure gauge
deconz_pressure{manufacturername,modelid, name, swversion, type}
# HELP deconz_temperature Temperature level
# TYPE deconz_temperature gauge
deconz_temperature{manufacturername, modelid, name, swversion, type}
🚲 Getting started
-
Enable discovery in gateway settings
-
Generate a new username for the exporter
$ curl -X POST -s http://<rest api endpoint>/api -d '{"devicetype": "deconz-exporter"}' | jq [{"success":{"username":"0E87CDA111"}}]
-
Start the exporter.
$ cargo run -- --url http://<gateway rest API>:4501 --username 0E87CDA111 --port 9199
-
Profit! 🥇
⚙️ How does this work?
- The exporter must be configured with a valid username and url to connect to deCONZ REST API.
- The websocket port is discovered though the REST API.
- The Websocket API provides streaming updates to the exporter, which gets converted to metrics.
🕵️♂️ Debugging tips
-
websocat is a handy tool to see the raw websocket events emitted. Use it to debug issues, capture some sample events etc.
$ websocat ws://nyx.jabid.in:4502 {"attr":{"id":"1","lastannounced":null,"lastseen":"2022-03-04T22:42Z","manufacturername":"dresden elektronik","modelid":...
-
Run
$ cargo test
just to be sure.
📝 Notes
- This exporter is only tested with a few devices I own. There is no guarantee that it would work with anything else.
- Feel free to send me PRs for other devices supported by Conbee II
- The auth flow is cumbersome and manual, would be great to automate this.
- Process metrics are missing, should bring them back.
- Auto discovery of gateways might be nice.
⚖️ License
Dependencies
~13–26MB
~411K SLoC