
はじめに
先日、Nature Remoを購入したことを書きましたが、Nature Remoのもう一つの特徴としてアカウントの登録を行うことで非サポートながらも外部からAPIで値を取得出来る特徴があるので、環境変化の履歴の意味でも、その値をZabbixに蓄積しグラフ化することにしました。
先日の記事
確認環境
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$ zabbix_server -V
zabbix_server (Zabbix) 5.4.3
Revision 68dc2b0 21 July 2021, compilation time: Jul 22 2021 12:58:26
Copyright (C) 2021 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.
This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).
Compiled with OpenSSL 1.1.1f 31 Mar 2020
Running with OpenSSL 1.1.1f 31 Mar 2020
作業の流れ
1. Nature RemoのAPIアクセストークンの取得
以下のWebサイトにアクセスして、アカウントを登録後Nature Remoのアクセストークンを取得する。
2. 取得したいNature RemoのデバイスIDを取得する
上記で得られたのアクセストークンを使って下記curlを実行し、レスポンスから取得したNature RemoのデバイスIDをメモしておく(後で使用するため)。
$ curl -X GET "https://api.nature.global/1/devices" -H "Accept: application/json" -H "Authorization: Bearer <取得したNature Remo APIアクセストークン>" | jq
[
{
"name": "自室",
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", <- これがデバイスID
"created_at": "2021-05-28T12:26:25Z",
"updated_at": "2021-06-03T05:15:12Z",
"mac_address": "zz:yy:xx:ww:vv:uu",
"serial_number": "ssssssssssssss",
"firmware_version": "Remo/1.0.79-gbbcb0e8",
"temperature_offset": 0,
"humidity_offset": -5,
"users": [
{
"id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"nickname": "nickname",
"superuser": true
}
],
"newest_events": {
"hu": {
"val": 48,
"created_at": "2021-06-03T04:38:18Z"
},
"il": {
"val": 239,
"created_at": "2021-06-03T06:07:34Z"
},
"mo": {
"val": 1,
"created_at": "2021-06-02T04:24:12Z"
},
"te": {
"val": 27.8,
"created_at": "2021-06-03T05:34:25Z"
}
}
}
]
3. 既に先駆者が作成しているzabbixテンプレートをZabbixにインポート、ホストに登録する
参考先のものをそのまま使用させていただきました。
Zabbixに上記のテンプレートを適用したホストを登録(対象のNature Remoのこと)する際に、マクロ設定からアクセストークン、デバイスIDを登録する。これを行うことで複数のNature Remoがあっても認識させることが出来る。

4. 結果を出力
結果をAPI経由で5分毎に取得することで以下のようなグラフも出力できるようになります。

ちなみに
今回使用させていただいたテンプレートでは Zabbix HTTP Agent が使用されているのですが、これ使用してみると大変便利ですね。今まではどうしても事前にスクリプトなどでデータを分解した上でZabbix Senderなどを使ってデータを送り込んだりしていましたが、最近は何でも json
で取得できるので、その辺りの処理がしやすくなりました。
かなり昔に記事にした天気情報の分解などもあのときはスクリプトでごり押ししましたが、この辺りを使えば大分すっきりする気もします(たぶん、作り直すことはないですが)。
見やすくするため整形のための
jq
コマンドを併用しています。