Telegraf から一定間隔で計測プログラムが実行され、計測値がサーバーの InfluxDB に格納される。
(計測プログラム) → Telegraf → InfluxDB
# Node.js
make setup-node
# Telegraf
make setup-telegraf
# I2C
make setup-i2c
# 1-Wire
make enable-1-wire
# Deploy exec
make deploy
標準出力に計測値を所定のフォーマットで出力して Telegraf に取得させる。
出力例)
[{"time":"2023-11-21T12:53:55.519Z","id":"rpi4b8g-77","sensor":"BME280","temperature":24.49,"humidity":35.92742318719938,"pressure":1021.6984834213315},{"time":"2023-11-21T12:53:55.517Z","id":"rpi4b8g-44","sensor":"SHT31","temperature":25.39253833829251,"humidity":41.13679713130389},{"time":"2023-11-21T12:53:59.619Z","id":"xx-xxxxxxxxxxxxxxxxxxxxxxxx","sensor":"DS18B20","temperature":25.312},{"time":"2023-11-21T12:53:59.619Z","id":"xx-xxxxxxxxxxxx","sensor":"DS18B20","temperature":25.375},{"time":"2023-11-21T12:53:55.537Z","id":"xxxxxxxxxxxx","sensor":"SCD4X","co2":965,"temperature":29.279403686523438,"humidity":30.2978515625}]
設定例)
[agent]
interval = "30s"
flush_interval = "30s"
[[outputs.influxdb_v2]]
urls = ["http://{アドレス}:8086"]
token = "{token}"
organization = "{organization}"
bucket = "{bucket}"
[[inputs.exec]]
commands = [
"node /usr/local/bin/rpi-sensor-experiment-with-fluxdb/index.js"
]
environment = [
"DS18B20={on|off}",
"SHT31={on|off}",
"BME280={on|off}",
"SCD4X={on|off}"
]
timeout = "30s"
data_format = "json"
json_time_key = "time"
json_time_format = "2006-01-02T15:04:05Z07:00"
tag_keys = ["id", "sensor"]
SCD4X は計測に10秒程度かかるのでタイムアウトに注意すること。
変更したら Telegraf を再起動する。
sudo systemctl restart telegraf.service
I2C デバイスの確認
sudo apt install i2c-tools
i2cdetect -y 1
データシート
- BME280
- DS18B20
- SHT31
- SCD4X
Nature Remo は https://github.com/seotaro/telegraf-natureremo