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

タグアーカイブ: homebridge

システム

最近の投稿

アーカイブ

カテゴリー

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

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 “ホーム” では機器制御しかできない。

{CAPTION}  {CAPTION}

Google 検索

My Google   Yahoo

Microsoft

ファンサイト