MacroDroid の標準 GET リクエストアクションで ngrok express サーバーに緯度経度データを送って検証するメモです。
2021/02/18 時点の情報で進めます。
MacroDroid
私が使っているのは v5.8.15 のバージョンです。
MacroDroid – デバイス自動化 – Google Play のアプリ
MacroDroidはいろいろなタスクを自動化してくれるツールです、プログラムを書くことなく NoCode でスマホの自動化ができます。以前も MacroDroid で外部のサーバーに Android スマホ通知を HTTP GET で送る自動化をする ときに活用しています。
ngrok で GET リクエストで受け付ける express サーバーを建てる
制作するフォルダで、
- ngrok のインストールおよび準備
- npm init -y による npm の準備
は出来ている前提で進めます。
npm i express
で express をインストールして。
var express = require('express'); var app = express(); app.listen(3000); app.get('/macrodroid', function(request, response) { console.log("/macrodroid logs!"); const locationQuery = request.query.location; console.log(`locationQuery ${locationQuery}`); // カンマ区切りなので分ける const locationData = locationQuery.split(","); const lat = locationData[0]; // 1つめのデータが緯度 const lon = locationData[1]; // 2つめのデータが経度 console.log(`lat ${lat} lon ${lon}`); response.send(`/macrodroid OK lat ${lat} lon ${lon}`); }); console.log("server start!");
こちらを server.js
で保存して、
node server.js
このサーバーを 3000 番ポートで立ち上げます。
ngrok http 3000
別のターミナルで ngrok をこのサーバーの 3000 番ポートに関連付けます。
ngrok の URL が発行されたら、その URL に /macrodroid?location=123,456
を追加してブラウザでアクセスしてみましょう。仮に http://abcdefghijk.ngrok.io/
の場合は、 http://abcdefghijk.ngrok.io/macrodroid?location=123,456
となります。
/macrodroid OK と表示されれば成功です。
また、サーバー側のログで locationQuery や lat lon といったメッセージが出ていれば、サーバー内でも値が取得できて動作しているます。
MacroDroid の設定
つづいて、MacroDroid をインストールして起動します。
マクロを追加ボタンをクリック。
トリガーの横の + ボタンをクリックします。
トリガー追加画面で、日時カテゴリをクリックすると、詳細が見れます。一定時間をクリックします。
一定間隔の詳細設定で、10 秒を設定して OK をクリックします。
マクロ設定の最初の画面に戻るので、アクションの横の + ボタンをクリックします。
アクション追加画面で、位置カテゴリをクリックすると詳細が見れます。位置情報を共有するをクリックします。
共有方法を選択は、変数に代入するを選択してOKをクリックします。
フォーマットを選択は、緯度、経度を選択してOKをクリックします。
変数は新規変数を選択してOKをクリックします。
新しい変数は、ローカルを選択し、名前は location を入力してクリックします。
マクロ設定の最初の画面に戻るので、アクションに位置情報を共有が設定されていることを確認して、アクションの横の + ボタンをクリックします。
アクション追加画面で、アプリカテゴリをクリックすると詳細が見れます。WEB サイトを開く / HTTP GET をクリックします。
URLを入力の入力エリアに、ngrokのURLに /macrodroid?location=[lv=location]
と、つけた文字列を入力します。仮に http://abcdefghijk.ngrok.io/
の場合は、 http://abcdefghijk.ngrok.io/macrodroid?location=[lv=location]
となります。[lv=location]
の部分、直前の位置情報を共有アクションで取得した位置情報がカンマ区切りで入っています。
入力ができたら、 HTTP GET(Web ブラウザ不使用)を選択して、OKをクリックします。
マクロ設定の最初の画面に戻るので、HTTP GET の設定ができていることを確認したら、右上のマクロ名を入力エリアにマクロ名を設定します。
最後に右下の決定ボタンをクリックして設定完了です。
マクロ一覧で設定されていことを確認しましょう。
待っていると、サーバーの方に ngrok 経由でデータ届いてログが更新されていれば成功です!
もしうまくいかないときは、良くあるのは
- ブラウザでアクセスしてみる。
http://abcdefghijk.ngrok.io/
の場合は、http://abcdefghijk.ngrok.io/macrodroid?location=123,456
となります。
- macroDroid での GET 陸和えストの送り先である URL が合っているか確認する。
http://abcdefghijk.ngrok.io/
の場合は、http://abcdefghijk.ngrok.io/macrodroid?location=[lv=location]
となります。
- サーバーがちゃんと起動しているか。エラーで止まっていないか。
あたりを確認してみましょう。
検証し終わったら、10 秒ごとの実行のスイッチをOFFにして停止しましょう。
停止してから一度だけアクションを試すのも、おススメです。マクロの詳細で右上のボタンをクリックします。
メニューが出てくるので、アクションを試すをクリックすれば、一度だけ実行して挙動を試すことができます。
これが確認出来るとデータがどこかのサーバーに届ける初動ができたので、繰り返し送る秒数を調整したり、情報を追加してみたり、いろいろと拡張していけそうですね!