Home Assistantの健康データをCodexで分析する方法

※本記事は2026年7月時点の情報をもとにしています。Home AssistantやCodexの仕様変更により、設定方法や利用できる機能が変わる可能性があります。

(注)本記事の内容は正確性を保証するものではない。

(2026年7月25日 追記)YouTube動画を追加しました。 https://youtu.be/LKnYh10VmOM

目次

はじめに

下記の記事では、Withingsの体重計・体組成計をHome Assistantに統合すると、体重や体脂肪率などをセンサーとして扱えることを紹介しました。

しかし、Home Assistantへ健康データを取り込むだけでは、メーカーアプリと大きな違いはありません。
体重のグラフを表示したり、測定忘れを通知したりするだけなら、Withingsなどの専用アプリでもできます。

Home Assistantを利用する大きな利点は、健康データを次のような生活情報と組み合わせられることです。

  • 睡眠時間
  • 歩数や活動量
  • 在宅・外出時間
  • 室温や湿度
  • 天気
  • カレンダーの予定
  • 帰宅時刻
  • テレビや照明の使用状況
  • 食事時刻や食事量

これらを、MCPでHOME Assistantと連携したCodexに定期的に分析させれば、単に「体重が増えた」「歩数が少なかった」と知らせるだけでなく、自分の生活パターンに合わせた振り返りや改善案を作れます。

今回は、Home Assistantの健康データをCodexへ渡し、毎週の生活習慣を分析する仕組みを考えます。


今回作りたい仕組み

基本構成は次のとおりです。

体重計・体組成計
        ↓
Home Assistant
├─ 体重・体脂肪率
├─ 睡眠
├─ 歩数・活動量
├─ 在宅時間
├─ 室温・湿度
├─ 天気
└─ カレンダー
        ↓
Pythonで集計
├─ 7日平均
├─ 28日平均
├─ 前週との差
├─ 欠測値の確認
└─ 異常値の除外
        ↓
Codexで分析
├─ 状況の要約
├─ 生活習慣との関連を推定
├─ 仮説の信頼度を評価
└─ 翌週に試す行動を1つ提案
        ↓
Home Assistant
├─ ダッシュボード表示
├─ スマートフォン通知
└─ 次回の評価日を記録

この仕組みで重要なのは、数値計算とAIによる解釈を分けることです。

体重の平均や歩数の増減など、正確な計算が必要な部分はPythonやHome Assistantに担当させます。
Codexには、計算済みの結果を渡し、意味付けや説明、改善案の作成を担当させます。


健康データだけで判断しない

体重が前日より500g増えたとしても、食べ過ぎが原因とは限りません。

考えられる要因には、次のようなものがあります。

  • 測定した時刻が違う
  • 食事や水分を取った後に測定した
  • 前日の塩分摂取量が多かった
  • 睡眠時間が短かった
  • 排便や発汗などの条件が違う
  • 体重計を置いた場所が変わった

そのため、Codexには前日比だけで判断させず、7日間や28日間の平均を使います。

さらに、Home Assistantに保存された生活データを組み合わせます。

たとえば次のような分析です。

今週の平均体重は先週より0.3kg増えました。一方、体脂肪率の平均には大きな変化がありません。雨の日が多く、平均歩数が先週より20%少なかったことが同時に確認されています。

この場合も、「歩数が減ったから体重が増えた」と断定するのではありません。

活動量の低下と体重増加が同じ時期に見られたため、関連している可能性があります。

という程度の表現にとどめます。


分析に使用するデータ

最初から大量のセンサーを使うと、仕組みが複雑になります。

最初は次の5項目程度から始めるのが現実的です。

分野使用するデータ主な目的
体重体重計の測定値7日・28日平均の変化を見る
体組成体脂肪率体重だけの変化か確認する
睡眠睡眠時間生活リズムとの関係を見る
活動歩数活動量の変化を確認する
在宅在宅時間外出の少ない日との関係を見る

