ZOYKUHot Board

owen282000/life-dashboard-companion-app기술 문서

Send Health Connect and screen time per app from your Android phone to Home Assistant, MQTT or your own webhook. 34 data types, a backfill of all your history, HMAC-signed, no cloud and no trackers. Part of Life Dashboard.

언어 대체 안내:해당 저장소의 한국어 문서가 제공되지 않아 공식 영문 원본(English)으로 표시됩니다.
빠른 설치
git clone https://github.com/owen282000/life-dashboard-companion-app.git

Life Dashboard Companion icon

Life Dashboard Companion

Health Connect and screen time from your Android phone, sent to Home Assistant, MQTT or your own server.
No cloud in between, no account, no tracking.

Get it on Google Play
€4.99 (US$4.99) once. No subscription, no in-app purchases. Same code as this repo, or get the APK from GitHub or F‑Droid.

Download the latest APK Home Assistant integration in the Marketplace Android 8.0 or newer Translation status on Weblate OpenSSF Best Practices MIT license

Install  ·  Setup guide  ·  Brand guides  ·  Payload reference  ·  Website

Life Dashboard: Android app  ·  iPhone app  ·  Home Assistant integration  ·  Grafana stack  ·  Sleep card

Four app screens: the Health tab with where your data goes and today's figures, each with a seven-day line, the Screen Time tab with today's total and the most used apps, What to send with its categories and data resolution, and Logs with one line per delivery

Your watch, ring or scale already writes to Health Connect. This app sends that data, from every source app at once, plus your screen time per app, to Home Assistant, an MQTT broker or a webhook you run. There is no account and no Google account in between, and none of it reaches me.

  • In Home Assistant every day lands on its own date, as far back as Health Connect has data, paired with one QR code. The Home Assistant companion app shows the latest value.
  • Edits and deletions go out too, not only new records, so your server stays in step with Health Connect.
  • Samsung Health, Fitbit, Garmin, Oura, Withings: if it writes to Health Connect, it arrives. That includes Fitbit, now that Google switched off the Fitbit Web API on 2 November 2026.
  • Open source (MIT), with the same signing key on GitHub, F-Droid and Google Play.
  • Want to ask Claude or a local model in Ollama about your own history? The Grafana stack adds an MCP server with eight read-only tools. The app itself contains no AI.

What you get

  • 34 Health Connect types. Steps, sleep with stages, heart rate and HRV, speed, weight and body composition, blood pressure, glucose, workouts, nutrition, cycle tracking and more. Each type has its own switch.
  • Every record, plus clean daily totals. Every raw record goes out with the app that wrote it. Daily totals for steps, distance and calories come from Health Connect itself, so a walk recorded by both phone and watch counts once.
  • All your history. Backfill from 30 days up to 5 years, or everything Health Connect has, in one go. In Home Assistant each day lands on its own date.
  • Screen time per app. Foreground minutes for every app, with a day boundary you choose (say 04:00 for late nights) and a filter to leave apps out.
  • Back into Health Connect. With Receive on, readings from a scale or blood pressure monitor in Home Assistant go into Health Connect. Samsung Health and Google Health pick up the weight and body fat from there. This needs the Life Dashboard integration.
  • Runs on its own. An interval or fixed times, on the days you pick, with quiet hours, and nothing running in between. If your server is down or only reachable at home, payloads wait on the phone for the next sync that gets through.

Recipes to start from: a bedtime reminder from your next alarm, screen time limits, a Bluetooth scale into Samsung Health, and asking a local LLM about your own history.

On the other end, this is the Life Dashboard integration's example dashboard in Home Assistant, with a screen time view of its own (demo data):

The integration's example dashboard in Home Assistant: today's steps, distance, calories and heart rate, the last workout with its pace, heart rate and laps, recovery with heart rate variability, resting heart rate and VO2 max, and last night's sleep; on a phone, today's tiles and the time in each app

How it works

Health Connect is the place on Android where fitness apps keep their data. Garmin Connect, Samsung Health, Fitbit, Oura, Withings and Gadgetbridge all write to it. This app reads from it on a schedule and sends the new records straight to the places you set up.

