全然参考にならないAutomateのflow shortcutの構文メモ

自分用メモ。TaskerのShortcutで作成された記述内容から。Ver 1.25.1では以下の内容がショートカット内に記載されていた。

 

 

content://com.llamalab.automate.provider/flows/9/statements/1#Intent;action=com.llamalab.automate.intent.action.START_FLOW;type=vnd.android.cursor.item/vnd.com.llamalab.automate.provider.flow_statement;launchFlags=0x18000000;package=com.llamalab.automate;end

 

 

分解すると、

 

  1. content://com.llamalab.automate.provider/flows/9/statements/1
  2. #Intent;
  3. action=com.llamalab.automate.intent.action.START_FLOW;
  4. type=vnd.android.cursor.item/vnd.com.llamalab.automate.provider.flow_statement;
  5. launchFlags=0x18000000;
  6. package=com.llamalab.automate;
  7. end

 

1.が各フローのスタート位置に記載されているFlow URI。この例では9の1ってフローが対象とされている。9ってのは多分、9番目に作成されたフローって意味で作成順か何かで連番。statement/1はフロー内での1番目のBeginning flowブロックて意味だと思われる。この情報はBeginning Flowブロック内にflow URIとして明示されている。

 

2.はintentの発行を意味する。

3.はintent action。このintentを受け取ることがAutomateは出来るらしい。

4.はMIME Type の記述。

5.はフラグらしいんだが、この0x18000000が何のフラグかは分からなかった。あんまり調べてはいない。

6.はintentを発行する先のパッケージ。明示的intentって奴か。

7.はintent終了を意味する。

 

 

 

何が言いたいか?

1.を変更すれば任意のAutomate flowの呼び出しが可能。やってることはBroadcast intentを発行してAutomateが受けているだけの話。

Taskerで次の記述をすれば問題なく起動できる。

 

 

Action

com.llamalab.automate.intent.action.START_FLOW

 

DATA

content://com.llamalab.automate.provider/flows/9/statements/1

 

MIME type

vnd.android.cursor.item/vnd.com.llamalab.automate.provider.flow_statement

※無くても多分動く。

 

EXTRA

launchFlags=0x18000000

※EXTRAのフラグは無くても問題ないはず。

 

PACKAGE

com.llamalab.automate

 

 

もし、flow URIを直接打ち込むのが苦痛でないならば

Ver. 1.26.0においても任意のflow shortcutを作成できる。ただし、Taskerにて記録したあとに、そのTaskをショートカット登録するという三度手間が要る。

 

とは言え、いざとなればTaskerでパッケージ化して本来ショートカット登録出来ないアプリ(Magic Gesture、あなたなことよ!)でフロー呼び出しするなんておもろいことが出来るかもしれない。

 

 

感想

そこまでするならTaskerで実装したら良くないか????

フルAndroidスマートウォッチでの基礎的なAutomateの例

意外と需要があるのかと思って。多分このくらいのフローはコミュニティー探せばもっと良いのが出てきそう。

 

それぞれのフローはそのままでは動きませぬ。必要なところに自分の親スマホBluetooth名などを書き込んでください。いちおう、それぞれに説明は付いてる。

 

 

何が何でもBluetooth PANを繋ぎにいく

維持でもBT PAN ( Personal Area Network)を繋ぎにいく。ガンガン、ループするからロギングはオフにしてな! でも一応BTがオンかどうかだけは判別する。

 

https://llamalab.com/automate/community/flows/38841

 

なお、当然ながらスマホBluetooth テザリングが有効である必要があります。

 

 

画面がオンのときだけBT PANを繋ぐ

通信し放題ではなくなるので、だいぶバッテリーへの負荷が減る。が、画面オンから通信確立まで若干のタイムラグがある。Android10機だとかなり速いが、それでも画面点灯→即Googleアシスタントとかやると、反応が鈍い。

 

https://llamalab.com/automate/community/flows/38842

 

 