慣れてきたら、次の情報を追加します。

  • 就寝時刻と起床時刻
  • 天気や降水量
  • 室温・湿度
  • テレビの使用時間
  • 帰宅時刻
  • カレンダーの予定
  • 食事時刻
  • 食事量
  • 間食の有無

データを増やしすぎると、偶然同時に変化した項目をAIが重要な関係だと解釈する可能性があります。

そのため、最初は分析対象を絞り、必要性を確認しながら追加していきます。


歩数はどこから取得するか

活動量の変化を確認するために「歩数のデータを使用する」とのことですが、具体的にどのような手段で歩数の情報を取得し、HOME Assistantに取り込むかを提案してください

生活習慣分析に使用する歩数は、体組成計から取得するわけではありません。
体重計や体組成計には通常、日常の歩数を記録する機能がないため、スマートフォンやスマートウォッチの情報をHome Assistantへ取り込みます。

iPhoneには、Home Assistant Companionアプリの歩数センサーがあります。
アプリの「設定」→「Companionアプリ」→「センサー」からStepsを有効にすると、iPhoneの歩数計で記録した歩数をHome Assistantへ送信できます。
Home AssistantのiOS版には、歩数のほか、移動距離、上った階数、平均歩行ペースなどのセンサーもあります。

ただし、この方法は基本的にiPhone本体が記録した歩数を扱うため、Apple Watchなどを含めてAppleヘルスケアに集約された歩数とは異なる可能性があります。

Apple Watchなど複数の情報源を利用する場合は、Appleヘルスケアの歩数をHealth Auto ExportからHome Assistantへ送る方法が適しています。
Health Auto Exportは、選択したAppleヘルスケアの指標をHome AssistantのREST APIへ送り、センサー状態として利用できます。

Androidでは、Home Assistant CompanionアプリのHealth Connectセンサーを利用できます。
health_connect_stepsは、Health Connectに保存された当日午前0時からの総歩数をHome Assistantへ送ります。

複数のスマートフォンやアプリから取得した歩数を合計すると二重計上になる可能性があります。
そのため、本システムではAppleヘルスケア、Health Connect、iPhone本体などから一つを正式な歩数データとして選び、Codexにはそのセンサーだけを分析させます。

試作段階ではHome Assistant CompanionアプリのiPhone歩数センサーを使用する。
本格運用では、Apple Watchを含むAppleヘルスケアの歩数をHealth Auto ExportでHome Assistantへ送り、その日ごとの確定値をCodexの週次分析に使用する。

これなら、追加費用をかけずに始めた後、必要に応じてAppleヘルスケア経由へ拡張できます。


Home Assistantから履歴を取得する方法

CodexがHome Assistantのセンサーを直接読み取るには、いくつかの方法があります。

長期間の健康データを分析する場合は、Home AssistantのREST APIを使う方法が分かりやすいでしょう。

Home Assistantは、通常のWeb画面と同じポートにREST APIを提供しています。
標準的な環境では、Web画面が8123番ポート、APIが/api/以下にあります。
通信内容はJSON形式で、認証には長期アクセストークンを使用します。(Home Assistant開発者ドキュメント)

履歴データは、次のAPIから取得できます。

/api/history/period/

開始日時、終了日時、エンティティIDを指定すると、対象期間の状態変化を取得できます。
複数のセンサーを指定することも可能です。(Home Assistant開発者ドキュメント)

たとえば、次のようなエンティティを取得対象にします。

sensor.body_weight
sensor.body_fat_percentage
sensor.daily_steps
sensor.sleep_duration
sensor.home_duration
sensor.living_room_temperature

実際のエンティティIDは、使用する体組成計や統合によって異なります。


MCPを使ってHome Assistantのデータを取得する

「長期間の健康データを分析する場合は、Home AssistantのREST APIを使う」と提案されていますが、CodexはMCPを使ってHOME Assistantと連携したことがあるので、MCPを使う方法はどうですか

MCPを中心にした構成で問題ありません。
すでにCodexとHome AssistantをMCPで連携しているなら、その接続を生かす方が分かりやすいでしょう。

