スマートホームのセンサーと健康データを、ローカルAIが毎日ひとつのレポートにまとめて届けてくれる。クラウドに個人データを送らず、自宅サーバーだけで完結する自動化です。
この記事でわかること
- Home Assistant、n8n、Ollama、Shortcutsを組み合わせた日次レポートの全体像
- Apple Healthのデータを無料でHome Assistantに送る方法
- 255文字制限を回避して長文レポートを保存するコツ
- 朝のデスク着席時にスマートスピーカーで読み上げる仕組み
散らばった生活データを、毎朝ひとつにまとめる
歩数、運動時間、デスクでの滞在時間、期限切れのタスク。これらはそれぞれ別のアプリやデバイスに記録されています。毎朝これらを確認するのは手間ですし、見落としも起きやすい。
How-To Geekの記事では、ライターのAdam Davidson氏がこの課題をローカルLLM(大規模言語モデル)で解決しています。スマートホームのセンサーと健康データを集め、Ollama上の小型モデルが辛口の日次レポートを生成。朝、デスクに座った瞬間にスマートスピーカーが読み上げる仕組みです。クラウドAIにデータを送らないため、健康情報や仕事のタスク内容を自宅内に閉じ込められます。
4つのデータソースをn8nが束ねる
この仕組みの核は、4種類のデータを1つのプロンプトにまとめるn8nワークフローです。n8nはノーコードで外部サービスをつなぐワークフロー自動化ツールで、Home Assistant単体では難しい外部連携を担います。
| データ | 取得元 | 内容 |
|---|---|---|
| 健康データ | iPhone → Shortcuts → Home Assistant | 歩数、運動分数、スタンド時間 |
| デスク滞在時間 | Home Assistantの在室センサー | オフィスチェア周辺ゾーンの検知時間 |
| タスク | Home AssistantのToDoリスト | 期限切れの項目 |
| 仕事の記事 | Notion | 執筆予定・期限切れの記事 |
n8nは毎日深夜2時に起動し、Home Assistantからセンサー値とToDoを取得したあと、Notionのページを照会します。4つの情報を1本のプロンプトに合成し、ローカルLLMへ渡します。
Apple HealthをShortcutsでHome Assistantへ送る
セットアップで最も手間がかかったのが、Apple HealthのデータをHome Assistantに入れる工程です。有料アプリで連携する方法はありますが、Davidson氏はiPhone標準のShortcutsアプリを選びました。
Shortcutsの「ヘルスケアデータを検索」アクションで、当日の歩数・運動分数・スタンド時間を取得します。続けてHome Assistant REST APIの/api/statesエンドポイントへPOSTし、各値をセンサーとして保存します。認証にはHome Assistantのプロフィール画面で発行するLong-Lived Access Tokenを使います。
トリガーの設計が重要です。Apple HealthのデータはiPhoneがロック解除されているときにしか正しく読めないため、タイマー実行では失敗しやすい。Davidson氏は就寝前にiPhoneを充電したタイミングでショートカットを走らせています。「もし」アクションで夜の指定時刻以降に限定し、日中の充電では動かないようにしています。
Ollamaで夜中にレポートを生成する
プロンプトの処理は、ミニPC上のOllamaが担います。Ollamaはローカル環境でLLMを動かすためのツールで、APIを通じてn8nから呼び出せます。
使用モデルはllama3.2:3bです。3B(30億)パラメータ規模の小型モデルで、RAM消費を抑えつつ自然な文章を生成できます。生成には数分かかりますが、深夜実行のため待ち時間は問題になりません。
RAM節約のため、Davidson氏はProxmox上のOllamaコンテナを処理前に起動し、レポート生成後に停止する運用をしています。常時起動が難しい環境でも、必要なときだけLLMを起動する設計が有効です。
255文字制限を回避してレポートを保存する
生成されたレポートは、Home Assistantのinput_textヘルパーに書き込まれます。ただしinput_textのstate(状態値)は255文字までという制限があります。Home Assistantのエンティティstateはすべてこの上限が共通です。
Davidson氏は、stateには255文字以内の要約を入れ、全文はfull_reportという属性(attribute)に保存しています。属性には同じ255文字制限がなく、ダッシュボードや読み上げ自動化は属性側を参照します。長文を扱う際の定番的な回避策です。
朝のデスク着席でスマートスピーカーが読み上げる
レポートの届け方は2通りです。
1つはHome Assistantの専用ダッシュボードに表示する方法。スマホやPCからいつでも全文を確認できます。
もう1つは、朝デスクに座ったタイミングでスマートスピーカーがレポートを読み上げる方法です。デスク滞在時間の計測に使っている在室センサーと同じセンサーがトリガーになり、前夜に生成したfull_report属性の全文を音声で流します。
「何を聞きたいか」を自分で開く必要がなく、生活リズムに組み込まれた通知になります。
実際に生活が変わったという報告
Davidson氏は、当初は「作れるか試してみよう」という気持ちで始めたと述べています。ところがデスクでの滞在時間を毎朝聞くうちに、30分ごとに立ち上がる習慣があっても座りっぱなしだった事実に気づき、スタンディングデスクの使用頻度を上げたそうです。
ローカルLLMの日次レポートは、数値ダッシュボードでは見落としがちな生活習慣を、自然言語のフィードバックとして届ける仕組みです。健康データ、在室センサー、タスク管理、外部のNotionを組み合わせることで、自宅内の情報だけで実用的な自動化が成立します。
再現するうえでの注意点
- Apple Healthの読み取りはiPhoneのロック解除が前提。トリガー設計を誤るとデータが空になる
input_textのstateは255文字まで。長文は属性かテンプレートセンサーで保持する- OllamaはRAMを多く使う。常時起動が難しい場合は、処理前後の起動・停止を検討する
- Notion連携はn8nのNotionノードで行う。Home Assistant単体では外部の執筆リストを参照しにくい
既存ツールの組み合わせだけで、プライバシーを保ったまま毎朝の振り返りを自動化できます。
