こちらは ZYYX Advent Calendar 2019 19日目の記事になります。
はじめに
うちの会社の人は、業務に関係ある・なし関係なく面白いデバイスや技術を見つけると、実際に使ってみたり、なんか作ってみたりする人が多いです。そんな雰囲気に乗っかって、私もMESHブロックで取得したデータをZabbixに渡す仕組みを作ってみました。
全体図
今回の内容の全体図になります。
家の1階と2階に温度・湿度ブロックが設置されています。(玄関ドアに動きブロックも設置していますが、今回は説明を割愛します)
MESHブロックから送られたデータはiPhoneSE(昔使ってたスマホです)に送られ、WiFiを通してIFTTT経由でGoogleスプレッドシートに記録、Googleスプレッドシートの内容をjson化したものを、クラウド上のZabbixが定期的にチェックしにいく、という流れになります。
やったこと
やったことを処理の流れに合わせて4ステップで説明します。
STEP1:MESHブロック→iPhone→IFTTT
MESHブロックで取得した温度や湿度のデータを、MESHアプリ経由で定期的にIFTTTに渡します。
MESHアプリとIFTTTの連携方法は公式サイトのこちらに記載がありますので、説明は省略します。
STEP2:IFTTT→Googleスプレッドシート
IFTTTのCreate画面にて、「If」にMESHの「Event from MESH app received」を指定します。
EventIDには、MESHアプリ側で設定した文字列と同じものを設定します。
「Then」にはGoogle Sheetsの「Update cell in spreadsheet」を指定します。
また、スプレッドシートのフォルダパス・シート名と、どのセルに、値(変数名Text)を反映させるかを設定します。(以下図)
ここまでを、1階の温度・湿度と、2階の温度・湿度の4セット作成します。
この時点でスプレッドシートはこんな感じの状態になります。
STEP3:Googleスプレッドシート→json化
Googleスプレッドシートの内容を、Zabbixから見に行けるようにjson形式にします。
やり方についてはこちらの記事を参考にしました。
jsonのURLは https://script.google.com/macros/s/なんとかかんとか/exec
のようになりました。
中身はこんなんです。
[
{
item: "1Ftemperature",
value: "13.7"
},
{
item: "1Fhumidity",
value: "58"
},
{
item: "2Ftemperature",
value: "13.2"
},
{
item: "2Fhumidity",
value: "56"
}
]
STEP4:jsonをZabbixで監視
先程作られたjsonをZabbixから監視するようにします。
Zabbix4.0以降に追加された「HTTPエージェント」を使用して、jsonの内容を取得するアイテムを1つ作成します。
更にそのアイテムを使って依存アイテムを4つ(1階の温度・湿度と、2階の温度・湿度)作成します。
1階の温度の場合はこんな感じ。
こうなりました
そんな訳で、家の1階と2階の温度・湿度のデータを取り続けたことで、Zabbix上でこんなグラフが作れるようになりました!
→1階温度:青い線、2階温度:赤い線、外気温:緑グラデ
外気温についてはOpenWeatherMapを使って、住んでるところに近い街のデータを取得しています。
OpenWeatherMapを使ったお天気情報取得についてはこちらの記事を見ていただければと。
あと、家の現在の温度・湿度が分かるマップなんかも作りました。
特にトリガーは設定していないので常にステータスは「正常」です。
さて、後はこれをどう活かすか・・・(今の所ただデータを取り続けているだけ😅)
あとがき
個人的な考えですが、何でもZabbixで管理できる!(Zabbixで管理出来ないものはない!)と思ってるので、その手始めに家の気温・湿度を管理することが出来てよかったです。
次は何をZabbixで管理しようかな〜。