ただし、Home Assistant公式のMCP Serverは、主に次の用途を想定しています。

  • 公開されたエンティティの現在状態を確認する
  • Home Assistantの現在状況をスナップショットとして取得する
  • 照明やTo-doなどを操作する
  • Home AssistantのAssist APIをツールとして利用する

公式ドキュメントでは、MCPクライアントが取得できる情報を「家の現在状態のリアルタイムなスナップショット」と説明しています。
任意の期間を指定して、過去28日分の状態変化を取得する履歴専用ツールは案内されていません。

したがって、次の2つは分けて考える必要があります。

現在の体重や今日の歩数を確認
→ 既存のHome Assistant MCPで可能

過去28日分の体重・歩数を日別に取得
→ 標準MCPだけでは不足

おすすめする構成

次の構成へ修正するのが適切です。

Home Assistant
├─ 現在の測定値
├─ 7日平均などの集計センサー
└─ 前回の分析結果
        ↓
Home Assistant公式MCP
        ↓
Codex
        ↓
生活習慣の分析・提案

つまり、過去データの基本集計はHome Assistant側で行い、CodexはMCP経由で集計済みセンサーを読む方式です。

これなら、CodexがHome AssistantのREST APIを直接扱わなくても、既存のMCP接続だけで週次分析できます。

Codexは定期実行時にHome Assistant MCPを使用してこれらのエンティティを取得し、生活習慣の分析と翌週の提案を行います。

将来、Codexが任意の期間を詳しく調査する必要が生じた場合は、Home Assistantの履歴APIを内部で呼び出す専用MCPサーバーを追加します。
Home Assistantの履歴APIは、開始日時、終了日時、対象エンティティを指定して過去の状態変化を取得できます。

この構成により、CodexとHome Assistantのやり取りはMCPを中心にしながら、必要に応じて長期履歴にも対応できます。

今回の健康分析では、REST APIとMCPを次のように使い分けるのがよいでしょう。

方法向いている用途
REST API過去7日、28日、半年などの履歴取得
MCP現在の体重、今日の歩数、在宅状況の確認
Home Assistantサービス通知や家電操作
JSONファイル分析結果や過去の提案の保存

MCPは外部システムの変化する情報をCodexへ提供する用途に向いています。
CodexはSTDIO形式とStreamable HTTP形式のMCPサーバーに対応しています。(OpenAI Developers)

ただし、Home Assistant公式MCP Serverが提供する中心的な情報は、公開エンティティの現在状態です。
数週間から数か月の履歴分析では、REST APIを併用する方が扱いやすくなります。


Codexに直接計算させない

CodexにHome Assistantの生データをそのまま渡し、すべての計算を行わせる方法もあります。

しかし、健康データの分析では、平均値や増減率を毎回同じ方法で計算する必要があります。

そこで、次の処理はPythonで固定します。

  • 日ごとの代表値を決める
  • 7日平均を計算する
  • 28日平均を計算する
  • 前週との差を計算する
  • 測定回数を数える
  • データがない日を確認する
  • 明らかな異常値を除外する
  • 単位を統一する

Codexには、計算済みのJSONを渡します。

{
  "period": {
    "start": "2026-07-13",
    "end": "2026-07-19"
  },
  "body": {
    "weight_7d_average": 68.4,
    "weight_previous_7d_average": 68.1,
    "body_fat_7d_average": 22.1,
    "measurement_days": 6
  },
  "lifestyle": {
    "sleep_average_hours": 5.9,
    "previous_sleep_average_hours": 6.6,
    "steps_average": 4120,
    "previous_steps_average": 5380,
    "long_home_days": 5
  },
  "environment": {
    "rainy_days": 4,
    "hot_nights": 3
  }
}

Codexはこのデータを読み、生活習慣の観点から要約します。


Codexに担当させる内容

Codexには、次の5つを担当させます。

1.観察できた事実を整理する

例:

  • 平均体重が先週より0.3kg増加した
  • 平均歩数が先週より23%減少した
  • 平均睡眠時間が42分短くなった
  • 雨の日が4日あった

2.考えられる背景を仮説として示す

例:

雨の日が多かったため外出が減り、活動量が少なくなった可能性があります。

3.仮説の信頼度を示す

例:

  • 高い
  • 中程度
  • 低い
  • データ不足

4.翌週に試す行動を一つだけ提案する

例:

雨の日の夕食後に、10分間だけ部屋の片付けを行う。

5.次回の評価条件を決める

例:

1週間後に、雨の日の活動量と体重平均を再確認する。

「翌週に試す行動を一つだけ提案する」とか「次回の評価条件を決める」をCodexが提案してくれるのはありがたい。
実行性の高い提案である。健康情報を、HOME Assistantで得られる情報とクロス分析できるからこその提案。
これらの試行(実験)で得られた情報を蓄積していくことにより、個々のユーザーの身体に合った、よりパーソナルな提案をしてくれるのではないかと期待する。


Codexに守らせる判断ルール

健康に関するAI分析では、自由に助言させるのではなく、判断ルールをあらかじめ決めておく必要があります。

たとえば、次のような指示を設定します。

・観察できた事実と推測を分ける
・単日の体重変化だけで食事量を変更しない
・因果関係を断定しない
・データ不足の場合は「判断できない」とする提案は一度に一つだけにする
・過度な運動や極端な食事制限を提案しない
・病名、治療、服薬に関する判断を行わない
・体重減少と筋肉量低下が同時に見られる場合は、
  追加の減量を安易に提案しない
・実行負担の小さい行動を優先する

AIに「必ず何か提案する」と指示すると、データが不足していても無理に理由を作る可能性があります。

そのため、「現状維持」や「今回は判断しない」も有効な結論として認めます。


Codexから返す形式を固定する

Codexの出力をそのまま文章にすると、実行するたびに構成が変わる可能性があります。

Home Assistantへ表示しやすくするため、JSON形式を固定します。

{
  "status": "生活リズムがやや不安定",
  "observations": [
    "平均睡眠時間が先週より42分短くなりました",
    "平均歩数が先週より23%少なくなりました",
    "平均体重が0.3kg増加しました"
  ],
  "hypothesis": "雨の日の増加と睡眠時間の短縮が、活動量の低下と重なった可能性があります",
  "confidence": "medium",
  "recommended_action": "雨の日の夕食後に10分間だけ室内で片付けを行う",
  "reason": "外出を必要とせず、現在の生活へ追加しやすいためです",
  "avoid": "前日の体重だけを理由に食事量を急に減らさない",
  "review_after_days": 7
}

この形式にしておけば、Home Assistantでは次のように分けて表示できます。

  • 今週の状態
  • 主な変化
  • 考えられる背景
  • 信頼度
  • 今週試すこと
  • 次回確認日

HOME Assistantのオートメーションを活用すれば、reviewのリマインダーを、ユーザーの都合(在宅中であるなど)に合わせて送付することも容易。


分析結果をHome Assistantへ戻す

Home AssistantのREST APIでは、現在の状態を取得するだけでなく、状態を作成・更新することもできます。

POST /api/states/<entity_id>を使うと、独自の状態と属性をHome Assistantへ登録できます。
ただし、この操作はHome Assistant内の状態表現を作成するものであり、実際の機器を操作するものではありません。(Home Assistant開発者ドキュメント)

たとえば、次のような独自センサーを作成できます。

sensor.health_weekly_status
sensor.health_weekly_action
sensor.health_analysis_confidence

表示例は次のようになります。

エンティティ表示内容
sensor.health_weekly_status生活リズムがやや不安定
sensor.health_weekly_action雨の日の夕食後に10分片付ける
sensor.health_analysis_confidence中程度

詳しい分析文章は、各センサーの属性として保存する方法もあります。

ただし、REST APIで作成した状態は、Home Assistantの再起動後などに維持される仕組みを別途考える必要があります。
長期間保存したいレポートは、MarkdownやJSONファイルにも残しておく方が安全です。

分析結果の内容によっては、ユーザーの許可を取った上で、Codexにユーザーのパーソナルな情報として記録しておいてもらうほうがいいかもしれない。