Diagram: Garmin, Samsung Health, Fitbit, Pixel Watch, Oura, Withings and other apps write to Health Connect. Life Dashboard Companion reads Health Connect and screen time and sends them to Home Assistant, MQTT or a webhook. Home Assistant can send scale and blood pressure readings back, and the app writes them into Health Connect.

Not sure your watch is covered? The brand guides show what each one actually writes, and what it keeps to itself.

Part of Life Dashboard

Life Dashboard is four projects and a card, and you only install the parts you need. Put the app on each phone, then pick where the data goes. Both apps send the same payload, so an Android phone and an iPhone can share one Home Assistant or one stack.

Android app: Health Connect and screen time (this repository) iPhone app: Apple Health Home Assistant integration: sensors and all your history Grafana stack: Postgres and Grafana dashboards Sleep card: one night, stage by stage

The data can also go to an MQTT broker or a webhook of your own instead. Both apps have that built in, for n8n, Node-RED or a script.

Install

Get it on Google Play

Google Play is the easy way: updates arrive automatically, and buying the app supports development. It costs €4.99 (US$4.99) once, with no subscription.

Free, or build it yourself:

Get it on GitHub Get it on F-Droid Get it on Obtainium Life Dashboard Companion on AlternativeTo

The APK on GitHub is signed. Each release has build provenance that you can verify, and the build is reproducible. F‑Droid builds each release on its own server and ships it only if the result matches this APK, so both have the same signature and you can switch between them. Obtainium installs the APK from GitHub and keeps it updated. These routes stay free, and they are the same app as on Google Play, signed with the same key. building.md explains how to build it yourself.

Screen time works on Android 8.0 and newer. The health part needs Android 9 or newer with Health Connect, which is built into Android 14 and later and comes from Google Play on Android 9 through 13.

Quick start

  1. In Home Assistant 2026.3 or newer, go to Settings > Marketplace (HACS before 2026.11), search for the Life Dashboard integration and install it. On HACS, restart Home Assistant. Add the integration if its setup doesn't open by itself. It shows a QR code. Skip this step if you use MQTT or a webhook.
  2. Install the app and open it. Its setup asks where your data should go: scan the code, or enter your broker or webhook URL.
  3. Grant the Health Connect permissions on the Health tab, and usage access on the Screen Time tab if you want screen time.
  4. Tap Sync Now. Preview payload under What to send shows what it would send.

The setup guide walks through each step, including battery settings that keep Android from stopping the sync and what to do when nothing arrives.

Home Assistant

There are two ways in. Neither needs YAML.

Life Dashboard integration MQTT
Setup Marketplace (HACS before 2026.11), then scan a QR code Enter your broker
Sensors 26 of 34 types, plus screen time in total and per app 25 of 34 types, without the last workout, plus screen time in total
History Every day, up to a year back, through backfill From the first sync on
Workouts and mindfulness Minutes per day No
Receive into Health Connect Yes No
Example dashboard Included No

Pick the integration unless you already run a broker and don't need the days before your first sync. Single meals, cycle tracking entries and workout details are events rather than values, so neither route turns them into sensors. A webhook of your own gets them in full. Setup for both is in the guide, and features.md lists what each one creates.

Open the Life Dashboard integration in the Marketplace

Already use the Home Assistant companion app?

Keep it. It does presence, notifications and device sensors, and this app doesn't try to. They work side by side.

The companion app also has Health Connect sensors, but with a different goal. Its documentation says "only the last 30 days of data is used", and each sensor shows the latest value. Since version 2026.11.1 that includes the sleep stages of your last night. Writing into Health Connect needs extra permissions that Google reviews, and the companion app hasn't added it yet (#6799, #5650). For screen time it has a last used app sensor, but no time per app.

This app covers the health side in depth: 34 types instead of 25, full history in long-term statistics, writing back into Health Connect, and screen time per app. The full comparison goes row by row.

Webhooks

Any server that accepts a JSON POST can be a destination: n8n, Node-RED, a small script, or your own API. Payloads are signed with HMAC-SHA256 if you set a secret, and you can add custom headers or a client certificate.