スマホのBTテザリングをオンにする

何故かMacroDroidが機能充実していて確実に動作する模様。AutomateのBT Tetheringブロックはウチの環境では動かない(権限が無いとかではなく)。わたしは親スマホ起動 → BTテザリングON つーマクロだけMacrodroidにやらせている。

 

良い時計を!

逆方向WatchDroidによってBluetooth経由でスマホに通知を送る

Watchdroidを利用した簡単な逆方向の操作の仕方。賢くないですが、簡単に出来る。ご参考。頭良い人ならアプリ作ってるレベル。

 

 

逆方向WatchDroidとは

通常

  • 時計側: WantdroidAssistant
  • スマホ側: WantdroidPhone
  • 通知は親スマホ→フルAndroidスマートウォッチ

 

逆方向

  • 時計側: WatchDroidPhone
  • スマホ側: WatchDroidAssistant
  • 通知をフルAndroidスマートウォッチから親スマホに送れる。

 

 

利点など

  • Bluetoothを経由して、時計側の操作で通知を送り、その通知を受けて親スマホのマクロ動作などが出来る。
  • LTEまたはBT PANなどを利用している場合にはそちらを介して通知を送った方が賢い。
  • 逆方向にもWatchDroidをつないだ場合の消費電力増加はほぼ無い。

 

SIM経由してJoinで同様な操作をする例はこちら↓。フルAndroidスマートウォッチから親スマホにJoin経由で通知を送り、電話発信をさせています。

 


Joinを利用してフルAndroidスマウォから親スマホの電話を発信させる、その2 - diablo3cs’s diary

 

 

問題点

WatchDroidの動作は、

  1. 最初に全画面で表示した後、
  2. 通知notificationを発行して履歴に記録する

この間のインターバルは最短5秒までしか短く出来ない。すなわち、通知notificationを利用する場合は5秒は待たなくてはならない。

 

 

対策

Automateを利用してWatchDroidAssistantで全画面表示される通知から、titleとmessageを格納してトースト表示する。それだけのフロー。

 


Automate for Android ⋅ Get_Messages_via_Watchdroid_Reversal

 

ようは、このフローを参考に色々マクロを組めばフルAndroidスマートウォッチから親スマホをコントロール出来るということ。

 

 

問題点その2

Automateはどうも画面ロック中の動作が怪しく、思った通りに動作しないことが多々ある。Tasker他と組み合わせるか、Taskerで全部実装したほうが良いかも。わたしはTasker初心者なので作れませんが。どーやってTaskerで表示されてる画面のUI elementを取得するんやろ。

 

追記2021 0318

TaskerではAutoInputのプラグインを使用すれば簡単に通知されたタイトル、テキストを格納できた。Automateはスリープ時の動作が変なので、Taskerで待ち受けした方が賢い。

 

Taskerでの設定方法は、

  1. タスク→プラグイン→AutoInput→UI Query
  2. 設定→Variable Set Upで、実際の画面上のUIを拾うことが出来る。簡単。UI表示したら通知バーからacceptを選ぶ。
  3. 拾った項目から使うものを選ぶ。Watchdroidなら題名のところとか。
  4. 変数Variablesを設定する。または%aitexts()を使っても良いのかしら。
  5. 設定した変数Variablesにタイトルとかが格納される。

 

 

 

 

 

 

 

Have a nice watch!

 

ついでに画面がパカッと外れたLEMFO LEMXも解体する

経年劣化で糊が弱くなったのか、LEMXの画面が外れたので、これも解体してみました。

 

 

LEMFO LEMX

個人的に使っていて名機だなぁと思ったフルAndroidスマートウォッチは、LEMX、Kospet Primeです。私はLEMXは2018年に購入しており、1年くらいはメインで使ったと思う。ハード的にはRAMが1GBしかなく、常時90%以上を使用するなど苦しかったものの、大画面大容量バッテリーの強さを教えてくれました。

 