Codexの定期実行タスクを使う

同じ分析を毎週行う場合は、Codexの定期実行タスクを利用できます。

Codexの定期実行タスクでは、対象プロジェクト、指示文、実行間隔、実行環境を選択できます。
反復する処理はSkillにまとめ、定期実行タスク側ではスケジュールを管理する構成が推奨されています。(OpenAI Developers)

たとえば、毎週日曜日の午後8時に実行します。

毎週日曜日20時に、健康分析プロジェクトを実行する。

1. Home Assistantから過去28日分の指定センサー履歴を取得する
2. 直近7日と、その前の7日を比較する
3. データ不足と異常値を確認する
4. 観察結果と仮説を分ける
5. 翌週に試す行動を一つだけ提案する
6. JSONとMarkdownでレポートを保存する
7. Home Assistantへ要約を送信する
8. 前回の提案がある場合は達成状況を評価する

Codexの定期実行は無人で行われるため、ネットワークアクセスやファイル書き込みに必要な権限を事前に確認します。
定期タスクは設定されたサンドボックスや承認モードの範囲内で動作します。(OpenAI Developers)

また、OpenAIの公式案内では、定期実行にする前に、通常のチャットで指示文を手動テストすることが推奨されています。
最初の数回は出力を確認し、指示や実行頻度を調整します。(OpenAI Developers)


毎日・毎週・毎月の役割を分ける

分析の頻度によって、目的を分けます。

頻度主な内容AIの提案
毎日測定忘れ、急な変化、欠測確認原則として行わない
毎週体重、睡眠、活動量の比較翌週の行動を1件提案
毎月数か月の傾向や生活パターン生活実験の継続・変更を判断

毎日の処理

毎日は、簡単な確認だけにします。

  • 今日測定したか
  • 体重の7日平均が急に変化していないか
  • センサーが更新されているか
  • データ取得に失敗していないか

前日比だけを理由に、新しい生活改善策は提案しません。

毎週の処理

毎週の分析を中心にします。

  • 今週と先週の比較
  • 睡眠や歩数との関連

毎月の処理

毎月は長期的なパターンを確認します。


プロジェクトのフォルダ構成

Mac miniに専用の作業フォルダを作ります。

home-health-analysis/
├── AGENTS.md
├── README.md
├── scripts/
│   ├── fetch_home_assistant.py
│   ├── calculate_metrics.py
│   └── publish_home_assistant.py
├── config/
│   └── entities.yaml
├── data/
│   ├── latest_metrics.json
│   ├── previous_recommendation.json
│   └── experiments.json
├── reports/
│   ├── daily/
│   ├── weekly/
│   └── monthly/
└── logs/

各ファイルの役割は次のとおりです。

ファイル役割
AGENTS.mdCodexが守る分析ルール
entities.yaml取得するHome Assistantエンティティ
fetch_home_assistant.py履歴を取得
calculate_metrics.py平均値や増減率を計算
publish_home_assistant.py分析結果をHAへ送信
previous_recommendation.json前回の提案を保存
experiments.json生活実験の履歴を保存
reports/weekly/週次レポートを保存

このように処理を分けると、体組成計を別メーカーへ変更しても、Home Assistant側のエンティティ設定を変更するだけで対応しやすくなります。


前回の提案を評価する

毎週新しい提案を出すだけでは、助言が積み重なってしまいます。

前回の提案を保存し、次回の分析で結果を評価します。

たとえば、前回の提案が次の内容だったとします。

午後11時30分までに就寝する日を週3日作る。

翌週は次の項目を確認します。

  • 週3日実行できたか
  • 平均睡眠時間が変わったか
  • 翌日の歩数が変わったか
  • 本人にとって負担が大きくなかったか

結果に応じて、次のいずれかを選びます。

これにより、一般的な健康情報ではなく、本人のデータから生活習慣を調整する仕組みになります。


Home Assistantらしい独自分析

メーカーの健康アプリでは、体重、睡眠、歩数などは分析できます。

Home Assistantでは、それに家の情報を加えられます。

雨の日の活動量を分析する