{
  "timestamp": "2026-10-04T12:00:00Z",
  "app_version": "1.23.0",
  "source": "health_connect",
  "sequence": 1842,
  "daily_totals": [
    {
      "date": "2026-10-04",
      "steps": 8421,
      "distance_meters": 6210.4
    }
  ],
  "steps": [
    {
      "count": 1234,
      "start_time": "2026-10-04T08:00:00Z",
      "end_time": "2026-10-04T09:00:00Z",
      "uuid": "3f1c2a9e-7b4d-4e8a-9c61-0d2b5e7f8a10",
      "source": "com.garmin.android.apps.connectmobile"
    }
  ]
}

This example is shortened. Every raw record has a uuid to deduplicate on and a source that names the app that wrote it. The payload reference documents every type and has a minimal receiver to start from, plus notes for n8n and Node-RED. The JSON Schema lets you validate what your receiver gets.

If you have no backend yet, life-dashboard-stack is an example Docker Compose setup: a receiver that checks the signature, Postgres, and a Grafana dashboard. It's a one-person project offered as-is, built to be changed.

Ask your own AI

Want to ask an AI how your sleep changed in the weeks you walked more? The Grafana stack keeps every record in Postgres and has an MCP server with eight read-only tools, for Claude, a local model in Ollama or any other MCP client. Already on Home Assistant or your own Postgres? The recipe has a route for each, without the stack. The app itself sends nothing to any AI: the data only goes where you point it.

Privacy

The app has no analytics, no crash reporting and no ads, and there is no Life Dashboard server. Your data goes from the phone to the destinations you configure and nowhere else. Webhooks use HTTPS unless you switch on Allow plain HTTP webhooks, for example for a Home Assistant server on your home network. Secrets are encrypted on the phone with a key from the Android Keystore. In short, the app asks for read access to the Health Connect types you switch on, write access to seven body and blood pressure types for Receive, usage access for screen time, the camera only to scan a pairing code, and the network to send. PRIVACY.md lists every permission and every field that can leave the phone.

Documentation

Get started: Setup guide · Brand guides · Recipes

Reference: All features · Payload reference · JSON Schema · What source apps write · Settings backup

Project: Building from source · Contributing · Changelog · Privacy · Security · AI policy · All documentation

Help and contributing

Questions go to Discussions. Bugs go to issues; the template asks for what helps, like your phone, the source app and a log entry. SUPPORT.md explains which is which. No GitHub account? Use the feedback board, which needs no account. Everything on it is public, so leave out health data, logs and webhook URLs.

Pull requests are welcome. CONTRIBUTING.md covers the checks CI runs, and building.md gets you a working build. Not into Kotlin? The issues labelled good first issue include a Node-RED recipe, a brand guide for a device you own, and example payloads checked against the schema. Translations happen on Weblate, in the browser, without a build: pick your language or add a new one.

Acknowledgments

  • Health Connect by Google, which this app reads from and writes to
  • OkHttp for webhook delivery and the HiveMQ MQTT Client for MQTT
  • Jetpack Compose, WorkManager and Glance for the interface, background sync and the home screen widget
  • The typefaces Space Grotesk and Space Mono, under the SIL Open Font License (licences)
  • The earlier open source apps that export Health Connect to a webhook, which showed the idea works and were an early inspiration for the integration patterns here
  • Everyone who filed an issue with a payload dump or a quirk of their source app. Most of DATA_SOURCES.md comes from those reports.
  • Claude Code, which drafted a large part of the code. Every change is reviewed and tested before it ships, and AI_POLICY.md explains how.

Support the project

Stars, shares and good bug reports all help. This is a one-person project, but your setup doesn't depend on that person: there is no server of mine to switch off, your history lives in your own Home Assistant or database, and the code is MIT. If you want to chip in for the evenings that go into it, buy the app on Google Play, or there is Ko-fi. The APK on GitHub and F‑Droid stays free, and the code stays open source, either way.

MIT licensed. See LICENSE.

Made by Owen Vogelaar for the self-hosting and quantified self crowd.
Google Play and the Google Play logo are trademarks of Google LLC.

GitHub 공식 원본 저장소에서 아카이브된 문서 미러 · GitHub 저장소 방문
동기화 기준일: 2026-11-15