InfluxDB内の温度と湿度からGrafanaで不快指数を表示してみました。


はじめに

InfluxDBのQuery言語は、InfluxQLで表記します。言語仕様はこちら
SQLと似ている面がありますが、ちょっとしたフィールド間の計算の仕方で戸惑ってしまいました。分かってしまえば、全然普通の記法で良いのですが、迷った点をアップしておきます。

InfluxDBに保存してある気温と湿度

センサーから得た気温と湿度は、InfluxDBに以下の形で格納されています。コマンドプロンプトから influxコマンドで接続して確認しました。

$ influx
Connected to http://localhost:8086 version 1.8.0
InfluxDB shell version: 1.8.0
> use influx_iot01
Using database influx_iot01
> show measurements
name: measurements
name
----
bme280_101
pir_bed
table1
tof
> select * from table1 limit 5
name: table1
time                hum   temp
----                ---   ----
1590678854985666143 70.22 17.7
1590679151614186158 70.42 17.58
1590679448330920972 72.27 17.41
1590679745266150226 72.48 17.4
1590680042062531150 72.58 17.43
>

不快指数の計算式

不快指数の計算式は、Wikipediaによると、

GrafanaのQueryで入力

可視化したいパネルを選択した後、通常のQuery選択画面から、要素を選択していく方法では、今回のような計算式を含むQueryを入力できませんでしたが、「鉛筆マーク」をクリックした後で、直接 InfluxQL文法でQueryを書いてしまえば問題なくできました。

ただ、入力した後、鉛筆マークを再度クリックすると、元に戻ってしまいますので、この状態で保存する必要があります。使ったQueryは以下。

SELECT mean("temp") *0.81+ mean("hum") * 0.01 * (mean("temp") * 0.99 - 14.3) + 46.3 
FROM "table1" WHERE $timeFilter GROUP BY time(5m) fill(null)

しきい値で表示色を変える設定

Fieldのタブから、Thresholdを選択し、しきい値と色を選択すればOKです。

アラートを出す

アラートをメールに送る方法は、別途試してみます。