22
33[ ![ hacs] [ hacs-badge ]] [ hacs ]
44
5- Home Assistant integration for ** Fitdays / ICOMON smart scales** — the Robi S6 and
6- the family of rebadged body-composition scales that use the Fitdays app.
5+ Home Assistant integration for Fitdays and ICOMON smart scales: the Robi S6 and
6+ the rebadged body-composition scales that use the Fitdays app.
77
8- Your scale already measures fat, muscle, water, bone mass, BMR and body age. It
9- computes them from bio-impedance, uploads them, and then they live only inside the
10- app. This integration brings them into Home Assistant.
8+ Your scale computes fat, muscle, water, bone mass, BMR and body age from
9+ bio-impedance, uploads them, and then they stay inside the app. This integration
10+ reads them into Home Assistant.
1111
1212## Why not Bluetooth?
1313
14- Every other smart-scale option in Home Assistant reads the scale over BLE, which
15- means:
14+ The other smart-scale options in Home Assistant read the scale over BLE. That
15+ costs you three things.
1616
17- * Home Assistant has to be in Bluetooth range ** at the moment you step on** , or the
18- weigh-in is simply lost.
19- * You get weight, and little else — the body-composition maths happens in the
20- vendor's cloud, not on the scale.
21- * No history: nothing before the day you set it up.
17+ Home Assistant has to be in Bluetooth range at the moment you step on, or the
18+ weigh-in is lost. You get weight and little else, because the body-composition
19+ maths runs in the vendor's cloud rather than on the scale. And you get no
20+ history from before the day you set it up.
2221
23- This integration talks to the Fitdays cloud instead, so every measurement lands in
24- Home Assistant regardless of where you weighed yourself, with the full set of
25- metrics and your existing history behind it.
22+ This integration reads the Fitdays cloud instead, so a weigh-in lands in Home
23+ Assistant wherever you took it, with every metric and your existing history.
2624
2725## Features
2826
29- - ** One device per person.** A Fitdays account can hold several member profiles;
30- each becomes its own Home Assistant device, so a shared scale doesn't produce one
31- ambiguous pile of sensors. Profiles added in the app later appear without a reload.
32- - ** Full body composition** — weight, BMI, body fat (% and kg), muscle (% and kg),
33- skeletal muscle, body water, bone mass, protein, subcutaneous and visceral fat,
34- BMR, body age, and impedance.
35- - ** Goal tracking** — target weight and how far you are from it.
36- - ** Local-history-friendly** — ` last_measurement ` is a proper timestamp sensor, so
37- automations can react to a new weigh-in.
38- - Diagnostics + system health, English and Dutch translations.
27+ - One device per person. A Fitdays account can hold several member profiles, and
28+ each becomes its own Home Assistant device, so a shared scale does not produce
29+ one ambiguous pile of sensors. A profile added in the app appears without a
30+ reload.
31+ - Body composition: weight, BMI, body fat in percent and kg, muscle in percent
32+ and kg, skeletal muscle, body water, bone mass, protein, subcutaneous and
33+ visceral fat, BMR, body age and impedance.
34+ - Target weight and the distance to it.
35+ - ` last_measurement ` is a timestamp sensor, so an automation can trigger on a new
36+ weigh-in.
37+ - Diagnostics, system health, and English and Dutch translations.
3938
4039## Installation
4140
@@ -54,13 +53,13 @@ restart.
5453
5554** Settings → Devices & Services → Add Integration → Fitdays**
5655
57- Enter the email and password you use in the Fitdays app, plus the two-letter country
58- code your account is registered in ( ` NL ` by default) .
56+ Enter the email and password you use in the Fitdays app, plus the two-letter
57+ country code your account is registered in, ` NL ` by default.
5958
6059Your password is hashed (double MD5, exactly as the app does it) before anything
61- leaves Home Assistant, and only that digest is stored in the config entry — never
60+ leaves Home Assistant, and only that digest is stored in the config entry, never
6261the plaintext. The digest is what lets the integration silently renew an expired
63- session instead of nagging you to log in again.
62+ session without asking you to log in again.
6463
6564## Entities
6665
@@ -70,8 +69,8 @@ Per member profile:
7069| ---| ---|
7170| Weight | kg, with measurement context as attributes |
7271| BMI | |
73- | Body fat | % — and * Body fat mass* in kg |
74- | Muscle | % — and * Muscle mass* in kg |
72+ | Body fat | %, with Body fat mass in kg as a second sensor |
73+ | Muscle | %, with Muscle mass in kg as a second sensor |
7574| Skeletal muscle | % (mass variant disabled by default) |
7675| Body water | % (mass variant disabled by default) |
7776| Bone mass | kg |
@@ -80,33 +79,33 @@ Per member profile:
8079| Basal metabolic rate | kcal |
8180| Body age | years |
8281| Last measurement | timestamp |
83- | Subcutaneous fat, Heart rate, Impedance, Target weight, Weight to target, Measurements | disabled by default — enable as needed |
82+ | Subcutaneous fat, Heart rate, Impedance, Target weight, Weight to target, Measurements | disabled by default, enable as needed |
8483
8584Heart rate only reports on scales that measure it (` measures_heart_rate ` on the
8685device). On a scale without it the sensor stays * unknown* , not * unavailable* .
8786
8887## Notes and limitations
8988
90- - ** Cloud polling** , every 30 minutes. Scales are stepped on a couple of times a
91- day, so there is nothing to gain from polling harder.
92- - Weigh-ins taken without proper skin contact come back ** weight-only** , with no
89+ - Cloud polling every 30 minutes. A scale gets stepped on a couple of times a
90+ day, so polling harder buys nothing .
91+ - A weigh-in taken without proper skin contact comes back weight-only, with no
9392 impedance and so no body composition. The body-composition sensors go to
94- * unknown* for that weigh-in rather than holding their previous value, and the
95- ` weight_only ` attribute on the weight sensor flags why.
96- - The integration is ** read-only** . It never modifies your Fitdays account.
93+ unknown for that weigh-in rather than holding their previous value, and the
94+ ` weight_only ` attribute on the weight sensor says why.
95+ - The integration is read-only. It never writes to your Fitdays account.
9796- Brand artwork in ` custom_components/fitdays/brand/ ` is a generic placeholder
9897 glyph, not the vendor's logo. Home Assistant reads that folder from 2026.3.0
9998 onward; on older cores the integration renders without an icon.
10099
101100## Disclaimer
102101
103- Not affiliated with, endorsed by, or supported by GUANGDONG ICOMON or Fitdays. Built
104- on [ ` fitdays ` ] ( https://github.com/AboveColin/fitdays ) , an unofficial client derived
105- from the app's own traffic. Endpoints may change without notice.
102+ Not affiliated with or supported by GUANGDONG ICOMON or Fitdays. Built on
103+ [ ` fitdays ` ] ( https://github.com/AboveColin/fitdays ) , an unofficial client derived
104+ from the app's own traffic. The endpoints can change without notice.
106105
107106## Licence
108107
109- MIT — see [ LICENSE] ( LICENSE ) .
108+ MIT, see [ LICENSE] ( LICENSE ) .
110109
111110[ hacs ] : https://github.com/hacs/integration
112111[ hacs-badge ] : https://img.shields.io/badge/HACS-Custom-41BDF5.svg
0 commit comments