2024-11-17

Android 機を、SwitchBot を使って 90% 充電で自動停止させる

 

 

Macrodroid を使います。

 

IFTTT を使わないやり方です。


当初はスクリプトで curl で叩こうとしましたが、最新バージョンの Macrodroid で叩いてもエラーになります。

 

 

termux から curl で叩くと SwitchBot の電源がオフになりますから、スクリプト自体は間違っていません(デバイスIDトークンはモザイクをかけています)。

 

実行結果はステータスコード:100 で「成功」となっている

 


turnOff 部分を turnOn とすると SwitchBot の電源がオンになります。

 

 

スクリプトに curl で叩くやり方は、Android 機種(バージョン?)によりうまくいく機種と、そうでない機種があるそうです。

 

手持ち機種は全滅でしたから、MacroDroid も怪しいかも知れません。

 

 

いずれにせよ curl で叩くやり方は諦め、直接に HTTP POST で対応します。


 

 

事前に SwitchBot のデバイスID とトークンを得ておきますが他人には漏らさないようにしてください。

 

 

 

 ▶ デバイスID の取得 


デバイスID は SwitchBot アプリから次の手段で得ます。

 

  ① ホームから Switch Plug Mini をタッチ

  ② 右上の歯車タッチし「デバイス情報」をタッチ

  ③ BLE MAC アドレス(AA:BB:CC:DD:EE:FFという形式)の
      : を全て削除して繋げたものがデバイスID です

      AABBCCDDEEFF をメモしておきます

 

 

 

 ▶ トークンの取得 

  ① SwitchBot アプリのホーム画面の「プロフィール」をタッチします

  ② [設定]⇨[基本データ]と進み「アプリバージョン」を連打します

      「開発者向けオプション」が出てきます
 

  ③「開発者向けオプション」をタッチすると、トークン情報が出ます

     右のコピーマークをタッチしてコピーしておきます(トークンのコピー)

 

 

 

 ▶ Macrdroid の設定 

 

完成形は次です。

 

充電が 90%(80% でも 100% でも自由に決められます)に達したら SwitchBot の電源を切断し「充電が完了した」というダイヤログを、通知音を鳴らして表示します。

 

モザイク部分はデバイスID です


 

以下のように設定します。

 

  ① トリガーの設定

      [バッテリー/電源]の中の[バッテリー残量の変化]をタッチします

      [オプション]は[指定残量への増加/減少時]を選択して[OK]します

      [バッテリー残量トリガー]は[〜まで増加]を選択し、スライダーで任意の数値まで
      ずらします

         (例えば 80% とか 90% など)

      [OK]をタッチしてトリガー設定は完了です

 

 

  ② アクションの設定 

      [Web 操作]の中の[HTTPリクエスト]を選びます

 

      (1)[設定]タブの[リクエストメソッド]を[POST]にします

      [URL を入力]欄に[https://api.switch-bot.com/v1.0/devices/<デバイスID>/commands]を入力します

      その他の設定項目は次のようにします

      ・[完了するまで待機]をチェック

      ・[タイムアウト]は 30 を設定(秒)

      ・[HTTPレスポンスを保存しない]をチェック

      これら以外は設定不要です

 

      (2)[クエリーパラメーター]タブに移り[パラメーター名]に[Content-Type: application/json; charset=utf8]を設定

           [値]には 1 を設定し[OK]します

 

      (3)[コンテントボディ]タブに移り[コンテントタイプ(MIMEタイプ)]は[application/json]を選びます

          [コンテントボディ]に[{"command": "turnOff", "parameter": "default", "commandType": "command"}]を入力し[ヘッダーパラメーター]タブに移ります

 

      (4)[パラメータ名]に[Authorization]を入力し、
          [値]に[Bearer <トークン>]を入力・コピーしておいたトークンをペーストします

 

      (5)[右上のマークをタッチして反映させます

 

      (6)[待機1秒]の設定

          [アクション]を ➕️ して

          [マクロ]⇨[次のアクション実行前に待機]をタッチし[1秒]を設定


      (7)[ダイヤログを表示]の設定

           [アクション]を ➕️ して

           [通知]⇨[ダイヤログを表示]をタッチします

           [タイトル]に[充電]を、[ダイヤログのテキストを入力]に
           [が完了した]を設定し[OK]で反映

 


以上です。

 

 

アクションをテストして SwitchBot がオフになり、通知音が鳴り、次のようなダイヤログが表示されるのを確認してください。

 


 

 

SwitchBot がオフにならないときは HTTP POST の内容を間違っていますので、確認ください。  

 

      

Android 向けは UMIDIGI S5 Pro および、TECLAST M40 AIr タブレットで動作させており、90% 充電で自動的に充電オフしています。

 

メインスマホの OPPO Reno11 A は充電 80% で自動停止する機能(いわゆる「いたわり充電」)がありますので、ここで紹介したやり方は不要です。

 

 

 

 

 

 

 

 

 

0 件のコメント: