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

タグアーカイブ: SwitchBot

システム

最近の投稿

アーカイブ

カテゴリー

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完成。

SwitchBot プラグを使ってみた

SwitchBot プラグを使ってみた。スマホのSwitchBot アプリで初期化を行うけど、SwitchBot-XXXX の WiFi につながるけど初期化ができない。原因が分からず四苦八苦したけど、SwitchBot のホームページで確認したら、SwichBot アプリのローカルネットワークの接続権限が Off になっていた。

ただ、Raspberry-Pi で動かしている Homebridge では対応していない様子。

SwitchBot プラグに電気毛布をつなげたので、ひとまずスマホアプリにて「ON/OFFタイマー」を設定する。

SwitchBot の電池交換

エアコンのスイッチで活躍している SwitchBot だけど、動かないので間に入っている homebridge の問題かと思ったけど、単純に電池切れ。ただ、交換するにも CR2 とか超マイナーなカメラ用電池、コンビニで買えるようなものではない。
{CAPTION}{CAPTION}

SwitchBotの導入

我が家で、新たに SwitchBot を導入し、エアコンのリモコンを操作させてみた。コンセントプラグ構造のスマートプラグを導入する方法もあるけど、エアコンは電力も大きいし、コンセントプラグの形状も違うので SwitchBot を選んだ。

まずはボタン動作の確認

うちのエアコン nocria は RFリモコンなので、赤外線信号では制御できない。仕方がないので、SwitchBotでリモコンのスイッチを直接押させる。基本的な使い方は、スマホにアプリを入れて SwitchBot を見つけて登録するだけ。スイッチを押す機能が確認できたので、エアコンのリモコンに貼り付け。貼り付けた場所が開く構造なので、押す動作で開きっぱなしになる可能性があったので、奥さんのヘアゴムで押さえる。

Homebridgeに登録しスマートスピーカで制御

homebridgeを導入してるので homebridge-switchbot-ble をインストール。スマホアプリで SwitchBot の Bluetooth の MACアドレスが確認できるので、これらの情報を登録するだけで簡単。これで、google home や Siri から「Ok google (or Hey Siri), エアコンをつける」ができるようになった。

{CAPTION}

ただし、プッシュ動作しかできないので、現在エアコンがついているのか解らないし、エアコンを消しても「自動クリーニング」状態になるので、ON-自動クリーニング-OFF の3状態。遠隔でON/OFFには使えない。(部屋の温度に応じてエアコンを自動でON/OFFはできない)

次にエアコンを買い替えるときは、素直に赤外線リモコンの機種か、最初からスマートスピーカ対応の機種だなぁ…。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト