はじめに
「今から帰る」と家族に連絡するのは大事だけど、毎回スマホを開いてLINEを立ち上げて、文章を打って送るのは少し面倒です。
そこで今回は、AndroidのMacroDroid と n8n、そして LINE Messaging API を組み合わせて、
スマホからワンタップで家族へ帰宅連絡を送れる仕組み を作りました。
やりたいことはとてもシンプルです。
- スマホでMacroDroidを実行する
- n8nのWebhookにPOSTする
- n8n側でトークンを確認する
- LINEに家族向けメッセージをPush送信する
最終的には、こんな通知がLINEに届きます。
けんじが今から帰ります🏠
到着目安: 20分後
送信時刻: 2026/04/19 15:30:12
到着目安を送らない場合は、以下のようなシンプル版にもできます。
けんじが今から帰ります🏠
送信時刻: 2026/04/19 15:30:12
ちょっとした自動化ですが、日常の小さな手間を減らすにはかなり便利でした。
作ったものの概要
今回作ったワークフローは、次のような構成です。
MacroDroid
↓
n8n Webhook
↓
Codeノードで入力値の整形
↓
IFノードでトークン確認
↓
HTTP RequestノードでLINE Messaging APIを実行
役割としてはこうです。
- MacroDroid
スマホ側の実行トリガー - Webhook
外部からのPOST受け口 - Codeノード
bodyの読み取り、トークン確認用データの準備、メッセージ生成 - IFノード
不正なリクエストを弾く - HTTP Requestノード
LINE Messaging APIにPush送信
この仕組みでできること
今回の構成では、最低限次の情報を送れます。
- 誰が帰るか
- 到着目安
- 送信時刻
たとえばPOSTのbodyはこんなイメージです。
{
"token": "YOUR_SECRET_TOKEN",
"name": "けんじ",
"eta": "20分後"
}
eta を省略すれば、到着目安なしのメッセージになります。
{
"token": "YOUR_SECRET_TOKEN",
"name": "けんじ"
}
n8n側の実装
1. WebhookでPOSTを受け取る
まずはWebhookノードを作成します。
設定はシンプルです。
- HTTP Method: POST
- Path: going-home
これで、たとえば以下のURLで受け取れるようになります。
今回は「GETではなくPOSTにしたい」という構成なので、
name や eta はURLクエリではなく bodyで受け取る前提 にしています。
2. Codeノードでメッセージを組み立てる
次に、Webhookで受け取ったbodyを使って、トークンチェックとメッセージ生成を行います。
今回のCodeノードは以下のような内容です。
const body = $json.body || {};
const expectedToken = 'YOUR_SECRET_TOKEN';
const providedToken = body.token || '';
const userName = body.name || '家族';
const eta = body.eta || '';
const now = new Date().toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' });
const valid = providedToken === expectedToken;
const message = eta
? `${userName}が今から帰ります🏠\n到着目安: ${eta}\n送信時刻: ${now}`
: `${userName}が今から帰ります🏠\n送信時刻: ${now}`;
return [{
valid,
lineAccessToken: 'YOUR_LINE_CHANNEL_ACCESS_TOKEN',
lineTo: 'YOUR_LINE_USER_ID',
message
}];
このノードでは、主に次のことをしています。
- bodyから
tokennameetaを取得 - token が正しいかを判定
- JSTの現在時刻を作成
- LINE送信用メッセージを完成させる
- 後続ノードで使う値をまとめて返す
3. IFノードでトークン確認
次に、Codeノードで作成した valid を使ってIFノードで判定します。
ここでは、
-
valid = trueのときだけ送信 -
valid = falseのときは送信しない
というシンプルな制御です。
これで、正しいトークンが送られたときだけLINE通知が走ります。
4. HTTP RequestノードでLINE Push APIを呼ぶ
最後に、LINE Messaging APIへPush送信します。
APIのエンドポイントはこちらです。
https://api.line.me/v2/bot/message/push
HTTP Requestノードでは以下のように設定します。
メソッド
POST
ヘッダー
{
"Content-Type": "application/json",
"Authorization": "Bearer <LINEチャネルアクセストークン>"
}
Body
{
"to": "送信先ユーザーID",
"messages": [
{
"type": "text",
"text": "送信本文"
}
]
}
n8n の式で書くと、こんな感じです。
{
"to": $json.lineTo,
"messages": [
{
"type": "text",
"text": $json.message
}
]
}
MacroDroid側の使い方イメージ
スマホ側では MacroDroid から n8n のWebhookに対して POST を送ります。
bodyの例は以下です。
{
"token": "YOUR_SECRET_TOKEN",
"name": "けんじ",
"eta": "20分後"
}
このマクロを作っておけば、たとえば次のような運用ができます。
- 駅を出たタイミングで実行
- 会社を出たタイミングで実行
- ホーム画面ショートカットからワンタップ実行
eta を固定値にしてもいいですし、実行時に入力させても便利です。
実際に使ってみて良かったこと
使ってみると、思った以上に便利でした。
特に良かったのは以下の点です。
-
毎回メッセージを打たなくていい
「今から帰る」と毎回打つのはほんの数秒ですが、毎日のことになると地味に面倒です。
ワンタップで済むだけで、かなり気が楽になります。 -
連絡漏れが減る
手動だと「あとで送ろう」と思って忘れることがありますが、
ルーチンにしてしまえば連絡漏れが起きにくくなります。 -
到着目安も一緒に伝えやすい
ただ「帰る」だけでなく、到着目安も入れられるので、相手側も動きやすいです。
さらに改善するなら
今回の仕組みはシンプルで実用的ですが、発展させる余地もあります。
- 現在地やGoogle Mapsリンクを付ける
今回は現在地は保留ですが、将来的にはかなり相性がいいです。
たとえば、
- 現在地の住所
- Google Mapsリンク
などをメッセージに含めることもできます。
まとめ
今回は、n8n × MacroDroid × LINE を使って、
「今から帰る」をワンタップで送れる自動化を作りました。
流れとしてはとてもシンプルです。
- MacroDroidでPOST
- n8n Webhookで受け取る
- Codeノードで本文作成
- IFノードでトークン確認
- LINE Messaging APIでPush送信
ちょっとした仕組みですが、
こういう 生活の小さな面倒を減らす自動化 は満足度が高いです。
