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/data
  • home/health/metrics
  • user/health/export
  • hae/automation-name

トピックのベストプラクティス:

  • スラッシュ(/)を使用してトピック階層を作成する
  • データタイプを示す説明的な名前を使用する
  • スペースや特殊文字を避ける
  • 複数のオートメーションの場合はオートメーション名を含めることを検討する

注: トピック名は大文字と小文字を区別します。サブスクライバーが正確に同じトピック名を使用するようにしてください。

クライアントID

このMQTT接続の一意のクライアントIDを入力します。これにより、デバイスがMQTTブローカーに識別されます。

クライアントIDの例:

  • health-export-iphone
  • hae-client-001
  • ios-health-app

ユーザー名(オプション)

MQTTブローカー認証のユーザー名を入力します。ブローカーが認証を必要としない場合は空のままにします。

パスワード(オプション)

MQTTブローカー認証のパスワードを入力します。ブローカーが認証を必要としない場合は空のままにします。

データタイプ設定

データタイプ

エクスポートするヘルスデータのタイプを選択します:

  • ヘルスメトリクス - 歩数、心拍数、睡眠、その他のヘルス測定値
  • ワークアウト - 運動およびフィットネス活動
  • 症状 - ヘルス症状および状態
  • ECG - 心電図の読み取り値
  • 心拍数通知 - 高/低心拍数イベント
  • 心の状態 - 気分および精神的状態のエントリ(iOS 18.0+)
  • サイクル追跡 - 月経周期および生殖健康データ
  • 薬物 - 薬物ログおよび遵守(iOS 26.0+)

ヘルスメトリクス設定

ヘルスメトリクスが選択されている場合:

ヘルスメトリクスを選択 - 含める特定のメトリクスを選択します。利用可能なすべてのメトリクスを選択するか、特定のメトリクスを選択できます。

ヒント: 必要なメトリクスのみを選択すると、メッセージサイズと処理時間が削減されます。

優先ソース - 複数のソースが同じメトリクスを提供する場合に、どのデータソースに優先順位を付けるかを設定します。

ワークアウト設定

ワークアウトが選択されている場合:

ルートデータを含める - 位置データがあるワークアウトのルートを含めるにはオンにします。

ワークアウトメトリクスを含める - ワークアウト中に収集されたヘルスメトリクス(心拍数、カロリーなど)を含めるにはオンにします。

時間グループ化(ワークアウトメトリクス) - エクスポートバージョン2を使用し、ワークアウトメトリクスを含めるが有効な場合:

  • - ワークアウトメトリクスを分ごとにグループ化
  • - ワークアウトメトリクスを秒ごとにグループ化

エクスポート設定

エクスポート形式

注: MQTTオートメーションはJSON形式のみをサポートします。この設定は変更できず、自動的にJSONに設定されます。

エクスポートバージョン

ワークアウトデータのエクスポートバージョンを選択します:

  • バージョン1 - レガシー形式
  • バージョン2 - 強化されたワークアウトデータを含む現在の形式

注: エクスポートバージョンは、ワークアウトをエクスポートしている場合、主にワークアウトデータ構造に影響します。

日付範囲

データをエクスポートするタイミングを選択します:

  • デフォルト - 前日の完全なデータと現在の日時までのデータを同期
  • 最後の同期以降 - 各同期で、最後にエクスポートが実行された時点から現在の日時までのすべてのデータをエクスポート
  • 今日 - 現在の日付の現在時刻までのすべてのデータを同期
  • 昨日 - 前日の完全なすべてのデータを同期
  • 過去7日間 - 過去7日間の完全なデータを同期

データを要約

ヘルスメトリクスデータタイプでJSON形式を使用する場合、データを要約をオンまたはオフにします。

  • オン - 集約されたデータ要約を提供(デフォルト)
  • オフ - 可能な限り非集約データを提供し、個々のデータポイントを表示

時間グループ化

データを要約が有効な場合、データをどのように集約するかを選択します。

データを要約

ヘルスメトリクスのデータを要約をオンまたはオフにします。

  • オン - 集約されたデータ要約を提供(デフォルト)
  • オフ - 可能な限り非集約データを提供

注: この設定はヘルスメトリクスデータタイプにのみ適用されます。

同期頻度

オートメーションがMQTTにデータを公開する頻度を設定します:

数値と間隔を選択します。

テストと検証

手動テスト

  1. オートメーション設定画面で「手動エクスポート」をタップ
  2. 日付範囲を選択
  3. 「エクスポート」をタップしてメッセージを公開
  4. MQTTクライアントを使用してトピックにサブスクライブし、メッセージが受信されたことを確認

MQTTクライアントの使用

メッセージが公開されていることを確認するには:

  1. MQTTクライアントを設定
  2. 同じ認証情報を使用してMQTTブローカーに接続
  3. トピックにサブスクライブ
  4. アプリから手動エクスポートをトリガー
  5. メッセージがMQTTクライアントに表示されることを確認

アクティビティログの表示

  1. オートメーション設定画面で「アクティビティログを表示」をタップ
  2. 最近のオートメーション実行を確認
  3. 接続エラーまたは公開エラーを確認
  4. 公開タイムスタンプを確認

メッセージ形式

MQTTメッセージはJSONとして公開されます。メッセージペイロードは標準エクスポートJSON形式に従います:

{
  "data": {
    "metrics": [...],
    "workouts": [...],
    ...
  }
}

メッセージは以下で公開されます:

  • トピック: オートメーションで設定されたとおり
  • QoS: 最大1回の配信
  • 保持: メッセージは保持されません
  • ペイロード: ヘルスデータを含むJSON文字列

トラブルシューティング

一般的な問題

接続エラー

  • ブローカーのIPアドレス/ホスト名が正しいことを確認
  • ポートが正しく、ブローカーがそのポートでリッスンしていることを確認
  • ブローカーへのネットワーク接続を確認
  • ファイアウォールルールがブローカーへの接続を許可していることを確認
  • ブローカーがTLS/SSLを必要とするかどうかを確認

認証エラー

  • ユーザー名とパスワードが正しいことを確認
  • 認証情報が提供されている場合、ブローカーで認証が有効になっていることを確認
  • ユーザーが指定されたトピックに公開する権限があることを確認

メッセージが受信されない

  • トピック名が正確に一致することを確認(大文字と小文字を区別)
  • サブスクライバーが同じブローカーに接続されていることを確認
  • サブスクライバーが正しいトピックにサブスクライブされていることを確認
  • オートメーションが有効で実行されていることを確認
  • 公開エラーのアクティビティログを確認

大きなメッセージサイズ

  • 選択されたヘルスメトリクスの数を減らす
  • より細かい集約オプションを使用
  • 異なるデータタイプに対して複数のオートメーションに分割することを検討

ヒントとベストプラクティス

  1. トピックの整理:

    • 階層的なトピック構造を使用(例: health/metricshealth/workouts
    • トピックにデバイスまたはオートメーション識別子を含める
    • 簡単な参照のためにトピック構造を文書化
  2. メッセージサイズ:

    • MQTTブローカーの制限を避けるために、メッセージを適切なサイズに保つ
    • データ量を減らすために、より細かい集約を使用
    • 大きなデータセットを複数のメッセージに分割することを検討
  3. 監視:

    • アプリのアクティビティログを使用して公開の成功を追跡
  4. クラウドブローカー:

    • クラウドMQTTブローカー(AWS IoT、HiveMQ Cloudなど)を使用する場合:
      • 特定の接続要件に従う
      • メッセージサイズとレート制限を確認
      • トピック命名規則を確認