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

執筆者:

関連記事

Intel NUC BOXNUC7PJYHのUnix Bench

Intel NUC BOXNUC7PJYHを購入しました。 BOXNUC7PJYHのスペックは下記の通りとなります。 CPU: Intel Pentium Silver J5005 @ 1.5Ghz( …

CentOS7で内向き専用DNSサーバを立てる

内向きDNSとは、LAN内でだけドメイン名を解決できるDNSサーバを言います。今回は、LAN内だけでドメイン名を解決するDNSサーバを立て、デフォルトのDNSとして動作するように設定します。なお、内向 …

CentOS7にMySQLサーバ(mariaDB)をインストールする

CentOS7からMySQLにかわりmariaDBが採用されていますが、使い方はほぼ MySQLと同じでいけます。 インストール いつもの通り、yumで。 yum install mariadb-se …

CentOS7にDHCPサーバをインストールしルータのDHCPサーバを停止

現在販売されている市販のルータにはDHCPサーバという家庭内LANのIPを自動で払い出してくれる機能がだいたい標準で装備されています。ただ、製品によってはDHCPで払い出しているマシンに固定IPを割り …

CentOS7にSambaサーバを立ててWindows/Macとファイルを共有する

Linux上にsambaサーバを立てて、Windows及びMacとファイル共有をします。 ストレージは以前増設した3TBのHDDを用いて3TBすべてを共有してNASのように使用します。 Intel N …