homebridge-httpをやめてhomebridge-http-switchプラグインに移行
Apple HomeKit(Homeアプリ)で自作のリレーを使って照明をOn/Offするために、Homebridgeというサーバーアプリケーションを利用し、HomebridgeからWebioPiを利用するために、homebridge-httpプラグインを使っていました。
gentoolinux.hatenablog.com
gentoolinux.hatenablog.com
で、サーバーのtopコマンドを表示させると、常に上部にhomebridgeがいて、CPUを4%前後使用しているようです。
ずーっとhomebridgeはこれくらいCPUリソースを消費するんだろうなぁ、と、のんきに見守っていましたが、"homebridge cpu usage"で検索してみると、プラグインによってはCPUリソースを消費することがわかりました。
その時使っていたプラグインは次の4つです
・homebridge-broadlink-rm
・homebridge-sonoff-basic-espeasy
・homebridge-http
・homebridge-http-temperature-humidity
/var/homebridgeにあるconfig.jsonからひとつづつプラグインの設定を削除し、topコマンドでCPUリソースを見ていくと、一番利用頻度が高い"homebridge-http"を削除して起動すると、topの上位に表示されなくなりました。
犯人は"homebridge-http"だ!
homebridge-httpは4年前の0.0.9のリリース以降メンテナンスされていません。しかし、一番利用頻度が高いhttpスイッチを完全に削除するわけにはいきません。
代替を探すと、"homebridge-http-switch"が使えそうです。
onとoffのURLを変えることができ、GETだけでなくPOSTメソッドにも対応。
しかも、Onのステイタス文字列も定義可能です。
なにせ、拙宅のリレーは0(Low)でON、1(High)ですので、Onのステイタスを"0"と指定しなければなりません。
まずは、インストールしてみます。
gentoo / # npm install -g homebridge-http-switch
で、/var/homebridge/config.jsonを書き換えます。
homebridge-httpのconfig.json該当部分
{ "accessory": "Http", "name": "SnowBall", "switchHandling": "realtime", "http_method": "POST", "on_url": "http://192.168.0.158:8000/GPIO/26/value/0", "off_url": "http://192.168.0.158:8000/GPIO/26/value/1", "status_url": "http://192.168.0.158:8000/GPIO/26/value", "status_on": "0", "status_off": "1", "service": "Switch", "brightnessHandling": "no", "brightness_url": "", "brightnesslvl_url": "", "sendimmediately": "", "username" : "", "password" : "" }
homebridge-http-switchのconfig.json該当部分
{ "accessory": "HTTP-SWITCH", "name": "SnowBall", "switchTyoe": "stateful", "onUrl":{ "url":"http://192.168.0.158:8000/GPIO/26/value/0", "method": "POST" }, "offUrl": { "url":"http://192.168.0.158:8000/GPIO/26/value/1", "method": "POST" }, "statusUrl":{ "url":"http://192.168.0.158:8000/GPIO/26/value", "method": "GET" }, "statusPattern": "0" }
"onUrl"、"offUrl"、"statusUrl”のそれぞれでメソッドを指定できるようです。
"statusPattern"に"statusUrl"で帰ってくるOnの時の文字列を指定します。
これでHomebridgeを再起動してみましたら、topコマンドの上位からhomebrigeが消えました。
めでたしめでたし。