🪄

Switch Bot Color Bulbをテンキーで操作するよ

2024/03/05に公開

💭 テンキーで部屋の明かりを操作したい

SwitchBotのスマート電球はSiriなどで操作できますが、急いでいるときは言うまでもなく非常に不便です。
純正のリモートボタンも別売りであるのですが、2パターンしか操作することができません。
テンキーで操作できたらいいなと思い作りました。

構成

🛠 準備をしよう

スイッチとなるモノ

本体に割り当て保存可能なミニキー

急いでいる時に操作を素早くしたい用に。部屋の入り口付近に設置します。
ちなみにキースイッチは自由に取り外せるので、余っているルブ済みのキーに取り替えました。
かわいいね。

BUFFALO BSTK100WH

とりあえず安いので...。

サーバ

LXC (Linux Container) にしようかと思いましたが、
どうやってもUSBパススルーがうまく設定できないので、
おとなしくDebianのVMを立てることにします。割り当ては1CPUの512MBで問題ありません。

USBパススルー

VMを作成したらWebGUIからUSBパススルーの設定を行います。
当該VMハードウェア追加USBデバイスUSBポートを使用プルダウンからUSB機器を選択する

自動ログインを有効化

もしVMがシャットダウンされたら起動時に手動でログインする必要があるため
TTY1の設定をいじくります。

sudo mkdir /etc/systemd/system/getty@tty1.service.d
sudo nano /etc/systemd/system/getty@tty1.service.d/autologin.conf
/etc/systemd/system/getty@tty1.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin {user name} --noclear %I $TERM
sudo reboot

Pythonスクリプト

https://github.com/gaimo-ch/Control-SwitchBot

git cloneしてください。
必要な外部ライブラリを纏めたrequirements.txtも入ってます。

venv

python3 -m venv venv
pip install -r requirements.txt
. venv/bin/activate

上記の工程を行うと、
必要な外部ライブラリをインストールした状態の仮想環境に入ることができます。

get_data.py

実行するとトークンを求められます。
成功するとdeviceID, SceneIDを取得し、jsonで保存します。
https://github.com/gaimo-ch/Control-SwitchBot/blob/main/get_data.py

ctrl_scene.py

テンキーから入力があれば、API経由でシーンを制御します。
main関数に、お好みのキー割り当てとSceneIDを入力してください。
https://github.com/gaimo-ch/Control-SwitchBot/blob/main/ctrl_scene.py

~/.zshrc

シェルを起動したら自動でPythonスクリプトを実行するようにします。

~/.zshrc
cd Control-SwitchBot
. venv/bin/activate
python3 ctrl_scene.py

✅ 試してみよう

一旦、ログアウトしてみてください。
そうすると自動でログインされ、スクリプトを実行していると思います。
そこで割り当てたキーを入力するとBulbを制御できます。

これを応用すれば他のSwitchBot製品もテンキーから操作できるね。

🔖 参考

https://github.com/OpenWonderLabs/SwitchBotAPI

GitHubで編集を提案

Discussion