MacroDroid の標準 GET リクエストアクションで ngrok express サーバーに緯度経度データを送って検証するメモ

MacroDroid の標準 GET リクエストアクションで ngrok express サーバーに緯度経度データを送って検証するメモです。

2021/02/18 時点の情報で進めます。

MacroDroid

私が使っているのは v5.8.15 のバージョンです。

MacroDroid – デバイス自動化 – Google Play のアプリ

image

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 番ポートに関連付けます。

image

ngrok の URL が発行されたら、その URL に /macrodroid?location=123,456 を追加してブラウザでアクセスしてみましょう。仮に http://abcdefghijk.ngrok.io/ の場合は、 http://abcdefghijk.ngrok.io/macrodroid?location=123,456となります。

image

/macrodroid OK と表示されれば成功です。

image

また、サーバー側のログで locationQuery や lat lon といったメッセージが出ていれば、サーバー内でも値が取得できて動作しているます。

MacroDroid の設定

つづいて、MacroDroid をインストールして起動します。

image

マクロを追加ボタンをクリック。

image

トリガーの横の + ボタンをクリックします。

image

トリガー追加画面で、日時カテゴリをクリックすると、詳細が見れます。一定時間をクリックします。

image

一定間隔の詳細設定で、10 秒を設定して OK をクリックします。

image

マクロ設定の最初の画面に戻るので、アクションの横の + ボタンをクリックします。

image

アクション追加画面で、位置カテゴリをクリックすると詳細が見れます。位置情報を共有するをクリックします。

image

共有方法を選択は、変数に代入するを選択してOKをクリックします。

image

フォーマットを選択は、緯度、経度を選択してOKをクリックします。

image

変数は新規変数を選択してOKをクリックします。

image

新しい変数は、ローカルを選択し、名前は location を入力してクリックします。

image

マクロ設定の最初の画面に戻るので、アクションに位置情報を共有が設定されていることを確認して、アクションの横の + ボタンをクリックします。

image

アクション追加画面で、アプリカテゴリをクリックすると詳細が見れます。WEB サイトを開く / HTTP GET をクリックします。

image

URLを入力の入力エリアに、ngrokのURLに /macrodroid?location=[lv=location] と、つけた文字列を入力します。仮に http://abcdefghijk.ngrok.io/ の場合は、 http://abcdefghijk.ngrok.io/macrodroid?location=[lv=location]となります。[lv=location] の部分、直前の位置情報を共有アクションで取得した位置情報がカンマ区切りで入っています。

image

入力ができたら、 HTTP GET(Web ブラウザ不使用)を選択して、OKをクリックします。

image

マクロ設定の最初の画面に戻るので、HTTP GET の設定ができていることを確認したら、右上のマクロ名を入力エリアにマクロ名を設定します。

image

最後に右下の決定ボタンをクリックして設定完了です。

image

マクロ一覧で設定されていことを確認しましょう。

image

待っていると、サーバーの方に 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]となります。
  • サーバーがちゃんと起動しているか。エラーで止まっていないか。

あたりを確認してみましょう。

image

検証し終わったら、10 秒ごとの実行のスイッチをOFFにして停止しましょう。

image

停止してから一度だけアクションを試すのも、おススメです。マクロの詳細で右上のボタンをクリックします。

image

メニューが出てくるので、アクションを試すをクリックすれば、一度だけ実行して挙動を試すことができます。

これが確認出来るとデータがどこかのサーバーに届ける初動ができたので、繰り返し送る秒数を調整したり、情報を追加してみたり、いろいろと拡張していけそうですね!