ホーム » 「homebridge」タグがついた投稿

タグアーカイブ: homebridge

システム

最近の投稿

アーカイブ

カテゴリー

HomebridgeからHomeAssistantへ

Docker 上の HomeAssistant の整備もすすみ、在宅/外出の tracker も安定運用できるようになった。

Homebridge を停止

一方で、Homebridge の方は、Homebridge 2.0 が出てきたけど、自作のscriptと連動するための homebridge-cmdswich とかが、2.0 でサポート対象外となってきて、自宅で活用していたものが使えなくなった。しかし、google home からの操作は Switchbot に移行できたし、ブラウザからの操作なども HomeAssistant で可能になり、”Hey Siri” が使えなくなるくらい。Siri は使ってないし。ということで Homebridge の起動を停止とした。

気温でエアコン起動

気温が一定温度を越えたときに、エアコンで冷房を起動する処理は、nagios4 の異常温度警告で起動する shell script からエアコンを動かしていた。しかし、HomeAssistant のオートメーションを使えば、設定を UI で気軽に障れるので、移行。

Homebridge2 はまだ早い?

homebridge2.0 が正式リリース

Homebridge の最新の homebridge2.0 が正式リリースとなった様子。

早々に更新をかけたけど、Homebridge People Pro とか Homebridge Cmdswitch2 などのプラグインが対象外となったようで、更新して起動したら、プラグインが動かず、バージョンを元に戻した。

更新してしまうと、自宅サーバでは Homebridge People Pro を活用して、在宅 / 外出の判定に使っていたのが動かなくなる。HomeAssistant に移行すればいいんだけど、私,ママ,こども,洗濯機などの監視だと、オートメーションの設定がかなり煩雑になる。

当面は、Homebridge 1.11.4 のままで運用かな。

homebridgeをSSL化のトラブル

homebridge-config-ui-x の更新をかけたときに homebridge が動かなくなった。

https://….:8581 で起動していたけどページが表示できず、http://…:8581 ならページが見れる。

以前、homebridgeのSSL化を行っていたけど、Let’s encrypt の SSL の更新が行われていて、homebridge の再起動時に SSL の鍵が読めなくなったのが原因。ということで、Let’s encrypt の更新スクリプトに、以下の処理を追加

# homebridge に SSLキーのアクセス権を与え、再起動
/usr/bin/setfacl -m u:homebridge:r 証明書へのPATH/fullchain.pem
/usr/bin/setfacl -m u:homebridge:r 証明書へのPATH/privkey.pem
/usr/bin/hb-service restart

# homeassistant の再起動
/usr/bin/docker restart homeassistant > /dev/null

homeassistant を watchtower で更新

先日 DHCP の設定で、Docker 環境が DHCPREQUEST を出しているかもとの勘違いで、HomeAssistant をアンインストールしていたけど、改めて HomeAssistant を運用再開。

HomeAssistant の運用再開(HTTPSに変更)

HomeAssistant のイメージダウンロードして、設定を最初から…と思ったけど、前回インストールしてあったものが残ってて、一発で環境が復活。

でも、homeassistant の更新方法を確認すると、docker image をダウンロード, stop, remove ,新しいイメージを run させるとかの手順が出てきて面倒。Gemini に聞いたら、Watchtower を勧めてくれた。

また、HomeAssistant を https で起動するように設定を見直す。

$ sudo docker stop homeassistant
$ sudo docker rm homeassistant
$ sudo docker run -d \
    --name homeassistant \
    --privileged \
    --restart=unless-stopped \
    -v /var/lib/homeassistant:/config \
    -v 証明書へのPATH:/certs:ro \
    --network=host \
    ghcr.io/home-assistant/home-assistant:stable
$ sudo /var/lib/homeassistant/configuration.yaml # 以下を追記
http:
  ssl_certificate: /certs/fullchain.pem
  ssl_key: /certs/privkey.pem
$ sudo docker restart homeassistant

Watchtower で HomeAssistant の更新

HomeAssistant を自動更新させる Watchtower をインストールする手順は、Gemini に出てきた設定方法をそのまま実行。

$ sudo docker run -d \
  --name watchtower \
  --restart=unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --interval 86400 homeassistant

$ sudo docker ps
CONTAINER ID IMAGE                                        COMMAND                  CREATED     STATUS                         PORTS    NAMES
e94a5eea7468 containrrr/watchtower                        "/watchtower --inter…" 4 seconds ago Up 1 second (health: starting) 8080/tcp watchtower
94c7a25097d4 ghcr.io/home-assistant/home-assistant:stable "/init"                6 minutes ago Up 6 minutes                            homeassistant

