2024-12-10

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

 

 

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

 

上記記事では MacroDroid で Termux: Tasker プラグインを使い、シェルを自動で動作させました。

 

MacroDroid は買い切りで 800円ですが、Tasker だと買い切りで 380円です。

 

 

好みや使い勝手の問題もありますので一概にどちらがおすすめということはありません。

 

 

 

今回は MacroDroid よりも安価な Tasker と、Termux: Tasker プラグインで SwitchBot を自動制御するやり方です。

 

冒頭の記事の中で紹介した SW_off.sh シェルを使いますので、シェルの作り方は冒頭の記事を参照ください。

 

 

中身は SwitchBot の電源をオフにする curl コマンドになっています。

 

 

 

1.Tasker を起動してプロファイルを設定します

 

      MacroDroid のトリガーに相当します

 

      設定済みのプロファイルは下記です

      「バッテリー残量」が充電による "=> 90%" をトリガーにしています 



 

     具体的な設定は以下です

 

      ① 右下の をタップします

      ② 次の画面で「CREATE」をタップ




 
 
      ③ 次の画面で「状態」をタップ





 
      ④ 次の画面で「電源」をタップ
 






      ⑤
次の画面で「バッテリー残量」をタップ
 
 

 

      ⑥ 次の画面で

      「これ以上(From)」を 90 (%) にします

      「これに(To)」を 90 (%) にします

      これは "=> 90%" の意味になります
 
 
 
 
      左上の矢印または戻るボタンで戻ります 





2.アクションは次に示すものとなっています

 


      ・Termux: Tasker プラグインでシェルを実行

      ・1秒待機

      ・通知音を鳴らす

      ・ポップアップ表示内容は「90%まで充電完了」

 

 

      ①「新しいタスク  +」をタップします

            タスク名を「SwitchBot off」とでもします

      ② 「プラグイン」⇨「Termux: Tasker」をタップ

 


 

 

      ③ 「設定」の右の をタップ

            Executable~~ 欄に "S" を入力すると下に

            「SW_off.sh」と「SW_on.sh」が現れます

            「SW_off.sh」をタップし、右上の SDカードマークをタップ

 


 

このアクションをテストして SwitchBot の電源がオフになるのを確認しておきます。

 

 

残りのアクション「1秒待機」「通知音を鳴らす」「ポップアップ表示」は以下のように設定します。

 

 

 

3.1秒待機

      「タスク」⇨「待機 / Wait」⇨「1秒」

 

 

4.通知音を鳴らす

      「メディア」⇨「着信音を鳴らす」⇨「アラーム音」を「通知音」に変更

 

 

5.ポップアップ表示

      「アラート」⇨「ポップアップ表示 / Popup」とし、

      タイトルに "-(ハイフン)" を、文字に "充電完了" とします

 

      「タイムアウト」は最大値の "599(秒)" を設定

 

      これはポップアップメッセージがすぐに消えないようにするためです

 

      実際に表示されたポップアップメッセージはタップすると消えます

 

 

 

以上で 90% まで充電すると自動で SwitchBot の電源がオフになり充電停止となります。

 

 

 

 

 

 

 

 

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 プログラムにも対応可能です。