雨の日が多い
+
在宅時間が長い
+
歩数が少ない
+
体重の週平均が上昇
        ↓
雨の日に実行できる室内活動を提案

提案例:

雨の日は外出を増やすのではなく、夕食後に10分間だけ片付けを行う。

室内活動として、「雨の日は外出を増やすのではなく、夕食後に10分間だけ片付けを行う。」が提案されていますが、夕食後に行うのはなぜですか。簡潔に回答してください

(ChatGPT-5.6 Solの回答)
夕食後は座って過ごしやすく、テレビ視聴などの前に短い活動を差し込みやすいからです。
毎日の食事と結び付けると習慣化もしやすくなります。
ただし、夕食後である必然性はなく、続けやすい時間帯に置き換えて問題ありません。


室内活動について他の例を提案してください。
負荷が小さいものと負荷が中程度のものを提案してください

負荷室内活動の例
小さい食器を片付ける、洗濯物をたたむ、立ったまま5~10分読書する、室内をゆっくり歩く、軽いストレッチ
中程度掃除機をかける、階段を数往復する、その場足踏みを10~15分行う、軽いスクワット、動画を見ながら体操する

無理なく会話できる程度の強さを目安にし、痛みや息苦しさが出た場合は中止します。

テレビ視聴と活動量を確認する

テレビ視聴時間が長い
+
夕方の歩数が少ない
        ↓
番組終了後に短い行動を提案

提案例:

次の番組が始まるまでに、飲み物を取りに行き、家の中を3分歩く。

帰宅時刻に合わせて目標を変える

帰宅が遅い
+
翌朝の予定が早い
        ↓
運動より睡眠を優先

提案例:

今夜は運動を追加せず、通常より30分早く就寝準備を始める。

単純に「もっと運動する」「食事を減らす」と提案するのではなく、その日の生活に入れやすい行動を選べる点がHome Assistantとの組み合わせの利点です。


医療判断には使わない

この仕組みは、生活習慣を振り返るためのものです。

次の判断はCodexに行わせません。

  • 病気の診断
  • 薬の変更
  • 治療方針の決定
  • 血圧や血糖の医学的評価
  • 極端なカロリー制限
  • 特定の栄養素を大幅に制限する食事療法

体重、血圧、血糖、心拍数などに気になる変化がある場合は、AIの分析結果ではなく、医療機関や専門家へ相談する必要があります。

Codexの役割は、医療上の判断ではなく、

  • 記録の整理

に限定します。


健康データの公開範囲に注意する

体重や睡眠、血圧などは個人的な情報です。

Home AssistantのMCP Serverを利用する場合は、AIへ公開するエンティティを限定できます。
MCPクライアントがアクセスできるのは、Home Assistant側で公開を許可した機器やエンティティです。(Home Assistant)

健康分析専用のHome Assistantユーザーを作り、必要なセンサーだけを扱う構成も考えられます。

また、次の点も確認します。

  • アクセストークンを公開しない
  • GitHubへ健康データを保存しない
  • レポートの保存先を限定する
  • 家族の測定データと混在させない
  • 不要になった古いレポートを削除する
  • Codexへ渡すデータを必要最小限にする

最初に実装する範囲

最初から食事、睡眠、予定、天気、家電使用状況まですべて分析する必要はありません。

次の順番で進めます。

第1段階:体重の集計

  • Home Assistantから体重履歴を取得
  • 7日平均と28日平均を計算
  • 前週との差を表示
  • データ不足を検出

第2段階:体脂肪率を追加

  • 体重と体脂肪率を比較
  • 体脂肪量を計算
  • 単日の変動では判断しない

第3段階:睡眠と歩数を追加

  • 睡眠時間
  • 歩数
  • 在宅時間

この3項目と体重の関係を週単位で振り返ります。

第4段階:Codexの週次分析

  • 観察結果
  • 仮説
  • 信頼度
  • 翌週の行動提案
  • 次回評価日

を出力します。

第5段階:定期実行

手動実行で安定したことを確認した後、毎週日曜日などに定期実行します。


