2024-12-07

MacroDroid + Termux: Tasker プラグインで SwitchBot を自動制御する

 

 

これまで HTTP POST や、Termux: Widget で SwitchBot を制御して、スマホの充電が 80% または 90% になったら自動で電源オフにするように対応してきました。

 

自動化は MacroDroid を使っています。

 

 

SwitchBot に挿し込んだ USB 電源アダプターの電源供給を自動で断つことにより、スマホの充電サイクルを「やさしい充電」にするためです。

 

 

Sharp や OPPO 機の中には 80% 充電状態で自動的にダイレクト給電に切り替えて「やさしい充電」にしてくれる機種がありますが、そうでない機種を同様に「やさしい充電」にしたいわけです。

 

 

 

 

 HTTP POST 方式 

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

 

マクロは下記ですが、詳細は当該記事を参照ください。

 

デバイスID はモザイクをかけています

 

curl コマンドがスクリプト実行では機能しないため、HTTP POST で代替しています。


  ※ curl が機能しないのは機種のよるか、Root 化して Android ネイティブ Linux で curl をインストールするかが必要と思われる

 

 

 

 

 Termux: Widget 方式 

MacroDroid で任意のシェルを自動実行させる方法

 

マクロは下記ですが、詳細は当該記事を参照ください。

 

[1回の繰り返し]を開始 部分はロック解除処理をしています 

 

 

ホーム画面に配置した Termux: Widget をクリックするため、いったん画面をオフ(ロック)、再度画面をオンにしロック画面を解除、然る後にホーム画面上の Widget をクリックすることで SwitchBot の電源をオフにしています。  

 

 

 

 

 Termux: Tasker プラグイン方式 

 

今回は Termux: Tasker プラグインで行うやり方で、マクロは下記です。

 

赤く囲んで示したのが Termux: Tasker プラグインを使って SW_off.sh というシェルを実行するようにした箇所です。

 


 

 

 

SW_off.sh の中身は、下図のようになっていて curl で SwitchBot の電源をオフにするコマンドが記述されています。 

 

 

このときの curl は Termux で動作していますので、Android のネイティブ Linux のそれとは異なります。

 

デバイスIDトークンはモザイクをかけています

 

 

それでは具体的なやり方を説明します。

 

事前作業:Termux を使って必要なパッケージをインストールしておきます。

 

   pkg update

   pkg upgrade

   pkg install curl  nano  vim

   termux-setup-storage



MacroDroid と Tasker の権限に[Run command in Termux environment]の許可をしておきます。

 

 

1.F-Droid の Termux: Tasker plug-in をインストールします

      「好ましくない機能」とありますが気にしません




2.Termux で、ディレクトリ ".termux" 配下に "tasker" ディレクトリを作成し、".termux" と "tasker" に実行権を与えます

 



3."tasker" の中に "SW_off.sh" ファイルを作成し、実行権を与えます

 

 

4.SW_off.sh に下記を書き込みます

      エディター(または nano、vim)を使って書き込みます

 

デバイスIDトークン は SwitchBot アプリの設定から抽出します

 

curl -X POST "https://api.switch-bot.com/v1.0/devices/<デバイスID>/commands" \
-H "Content-Type: application/json; charset=utf8" \
-H "Authorization: Bearer <トークン> " \
-d '{"command": "turnOff", "parameter": "default", "commandType": "command"}'

 

 

"turnOff" が電源オフの指示になります

"turnOn" 電源オンの指示になります

 

 

5.MacroDroid の設定をします

 

アクション:「アプリ」⇨「Tasker/Locale プラグイン」をタップし「Termux: Tasker」をタップすると「Termux イベント」が現れます

 

これをタップします

 

次の画面で「Executable ~~」欄に「S」を入力すると SW_off.sh が現れます

 


 

 "SW_off.sh" をタップします

 


 
  

右上の sozai.cman.jp からのSD カードアイコン マークをタップし、反映させます

 

次の画面になりますが、なにもせずに「OK」とします

 


 

次の画面に戻ります

 


 

 

この段階でアクションを試して SwitchBot の電源オフを確認しておきます

 

うまく電源オフになれば問題ありませんが、そうでない場合は最初から確認ください 

 

 

 

トリガー:「バッテリー残量の変化」で >= 80% とします

 

ほかのアクションを追加設定します(説明は割愛)

 

 


 

マクロのタイトルを記入し右下のチェックマークで保存します



 

 

以上でマクロの設定は完了です。

 

 

このやり方はほかのシェルやコマンド(群)を記述可能なので自由度が高く、HTTP POST 方式や Widget 方式に比して大変優れています。

 

 

さらに Python プログラムにも対応可能です。

 

 

 

 

 

 

 

0 件のコメント: