先日製作した Raspberry Pi 3B Zabbix サーバーに RP2040(Ras Pi Pico 互換)ボードで温度、湿度、気圧を測定してデータを送って、グラフ表示をさせてみた。
RP2040(Ras Pi Pico 互換)ボードはこのようにホコリが付かないようにポリカ板でケースを作った。
センサは秋月で購入した定評のある BME280 を I2Cで接続、とりあえずはケースにいれないままでテスト。
まずはデータがきちんと収集できるか確認。 Mu Editor でシリアル接続で表示されることを確認した。
Zabbix にデータを送信する CircuitPython プログラムの記述はここを参考にした。
akkiesoft.hatenablog.jpほとんどサンプルの通りだが、Zabbix のアドレス、BME280 のデータ収集のコードの主なところこんなふう。
# Zabbix Server Address
zabbix_server = "192.168.20.112"
.
.
# Data Read
temp = bme280.temperature
hum = bme280.relative_humidity
press = bme280.pressure
#Data Send
if zabbix_server:
data = json.dumps({
"request": "sender data",
"data":[
{"host":"PanariPico","key":"bme280.temperature","value":temp},
{"host":"PanariPico","key":"bme280.humidity","value":hum},
{"host":"PanariPico","key":"bme280.pressure","value":press}
]
})
zabbix_send(zabbix_server, data)
time.sleep(30)
データを受信する Zabbi x側の設定はトラッパーアイテムで設定。
30秒ごとにデータを送信し、通信の結果を Mu Editor で表示するとこのように。
Zabbix 側で受信したデータをグラフ表示させると、
このとおり。うまく表示できた。
Zabbix の膨大な機能の一部しか使っていないし、グラフ表示などは、かなり工夫の余地ありそうだ。