でも、現状のバージョンが 2025.9 だったので、最新の 2025.12 に早々に上げたいので、確認したら、以下のように、 –run-once を指定して実行すればいいらしい。

$ sudo docker run --rm \
        -v /var/run/docker.sock:/var/run/docker.sock \
        containrrr/watchtower \
        --run-once \
        homeassistant

エラーが出たので、Gemini の協力もあり、バージョン指定で更新。

$ sudo docker run --rm \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -e DOCKER_API_VERSION=1.44 \
        containrrr/watchtower \
        --run-once \
        homeassistant

無事に、2025.12.5 に更新ができた。

んん? –run-once で更新ができるのなら、watchtower を起動させっぱなしなのは、プロセス資源がもったいない。/etc/cron.monthly で “docker run … watchtower –run-once …” を実行した方がいいじゃん。docker stop/rm watchtower して cron 管理に移行させた。

Docker管理の Portainer のインストール

Docker 絡みで Gemini にお勧めを聞いたら、Docker を Web の GUI で管理ができる Portainer をすすめられた。
ということで、おすすめ設定を実行。

https 通信を使うので、オレオレ証明書のエラー画面で継続をすると、自宅サーバのアクセスで信用できない通信が表示されるようになる。そこで自宅サーバの証明書を使うように設定を追加。(Gemini に聞くと証明書の設定方法を提案してくれる。便利。)

((( 設定データ保存用のボリューム作成 )))
$ sudo docker volume create portainer_data

((( Portainer コンテナの起動 )))
$ sudo docker run -d \
        -p 8000:8000 \ # Edge Agent通信用の HTTPポートの割り当て
        -p 9443:9443 \ # HTTPSポートの割り当て
        --name portainer \
        --restart=always \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v portainer_data:/data \
        -v 証明書へのPATH:/certs \
        portainer/portainer-ce:latest \
        --sslcert /certs/fullchain.pem \
        --sslkey  /certs/privkey.pem

Homebridge を https に変更

Dockerの https の設定がうまくできたし、Homebridge も https で使えないか確認。ただし、homebridge は user=homebridge で起動しているので、アクセス権を与えないと、秘密鍵が読めない。かといって 証明書のアクセス権をユルユルにするのも避けたいので、Geminiに設定を提案してもらうと ACL でアクセス権を与える方法を示してくれた。(Linux での ACL の使い方、参考になる。Geminiに感謝。)

((( ACL で 読み込み権限を与える )))
$ sudo setfacl -m u:homebridge:r 証明書へのPATH/fullchain.pem
$ sudo setfacl -m u:homebridge:r 証明書へのPATH/privkey.pem

