ホーム » 「homebridge」タグがついた投稿
タグアーカイブ: homebridge
homebridge-gsh で接続できず再設定
数日前から、Google Home から照明やエアコンを操作していたのが動かなくなる。
しかたがないので、Google でアプリ連携を削除、Google Home で接続を完全に削除してから、改めて homebridge-gsh を再設定となった。以前にもつながらなくなっているので、原因は不明だけど homebridge の更新などの影響だろうか。
homebridgeはnodejs-22でまだ不安定なのか?
node.js 22 が LTS 対応で出ているようだし、homebridge を動かしている raspberry-pi にインストールしたら、起動してくれない。仕方がないので再び node.js 20 にダウングレード。
Kindle Fire HD
ママが、電子書籍で読む機会が増えた…ということで、Kindle Fire HD を購入した。早速セットアップ。自宅ネットワークに登録し、アカウントの設定やら Netflix アカウントの登録やらを終える。
Alexa
んで、Alexa も使えるし「Alexa, 今日の天気は?」を試してる。まあ、我が家はすでに Homebridge が動いていて「Hey Siri」、「OK Google」で、温湿度確認やらTVのON/OFFやら色々なことができる状態。でも、homebridge オタ状態なので「Alexa, テレビをつけて!」もやりたくなってくる。
homebridge-alexa
ググると、当然のように「Alexa経由で家の外からRaspberry Pi(Homebridge)に指示」というページが見つかる。このページに記載されているように、(1) homebridge-alexa をインストール、(2) 中継用のクラウドのアカウント作成、(3) Kindle 側に homebridge スキルのインストールを行う。
Switchbot Plug の制御
電気毛布が必要な時期、外出時の電源を切り忘れるのを防ぐために、昨年導入していた Switchbot Plug 。
スマホの SwitchBot アプリのタイマー機能で朝に強制オフの制御していたけど、寝る時にスイッチを入れるのは、自分が不在の時だとムダだし、homebridge や cron で制御するのも面白そう。
switchbot-utility のインストール
ということで、Raspberry-Pi に、switchbot-utility をインストール。
((( 事前にSwitchbot アプリは設定済み ))) $ sudo pip3 install switchbot-utility $ cd /usr/local/lib/python3.9/dist-packages/switchbot_utility
制御するには、Switchbot アプリのトークンと秘密鍵が必要なので、アプリを起動して「プロフィール」、「設定」の画面を開いて、「アプリバージョン」の表示を 10 回連打すると、「開発者向けオプション」を表示できる。この画面を開いてトークンとクライアントシークレットをコピーし、上記の switchbot_utility のフォルダ内に、settings.json のファイル名で保存。
Python で以下のスクリプトを実行すると、switchbot-utility で扱えるデバイスの一覧 deviceList.txt が作られる。
((( settings.json ))) // Switchbot アプリで取得したトークンとシークレットを、 // switchbot_utilitiy のフォルダに settings.json で保存しておく { "token": "xxxxx....", "secret": "yyyyy...." } ((( devicelist.py ))) // Python で以下のスクリプトを実行すると、deviceList.txt が作られる。 // 以下を devicelist.py で保存し、python3 devicelist.py で実行! from switchbot_utility.switchbot import Switchbot switchbot = Switchbot() switchbot.devicelist() ((( deviceList.txt ))) 441793xxxxxx, 電気毛布, Plug, 000000000000 C5B496xxxxxx, エアコン, Bot, 000000000000
実際に、Switchbot Plug を動かすために、下記のscriptでスイッチを制御できるようにしてみた。
#!/usr/bin/python3 # -*- mode: python; coding: utf-8; tab-width: 4 ; -*- # SwitchBot をON/OFFする import sys import time import os from switchbot_utility.switchbot_plug import SwitchbotPlug # ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ # 制御するSwitchBot に合わせて、上記~~~ を書き換える。 sb_dir = '/usr/local/lib/python3.9/dist-packages/switchbot_utility' # Switch Bot Plug MAC ADDR # deviceList.txt 調べた MACアドレスを記入 sb_plug_macaddr = '441793xxxxxx' # コマンドライン引数プロセス名 script_file_name = sys.argv.pop( 0 ) # コマンドライン引数 -d <デバイスID> while len( sys.argv ) >= 2 and sys.argv[0] == '-d' : sys.argv.pop( 0 ) sb_plug_macaddr = sys.argv.pop( 0 ) # setting.jsonを読み込むため os.chdir( sb_dir ) # SwitchBot Plug に接続 sb_plug = SwitchbotPlug( sb_plug_macaddr ) # ~~~~~~~~~~~~~ この部分に制御対象用のコンストラクタを書けばいい if len( sys.argv ) == 0 : # 引数なしは、状態を表示 print( sb_plug.get_power() ) elif len( sys.argv ) == 1 : # status | on | off | toggle or turn arg = sys.argv.pop() if arg == 'status' : # exitでスイッチ状態を返す sys.exit( 0 if sb_plug.get_power() == 'on' else 1 ) elif arg == 'on' : sb_plug.turn_on() # ON elif arg == 'off' : sb_plug.turn_off() # OFF elif arg == 'toggle' or arg == 'turn' : # スイッチを反転 pw = sb_plug.get_power() if pw == 'on' : sb_plug.turn_off() elif pw == 'off' : sb_plug.turn_on()
このプログラムを、homebridge-cmdswitch2 の設定に加える。
{ "platform": "cmdSwitch2", "name": "cmdSwitch2", "switches": [ { "name": "電気毛布", "on_cmd": "/usr/local/bin/switchbot-plug.py on", "off_cmd": "/usr/local/bin/switchbot-plug.py off", "state_cmd": "/usr/local/bin/switchbot-plug.py status" } ] }
ということで、「OK Google, 電気毛布を点ける」でON、朝は起床時間にあわせたタイマーでOFF完成。
nodejs の更新方法の”更新”と hb-service
自宅で動かしている HomeBridge 、定期的に node-js の更新のために、”hb-service update-node” を実行しているけど、途中に警告メッセージがでるようになった。どうも https://deb.nodesource.com/setup_X での更新は非推奨で https://deb.nodesource.com/node_XX.x での更新に変更となったらしい。単純に警告で表示された URL にアクセスし、新しいインストール方法に従って、下記を実行する。
$ sudo apt-get update $ sudo apt-get install -y ca-certificates curl gnupg $ sudo mkdir -p /etc/apt/keyrings $ sudo curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg $ NODE_MAJOR=18 $ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \ | sudo tee /etc/apt/sources.list.d/nodesource.list $ sudo apt-get update $ sudo apt-get install nodejs -y
Node.js 18 大丈夫かな
以前、Raspberry-Pi に Node.js 18 系をインストールしたら、homebridge が動かなくなったので心配だったけど、今回は問題なく動いているみたい。
hb-service upgrade-node で更新
Raspberry-Pi で動かしている homebridge だけど、node.js の更新は curl とか使ってたけど、hb-service でインストールできるんだ。便利。
$ sudo hb-service update-node
node.js もメジャーバージョンが、16 から 18 に以降したうえで、最新の node.js 19 が発表されたみたい。
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