DockerでHomebridgeを動かす

iffalse-true

DockerでHomebridgeを動かす

はじめに

Raspberrypi 4B 8GBのリソースが余りまくっているので、Homebridgeを動かしてSwitctBotHubMiniと連携させつつ、moOdeやVolumioも簡易操作できるようにしたい。

ざっくり説明するとHomebridgeは、HomeKitに対応していないデバイスをプラグインなどで対応化させ、スイッチなどによる操作で制御できるようにするものです。

1. Dockerインストール

curl -sSL https://get.docker.com | sh
  • 現在のユーザ(管理者)をDockerグループに追加
sudo usermod -aG docker $USER
  • docker-composeをインストールして再起動する
sudo apt -y install docker-compose
sudo reboot

2. Homebridge用のディレクトリを作り、設定ファイルを作成する

mkdir ~/homebridge
cd ~/homebridge
  • docker-compose.ymlを作成
vi docker-compose.yml
version: '2'
services:
  homebridge:
    image: oznu/homebridge:latest
    restart: always
    network_mode: host
    environment:
      - PGID=1000
      - PUID=1000
      - HOMEBRIDGE_CONFIG_UI=1
      - HOMEBRIDGE_CONFIG_UI_PORT=8581
      - TZ=Asia/Tokyo
    volumes:
      - ./homebridge:/homebridge
    logging:
      driver: json-file
      options:
        max-size: "10mb"
        max-file: "1
  • config.jsonを作成
vi homebridge/config.json
{
    "bridge": {
        "name": "Homebridge pi",
        "username": "0E:ED:B2:22:76:15",
        "port": 51826,
        "pin": "123-45-678", #8桁のpin番号、iPhoneなどから扱う番号
        "bind": [
            "eth0", #LANケーブル使用時
            "wlan0" #Wi-Fi使用時
        ]
    },
    "platforms": [
        {
            "name": "Config",
            "port": 8581,
            "platform": "config"
        },
        {
            "name": "SwitchBot",
            "credentials": {
                "token": "スイッチボット用トークン貼り付け",
                "secret": "スイッチボットシークレットコード貼り付け",
                "notice": "Keep your Token & Secret a secret!"
            },
            "_bridge": {
                "username": "0E:24:BD:FE:C1:43",
                "port": 56709
            },
            "platform": "SwitchBot"
        }
    ],
    "accessories": [
        {
            "accessory": "CMD",
            "name": "Volumio",
            "on_cmd": "curl volumio.local/api/v1/commands/?cmd=play",
            "off_cmd": "curl volumio.local/api/v1/commands/?cmd=pause",
            "_bridge": {
                "username": "0E:82:E6:B0:F4:1E",
                "port": 38019
            }
        },
        {
            "accessory": "CMD",
            "name": "moOde",
            "on_cmd": "curl http://moode.local/command/?cmd=play",
            "off_cmd": "curl http://moode.local/command/?cmd=pause",
            "_bridge": {
                "username": "0E:82:E6:B0:F4:1F",
                "port": 38020
            }
        }
    ]
}

スイッチボット用トークンなどについてはググってくださいバージョンによって徐々にやり方が変わったりしているため……。

  • Homebridge起動
docker-compose up -d

3. Homebridge画面

  • ホスト名.local:8581 でPCからアクセスする

    • うちの環境の場合moOdeをいれてホスト名をmoodeにしてあるのでhttp://moode.local:8581となる
  • 最初にユーザ名、パスワードを設定する

  • ログインし直し、プラグインを入れる

    • Homebridge SwitchBot

    • Homebridge Cmd

  • メイン画面にHomebridgeターミナルを表示させておくと、Node.jsのバージョンアップとかが簡単に行えて便利

    • hb-service update-node
      

まとめ

Homebridge

これで簡単な操作はHomebridge画面のアクセサリやiPhoneなどのホームアプリから可能になりました。

なにかおかしいと思ったら端末をリブート、プラグイン系・Node.jsのアップデートをしてリブートすると大抵は直ります。

それにしても今のテーマだと何のコードか、何のファイルかがわかりにくい……。

変えよかな。


Previous post

ラズパイで音楽