Life Dashboard

com.owen282000.lifedashboard
by Zapstore Catalog

Health Connect and screen time to Home Assistant, MQTT or webhooks. No cloud.

Send Health Connect and screen time from your Android phone to Home Assistant, MQTT or your own server. No cloud in between, no account, no analytics or tracking SDKs. Pair with Home Assistant by scanning one QR code, and get 34 Health Connect types and all your history. Works with any app that writes to Health Connect, such as Samsung Health, Google Health (Fitbit and Pixel Watch), Garmin Connect, Oura, Withings and Gadgetbridge. Your data goes only to the addresses you enter: your Home Assistant, your MQTT broker or your own webhook. The app contacts no other server. Home Assistant: - The Life Dashboard integration, installed through HACS. Scan the QR code it shows and you're paired, with no broker and no YAML. Every synced day lands in Home Assistant's long-term statistics on its own date, so a backfill fills in your history. - Receive, with the integration: a scale or blood pressure monitor connected to Home Assistant sends its readings to the app, which writes them into Health Connect (weight, height, body composition, blood pressure). Samsung Health and Google Health can show the weight and body fat from there. You switch it on per type. - MQTT Discovery, for a setup that already runs a broker: 25 of the 34 types plus screen time as sensors under one device, with optional TLS and login. Health Connect: - 34 types: steps, sleep with stages, heart rate, HRV, speed, blood pressure, blood glucose, VO2 max, skin temperature, cycle tracking and more. - Every record carries its source app and a stable ID, so a duplicate is easy to drop. Daily totals come from Health Connect itself, so a walk recorded by both phone and watch counts once. - Each sync sends only what changed since the last one, per data type, edits and deletions included. When a change can't be sent, the payload says so. - Optional data resolution: send dense series such as heart rate as one summary per 1, 5, 15 or 60 minutes. - Backfill of all your history runs in the background and picks up where it left off. Screen time: - Time per app, with a day boundary you choose. - Send every app, every app except the ones you select, or only the ones you select. An app left out never leaves the phone, though the day's total still counts its time. Webhooks: - A webhook of your own gets every record in full, including single meals, cycle tracking entries and workout details, which are events rather than sensor values. - Several URLs, custom headers, optional HMAC-SHA256 signing so your server can verify the sender, and client certificates (mTLS) for a server behind a reverse proxy. - Automatic retries, plus an outbox that keeps undelivered syncs (a week of them at the 15-minute interval) until your server is back. - A delivery log in the app, with the payload of each sync. Automation: - Syncs on its own at an interval of 15 minutes or longer, or at fixed times, on the days you pick, with quiet hours. - Home screen widget and Quick Settings tile. - An intent that Tasker and MacroDroid can use to start a sync. - A notification when syncs fail several times in a row (you pick 3, 5 or 10). Also: settings backup and restore (encrypted when secrets are included), in English, Dutch and German. GitHub releases are built by public CI and carry verifiable build provenance, and the build is reproducible, so F-Droid ships the same signed APK. Optionally, the separate self-hosted Life Dashboard Stack stores your data in Postgres with Grafana dashboards, and its MCP server lets an AI model that you run yourself read your history. The app itself contains no AI. Health data needs Android 9 or newer with Health Connect, which is built into Android 14 and later and is a free app from Google Play on Android 9 through 13. Screen time works on Android 8.0 and newer. Life Dashboard Companion is not a medical device and does not diagnose, treat, cure or prevent any medical condition. Ask a healthcare professional for medical advice, diagnosis or treatment.

First release: Nov 4, 2026, 1 total release.

Most recent release: Nov 4, 2026.

Website Repo