永らく保管していましたが画面が外れてしまい、復旧させるのも何だなぁと思い、ばらしてみました。なお、Kospet Optimusと同じ、公称IP67ですが、防水に対する造りは全然違います。かなりLEMX の方が上です。

 

 

解体写真


f:id:diablo3cs:20210308205438j:image

画面まわり、メインボードまわり、裏蓋側にバラしたところ。バッテリーは900mAh 3.42Wh、それなりに使ったのでガス発生による膨張が見られます。まぁパンパンではないので、まだ寿命は残ってるのかな。造りは裏蓋兼本体容器と画面の2分割構造で、Kospet Primeやらの画面-筒胴-裏蓋の3分割構造とは違います。

 

残念ながら、低温ポリ液晶と本体容器の間は接着剤で付けられているだけで、防水構造は有りませんでした。ここも防水だったらIP68いけたんちゃうか?

 



f:id:diablo3cs:20210308210028j:image

注目すべきは本体容器。左側にスピーカー、右側にPOGOピン接続部、右下にマイクです。12時から2時半にある灰色のものは金属板で、多分アンテナかと。一見してわかるとおり、全部樹脂で固められている。OptimusはPOGOはまんま剥き出しでした。

 


f:id:diablo3cs:20210308210559j:image

スピーカーまわり。音を発生させる磁石とコイルの裏側です。

 


f:id:diablo3cs:20210308210644j:image

外すと、コーン紙?らしきものが樹脂に固められて残りました。どうもただの紙ではなく、防水紙のようです。トゥルトゥル。

 


f:id:diablo3cs:20210308211433j:image

外からスピーカーを見たところ。BCG注射みたいにポツポツした穴が並んでいます。穴のサイズはかなり小さく、同様の構造をしているLEM8以降と比べても小さな穴です。表面張力で水の侵入を防ぐ構造だと思います。私の手持ちの中では一番穴が小さい。

 


f:id:diablo3cs:20210308211755j:image

ボタン周り。Kospetは見習ってください、ほんと。擦れる軸周りは金属パーツはめ込みです。この金属の中に、パッキン、バネ、ボタン軸が入ります。

 


f:id:diablo3cs:20210308211936j:image

ボタン、外したところ。軸先端に付いてる黒いのがパッキンです。このパッキンがどれだけ有効かは疑問が在りますが、構造自体は簡素ながら耐久性と防水性に一応気を使ったものといえると思います。Optimusとは段違い。まぁまぁコストかかってるで、これ。

 

 


f:id:diablo3cs:20210308212718j:image

見辛くてすいません。カメラカバーはOptimusと同じ構造ですが、防水の役割を果たすと思われる、周囲の黒い部分の面積がだいぶ大きい。多少は防水性高いかも?

 

 

 

感想とか

愛機だったので正直、画面外れたときは悲しかったアル。画面と本体の間に防水構造が無かったので悲観していましたが、中を見るとなかなかどうして。これでIP67なら、いちおう、信じられる。多分画面まわりから浸水するけども。

 

 

保管していたMakibes M3を解体する

ずーと使わず置いておいたMakibes M3の裏蓋が死亡していたので、解体して遊んだアル。

 

 

裏蓋破損状況

Makibes M3 = Kospet Optimus無印。公称IP67ですが、この解体記録みればIP67とは、、と思うでしょう。IPx7の防水試験は、製品のてっぺんから15cm以上高い水面の水槽に静かに置いて30分らしい。

 


f:id:diablo3cs:20210308173342j:image

裏蓋を引っ掛ける側の受けが吹っ飛んでた。この裏面のプラスチック、自然経過でクラック入るわで大概、不良品アル。なお私の手元にもう一台あるKospet Optimus Proも裏面プラスチックにクラック生じているので、なんかの設計ミスかも知れない。

 

 

解体写真


f:id:diablo3cs:20210308173819j:image

