おつかれさまです。
家庭内ESXiを構築したらやりたかったことのひとつ、「Nature Remoから温度湿度を取得してグラフ化する」をやったのでメモがてら残しておきます。
「子育て中声で家電操作できると便利そうだな」と思い買いました。というのは建前で、おもちゃが欲しかっただけです。
よし、Nature Remo導入完了 pic.twitter.com/ZGAxOajVtL
— 夏目葉太(なつよ)@産休中 もうすぐ本が出ます (@infragirl755) 2021年11月26日
Nature Remo
公式でドキュメントがあります。日本語があってありがたい!
developer.nature.global
https://home.nature.global/ から入手したBearerトークンを利用します。
利用時には、Nature Remo購入時に利用登録したメールアドレスとパスワードでログインできます。
今回用に新しくAccess tokenを作成するとBearerトークンが表示されるのでメモしておきます。
後から参照できないようなので必ずメモ!!!
気温と湿度を取得する
公式ドキュメントから案内されているAPIの仕様を見てみます。
温度・湿度は/1/devicesから取得できるようです。
SwaggerでOAuth2の認証認可を通すとSwagger上でテストできるような気がしますが、使い方が分からず…💦
swagger.nature.global
しょうがないので手元のPCのWSLからcurlで取得できるかテストしてみます。
xxxTOKENxxxは各自で取得したものに置き換えてくださいね。
$ curl -sX GET "https://api.nature.global/1/devices" -H "Authorization: Bearer xxxTOKENxxx" | jq .[].newest_events.te.val 17.8
$ curl -sX GET "https://api.nature.global/1/devices" -H "Authorization: Bearer xxxTOKENxxx" | jq .[].newest_events.hu.val 46
後の工程でcurlの出力結果をそのまま利用したいので、-sオプションを付けています。
手元のiPhoneのNature Remoのアプリで今の温度と湿度を確認し、同じ値が取得できていたのでOKとします。
Zabbix
今回はZabbixエージェントのUserParameterを使って、Zabbixに飛ばします。
Zabbixに任意のメトリクスを飛ばす方法はいくつかありますが、Zabbixエージェントを使用できる場合は、UserParameterを使うと
簡単で便利だと思います。詳しくは以下のドキュメントを参照してください。
www.zabbix.com
Zabbixにアイテムを登録する
事前準備としてアイテムを登録しておきます。※今回は6.0を使用しています。Zabbixの構築は割愛します。
ホストインターフェースがlocalhostになっているのは、Zabbix Serverが動いているサーバのエージェントをそのまま利用するからです。
Zabbixエージェントが入っていて、インターネットに向かってcurlをたたける環境ならどのサーバでも問題ないです。
zabbix_agentd.confにUserParameterの設定を追加する
以下の2行を追加します。
UserParameter=アイテムキー,コマンド の順で記載します。
コマンド部分はテストで使用したcurlコマンドと全く同じです。
UserParameter=home.temp,curl -sX GET "https://api.nature.global/1/devices" -H "Authorization: Bearer xxxTOKENxxx" | jq .[].newest_events.te.val UserParameter=home.hum,curl -sX GET "https://api.nature.global/1/devices" -H "Authorization: Bearer xxxTOKENxxx" | jq .[].newest_events.hu.val
confを書き換えたのでzabbix-agentをリスタートしておきます。必要ないかも?
# systemctl restart zabbix-agent # systemctl status zabbix-agent
Zabbixのフロントエンドから値の取得をテストしてみて、取得できればOKです。
設定 > ホスト > アイテム > テスト
グラフを作ればこんなふうに。良い感じです。
今後
Zabbixはバックエンド(厳密にはZabbixの後ろにさらにpostgresqlがいるのですが…)として利用して、
監視のフロントエンドはGrafanaで構築したいなと思っているのですがGrafanaの画面作りに苦戦中です。できたらまたブログにします。