「睡眠時間」情報の取得方法

睡眠時間を計測するiPhoneアプリで、Appleヘルスケアなどを介してHOME Assistantに情報を送ることができるアプリを提案してください

はい。睡眠計測アプリがAppleヘルスケアの「睡眠」にデータを書き込み、そのデータを別アプリでHome Assistantへ転送する構成が現実的です。

睡眠計測アプリ
   ↓ Appleヘルスケアの「睡眠」
Health Auto Export/Health Assistant Link
   ↓
Home Assistant
   ↓ MCP
Codexによる週次分析

候補となる睡眠計測アプリ

アプリ計測方法iPhone単体Apple WatchAppleヘルスケアへの保存おすすめ用途
Apple標準
「睡眠」
Watchの動きなどApple Watch所有時の第一候補
AutoSleepWatchの動き・心拍など×に近い詳細分析と買い切りを重視
Sleep CycleiPhoneの音・動き、またはWatchiPhoneだけで始めたい
PillowiPhoneの音・動き、またはWatch録音や詳しい睡眠分析も見たい
SleepWatch主にWatchの動き・心拍Watchによる自動検出を重視

Apple Watchがある場合

最も構成が簡単なのは、Apple標準の「睡眠」です。
Apple Watchを装着して寝ると、測定した睡眠データがiPhoneのヘルスケアへ保存されます。(Appleサポート)

より詳細な評価を見たい場合は、AutoSleepが有力です。
Apple Watchで自動計測し、睡眠時間、深い睡眠、心拍数、睡眠の一貫性などを分析します。
必要な権限を与えると、睡眠分析をApple HealthKitへ書き込めます。(App Store)

Apple Watchを使わない場合

Sleep Cycleが第一候補です。
iPhoneをベッド付近に置き、音や動きから睡眠を記録できます。
Sleep Cycleは睡眠分析と心拍数をAppleヘルスケアへ書き込むと公式に案内しています。
ただし、Appleヘルスケアとの同期案内が表示されるのは15回目の計測後です。(Sleep Cycle)

PillowもiPhone単体に対応し、音声録音を含む睡眠分析ができます。
Apple Watchを追加すると、心拍情報なども利用できます。HealthKitとの連携にも対応しています。(Pillow)

Home Assistantへ送るアプリ

第一候補:Health Auto Export

Health Auto Exportは、Appleヘルスケアの睡眠データをHome Assistantへ直接送信できます。
Home Assistant専用の自動エクスポート機能があり、REST APIを利用してセンサーの状態を作成・更新します。
睡眠を含む各種健康指標を選択して送信できます。(HealthyApps)

設定イメージは次のとおりです。

Health Auto Export
→ Automated Exports
→ New Automation
→ Home Assistant

主な設定:

項目設定例
Home Assistant URLhttp://homeassistant.local:8123
認証長期アクセストークン
Health MetricsSleep/睡眠
Date RangeYesterday
Summarize DataON
Time GroupingDays
Sync Cadence毎日

Home Assistantの公式連携ガイドには、睡眠時間を使った自動化例として…sleep_totalセンサーも掲載されています。(HealthyApps)

上記の「HealthyApps」のリンク先には、「Apple HealthのデータをHome Assistantに同期する」というタイトルの非常に有効な記事(最終更新日:2026年5月20日)が掲載されており、「ホームアシスタント自動化ガイド」の内容として、「…sleep_totalセンサー」を活用した下記の例が紹介されている。

リンク先に記載された例:
前夜の総睡眠時間が7時間を超えたら、スマートフォンへ「昨夜はよく眠れました」という通知を送る自動化です。

sleep_total が7時間超
        ↓
スマートフォンへ通知

第二候補:Health Assistant Link

Health Assistant Linkは、Appleヘルスケアのデータを外部クラウドへ保存せず、iPhoneからHome Assistantへ直接同期することに特化したアプリです。
バックグラウンド同期とiOSショートカットにも対応しています。(App Store)