バッテリー側と本体側をばらしたところ。バッテリー周りは厳重に熱伝導シートでグルグルされてる。中身はぎっしり。

 


f:id:diablo3cs:20210308173932j:image

バッテリー、公称通り、800mAh。Kospetは基本的に正直ではある。3.04Whなので3.8V換算か。

 


f:id:diablo3cs:20210308175208j:image

バッテリー取り除いたところ。

 


f:id:diablo3cs:20210308175341j:image

スピーカー部分。スピーカー本体周りは糊で密着させられている。

 


f:id:diablo3cs:20210308175440j:image

(写真右側、棒が出てるところ)ここに細長い穴があいている。どこまて水が入るかは素人には難しい判断だが、スピーカー本体まで浸水する可能性が高いと思う。たぶん、スピーカーの周りの糊で止まる。

 




f:id:diablo3cs:20210308180728j:image

も一つの穴、マイク部分(棒で指してるところ)。完全に封がされている。マイク自体は浸水しても内部までは入らなそう。

 


f:id:diablo3cs:20210308180042j:image

裏側と、中筒の間のパッキン。これ、裏面-中筒間の止めネジ4箇所で果たしてパッキンの要求面圧が満たされているのだろうか。うーん、まぁパッキン居るだけましか。

 

 


f:id:diablo3cs:20210308181045j:image

本体側。

 


f:id:diablo3cs:20210308181130j:image

画面側とメインボードばらしたところ。

 


f:id:diablo3cs:20210308181202j:image

メインボード。熱伝導シートでガチガチ。2+16はSoCのRAM2GBとROM16GBと思われる。

 


f:id:diablo3cs:20210308181421j:image



画面側。どうも表側からはめ込んでるようなのだが、表側セラミックベゼルがかなりがっちり固定されていてばらせなかった。

 


f:id:diablo3cs:20210308181747j:image

問題のボタン周り。ボタンを押すと、軸が出てスイッチを叩く。軸は簡単にスナップリングで留められているだけ。

 


f:id:diablo3cs:20210308181908j:image

ボタン、外側から。

 


f:id:diablo3cs:20210308181931j:image

ボタンを外したところ。まぁ、小学生が設計したような造りですね。防水なんて一切考慮されていません。単にスプリングで押し返してるだけ。パッキンなんて無い。そりゃ、ボタン押したら水入るわ。で、あまりに簡素な構造なので、そりゃ押す感覚がすぐ変になるわ!と思った。おーまーえーはーあーほーかー!機械設計なめんなよ。



f:id:diablo3cs:20210308181908j:image

ボタン外した本体側。たんにバネ留めるてるだけ。絶望した。


f:id:diablo3cs:20210308182506j:image

カメラ部分のカバー外したところ。単に丸い樹脂をはめ込んで糊で止めてるだけ。うーん、絶対水が入るとは言いませんが、かなり怖い設計。日本のメーカーならたぶんしない。

 


f:id:diablo3cs:20210308182632j:image
外したカメラのカバー。この周りの黒い部分の糊付けで水を止める構造。わいなら倍は樹脂盛るかなぁ。まぁそれやるとコストかなり上がりますが。

 

 

蛇足、感想

IP67って一応、生活防水レベルですよ。本当に試験通ったんかいな。特にボタン周りは失望した。こんなんオモチャでも、もう少しマシな設計する。

 

あ、画面はドライバー出ガリガリやっても傷入らなかった。Gorillaガラスは本当みたい。

効果確認、電波の悪い場所で自動的に親スマホのwifiテザリングに切り替える


アイデア: 電波の悪い場所で自動的に親スマホのwifiテザリングに切り替える - diablo3cs’s diary

 

↑元記事。あれやこれや魔法を使って確認しました。

 

 

 

4Gの電波が弱いとどのくらいバッテリー消耗するか

Kospet Prime2の場合。

 


f:id:diablo3cs:20210307121406j:image


f:id:diablo3cs:20210307121358j:image

 

