このページの内容は初代Raspberry piのRaspbian GNU/Linux 9.4で動かしました。

「Hey Siri, LED点けて」でLEDを光らせる

という記事がありましたので、真似しました。元記事はこちらです。

HomeKitは本来は、アップルと契約結んで開発ツールを入手する必要があります。 DIYな人たちを対象にしていないのです。 でも有志がHomeBridgeというツールを開発しています。これを使います。 NodeJSをインストールして、そのあとにHomeBridgeをインストールします。

NodeJSをインストールする

以下は、上記のサイトに書いてある通りです。最初のapt-getのupdate/upgradeは長いので省略しても良いかもです。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git make
curl -L git.io/nodebrew | perl - setup
export PATH=$HOME/.nodebrew/current/bin:$PATH
nodebrew install-binary stable
nodebrew alias default v6.1.0
sudo apt-get install npm

ここでインストールされた最新バージョンの場所へ移動します。上記の記事では、

cd /home/pi/.nodebrew/node/v6.2.2/

だったけど、今回インストールしたところでは、

cd /home/pi/.nodebrew/node/v10.7.0/

でした。そしてインストールされたプログラムをパスの張られている/usr/localに移動します。

sudo cp -R * /usr/local/

HomeBridgeをインストールする

sudo npm install -g homebridge

(以下で色々とnpmでインストール管理するので先ほどインストールしたんですね)

この結果、gyp WARN EACCESという警告が出ました。こちら

sudo npm install -g homebridge --unsafe-perm

これでインストールできました。 ただ、後ほどのプラグインを色々使ってみると、エラーが出て使えない場合がいくつかありました。 インストールしているモジュールが足りないようです。 Homebridgeのサイトなどをみると、以下のようなインストール方法が紹介されていました。 homebridge本体以外に色々とインストールしているようです。 やってみたら、確かに動くプラグインが増えました。

sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/local/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum
cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild

プラグインを設定する

この後、色々とプラグインを探します。冒頭のサイトでも紹介されているように、Switchをサポートして、onとoffでシェルコマンドを実行するという汎用性の高いプラグインを試してみます。ここにあります。

インストールするには以下のようにします。アンインストールするにはunintallとすれば良いです。

sudo npm install -g homebridge-cmd

プラグインは/usr/local/lib/node_modules/に置かれます。 一方、プラグインの設定ファイルはいかにあります。これを編集します。

vi /home/pi/.homebridge/

中身をこんな感じで作ります。

{
    "bridge": {
        "name": "SiioLabHomebridge",
        "username": "B8:27:EB:35:28:71",
        "port": 51826,
        "pin": "410-80-129"
    },
    
   "description": "This is an example configuration file.",
   
    "accessories": [
        {
            "accessory": "CMD",
            "name": "My Switch",
            "on_cmd": "/home/pi/.homebridge/oncmd.py",
            "off_cmd": "/home/pi/.homebridge/offcmd.py"
        }
    ]
}

この後、.homebridgeというコマンドを打つと、homebridgeサーバが起動します。うまくいけばQRコードが出るはずです。 http://is.ocha.ac.jp/~siio/gyazo/abc22cddedc81f039217da7fe75efa23.png

このQRコードもしくは番号をiPhoneのHomekitプログラムで読み込めば登録できます。

http://is.ocha.ac.jp/~siio/gyazo/bccf39e558cb2a3d6d0edfe7842fea2f.png

他のプラグインを探す

homekitには色々なサービスが定義してあって、動作や、Siriへのコマンドが決まっています。サービスの一覧は色々紹介されています。

この中から、自分の作りたいものを探すことになります。 上記で使ったSwitchはonとoffだけなので、Siriのコマンドもonにするとか、点けて、とか消して、とかです。

この他、有名なところではガレージドアがあります。ガレージを開けて、といって操作します。プラグインによって色々な作りがされていて、センサでドアの開閉を確認するものや、時間で適当に停止するものなど色々です。また、シェルコマンドを起動するもの、URLにアクセスして起動させるものなどがあります。どちらかというとURLにアクセスして動作するタイプが多いです。別のページで紹介したPythonでWebサーバを作ってコマンドを受けて動作させる仕組みのCherrypyなどを使うと良いと思います。

鍵関係のコマンドも使えます。開けて、閉めて、というような発話で、コントロールできます。 使えそうだったプラグインをいくつか列挙しておきます。

config.jsonの例を見ると、なんとなくできることがわかります。また、

がプラグインの本体ですが、このソースを見ると何をやろうとしているのか見当がつきます。必要ならば書き換えてしまえば良いです。

例えば、homebridge-doorlockなどは、「安全のためにプログラムから解錠できないようにしてある」というコメントで、解錠コマンドをif文で外してありました。最初は、どうして解錠コマンドが出ないのか、不思議でした。この部分をコメントアウトしたら解錠できるようになりました。

プラグインに応答するサーバを作る

実際に鍵を開ける、スイッチを入れるなどの動作を実現するには、Raspberry piのGPIOにアクセスするプログラムが必要です。 プラグインから直接GPIOにアクセスしているものもありますが、 多くのプラグインはhttpサーバ経由でGPIOを動かしていることが多いようです。 つまり、GPIOを動かすwebサーバがすでにあって、それをhttpのgetとかputで操作します。 webサーバは当然ですが同じRaspberry piにあっても良いわけです。

ということで、Cherry Pyを使って研究室ドアの電気錠を開閉するサーバを作りました。Cherry Pyの使い方は以下にあります。 How2CherryPy


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS