Android 機を、SwitchBot を使って 90% 充電で自動停止させる
上記の記事で「シェルスクリプトで curl を使って叩くやり方は、Android 機種(バージョン?)によりうまくいく機種と、そうでない機種がある」ということで、HTTP POST で代替しました。
Android 機種(バージョン?)により、使える Linux コマンドが制限されているので、MacroDroid のシェルスクリプトで機能するコマンドもまた限られてしまいます。
機能しない一例が curl コマンドです。
cd / ls / mv / cp などは機能します。
例えば SwitchBot の電源は、Termux を起動して次のような curl コマンドを叩けばオフになります。
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"}'
Off の部分を On とすると電源オンになります。
残念なことに、このコマンドを MacroDroid のシェルスクリプトに記述しても機能しないのです。
"/system/bin/sh: [7]: curl: inaccessible or not found" というエラーになります。
Termux では自由にパッケージをインストールできますので curl も機能させられます。
前記の curl コマンドを Termux で実行するとちゃんと SwitchBot の電源オフ・オンができますが、Android ネイティブの Linux とは異なる空間で動作しており、 MacroDroid のシェルスクリプトには指定しても意味をなしません。
Linux コマンドを制限なく、シェルスクリプトとして実行できると MacroDroid の使い方の自由度が上がります。
冒頭に紹介の記事と同じことを termux から curl を使って実行するやり方があります。
シェルスクリプトを Termux: Widget を使って Android のホーム画面にウィジェット化して貼り付けるのです。
そして貼り付けたウィジェットの名前を指定して MacroDroid の UI画面操作でクリックするのです。
Termux でのシェルスクリプトの中身は下記です。
ーーーーーーーーーー ここから ーーーーーーーーーー
#!/data/data/com.termux/files/usr/bin/bash
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"}'
ーーーーーーーーーー ここまで ーーーーーーーーーー
ホーム画面に作成したウィジェットは下図の2つです(SW_Off.sh と SW_On.sh)。
これらのウィジェットをタップすると SwitchBot の電源のオフ・オンができます。
なので MacroDroid の「UI画面操作」で[ "SW-Off" を含むテキストをクリック]と設定するとホーム画面からタップしたことと等価になります。
充電が => 90% で SwitchBot の電源をオフにして充電を停止させるマクロは下記です。
その後ホーム画面を表示して UI画面操作で[「SW_Off」を含むテキストをクリック]して SwitchBot の電源をオフにします。
「[1回の繰り返し]を開始:」の部分はロックを解除するための4桁数字の入力を自動で行っています。
冒頭で紹介の HTTP POST によるやり方の方がシンプルですが、任意のシェルスクリプトを自動実行するやり方の事例として記載しました。
任意のシェルスクリプトの自動実行は、MacroDroid 使い方の幅が拡がるのではないでしょうか。
0 件のコメント:
コメントを投稿