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"が使えそうです。

www.npmjs.com


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が消えました。
めでたしめでたし。