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 “ホーム” では機器制御しかできない。
車に乗ったらテザリング
iPhone 12 に機種変して試したい機能だった、オートメーションを設定してみる。
車に乗ったら、車のWiFiをスマホにテザリングさせたい。しかし、Apple系以外のデバイスだと、テザリングの画面を開かないとテザリングにうまく繋がってくれない。そこで、iOSのオートメーションで、車のBluetoothと接続したら、アクションでテザリング画面を開くようにしてみた。
テザリング画面を開くには、特殊なURLスキーム(prefs:root=INTERNET_TETHERING)を使う必要があるけど、SafariのURLを開く機能だけだと不正なURLとのエラーがでて登録できない。このため、URLをセットする機能と、Safari の URL を開く機能の合わせ技が必要みたい。
今朝、実際に試してみたけど、テザリング画面は開くけど、テザリングが始まらない。たぶん、カーナビのWiFi接続側の問題。
(追記) あと、Bluetooth が自動でつながる前に、スマホのロックが解除されていないとダメなので、「車に乗ったら自動でテザリング」というのが難しい。「車に乗ったら、エンジンをかける前に、スマホロック解除」を意識しないと、テザリング開始画面が表示されない。車に乗ったら即エンジンONだからなぁ。
iPhone12 mini と HomePod mini
職場で KDDI の 5G アンテナが導入されたのもあるし、3年半での iPhone X から iPhone 12 mini への機種変 au Online Shop で発注したら、HomePod mini が並んでて、思わず一緒に購入しちゃった。
iPhone 12 への移行は、基本はすぐなんだけど、2段階認証アプリとして使っていた Saleforce のパスワードが分からない。今までは、MS365 専用で使っていた Microsoft Authenticator とペアで使っていたけど、ひとつひとつ Microsoft Authenticator に移動。仕事用のアカウント管理でも使っているので、20個ほどの移行作業で疲れた。
HomePod mini は、ひとまず設定が終わり、今まで Google Home mini でやっていたことが、スマホ無しの Siri でできるようになった。赤外線リモコンなどの制御に Raspberry-Pi と HomeBridge の操作をスマホなど関係なく使える。それに、HomePod が中継してくれるので、自宅外でも自宅内の状態もわかる。
iOS14.5で体重計が動かなくなる
iOS 14.5 で コロナによるマスクが普通になり、FaceID の対応が取れ、Apple Watch さえ持ってれば、かなり便利になった。でも、アプリがシステムのデータを触るときのルールが厳しくなったので、いろいろと影響がでてきた。
毎日使ってる、Bluetooth 連動でデータが取れる体重計も、アプリが動かなくなった。新しい別アプリが提供されていたのでそれをインストールして無事使えるようになった。ただ、ヘルスケアにデータは残っているけど、このアプリでの過去データが見れなくなった。
マスクをしてのFaceIDが不便になった対策の iOS14.5 が出たので、早々にインストール。Apple Watch と連携しての認証ですごく便利。
ただ今朝 bluetooth 連動の体重計が、システム領域へのアクセス条件が厳しくなり動かなくなった。アプリの更新もかからないので心配になったけど、別の新アプリが出てた。
homebridge-config-ui-x を入れる
Appleの家電制御のためのHomeKitと互換性のあるソフト homebridge だけど、以前より家電の赤外線リモコンで活用しているが、google home との連携もさせたくって、homebridge-gsh を入れようとしたが、nodejs のバージョンが古く、インストールに失敗していた。
Google Home Mini で家電を制御するために、iPhone に eRemote 用のアプリを入れて、制御もしているけど、テレビなどの電源ボタンがトグル動作で、ON/OFF を正しく認識しないので、操作性が悪い。homebridge では、テレビにつけた Raspberry-Pi から、cec-client を使って、電源操作や入力切替操作が行えるので、基本は homebridge ベースに切り替えたい。
インストール
今回、nodejs のリポジトリを nodejs の本家を使うように設定して、nodejs を最新の 12.x に上げる。合わせて、設定ユーザインタフェースが便利な、homebridge-config-ui-x を入れてみた。
# リポジトリを登録 $ curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - $ sudo aptitude update ; sudo aptitude safe-upgrade # Node.js のインストール $ sudo aptitude install -y nodejs $ sudo npm install -g npm # homebridge-config-ui-x のインストール $ sudo npm install -g homebridge-config-ui-x
config-ui-x を使えば、config.json の編集機能があるし、その編集も各モジュール単位で編集もできるので便利。一部のモジュールは、config.json で触る必要があって、その切り分けで手間取った。
この Web-UI では、スイッチの操作で時間のかかる処理のコマンドで、一部動きがおかしいのもあるけど、スマホ版だと問題なく動くようなので、この画面はあくまで設定用かな。
WatchOS7のx-callback-urlの検証
うーむ、WatchOS7の x-callback-url って上手く動かないのかな。
iOSであれば、ショートカット機能で x-callback-url を実行して、実行先で
header( "Location shortcuts://x-callback-url/run-shortcut?name=ショートカットの名前" ) ;
を実行すると、指定したショートカットを起動するし、
header( "Location shortcuts://x-callback-url/open" ) ;
を実行すれば、ショートカットに戻ってくれる。
かといって、「ショートカットの終了」が起動するように、別のショートカットを作っても、起動していたショートカットを終わらせることにはならないみたいだな。
でも、WatchOS7 だと、上記を実行しても、Webを開く画面を表示して何も表示されない画面のまま。いちいち「閉じる」を押さないとダメ。
ということで、Safari の URL を開く+ショートカットの終了の合わせ技にしておくのが一番無難なのか。
Watch OS 7 のWeb表示
Watch OS 7になって色々試しているけど、何気にiPhoneで起動しているショートカットをApple Watchで動かしたら、それなりに JavaScript 入っている自作ページだけど動くじゃん。
# 下に追記したけど、Webページの閲覧機能(クイックルック)をショートカットから呼出すのは避けるべきとのことであった。
家電リモコン操作が、Apple Watchで使えるぞぉ… (^_^;
コンプリケーションにショートカットを設定すれば、簡単にアプリ起動やらページ閲覧やらを起動できるので、ランチャとして使える。
問題点の追記(2020/09/30)
ショートカットを使って、LINEに固定メッセージを送る実験をしていると、メッセージが2回送られている。同じショートカットをiPhoneで動かすと1回だけ。LINEにメッセージを送るプログラム側の問題かと思ったけど、一番シンプルなページアクセスのショートカットを使ってWebサーバのログを確認したら、やっぱり2回連続してページアクセスをしている。
色々と調べていたら、「複雑なショートカットのショートカットアクションについて」を見ると、ショートカットからクイックルック機能を呼出すのは「避けるように」とのことであった。なるほど、不具合ではないのか。Web閲覧とクイックルックは別機能だな。
2回の連続アクセスだったら一方を無視させようと、flock() とかを使ってみたが、1回目のアクセスの完了を待ってから2回目のアクセスを行っているみたいで、なかなか面倒。