ホーム » 「homebridge」タグがついた投稿 (ページ 2)
タグアーカイブ: homebridge
homebridgeをnodejs-18.xに更新したら動かず
nodejs の最新の 18.x が出ているようなので、Raspberry-Pi で動かしている homebridge でも適用しようと試す。
しかしながら、homebridge , homebridge-ui-x も動いてはいるけど、アクセサリ画面が表示できなくなってしまった。いろいろと更新を試したが復帰しない(すでに自宅内は google home 経由で色々と活用しているので復帰しないとすごく不便)ので、元に戻す。
nodejs をダウングレードして、nodejs-18.x に合わせて更新してしまった /usr/lib/node_modules/* が悪さする可能性も高いので、バックアップから、node_modules ディレクトリを元に戻すなど、ひと手間かかったけど、無事に設定が元通り。
はぁ、他の人の人柱の情報が出そろってからにすりゃ良かった。(x_x;;
M5 Atom Lite を購入
先日購入した、ドアモニタにはちょっとした連携機能があるので、それらを活用するネタにならないかということで、M5 Atom Lite を購入してみた。
小さな CPU のわりに、WiFi や Bluetooth を使うことができて、若干のデジタル・アナログ入出力端子もついてる。卒研のネタで使ってもらう練習も兼ねて、ちょっと遊んでみよう。
UIFlow を書き込む
M5Burner で ターゲットの ATOM(Lite)を選んで、シリアルポートを確認し COM5 などの値を設定。後は書き込む。
設定で、BootMenu を True にしておくと、電源を入れたり/Reset した時に、中央ボタンを押すと、緑・青・黄・紫の LED 表示が 1 秒周期ぐらいで変化するようになる。この時の離すタイミングで、以下の状態に変化
- 緑 – Internet Mode (UIFlow のWebサイトでプログラムを書き込める)
- 青 – USB Mode (USB Serial 経由でプログラムを書き込める) – UIFlow-Desktop-IDE
- 黄 – WiFi 設定モード
- 紫 – App Mode (書き込まれているアプリを実行)
A端子入力でWeb APIを起動
新しく購入したドアホンには、来客時の呼出しに合わせA端子入力を Short できるらしいので、Homebridge を連動させてみたいので、こんなプログラムを書いてみた。Web API といっても、今回は実験なので自宅サーバの特定 URL を読み出すだけ。
raspberry-pi のディスク容量増
自宅内の色々な処理(温湿度モニタリング, 家電リモコン制御, homebridge)をさせている、Raspberry-Pi のディスク容量(8GB) の容量が不足してきた。大した処理はしていないし、不要なパッケージは消していたけど、homebridge などを使っていたりで、ギリギリになってきた。
Raspberry Pi の SDD交換&拡張
しかたがないので、32GB SDD を買ってきて、イメージファイルでコピーを行う。
((( 元のraspberry-piのイメージ吸い出し ))) $ sudo dd bs=4M if=/dev/sdd of=~/rpi.img ((( 新しいSDDにイメージを書き戻し ))) $ sudo dd bs=4M if=~/rpi.img of=/dev/sdd ((( 新しいSDDでraspberry-piを起動し ))) $ sudo raspi-config --expand-rootfs
homebridge-gsh 不調が回復
最近、homebridge の機能を Google home から制御するためのプラグイン homebridge-gsh が動かない状態であった。ひとまず “Siri” 中心にしてたけど、回復。
google アシスタントで、homebridge との接続を解除して、デバイスをすべて削除した後、再度接続を行う。この時、google アシスタントのデバイスの登録画面などが随分雰囲気が変わっていたので、Google Home, アシスタントの機能が更新されて、homebrige と通信ができなくなっていたのが原因かもしれない。
Siriのシーン登録
Google Homeでhomebridge制御が動かないときがある
最近、Google home mini からRaspberry Pi の homebridge の制御で「homebridgeが見つかりません」の返答が返ってくることが増えた。
どうも、homebridge-gsh では裏で無料のクラウドサービスが使われているけど、たぶんこのクラウドの反応が悪いのかもしれない。(追記:google home の機能変更が原因?)
しかし、Home Pod mini を使い始めてるし、”Hey Siri”で頼むのに切り替えればいい。ただ、”Ok google, 行ってきます”で、テレビと部屋の照明を消す機能の、Siri での設定に悩んだ。
iOS ホームのシーンの登録
“Google Home”アプリでは、複数機能の連動ではルーティン機能を使っていたので、”Google Home” の iOS版ということで、”ショートカット機能”ばかり調べてた。でも、こういう設定は、iOS ではホームアプリのシーン機能だった。ただ、”Google Home”であれば、「いってきます」で、テレビを消した後に「天気」を喋らせたりと、機器制御以外の処理も連動できたけど、iOS “ホーム” では機器制御しかできない。
homebridge用にnode.jsの更新
家電制御用に動かしている Raspberry Pi の homebridge のために、node.js と npm の更新。
ついでに、最新の node.js を 16.3 にアップグレードしてみた。
$ sudo systemctl stop homebridge $ sudo curl -fsSL https://deb.nodesource.com/setup_16.x | bash - $ sudo systemctl stop homebridge $ sudo apt-get install -y nodejs $ sudo systemctl start homebridge $ sudo npm update $ sudo node -v 16.3.0 $ sudo npm -v 7.15.1
SwitchBot の制御が動かなくなり、プラグインを別の物に切り替え。
homebridgeのlogrotate
raspberry-pi で動かしている homebridge の LOG もそれなりに成長するので、logrotate で切り詰める。
設定したけど、うまく出力してくれていないので、postrotate 機能で、homebridge を再起動するようにする必要あり。
/var/lib/homebridge/homebridge.log { weekly rotate 10 compress delaycompress missingok notifempty create 644 homebridge homebridge postrotate /bin/systemctl restart homebridge endscript }
google home が動かなかったな…
そういえば、先日の朝とか、いつもの Google home mini に「照明つけて」とか言っても、ネットワークにつながっていないとかいって動かなかったけど、google のトラブルが原因か。
我が家では、家電制御は、Google Home mini → homebridge-gsh → homebridge だから、我が家のネットワークの問題(mydns.jpの接続トラブルで逆引き失敗することがある)で、homebridge-gsh が動かないと思っていたけど、google さんがトラブっていりゃうごかないよね。
まあ、homebridge は Home アプリで操作が普通で、”Hey Siri!” で操作できるし、記事みたいに何もできなることはないし。
homebridgeの一部が不具合
便利に使っている音声制御機能、しかし昨日から照明が消えない。google-home ではなく、元の Apple の Homeアプリで動かすと、アイコンに ! マークが付いている。ブラウザのリモコン機能は動くので、赤外線の光が届かないのかと思って気づくのが遅れた。(ブラウザ版は raspberry-pi でなく、自宅サーバで動いている)
原因は、raspberry-pi を stretch から buster に更新して、python の設定がおかしくなったみたい。
$ /usr/local/bin/broadlink bed-light power Traceback (most recent call last): File "/usr/local/etc/python-broadlink/cli/broadlink_cli", line 8, in <module> import broadlink ModuleNotFoundError: No module named 'broadlink'
しかたがないので、python-broadlink を入れ直し。default の python が 2.x 系か 3.x 系かの違いが原因のようなので、明示的に python3 系でインストール。
$ sudo install python3-dev python3-pip $ sudo pip3 install broadlink
homebridge-gsh と cec-client
homebridge-gshで、google-homeからHomeKit(homebridge)を制御
自宅で homebridge-config-ui-x で、家電制御の設定が楽になり、homebridge-gsh にて、Google Home から Apple の HomeKit の制御を呼び出せるようにしてみた。今までは赤外線リモコンベースなので、テレビのON/OFFがトグル動作で怪しかったが、HomeKit 経由だと、TVにつなげた HDMI 接続のRaspberry-Pi から HDMI 接続の他の機器に、ON/OFF を明示的に制御ができるようになる。
cec-client で 電源ON/OFF ができなくなった
無事、homebridge-gsh が動き出したのに、CATVSTB の電源が ON/OFF できない。入力切替は正しく動いているのに…
cec-client の動作状況を表示させながらうごかすと、定番の 「echo “on 1” | cec-client -s」で動かない。メッセージを見ると、対象機器がうまく選べないのが原因みたい。
CEC では、物理機器番号と論理機器番号で管理されていて、物理機器番号が決まらないのに on はできない…といったのが原因みたい。cec-client のバージョンがあがり、その辺がいいかげんなコマンドが送れないようになったようだ。
しかたがないので、CEC-O-MATIC のページにて、他の方法を試すと、以下のコマンドなら、正しく電源のON/OFFができた。
$ echo "tx 26:36" | cec-client -s # チューナーをけす Recording2 → Tuner2 standby $ echo "tx 26:44:6C" | cec-client -s # Recording2 → Tuner2 User Control Pressed Power Off $ echo "tx 26:44:6D" | cec-client -s # Recording2 → Tuner2 User Control Pressed Power On
ということで、cec-client を呼び出す処理を、上記のコマンドを使うようにして、無事 google-home から HomeKit 呼び出しに成功。
google-home に、”NHK をつける” と話しかけると、homebridge-gsh 経由で homebridgeが呼び出され、「地デジ切替と1チャンネルの赤外線信号」をだすし、”チューナーを消す”と言えば、cec-client 経由でtx 26:44:6c を送ってチューナーの電源が切れる。超便利。
(追記)
“tx 2X:44:6D” による電源ONは、HDMIの電源連動機能が動かないみたい。”on Y” だと、(TVで連動ON設定が必要だけど)チューナーの電源を入れれば、TVも連動してONになっていた。しかし、”tx 2X:44:6D”ではテレビがつかない。TV側の連動機能を知らないうちにOFFにしたのかと思ったけど、リモコンでチューナーをつければテレビ付くし。
ということで、cec-client を使って電源操作するシェルスクリプトに、TVの電源ON動作を行う機能を追加しておいた。