1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ESP32×MicroPython|iPhoneのIRK端末識別によるBLEを使った見守りサービスの実現

1
Last updated at Posted at 2026-04-22

ESP32とMicroPythonを使い、iPhoneのBLE信号から「IRK(Identity Resolving Key)」を特定して端末を識別する見守りサービスを実現しました
実家で暮らす一人暮らし親の在宅状況をリアルタイムで検知し、LINEと連携して通知。iPhoneランダムMACアドレスを解決し、「プライバシーに配慮した安心」を低コストなデバイスで実現する手法を解説します

image

【手順1】ESP32デバイスの設定

ESP32デバイスを準備します
手順は以下を参照ください
ESP32 Dev Board KitへのMicroPython実行環境設定手順

【手順2】iPhoneのIRKを取得

iPhoneがBLEで送信するアドレスはランダムに変更されるため、端末を特定するにはIRK(Identity Resolving Key)の取得が必要です

IRKの取得はESP32にDecoding-Random-Bluetooth-Addressを書き込んで実行する方法が確実です

この方法はnRF Connect等のBluetoothアプリをiPhoneにインストールする必要があり、手順が煩雑なのですが、アプリを使わないIRK取得方法も実現ました
手順は以下を参照ください
MicroPythonでBLEのIRKを取得する手順

【手順3】BLEによるiPhone端末の検出と位置特定

iPhoneが発信するBLEアドバタイズ信号をESP32で受信、IRK(Identity Resolving Key)を用いて解析し、端末を特定します
BLEの信号強度はRSSI(Received Signal Strength Indicator)として取得できるので、このRSSI値の変化を使って検出範囲内での端末移動を検出します
事前にIRKを取得・保存しておく必要がありますが、今回の仕組みでは、その一連のプロセスをすべて実現しています

image

BLEによるiPhone端末の検出と位置特定の動作はbtrpa-scanを使うことで確認できます

👇btrpa-scanでのIRKを使った端末検出コマンド

text
btrpa-scan --irk 0123456789ABCDEF0123456789ABCDEF

👇出力イメージ

text
Mode: DISCOVER ALL - showing every broadcasting device
Scanning: passive
GPS: connected (37.774929, -122.419418)
Timeout: 30s  |  Press Ctrl+C to stop
------------------------------------------------------------

============================================================
  DEVICE #1  -  seen 1x
============================================================
  Address      : AA:BB:CC:DD:EE:FF
  Name         : MyDevice
  RSSI         : -45 dBm
  TX Power     : -59 dBm
  Est. Distance: ~0.4 m
  Manufacturer : 0x004C -> 0215abcdef
  Best GPS     : 37.774929, -122.419418
  Timestamp    : 14:32:07
============================================================

------------------------------------------------------------
Scan complete - 30.0s elapsed
  Total detections : 142
  Unique devices   : 12
  Results written to btrpa-scan-results.json

btrpa-scanのロジックをESP32で動作するよう移植したコードは以下を参照ください
MicroPythonでiPhoneのBLEアドバタイズ信号からIRKを使って端末を特定する手順

【手順4】取得データのクラウド送信

AWS IoTを使って取得データをAWSクラウドへ送信します
手順は以下を参照ください
ESP32でのmicropythonを使ったAWS IoTへの接続

【手順5】LINE連携

LINE連携手順は以下を参照ください
AWS Lambda でLine bot を作成する

👇こんな感じで通知されるようにしました

image

運用状況

日付 状況
2026年03月29日 実家にESP32設置
2026年04月18日 LINE通知運用開始
2026年04月22日 この記事執筆
2026年04月26日 コード共有リンクを追記
2026年05月連休以降 オンラインサービスとして公開予定

👇関連記事

👇参考URL

本記事へのリンク

image

https://docs.saurus12.com/device/esp32_iPhone_detect

[keywords]
ESP32 MicroPython iPhone IRK BLE 見守り AWS

ESP32×MicroPython|iPhoneのIRK端末識別によるBLEを使った見守りサービスの実現

更新日:2026年04月26日

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?