2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【homebridge】Siriからラズパイでエアコンを操作したい 実践編

Last updated at Posted at 2020-08-09

前回記事ではhomebridgeのインストールまで出来た。
しかしインストール直後に起動すると設定ファイルやプラグインがないことでエラーが発生していた。

まずは設定ファイルを作っていく。

homebridgeプラグインのインストール

homecridgeでコマンドラインを実行させるプラグインをインストール

$sudo npm install homebridge-cmd -g

homebridgeの設定と準備

以下の設定ファイルへ情報を入力していく
設定ファイルの場所は、homebridgeを起動したときのエラー画面から確認できる(他に場所を知る方法があるかもしれない。。)

まずは設定ファイルへ書き込む情報を取得する

$ ifconfig

これで得られた情報以下のところをメモしておく

wlan0     Link encap:イーサネット  ハードウェアアドレス b8:27:eb:ed:6b:08 
          inetアドレス:192.168.10.105 ブロードキャスト:192.168.10.255  マスク:255.255.255.0

出典:自宅IoTのため家にある電子機器をRaspberry Pi+Homebridge使ってSiriの音声認識で繋ぎまくってみた

得た情報を以下の設定ファイルへ書き込んでいく

項目 説明
username ハードウェアアドレス(MAC)アドレス
accessary 実行したいコマンド
~/.homebridge/config.json
{
    "bridge": {
        "name": "Pi",
        "username": "B8:27:EB:ED:6B:08",
        "port": 51821,
        "pin": "031-45-154"
    },

    "description": "Living Room",

    "accessories": [
       {
           "accessory": "CMD",
           "name": "エアコン",
           "on_cmd": "エアコンをオンにするコマンド",
           "off_cmd": "エアコンをオフにするコマンド"
       }
   ]
 }

また、このとき使用したコマンドはこちらの記事で使用したものと同様
このときusenameのMACアドレスは小文字表記だとエラーになる。
===============2020/08/26追記
複数登録する場合はこんな感じに

{
    "bridge": {
        省略
    },
    "accessories": [
        {
            "accessory": "CMD",
            "name": "名前",
            "on_cmd": "コマンド",
            "off_cmd": "コマンド"
        },
        {
            "accessory": "CMD",
            "name": "名前",
            "on_cmd": "コマンド",
            "off_cmd": "コマンド"
        },
        {
            "accessory": "CMD",
            "name": "名前",
            "on_cmd": "コマンド",
            "off_cmd": "コマンド"
        }
    ]
}

===============追記ここまで

viを使えば小文字から大文字への変換は楽にできる
v(小文字)でビジュアルモードに入って選択してU(大文字)を入力すれば選択した範囲は大文字になる

homebridgeを自動起動

自動起動の方法は以下の方法がある。

  • systemd
  • init.d
  • /etc/rc.local

今回は簡単だと言われている/etc/rc/localで設定していく

Screenをインストール

$ sudo apt-get install screen

/etc/rc.localを変数する

テキストエディタで/etc/rc.localを編集していく
exit 0の直前に以下を追加する

/etc/rc.local
su -c "screen -dmS homebridge homebridge" -s /bin/sh pi
exit 0

Siriと連携

この項目は8桁ののコードを入力するなり、QRコードを読み込むなり、して追加していきます。
おそらく多くのサイトで書かれているのでこの項目は省略します。

ここまででSiriからエアコンを付けることができました。
しかし今回使用したhomebridgeプラグインでは「オン」「オフ」しか命令できないので、Siriに話しかけた言葉をラズパイに入力させる方法があれば温度を変えたりとかもかんたんになると思った。
スクリーンショット 2020-08-09 17.21.42.png

S__1441809.jpg

エラー、問題が発生したとき

homebridge起動コマンドを入力するとエラーが出て起動できないとき

 Error: listen EADDRINUSE: address already in use :::51821

こんなエラーが出る。
上記ポートですでにhomebridgeが起動しているため、51821が使えないことを言っている。

$ lsof -i:51821

これでポートを使用しているプロセルが見れるので表示されているPIDをkillする

$ kill -9 [PID]

ホームアプリ上でのエラー

アクセサリで応答がない、登録していたのにある日突然応答がなくなり、
再追加しようとしても

アクセサリはすでに追加されています このアクセサリをホームに追加するには、まずリセットする必要があります。

と表示されて何もできない場合、
homebridgeサーバ(ラズパイ)側で以下のような操作をやってみると治るかもしれない。

# homebridge停止。プロセスキル、もしくは以下コマンド
$ sudo systemctl stop homebridge

# キャッシュクリア
$ cd ~/.homebridge
$ rm -rf accessories

それでもだめなら

すべてのアクセサリを設定をリセットする(最終手段)

$ rm -rf persist

参考:Homebridge】ラズパイで使える便利なコマンド&やり方まとめ

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?