2枚目キャプチャー画面は1枚目に説明を付けたものです。オレンジ枠の部分が電波環境が悪い場合のバッテリー消耗の具合です。猛烈なバッテリードレインが生じており、Kospet Prime2の1600mAhですら10時間も保たないレベルで消耗します。この時の電波状況は、


f:id:diablo3cs:20210307121655j:image


f:id:diablo3cs:20210307121713j:image

 

このくらい。電波強度でいうと、1%台~15%以下です(この電波環境探すのに土日歩き回った。大変やった)。たまに4Gも掴みますが、ほとんど3Gになってしまい、かつ通信がほぼ成立しません。このバッテリードレインは、モバイルデータ通信をオフにしてもSIMを刺している限り、発生します。フライトモードなら回避は出来る。

 

 

で、上の記事の親スマホにHotspot起動させて接続した場合は緑枠の部分。


f:id:diablo3cs:20210307121358j:image

電波強度が40%を超える環境でのSIM運用よりはバッテリーを消耗しますが、かなりマシになっていることがわかります。

 

 

自動で4G通信とwifi Hotspotの子機を切り替える方法

一番上の記事を参照ください。4Gの電波強度が弱まると時計側から信号を送って自動で親スマホのHotspotを起動させ、デザリングに繋ぎにいくことが出来ます。

 

今回の検証、マジ疲れた。

 

 

おまけ

その後、電波強度が十分(40%超)に戻すとこうなる。


f:id:diablo3cs:20210307150115j:image

ばななーばななーばななー

顕著にSIMの電波状況が影響してるー

ばななー

Full Android Watchをジェスチャーで操作する V. 3.58くらい


Full Android Smart Watchをジェスチャーで操作する、Android10対応 - diablo3cs’s diary

 

 

↑過去記事。

 

wear OSで出来る、腕を振るだけでスクリーンを送ったり戻したりする機能に似た何かを実装する何か。Kospet Prime2やRogbid Brave Proにて、時計した腕を振るだけで通知表示をスワイプしたり、WatchDroidの履歴見たり、WatchDroid経由で電話受信時に電話に出たり(時計で通話は出来ないが自動でスマホのスピーカーONにするよ)できる。

 

実装の仕方は素人同然で頭良くないけど便利なように作った!わいの力作や! 誰も使ってくれないけれども。

 

改良したのでいちおう。

Automateで実行します。バッテリー消耗に気を使って&誤操作防止に画面オフ時は全てのモーション待機が解除されます。まぁScreen on rising(腕上げて点灯)が有効なら関係ない気もしないでもない。

 


Automate for Android ⋅ GestureControl_AndroidWatchPhone_Rev3.35n

 

詳細はDescription見てください。

 

 

改良点

Watchdroidがforegroundの場合

  • 音楽操作モードでは自動でホームに戻らないようにした。連続で音楽操作モードを扱える。
  • 音楽操作モードでは、シェイク1回で曲送り、シェイク2回で曲戻しできる。片手で時計振るだけで音楽操作出来るアル。

 

WatchDroid経由で電話受信時、及び通話中

  • シェイク1回で「電話に出る」その後自動でスマホのスピーカーON。
  • シェイク2回で「拒否」または「通話終了」。急な電話でも腕振るだけで電話出たり出なかったりできる。

 

 

蛇足

腕振るジェスチャーを確実に判別できそうなのは今のところ次の3パターン。

 

  • 腕を1回シェイクする(ひねるように振る)。
  • 腕を2回シェイクする。
  • 腕を4回くらい、いっぱいシェイクする。

 

Android7機ではこの他に、「腕を向こう側に倒して止める、その後戻す」も安定して識別出来たんですが、Android10機ではイマイチ判別出来ない。まぁ安定して3パターン操作出来れば色々出来ます。使い方はアイデア次第。まぁすんごく複雑になったので改造するとき、中身が訳わからんかも知れませんが…