((( /var/lib/homebridge/config.json )))
"platforms": [
    {                                                                                                       "name": "Config",
        "port": 8581,
        "lang": "ja",
        "theme": "purple",
        "menuMode": "default",
        "lightingMode": "light",                                                                            "sessionTimeout": 100000,
        "platform": "config",
        "ssl": {
            "cert": "証明書へのPATH/fullchain.pem",
            "key": "証明書へのPATH/privkey.pem"
        }
    },

((( homebridge 再起動 )))
$ sudo systemctl restart homebridge

ということで、homebridge, HomeAssistant, DockerのPortainer などの Web サービスを https 化することができ、ブラウザの「保護されていない通信」の表示を消すことができた。

Home Assistant のインストール

Google Home mini などでの音声操作は、Google Home に Switchbot を連携させて、使えるようになって十分に便利になったけど、調べて出てきた Home Assistant も試してみたくなった。

Docker をインストール

普通に、Ubuntu の Docker をインストールする手順にてインストール。

Docker に Home Assistant をインストール

参考にしている記事などでは、homebridge なども Docker でインストールしているけど、我が家は homebridge が既に動いているので Home Assistant だけを docker で動かせばいい。これにあわせ、docker-compose.yml を作成。Docker 内の設定ファイルが保存される /config は、/var/lib/homeassistant にマウントさせる。

((( /etc/homeassistant/docker-compose.yml )))
version: '2'
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /var/lib/homeassistant://config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
$ cd /etc/homeassistant
$ sudo docker-compose up -d
$ sudo docker ps
CONTAINER ID   IMAGE                                          COMMAND   CREATED          STATUS          PORTS     NAMES
xxxxxxxxxxxx   ghcr.io/home-assistant/home-assistant:stable   "/init"   15 minutes ago   Up 15 minutes             homeassistant

設定がうまくいったら、http://localhost:8123 を開いて、ユーザ登録などを行う。

 

設定ができた後は色々と設定して、最終的に以下のような画面となった。

homebridge-gshが有償化

自宅の homebridge の制御を google home mini から行うために homebridge-gsh を使っていた。便利に “OK,google” で便利に使っていたけど、エラーがでるようになってきた。homebridge-gsh の導入した当初のページには、「無償だけど有償登録をお願い」みたいに書いてあったけど、2025年5月から、有償サービスに移行していたようだ。

プラグインの再設定を試みたけど、エラーが出るのでよくよく見たら、Trial Expired … ってしっかり表示されていらぁ。

月額 US$2.00 or 年額 US$22.00 を PayPal or カードで支払いとな。こんだけ便利に使ってるのにケチケチ野郎は導入に悩む。Gemini に聞いてみたところ Home Assistant を導入する方法が紹介された。

でも、よくよく考えたら、メインの機器は Switchbot の配下だし、ぐだぐだ考えずに Google Home アプリで、Switchbot を連携でいいじゃん。

homebridge-people-pro + inotify 検出処理

homebridge-people-pro による、WiFi ping を使った在宅確認をしていたが、その検出状態を Linux の inotify 機能で、様々な通知を行う処理を自作運用中。

しかし、最近、自宅にいる状態なのに外出検知をすることが発生中。WiFi で ping で調べる仕組みだけど、サーバの負荷を上げないように、ping 間隔は 約1分間隔で設定していた。ping に失敗することも多いようなので、 ping 間隔を 約30 秒に変更。

homebridgeも新サーバに移行

今まで、raspberry-pi で動かしていた、homebridge を 新サーバに移行させた。

機能の中には、webとhomebridgeの連携で、機能の中継でムダな処理があったけど、一体化してすっきり。

ただ、cec-client による HDMI を使った TV,CATVSTB などのON/OFF/入力切替 については、パソコンではできないので、cec-client 処理は raspberry-pi に依存したまま。

homebridge-cmdswitch2更新とchild-bridge機能

homebridge child-bridge

homebridgeの更新の中で、child-bridge という機能が実装された様子。これによる影響なのか、Google Home でつながらない現象が発生していると思われる。homebridge-cmdswitch2 のプラグインが、child-bridge を使うように変更されている。

$ sudo ps ax | grep homebridge
22887 ?        Sl     0:21 homebridge
23934 ?        Sl     0:03 homebridge: homebridge-cmdswitch2
24010 pts/2    S+     0:00 grep homebridge

{
    "platform": "cmdSwitch2",
    "name": "cmdSwitch2",
    "switches": [
        {
            "name": "テレビ",
            --(略)--
        }
    ],
    "_bridge": {
        "username": "0E:7D:87:xx:xx:xx",
        "port": 53178
    }
}

これにより、child bridge が別の homebridge のように見えていると思われるので、Google Home 側で別デバイスとして child bridge を認識させないとダメということかな。

homebridge-cmdswitch2 の更新

ただ、cmdswitch2 だけど、プラグインの更新が必要みたい。homebridge-cmdswitch2(ver 0.2.10)は、homebridge-cmdswitch2-no-logs に移行されているようなので、こっちの方が先決かな。

homebridge-cmdswitch2-no-logs の status 監視のトラブル

homebridge-cmdswitch2 の後継プラグインの homebridge-cmdswitch2-no-logs に入れ替えたけど、各機器のON/OFF状態を cec-client でとるように設定し polling 設定をすると、頻繁に状態監視をすることになり、ほかのデバイスの on/off 監視と競合が発生する。このため、polling 設定は削除。

プラグインを更新したら、「child bridge の方がいいよ」といった説明も出てこないし、child bridge機能は見送り。

追記:homebridge-cmdswitch2 に戻す

cmdswitch2-no-logs に切り替えたけど、”OK google, テレビをつけて”と命令すると、テレビを消す動作はするものの “homebrigeに接続できません” と言われる。

しかたがないので、homebridge-cmdswitch2 に戻し、child-bridge ナシの設定とする。

homebridge-gsh で接続できず再設定

数日前から、Google Home から照明やエアコンを操作していたのが動かなくなる。

しかたがないので、Google でアプリ連携を削除、Google Home で接続を完全に削除してから、改めて homebridge-gsh を再設定となった。以前にもつながらなくなっているので、原因は不明だけど homebridge の更新などの影響だろうか。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト

メタ情報