Apple HealthデータをMQTTに同期
ヘルスデータをMQTTブローカーに公開します。
Last updated: February 5, 2026
On this page
MQTTオートメーションを使用すると、ヘルスデータを自動的にMQTTブローカーに公開できます。これは、IoTプラットフォーム、ホームオートメーションシステム、またはMQTTメッセージングをサポートする任意のサービスとの統合に最適です。
概要
MQTTオートメーションは、ヘルスデータをJSONメッセージとしてMQTTブローカー上の指定されたMQTTトピックに公開します。データは、同期頻度設定に従ってオートメーションが実行されるたびに送信されます。
使用例:
- IoTプラットフォームとの統合(Home Assistant、OpenHABなど)
- ヘルスデータをMQTTベースのダッシュボードに公開
- リアルタイムヘルスモニタリングシステム
- カスタムホームオートメーション統合
- データロギングおよび分析プラットフォーム
主な機能:
- JSON形式のみ(MQTT用に最適化)
- 認証済みおよび匿名接続をサポート
- 設定可能なトピック構造
- クライアントID管理
- オプションのユーザー名/パスワード認証
制限事項
ヘルスデータへのアクセス: iPhoneがロックされている間、アプリはヘルスデータにアクセスできません。オートメーションは、デバイスがロック解除されている期間中にのみ実行されます。これにより、データの鮮度に影響を与える可能性があります。データを最新の状態に保つための手動同期の手順を参照してください。
バックグラウンド処理: iOSはバッテリー寿命を維持するためにバックグラウンド処理を制限します。オートメーションはアプリのバックグラウンド更新に依存しており、以下の場合、すぐに実行されない可能性があります:
- アプリのバックグラウンド更新が無効になっている
- デバイスが低電力モードになっている
- デバイスが長時間非アクティブになっている
- システムリソースが制約されている
- 複数のアプリがバックグラウンド実行時間を競合している
JSON形式のみ(変更不可)
MQTTブローカーが必要(ローカルまたはクラウドベース)
前提条件
- MQTTブローカー(例: Mosquitto、HiveMQ、AWS IoT Coreなど)
- MQTTブローカーへのネットワーク接続
- ブローカーのIPアドレスまたはホスト名
- ポート番号
- オプション: ブローカーが認証を必要とする場合のユーザー名とパスワード
設定
メインナビゲーションから自動エクスポート画面に移動し、「新しいオートメーション」をタップして、オートメーションタイプとして「MQTT」を選択します。
オートメーション名
オートメーションの説明名を入力します(例: 「Home Assistant MQTT」、「クラウドMQTTブローカー」)。
通知
通知を受け取るタイミングを設定します:
- キャッシュ更新時に通知 - キャッシュされたデータが更新されたときに通知を受け取る
- 実行時に通知 - オートメーションがデータを公開するたびに通知を受け取る
ブローカー設定
IPアドレス
MQTTブローカーのIPアドレスまたはホスト名を入力します。
例:
192.168.1.100(ローカルIPアドレス)mqtt.example.com(ホスト名)broker.hivemq.com(クラウドMQTTブローカー)localhost(同じデバイスで実行している場合、iOSには推奨されません)
注: ネットワーク上のローカルブローカーにはIPアドレスを使用し、クラウドベースのブローカーにはホスト名を使用します。ブローカーがデバイスからアクセス可能であることを確認してください。
ポート
MQTTブローカーのポート番号を入力します。
注: デフォルトのポートは1883です。
トピック
ヘルスデータが公開されるMQTTトピックを入力します。これは、サブスクライバーがヘルスデータを受信するために使用するトピックです。
トピックの例:
health/datahome/health/metricsuser/health/exporthae/automation-name
トピックのベストプラクティス:
- スラッシュ(/)を使用してトピック階層を作成する
- データタイプを示す説明的な名前を使用する
- スペースや特殊文字を避ける
- 複数のオートメーションの場合はオートメーション名を含めることを検討する
注: トピック名は大文字と小文字を区別します。サブスクライバーが正確に同じトピック名を使用するようにしてください。
クライアントID
このMQTT接続の一意のクライアントIDを入力します。これにより、デバイスがMQTTブローカーに識別されます。
クライアントIDの例:
health-export-iphonehae-client-001ios-health-app
ユーザー名(オプション)
MQTTブローカー認証のユーザー名を入力します。ブローカーが認証を必要としない場合は空のままにします。
パスワード(オプション)
MQTTブローカー認証のパスワードを入力します。ブローカーが認証を必要としない場合は空のままにします。
データタイプ設定
データタイプ
エクスポートするヘルスデータのタイプを選択します:
- ヘルスメトリクス - 歩数、心拍数、睡眠、その他のヘルス測定値
- ワークアウト - 運動およびフィットネス活動
- 症状 - ヘルス症状および状態
- ECG - 心電図の読み取り値
- 心拍数通知 - 高/低心拍数イベント
- 心の状態 - 気分および精神的状態のエントリ(iOS 18.0+)
- サイクル追跡 - 月経周期および生殖健康データ
- 薬物 - 薬物ログおよび遵守(iOS 26.0+)
ヘルスメトリクス設定
ヘルスメトリクスが選択されている場合:
ヘルスメトリクスを選択 - 含める特定のメトリクスを選択します。利用可能なすべてのメトリクスを選択するか、特定のメトリクスを選択できます。
ヒント: 必要なメトリクスのみを選択すると、メッセージサイズと処理時間が削減されます。
優先ソース - 複数のソースが同じメトリクスを提供する場合に、どのデータソースに優先順位を付けるかを設定します。
ワークアウト設定
ワークアウトが選択されている場合:
ルートデータを含める - 位置データがあるワークアウトのルートを含めるにはオンにします。
ワークアウトメトリクスを含める - ワークアウト中に収集されたヘルスメトリクス(心拍数、カロリーなど)を含めるにはオンにします。
時間グループ化(ワークアウトメトリクス) - エクスポートバージョン2を使用し、ワークアウトメトリクスを含めるが有効な場合:
- 分 - ワークアウトメトリクスを分ごとにグループ化
- 秒 - ワークアウトメトリクスを秒ごとにグループ化
エクスポート設定
エクスポート形式
注: MQTTオートメーションはJSON形式のみをサポートします。この設定は変更できず、自動的にJSONに設定されます。
エクスポートバージョン
ワークアウトデータのエクスポートバージョンを選択します:
- バージョン1 - レガシー形式
- バージョン2 - 強化されたワークアウトデータを含む現在の形式
注: エクスポートバージョンは、ワークアウトをエクスポートしている場合、主にワークアウトデータ構造に影響します。
日付範囲
データをエクスポートするタイミングを選択します:
- デフォルト - 前日の完全なデータと現在の日時までのデータを同期
- 最後の同期以降 - 各同期で、最後にエクスポートが実行された時点から現在の日時までのすべてのデータをエクスポート
- 今日 - 現在の日付の現在時刻までのすべてのデータを同期
- 昨日 - 前日の完全なすべてのデータを同期
- 過去7日間 - 過去7日間の完全なデータを同期
データを要約
ヘルスメトリクスデータタイプでJSON形式を使用する場合、データを要約をオンまたはオフにします。
- オン - 集約されたデータ要約を提供(デフォルト)
- オフ - 可能な限り非集約データを提供し、個々のデータポイントを表示
時間グループ化
データを要約が有効な場合、データをどのように集約するかを選択します。
データを要約
ヘルスメトリクスのデータを要約をオンまたはオフにします。
- オン - 集約されたデータ要約を提供(デフォルト)
- オフ - 可能な限り非集約データを提供
注: この設定はヘルスメトリクスデータタイプにのみ適用されます。
同期頻度
オートメーションがMQTTにデータを公開する頻度を設定します:
数値と間隔を選択します。
テストと検証
手動テスト
- オートメーション設定画面で「手動エクスポート」をタップ
- 日付範囲を選択
- 「エクスポート」をタップしてメッセージを公開
- MQTTクライアントを使用してトピックにサブスクライブし、メッセージが受信されたことを確認
MQTTクライアントの使用
メッセージが公開されていることを確認するには:
- MQTTクライアントを設定
- 同じ認証情報を使用してMQTTブローカーに接続
- トピックにサブスクライブ
- アプリから手動エクスポートをトリガー
- メッセージがMQTTクライアントに表示されることを確認
アクティビティログの表示
- オートメーション設定画面で「アクティビティログを表示」をタップ
- 最近のオートメーション実行を確認
- 接続エラーまたは公開エラーを確認
- 公開タイムスタンプを確認
メッセージ形式
MQTTメッセージはJSONとして公開されます。メッセージペイロードは標準エクスポートJSON形式に従います:
{
"data": {
"metrics": [...],
"workouts": [...],
...
}
}
メッセージは以下で公開されます:
- トピック: オートメーションで設定されたとおり
- QoS: 最大1回の配信
- 保持: メッセージは保持されません
- ペイロード: ヘルスデータを含むJSON文字列
トラブルシューティング
一般的な問題
接続エラー
- ブローカーのIPアドレス/ホスト名が正しいことを確認
- ポートが正しく、ブローカーがそのポートでリッスンしていることを確認
- ブローカーへのネットワーク接続を確認
- ファイアウォールルールがブローカーへの接続を許可していることを確認
- ブローカーがTLS/SSLを必要とするかどうかを確認
認証エラー
- ユーザー名とパスワードが正しいことを確認
- 認証情報が提供されている場合、ブローカーで認証が有効になっていることを確認
- ユーザーが指定されたトピックに公開する権限があることを確認
メッセージが受信されない
- トピック名が正確に一致することを確認(大文字と小文字を区別)
- サブスクライバーが同じブローカーに接続されていることを確認
- サブスクライバーが正しいトピックにサブスクライブされていることを確認
- オートメーションが有効で実行されていることを確認
- 公開エラーのアクティビティログを確認
大きなメッセージサイズ
- 選択されたヘルスメトリクスの数を減らす
- より細かい集約オプションを使用
- 異なるデータタイプに対して複数のオートメーションに分割することを検討
ヒントとベストプラクティス
トピックの整理:
- 階層的なトピック構造を使用(例:
health/metrics、health/workouts) - トピックにデバイスまたはオートメーション識別子を含める
- 簡単な参照のためにトピック構造を文書化
- 階層的なトピック構造を使用(例:
メッセージサイズ:
- MQTTブローカーの制限を避けるために、メッセージを適切なサイズに保つ
- データ量を減らすために、より細かい集約を使用
- 大きなデータセットを複数のメッセージに分割することを検討
監視:
- アプリのアクティビティログを使用して公開の成功を追跡
クラウドブローカー:
- クラウドMQTTブローカー(AWS IoT、HiveMQ Cloudなど)を使用する場合:
- 特定の接続要件に従う
- メッセージサイズとレート制限を確認
- トピック命名規則を確認
- クラウドMQTTブローカー(AWS IoT、HiveMQ Cloudなど)を使用する場合: