フロッピーディスクの残骸

フロッピーディスクを分解するのって楽しいよね

ZabbixでHueを監視してみる

4月に自宅にHueを導入してから、
生活レベルがちょっと上がったような気がします(^o^)

328.hateblo.jp

実はタイマーを設定しており

  • 寝る時間になったら照明を切る
  • 起きる時間になったら照明を入れる
  • 会社に行く時間になったら照明を切る

というのをやってます。
後はイレギュラーなものに対応するためにスマホ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

でインストールできます。

ホストの登録

ホストを登録する際にマクロを設定しておいてください。 f:id:mty328:20160612120127p:plain

{$API_KEY} = SECRETKEY
{$IPADDR} = IPアドレス

アイテムの登録

タイプを外部チェックにして下記のキーを登録します。 引数の最後の"1"は、電球の数ですので、その数の分アイテムを登録してください。

hue-light-check.sh["{$IPADDR}","{$API_KEY}","1"]

f:id:mty328:20160612120341p:plain

アイテム全体はこんな感じです。
うちは電球が3つあるので、3つ登録していて、
light-checkとbrightness-checkで計6つとping監視も入れてます。 f:id:mty328:20160612120015p:plain

グラフの作成

  • f:id:mty328:20160612120734p:plain
  • f:id:mty328:20160612120757p:plain

スクリーンへの登録

これで照明がついた時間とか何時にどのくらいの明るさになっているかをチェックできるようになりました。
クラブっぽく照明をチカチカさせてたらとんでもないグラフになりそうですね。 f:id:mty328:20160612120853p:plain

おまけ

3週間ほど前にjanogのUS Regional Meetingがあったようです。 ustreamアーカイブがあったので昨日1日かけて見てました(^o^)
結構面白かった。

来月は沖縄で開催されるようなので、
行ってきます(^o^)