ZabbixでHueを監視してみる
4月に自宅にHueを導入してから、
生活レベルがちょっと上がったような気がします(^o^)
実はタイマーを設定しており
- 寝る時間になったら照明を切る
- 起きる時間になったら照明を入れる
- 会社に行く時間になったら照明を切る
というのをやってます。
後はイレギュラーなものに対応するためにスマホのGPSを利用して
- 家から離れると照明を切る
- 家に近づくと照明を入れる
というのもやってます。
最近、家に不在の間に誤作動が起きているという話が家族から上がってきてたので
Zabbixで監視することにしました。
Hueは、SNMPを喋ったりZabbix-Agent仕込んだりというのはできません。
かといって、Web監視では、HTTPリクエストのステータスしかチェックできないので、
Zabbixの外部チェック機能を利用する必要があります。
curl叩いて返ってきたjsonをperseする
とかそういうのを考えているなら外部チェックを利用しましょう。
外部チェック機能はZabbixのドキュメントに詳しく書いてます。
3.0のマニュアルは英語版のみですが、2.2のドキュメントを見るとやることは大きく変わってる様子もないので、
日本語が良いって人は2.2のドキュメントを見るといいかもしれません。
じゃあさっそくはじめます。
APIキーの取得
hueコントローラーのIPアドレスは192.168.0.3
とします。
コントローラーのボタンを押してからcurlを叩くとシークレットキーっぽいのが返ってきますのでそれを保存しておいてください。
$ curl -d '{"devicetype":"Zabbix"}' http://192.168.0.3/api
試しに情報を取ってみる
取れてたらOKです。
$ curl http://192.168.0.3/api/__SECRETKEY__/lights
ZabbixServerにスクリプトを登録
/usr/lib/zabbix/externalscripts
に下記の2つのスクリプトを置きます。
[root@zabbix30 externalscripts]# ls hue-brightness-check.sh hue-light-check.sh
hue-light-check.sh
照明のON,OFFの状態をチェックします。
#!/bin/sh IPADDR=$1 SECRETKEY=$2 LIGHT_NUMBER=$3 SWITCH=`curl -s http://${IPADDR}/api/${SECRETKEY}/lights/${LIGHT_NUMBER} | jq .state.on` if [ ${SWITCH} == true ]; then echo 1 else echo 0 fi
hue-brightness-check.sh
ランプの明るさをチェックします。
#!/bin/sh IPADDR=$1 SECRETKEY=$2 LIGHT_NUMBER=$3 SWITCH=`curl -s http://${IPADDR}/api/${SECRETKEY}/lights/${LIGHT_NUMBER} | jq .state.on` if [ ${SWITCH} == true ]; then curl -s http://${IPADDR}/api/${SECRETKEY}/lights/${LIGHT_NUMBER} | jq .state.bri else echo 0 fi
jsonのperseにはjq
コマンドを利用しているので、インストールしておいてください。
yum install epel-release yum install --enablerepo=epel jq
でインストールできます。
ホストの登録
ホストを登録する際にマクロを設定しておいてください。
{$API_KEY} = SECRETKEY {$IPADDR} = IPアドレス
アイテムの登録
タイプを外部チェックにして下記のキーを登録します。 引数の最後の"1"は、電球の数ですので、その数の分アイテムを登録してください。
hue-light-check.sh["{$IPADDR}","{$API_KEY}","1"]
アイテム全体はこんな感じです。
うちは電球が3つあるので、3つ登録していて、
light-checkとbrightness-checkで計6つとping監視も入れてます。
グラフの作成
スクリーンへの登録
これで照明がついた時間とか何時にどのくらいの明るさになっているかをチェックできるようになりました。
クラブっぽく照明をチカチカさせてたらとんでもないグラフになりそうですね。
おまけ
3週間ほど前にjanogのUS Regional Meetingがあったようです。
ustreamにアーカイブがあったので昨日1日かけて見てました(^o^)
結構面白かった。
来月は沖縄で開催されるようなので、
行ってきます(^o^)