Appears in 0 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Nov 4, 2026 1.30.0
    ### Highlights - A new design, on every screen. The Health and Screen Time tabs open on whether your data arrives, per destination, with today's figures below it. The settings moved to their own pages, behind four tiles. - **Save Changes** is gone: switches and chips apply at once, and only what you type has a **Save** of its own. The Changed list below says where everything went. - The app speaks eleven languages, with French, Spanish, Italian, Portuguese (Brazil), Japanese, Arabic, Hindi and Simplified Chinese new. ### Added - The app in Simplified Chinese, asked for by @jHbO2Ortz in [#198](https://github.com/owen282000/life-dashboard-companion-app/issues/198). The names of the
    More…
    data types and Health Connect's own terms are the ones Android uses in Chinese. - The app in French, Spanish, Italian, Portuguese (Brazil), Japanese, Arabic and Hindi, so it now speaks eleven languages. Each uses the words Health Connect and Android use in that language, and the same words as the iPhone app. Arabic runs right to left. Native speakers are welcome to improve any of them on [Weblate](https://hosted.weblate.org/engage/life-dashboard-companion/). - **Today** on the Health tab: steps, sleep, resting heart rate and weight, only for what you send, each with a line over the last seven days. With none of those it shows the records sent today. - Every destination has its own row on the tab, with the time of its last delivery or what went wrong, and its own **Send test**, so you can check one address without the others. - Data export as CSV next to JSON, with a row per record, under **More > Export data**. - Logs can filter on **Failed**, **Webhook** and **MQTT**, next to **Health** and **Screen Time**. Tap a row for a page with everything the log holds about that delivery. Press and hold a row to delete just that one. - A **Paired** page after a pairing, which says whether the receiver took the test ping, with **Try again** when it did not and **Pick what to send** when no data types are selected yet. - **Notifications** says so when Android blocks the app's notifications, with **Open settings** to allow them. - A warning on the Health tab when nothing has been delivered for longer than the schedule explains. ### Changed - A new design, in all eleven languages. The tabs are still Health, Screen Time and Logs. Health shows where your data goes and whether it arrives, with **Sync Now** and **Add destination** under the destinations, and four tiles: **What to send**, **When to send**, **Receive** and **More**. Screen Time has **Apps to send**, **When to send**, **Day starts at** and **More**. What used to expand on the tab now opens as a page of its own, with Back to return. The typefaces are Space Grotesk and Space Mono. - **Save Changes** is gone. Switches, chips and other choices apply the moment you change them. A webhook, the MQTT broker, the interval and the day boundary have a **Save** of their own on their page, and Back discards what you typed. **Sync Now** no longer saves anything first. - **Data Types** is now **What to send**, sorted into categories, with **Essentials**, **All types** and **None**. **Data Resolution** and **Backfill** moved there too, as **Data resolution** and **Send history**, and so did access to Health Connect, on the **Health Connect access** row that used to be the card with **Open App**. - **Sync Schedule** is now **When to send**, and **Day Boundary** is **Day starts at**. - **Webhook** and **MQTT** are no longer rows on the tab that expand. A new destination starts at **Add destination**, which is also where **Scan a pairing code** is, and each destination opens from its row. - **Test ping** is now **Send test**, on a destination's page and on Logs. It uses what is saved. - **View** is now **Preview payload**, under **What to send** on Health and under **More** on Screen Time. **Export** moved to **More > Export data**. - **Advanced** and **Notifications** moved to **More**, on both tabs. So did **Keep full payloads**, which was at the top of Logs and is now under **Advanced**. - The info icon is gone: **About** is under **More**, with Help, Support, Privacy and Open source. **Rate the app** is under Support. Press and hold the version line for Nerd Stats, which now has the lifetime figures that were on the Health tab. **Backup and restore** and **Appearance** are under **More** on the Health tab. - Logs is built for scanning: one row per delivery with its status code, destination and time, and **Send test**, **Export** and **Clear** at the bottom. Export and Clear go by the rows the filter shows. - The setup has five steps: welcome, what to sync, where it goes, which data, and done. The last one lists what's left, with a button for each permission. Every step before it has **Skip setup**. - **None** under **What to send** sticks: with everything switched off, permissions you granted earlier no longer switch types back on. - You can remove your last destination; the tab then asks where your data should go. Removing a destination asks first and says what goes with it. - In Simplified Chinese, a backfill chunk is called 批 everywhere, where some screens said 分块. - The setup guide, the feature list, the payload reference, the pairing guide, the brand guides and the recipes describe the new screens. - The install steps name **Settings > Marketplace**, part of Home Assistant from 2026.11, with HACS for older versions. ### Fixed - Screen Time's today showed yesterday's figures when nothing had been used yet today. - The launcher counted as screen time on Android 11 and later, in the app and in what it sends. The launchers of the common phone makers are now left out, as the app always said, so your totals can drop from this version on. Days already sent change the next time they are sent; a launcher the app does not know still counts. - Changing MQTT on one tab no longer puts an older copy of the shared broker back from the other. - Health Connect's background access alone no longer counts as access, so a phone with only that permission is asked for the rest. - The check whether to show weight in pounds also works on Android 8, where the call it used does not exist. <!-- Release notes generated using configuration in .github/release.yml at 1.30.0 --> ## What's Changed ### Features * feat: The app in Simplified Chinese by @owen282000 in https://github.com/owen282000/life-dashboard-companion-app/pull/199 * feat: The app in French, Spanish, Italian, Portuguese (Brazil), Japanese, Arabic and Hindi by @owen282000 in https://github.com/owen282000/life-dashboard-companion-app/pull/203 * feat: A new design by @owen282000 in https://github.com/owen282000/life-dashboard-companion-app/pull/209 ### Dependencies * build(deps): Bump trufflesecurity/trufflehog from 3.99.2 to 3.99.7 by @dependabot[bot] in https://github.com/owen282000/life-dashboard-companion-app/pull/197 * build(deps): Bump the codeql-action group with 3 updates by @dependabot[bot] in https://github.com/owen282000/life-dashboard-companion-app/pull/196 * build(deps): Bump gradle-wrapper from 9.8.1 to 9.8.2 by @dependabot[bot] in https://github.com/owen282000/life-dashboard-companion-app/pull/194 * build(deps): Bump okhttp from 5.5.0 to 5.5.1 by @dependabot[bot] in https://github.com/owen282000/life-dashboard-companion-app/pull/192 * build(deps): Bump androidx.fragment:fragment from 1.8.9 to 1.9.1 by @dependabot[bot] in https://github.com/owen282000/life-dashboard-companion-app/pull/195 * build(deps): Bump org.jetbrains.kotlinx:kotlinx-serialization-json from 1.11.0 to 1.12.0 by @dependabot[bot] in https://github.com/owen282000/life-dashboard-companion-app/pull/193 * build(deps): Bump gradle/actions/wrapper-validation from 6.4.0 to 6.4.1 by @dependabot[bot] in https://github.com/owen282000/life-dashboard-companion-app/pull/208 * build(deps): Bump com.android.application from 9.4.1 to 9.5.0 by @dependabot[bot] in https://github.com/owen282000/life-dashboard-companion-app/pull/207 ### Other changes * ci: Release provenance also as in-toto JSON lines, and the Gradle wrapper validated in its own quick workflow by @owen282000 in https://github.com/owen282000/life-dashboard-companion-app/pull/191 * ci: Skip the APK build when only text changes by @owen282000 in https://github.com/owen282000/life-dashboard-companion-app/pull/206 * chore: Release 1.30.0 by @owen282000 in https://github.com/owen282000/life-dashboard-companion-app/pull/210 **Full Changelog**: https://github.com/owen282000/life-dashboard-companion-app/compare/1.29.0...1.30.0