比較Health Auto ExportHealth Assistant Link
Home Assistant連携
睡眠データ
JSON・CSV書き出し×
MQTT・汎用REST×
Codex用データ保存向いているHA経由が中心
設定の分かりやすさやや項目が多い比較的簡単
日本語対応英語

Codexで長期分析する構想には、JSONやCSVにも転用できるHealth Auto Exportの方が適しています。

おすすめ構成

Apple Watchを使用している場合

Apple Watch
→ Apple標準「睡眠」またはAutoSleep
→ Appleヘルスケア
→ Health Auto Export
→ Home Assistant
→ Codex

Apple標準「睡眠」から始め、分析内容が不足すると感じたらAutoSleepを追加する方法が無駄がありません。

Apple Watchを使用しない場合

Sleep Cycle
→ Appleヘルスケア
→ Health Auto Export
→ Home Assistant
→ Codex

iPhoneだけで試せるため、専用機器を購入せずに記事2の検証を始められます。

Codexに渡したい睡眠項目

最初は次の項目で十分です。

  • 睡眠開始時刻
  • 起床時刻
  • 総睡眠時間
  • 就床時間
  • 夜間の覚醒時間
  • 計測できた日数

Apple Watchを使う場合は、さらに次を追加できます。

  • コア睡眠
  • 深い睡眠
  • REM睡眠
  • 睡眠中の心拍数
  • 呼吸数
  • 手首皮膚温

ただし、アプリ独自の「睡眠スコア」はAppleヘルスケアへ書き込まれないことがあります。
Codexの分析では、独自スコアよりも、総睡眠時間・就寝時刻・起床時刻など継続して取得できる共通項目を優先する方が安定します。

就床時間について回答してください

(ChatGPT-5.6 Solの回答)
就床時間とは、ベッドや布団に入ってから、起きて出るまでの時間です。
実際に眠っていた時間だけでなく、寝付くまでや途中で目覚めていた時間も含みます。

就床時間は、Withingsの睡眠センサーでないと自動測定できないものですか。
iPhoneアプリ単体では自動測定できないでしょうか

(ChatGPT-5.6 Solの回答)
Withingsの睡眠センサーでなくても測定できます。

iPhone単体では、Sleep CycleやPillowなどがマイクや動きから就床・睡眠時間を推定できます。
ただし、アプリによっては就寝時に計測開始が必要で、ベッドセンサーやApple Watchより精度は低くなりやすいです。(Sleep Cycle)

なお、Apple標準の睡眠スケジュールでも就床時間は推定できますが、本格的な睡眠測定にはApple Watchまたは対応アプリ・機器が必要です。(support.apple.com)


同期上の注意

iOSでは、iPhoneがロックされている間はHealth Auto Exportが健康データへアクセスできません。
また、バックグラウンド処理の実行時刻はiOSが制御するため、起床直後に必ずHome Assistantへ届くとは限りません。(HealthyApps)

そのため、次の運用が適しています。

夜間:睡眠を計測
朝:iPhoneを使用・ロック解除
午前中:前夜の睡眠をHAへ同期
週末:Codexが7日分を分析

最初に試す構成としては、Apple WatchがあるならApple標準「睡眠」、ない場合はSleep Cycleを使用し、Health Auto ExportからHome Assistantへ送る方法をおすすめします。


まとめ

Home Assistantの健康データは、Codexの定期実行タスクで分析できます。

ただし、AIへすべて任せるのではなく、次のように役割を分けることが重要です。

Home Assistant
=健康データと生活データを集約する

Python
=平均値、増減率、欠測値などを正確に計算する

Codex
=結果を整理し、仮説と改善案を作る

Home Assistant
=結果を表示し、通知する

Codexには、体重の前日比だけで食事や運動を変更させず、7日・28日の傾向を使わせます。

また、観察できた事実と推測を分け、データが不足している場合は「判断できない」という結論を認めます。

最初は次の4項目だけでも十分です。

  • 体重
  • 体脂肪率
  • 睡眠時間
  • 歩数

毎週1回、直近28日分を分析し、翌週に試す小さな行動を一つだけ提案するところから始めると、複雑になりすぎません。

目次