Prometheusで自宅環境を観測するためのExpoter
Goで書いています。(go version go1.23.0 linux/arm,linux/amd64)
ハードウェアは Raspberry Pi Zero W を使っていますが、必要なI/Fが実装されていれば他のでもいけそう。
- I2C接続(この順でセンサを探します)
- BME280 BME280使用 温湿度・気圧センサモジュールキット
- CCS811 CCS811搭載 空気品質センサモジュール
- SHT35 GROVE - I2C 高精度温湿度センサ(SHT35)
- LPS331AP LPS331AP 気圧センサモジュール(I2C/SPIタイプ)
- シリアル接続
- MH-Z19B/C CO2センサーモジュール MH-Z19C
- Bluetooth Low Energy(BLE)
- WxBeacon2(2JCIE-BL01) WxBeacon2
- EPモード(General/Limited Broadcaster 2)に設定されていることを期待しています。
- SwitchBot 防水温湿度計
- WxBeacon2(2JCIE-BL01) WxBeacon2
make で co2/i2cdev/wxbeacon2/wosensorの4バイナリを作ります。 ./binにバイナリを吐くので、sudo mv ./bin/* /usr/local/bin/などで。
GitHub Actionsでarm/arm64とamd64のビルドを作ってReleaseに入るようにしてあります。
unit にそれぞれのバイナリを起動するためのsystemd sample unitファイル例を入れてあります。
listenするアドレスはデフォルトで:9821ですが、--listenで適当に変更して衝突しないようにしてください。
- co2
- MH-Z19Bへアクセスできるtty deviceのpathを引数
--mhz19で渡してください。
- MH-Z19Bへアクセスできるtty deviceのpathを引数
- i2cdev
- Raspberry Pi OSの場合、起動ユーザが
i2cグループメンバである必要があります。 - BME280の出力する温度情報はどうも数度高めに出るようなので、
--temp_offsetでオフセットを設定できるようにしてあります。 - 海面更正気圧を記録する場合は
--above_sea_levelに海抜(m)を設定してください。
- Raspberry Pi OSの場合、起動ユーザが
- wxbeacon2
- Linuxの場合、BLEの操作に
CAP_NET_ADMINが必要です。 - WxBeacon2のMacアドレスを引数
--wxbeaconに渡してください。 - 海面更正気圧を記録する場合は
--above_sea_levelに海抜(m)を設定してください。
- Linuxの場合、BLEの操作に
- wosensor
- Linuxの場合、BLEの操作に
CAP_NET_ADMINが必要です。 - SwitchBot 防水温湿度計のMacアドレスを引数
--wosensorに渡してください。
- Linuxの場合、BLEの操作に
MIT
walkure