reyfox blog

reyfox tech info

CentOS grafana influxdb Linux

grafanaに外気温グラフを追加する

投稿日:2019年2月11日 更新日:

以前、USB温度計で室内の温度を測ってましたが、これに外気温も追加してみたいと思います。

以前の記事: CentOS7上でUSB温度計で温度を記録してgrafanaでグラフ化する

外気温を得るには外に温度計を設置するか、無料のAPIを利用します。

今回は、無料のAPIを利用して見たいと思います。
OpenWeatherMapというサイトを利用してAPI経由で外気温を得ます。
なお、OpenWeatherMap は地点計測のデータなのでお住いの地域とは若干異なった値が出るようです。

OpenWeatherMap に登録

まずはAPI KEYを得るため、OpenWeatherMapに登録する必要があります。

https://openweathermap.org

ユーザ名、メールアドレスとパスワードを入力するとAPI KEYがメールで送られてきます。

OpenWeatherMap のAPIを叩くシェルを書く


curl -s -L "http://api.openweathermap.org/data/2.5/weather?id=ここにCityID&APPID=ここにAPIKEY" | jq ".main.temp"

JSONでレスポンスが返ってくるため、JSONをパースする jq を入れています。
jq は yum install jq でインストール可能となっています。

cityID は OpenWeatherMap でcityを検索したときに出るページのURLになります。
tokyo なら、以下のURLとなり、1850147 がIDとなります。

https://openweathermap.org/city/1850147

得られたレスポンスは下記のとおりです。


277.1

どうやら、単位がケルビンで返ってきているようなので、この処理に手を加え、セルシウスに変換します。
変換するには、273.15を引くだけできます。
expr だと小数点が計算できないので、bc を使い計算します。
bc が入ってない場合同じく、yum install bc でインストールが可能です。


# echo 277.1 - 273.15 | bc -l
3.95

それっぽい温度が取れました。
bcのあとの-lはつけてもつけなくても良いですが、小数点計算の場合つけておくと良いらしいです。

grafana に外気温のデータを送る

ここからは cron で動作する外気温を取得しgrafanaに送るシェルとなります。
host=の部分はお使いの環境によって変更してください。


#!/bin/sh

WEATHER=`curl -s -L "http://api.openweathermap.org/data/2.5/weather?id=ここにCityID&APPID=ここにAPIKEY" | jq ".main.temp"`
TEMP=`echo "$WEATHER - 273.15" | bc -l`
# echo $TEMP
curl -s -XPOST 'http://localhost:8086/write?db=grafana&precision=s' --data-binary "outtemp,host=temp.reyfox.local,region=jp value=$TEMP"

cronに登録する

毎分実行するよう cron に登録します。

 crontab -e
* * * * * sh /root/grafana_out_temp.sh >/dev/null 2>&1

これでgrafanaにデータが毎分送られてくるようになります。

grafanaでグラフを描画する

今回は前に作った室温を得るグラフと同じグラフに描画します。

まず、室温を測っているグラフを選択し、Editを押します。

次に、Bのクエリに

default outtemp where host=temp.reyfox.local

を指定するだけで室温のグラフと一緒に外気温のグラフが出てきます。

外気温だけをゲージで表示させたい場合は grafana から Addpanel→Singlestatを選び、クエリを入力し、Optionsの部分でGaugeにチェックを入れます。

上記が室温と外気温のグラフを重ねたものとなります。

-CentOS, grafana, influxdb, Linux

執筆者:

関連記事

CentOS7でローカルIPアドレスを固定する

CentOS7をサーバとして使用していると、ローカルのIPアドレスを固定したいことがあります。セットアップ時にもIPは設定できますが、セットアップ時はDHCPでの払い出しIPでおこない、その後に変更し …

CentOS7にApacheをインストール

CentOS7はnetworkインストールで最小構成だと httpd(Apache)が入りません。しかし、yumコマンドで簡単にインストールすることが出来ます。 インストール yum install …

grafana+prometheusでサーバ監視をしグラフィカルなダッシュボードを作る

少し前までは、fluentd+elasticsearch+kibanaというダッシュボードが流行っていた気がしますが、elasticsearchはJavaで動いているため非常に多くのメモリを消費すると …

CentOS7上でiperfを使いネットワークの速度を測定

iperf というソフトを使うと、ネットワークの速度を測定できます。主にLAN内の速度(スループット)を測るために使用します。 iperf のインストール yum install epel-relea …

CentOS7上でUSB温度計で温度を記録してgrafanaでグラフ化する

AmazonでUSBで温度(室温)が図れるデバイスが売っていたのでこれをCentOS7で動いているNUCにつなげて温度をグラフ化してみたいと思います。 やりたいこと USBで温度を計測、その値をinf …