{"id":36584021,"url":"https://github.com/AlexxIT/SmartScaleConnect","last_synced_at":"2026-01-19T03:00:42.759Z","repository":{"id":308704196,"uuid":"1033769647","full_name":"AlexxIT/SmartScaleConnect","owner":"AlexxIT","description":"Application for sync smart scale data between different ecosystems","archived":false,"fork":false,"pushed_at":"2025-12-01T13:45:11.000Z","size":745,"stargazers_count":59,"open_issues_count":4,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-12-04T02:38:54.326Z","etag":null,"topics":["fitbit","garmin","garmin-connect","home-assistant","mi-fit","xiaomi","zepp"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlexxIT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-07T10:12:26.000Z","updated_at":"2025-12-02T21:15:19.000Z","dependencies_parsed_at":"2025-12-02T23:05:40.027Z","dependency_job_id":null,"html_url":"https://github.com/AlexxIT/SmartScaleConnect","commit_stats":null,"previous_names":["alexxit/smartscaleconnect"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/AlexxIT/SmartScaleConnect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FSmartScaleConnect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FSmartScaleConnect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FSmartScaleConnect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FSmartScaleConnect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexxIT","download_url":"https://codeload.github.com/AlexxIT/SmartScaleConnect/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FSmartScaleConnect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28559339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T00:46:33.223Z","status":"online","status_checked_at":"2026-01-19T02:00:08.049Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fitbit","garmin","garmin-connect","home-assistant","mi-fit","xiaomi","zepp"],"created_at":"2026-01-12T08:00:27.042Z","updated_at":"2026-01-19T03:00:42.748Z","avatar_url":"https://github.com/AlexxIT.png","language":"Go","funding_links":[],"categories":["Training \u0026 Fitness"],"sub_categories":[],"readme":"![](assets/scaleconnect.png)\n\nApplication for synchronizing smart scale data between different ecosystems.\n\n**Features:**\n\n- Load data from [Garmin], [Home Assistant], [Mi Fitness], [My TANITA], [Picooc], [Xiaomi Home], [Zepp Life], [CSV], [JSON]\n- Save data to [Garmin], [Home Assistant], [Zepp Life], [CSV], [JSON]\n- Support params: `Weight`, `BMI`, `Body Fat`, `Body Water`, `Bone Mass`, `Metabolic Age`, `Muscle Mass`, `Physique Rating`, `ProteinMass`, `Visceral Fat`, `Basal Metabolism`, `Heart Rate`, `Skeletal Muscle Mass`\n- Support multiple users data\n- Support scripting language \n\n[Garmin]: https://connect.garmin.com/\n[Garmin Connect]: https://connect.garmin.com/\n[Home Assistant]: https://www.home-assistant.io/\n[Mi Fitness]: https://play.google.com/store/apps/details?id=com.xiaomi.wearable\n[My TANITA]: https://mytanita.eu/\n[Picooc]: https://play.google.com/store/apps/details?id=com.picooc.international\n[Xiaomi Home]: https://play.google.com/store/apps/details?id=com.xiaomi.smarthome\n[Zepp Life]: https://play.google.com/store/apps/details?id=com.xiaomi.hm.health\n[CSV]: https://en.wikipedia.org/wiki/Comma-separated_values\n[JSON]: https://en.wikipedia.org/wiki/JSON\n\n**Inspired by:** series of projects from [@lswiderski](https://github.com/lswiderski).\n\n**Attention.** The application is at an early stage of development. The configuration and functionality can change a lot.\n\n---\n\n\u003c!-- TOC --\u003e\n  * [Fast start](#fast-start)\n  * [Configuration](#configuration)\n    * [To: Garmin](#to-garmin)\n    * [From: Garmin](#from-garmin)\n    * [From: Xiaomi](#from-xiaomi)\n    * [From: Mi Fitness](#from-mi-fitness)\n    * [From: Xiaomi Home](#from-xiaomi-home)\n    * [From: Zepp Life](#from-zepp-life)\n    * [To: Zepp Life](#to-zepp-life)\n    * [From: My TANINA](#from-my-tanina)\n    * [From: Picooc](#from-picooc)\n    * [From: Fitbit](#from-fitbit)\n    * [From/to: CSV](#fromto-csv)\n    * [From/to: JSON](#fromto-json)\n    * [From: YAML](#from-yaml)\n    * [From: Home Assistant](#from-home-assistant)\n    * [To: Home Assistant](#to-home-assistant)\n  * [Command line (CLI)](#command-line-cli)\n  * [Sync logic](#sync-logic)\n  * [Scripting language](#scripting-language)\n  * [Known Scales](#known-scales)\n  * [Useful links](#useful-links)\n\u003c!-- TOC --\u003e\n\n## Fast start\n\n- Download binary for your OS from [latest release](https://github.com/AlexxIT/SmartScaleConnect/releases/).\n- Or use the Docker [container](https://hub.docker.com/r/alexxit/smartscaleconnect).\n- Or add Home Assistant [add-on](https://my.home-assistant.io/redirect/supervisor_addon/?addon=a889bffc_scaleconnect\u0026repository_url=https%3A%2F%2Fgithub.com%2FAlexxIT%2Fhassio-addons).\n\n## Configuration\n\nA configuration file with name `scaleconnect.yaml` may be located in the current working directory or near application binary.\n\nThe [YAML](https://en.wikipedia.org/wiki/YAML) format is very demanding on indentation and spaces. Please observe them.\n\nAfter the first launch, the `scaleconnect.json` file may appear next to the configuration file. It contains the authorization credentials for your services.\n\nConfig file example:\n\n```yaml\nsync_alex_fitbit:\n  from: fitbit AlexMyFitbitData.zip\n  to: garmin alex@gmail.com garmin-password\n\nsync_alex_zepp:\n  from: zepp/xiaomi alex@gmail.com xiaomi-password\n  to: garmin alex@gmail.com garmin-password\n  expr:\n    Weight: 'BodyFat == 0 || Date \u003e= date(\"2024-11-25\") ? 0 : Weight'\n\nsync_alex_mifitness:\n  from: mifitness alex@gmail.com xiaomi-password\n  to: garmin alex@gmail.com garmin-password\n  expr:\n    Weight: 'BodyFat == 0 ? 0 : Weight'\n    BodyFat: 'Date \u003e= date(\"2025-04-01\") \u0026\u0026 Source == \"blt.3.1abcdefabcd00\" ? 0 : BodyFat'\n```\n\n### To: Garmin\n\n![](assets/garmin.png)\n\n**Limitations:**\n\n- Currently, two-factor authentication is not supported.\n- Currently, China server is not supported.\n\n**Example.** Upload data go [Garmin Connect] from [CSV]:\n\n```yaml\nsync_garmin:\n  from: csv alex_garmin.csv\n  to: garmin {username} {password}\n```\n\nIf you want to upload custom manual data to Garmin, just import it from CSV file.\n\n### From: Garmin\n\n**Example.** Download data from [Garmin Connect] to [CSV]:\n\n```yaml\nsync_garmin:\n  from: garmin {username} {password}\n  to: csv alex_garmin.csv\n```\n\n### From: Xiaomi\n\nXiaomi scales, depending on the model, are supported in different applications - [Mi Fitness], [Xiaomi Home], [Zepp Life].\n\n**Mi Body Composition Scale 2** (`XMTZC05HM`)\n\n- Supported in the **Zepp Life** app\n  - Get user data: `from: zepp/xiaomi alex@gmail.com xiaomi-password`\n  - Get other user data: `from: zepp/xiaomi alex@gmail.com xiaomi-password Yulia`\n\n**Mi Body Composition Scale S400 CN** (`MJTZC01YM`, `yunmai.scales.ms103`)\n\n- **China version**\n- Supported in the **Mi Fitness** app in China region\n  - Get user data: `from: mifitness alex@gmail.com xiaomi-password`\n  - Get scale data: `from: mifitness alex@gmail.com xiaomi-password yunmai.scales.ms103`\n- Supported in the **Mi Fitness** app in Euro region (ONLY via [Vevs mod](https://rumihome.ru/prilozheniya/mihome-vevs))\n  - Get user data: `from: mifitness alex@gmail.com ru`\n  - Get scale data: `from: mifitness alex@gmail.com xiaomi-password yunmai.scales.ms103`\n- Supported in the **Xiaomi Home** app\n  - Get scale data: `from: xiaomihome alex@gmail.com xiaomi-password cn yunmai.scales.ms103`\n\n**Mi Body Composition Scale S400 EU** (`MJTZC01YM`, `yunmai.scales.ms104`)\n\n- **Euro version**\n- Not supported in the **Mi Fitness** app\n- Supported in the **Xiaomi Home** app in Euro region\n  - Get scale data: `from: xiaomihome alex@gmail.com xiaomi-password ru yunmai.scales.ms104`\n\n**Xiaomi 8-Electrode Body Composition Scale CN** (`XMTZC01YM`, `yunmai.scales.ms3001`)\n\n- **China version**\n- Supported in the **Mi Fitness** app\n  - Get user data: `from: mifitness alex@gmail.com xiaomi-password`\n- Not supported in the **Xiaomi Home** app\n\n### From: Mi Fitness\n\nTested on scales:\n\n- **Mi Body Composition Scale S400 CN** (`MJTZC01YM`, `yunmai.scales.ms103`) - getting other users data is supported.\n- **Xiaomi 8-Electrode Body Composition Scale CN** (`XMTZC01YM`, `yunmai.scales.ms3001`) - getting other users data is not supported yet.\n\n**Example.** Get data from all scales of the main user (China region):\n\n```yaml\nsync_mifitness:\n  from: mifitness {username} {password}\n  to: csv alex_mifitness.csv\n```\n\n**Example.** Get data from all scales of the main user (other region):\n\n- `de` (Europe)\n- `i2` (India)\n- `ru` (Russia)\n- `sg` (Singapore)\n- `us` (United States)\n\n```yaml\nsync_mifitness:\n  from: mifitness {username} {password} {region}\n  to: csv alex_mifitness_region.csv\n```\n\n**Example.** Get the data of all users from specific scales:\n\n```yaml\nsync_mifitness:\n  from: mifitness {username} {password} {scales model}\n  to: csv all_users_mifitness.csv\n```\n\n- You can check scales model name from Mi Fitness app \u003e Device \u003e Scale \u003e About device \u003e Device model.\n- You can add a filter by username.\n\n**Example:**\n\n```yaml\nsync_yulia_mifitness:\n  from: mifitness alex@gmail.com xiaomi-password yunmai.scales.ms103\n  to: csv yulia_mifitness.csv\n  expr:\n    Weight: 'User == \"Yulia\" ? Weight : 0'\n```\n\n### From: Xiaomi Home\n\nTested on scales:\n\n- **Mi Body Composition Scale S400 EU** (`MJTZC01YM`, `yunmai.scales.ms104`) - getting other users data is supported.\n\n**Example.** Get the data of all users from specific scales and region:\n\n- `de` (Europe)\n- `i2` (India)\n- `ru` (Russia)\n- `sg` (Singapore)\n- `us` (United States)\n\n```yaml\nsync_xiaomihome:\n  from: xiaomihome {username} {password} {region} {scales model}\n  to: csv all_users_xiaomihome.csv\n```\n\n**Example:**\n\n```yaml\nsync_yulia_xiaomihome:\n  from: xiaomihome alex@gmail.com xiaomi-password ru yunmai.scales.ms104\n  to: csv yulia_xiaomihome.csv\n  expr:\n    Weight: 'User == \"Yulia\" ? Weight : 0'\n```\n\n### From: Zepp Life\n\n**Limitations:**\n\n- Currently, only login via a Xiaomi account is supported.\n- When syncing, you are logged out of the mobile app. It is not known how this problem can be fixed.\n\nTested on scales:\n\n- Mi Body Composition Scale 2 (XMTZC05HM)\n\n**Example.** Get data from all scales of the main user:\n\n```yaml\nsync_zepp:\n  from: zepp/xiaomi {username} {password}\n  to: csv alex_zepp.csv\n```\n\n**Example.** Getting data from all scales of the selected user:\n\n```yaml\nsync_zepp:\n  from: zepp/xiaomi {username} {password} {user}\n  to: csv alex_zepp.csv\n```\n\n### To: Zepp Life\n\nYou can upload data to [Zepp Life].\n\n**Important.** Your data must have `Weight`, `BodyFat`, `BodyScore` and `Height`, so it will be displayed in advanced view. Otherwise, it will only be displayed as `Weight` data.\n\n**Example.** Send data to Zepp Life from config file:\n\n```yaml\nsync_zepp:\n  from:\n    Weight: 64.30\n    BodyFat: 10.0\n    BodyScore: 85\n    Height: 172\n  to: zepp/xiaomi {username} {password}\n```\n\n### From: My TANINA\n\nOn Tanita servers, the weighing time is stored with an unknown time zone and may be incorrect.\n\n```yaml\nsync_tanita:\n  from: tanita {username} {password}\n  to: csv alex_tanita.csv\n```\n\n### From: Picooc\n\n**Example.** Get data from all scales of the main user:\n\n```yaml\nsync_picooc:\n  from: picooc {username} {password}\n  to: csv alex_picooc.csv\n```\n\n**Example.** Getting data from all scales of the selected user:\n\n```yaml\nsync_picooc:\n  from: picooc {username} {password} {user}\n  to: csv alex_picooc.csv\n```\n\n### From: Fitbit\n\nMy Fitbit Aria scales are no longer working. Therefore, I am interested in this service only from the point of view of archived data.\n\nGoogle bought this service and sent an email with the subject \"Take action by February 2, 2026 to keep using Fitbit\". There they offer to [download all the data](https://www.fitbit.com/settings/data/export), otherwise it will disappear.\n\n**Example.** Retrieving data from the archive:\n\n```yaml\nsync_fitbit:\n  from: fitbit MyFitbitData.zip\n  to: csv alex_fitbit.csv\n```\n\n### From/to: CSV\n\n![](assets/excel.png)\n\nA good format for human-readable text. The time inside the file is always your local time. Well-supported in MS Office. It is convenient to build quick analytics there.\n\nYou can use [CSV] **file** or **HTTP-link** as source and CSV **file**, **HTTP-link** or **stdout** as destination:\n\n```yaml\nsync_from_file:\n  from: csv source.csv\n\nsync_from_http:\n  from: csv http://192.168.1.123/source.csv\n  \nsync_to_file:\n  to: csv destination.csv\n\nsync_to_http:\n  to: csv http://192.168.1.123:8123/api/webhook/594b7e73-1f0f-4c3c-aded-eeaee78a6790\n\nsync_to_stdout:\n  to: csv stdout\n```\n\nFrom link will be downloaded with GET request. To link will be uploaded with POST request.\n\n### From/to: JSON\n\nSame as [CSV], but [JSON] file or HTTP-link as source and CSV file or HTTP-link as destination.\n\n### From: YAML\n\nYou can pass weighting data to config in raw YAML form. This is useful when integrating with other software, such as Home Assistant.\n\n```yaml\nsync_one_yaml:\n  from:\n    Weight: 65.0\n    BMI: 21.0\n    BodyFat: 10.0\n  to: garmin {username} {password}\n\nsync_many_yaml:\n  from:\n    - Data: '2025-08-01T09:00:00Z'\n      Weight: 65.0\n    - Data: '2025-08-02T09:00:00Z'\n      Weight: 66.0\n  to: zepp/xiaomi {username} {password}\n```\n\n### From: Home Assistant\n\n**Home Assistant Add-on**\n\nYou can call `hassio.addon_stdin` service and pass **scaleconnect** config as `input`. Remember that the names of the synchronization instructions are located at the top level of the configuration. There may be one or more such instructions.\n\n```yaml\naction: hassio.addon_stdin\ndata:\n  addon: a889bffc_scaleconnect  # addon ID\n  input:\n    sync_garmin:  # sync name (use any)\n      from:\n        Weight: '{{ states(\"sensor.mi_body_composition_scale_mass\")|float }}'  # you can use templates\n        BMI: 21.0\n        BodyFat: 10.0\n      to: garmin {username} {password}\n```\n\n**Docker or venv**\n\nYou need to download the binary file for your OS yourself, put it in the `/config` folder and give it the launch rights (`chmod +x scaleconnect`). Then write automation:\n\n```yaml\nshell_command:\n  scale_sync: \u003e-\n    /config/scaleconnect -c '{{ {\n      \"sync_garmin\": {\n        \"from\": {\n          \"Weight\": states(\"sensor.mi_body_composition_scale_mass\")|float,\n        },\n        \"to\": \"garmin {username} {password}\"\n      }\n    }|tojson }}'\n```\n\n### To: Home Assistant\n\nEach sync, the most recent weighing will be uploaded to the Home Assistant.\n\nModify the example as you like. Add the other parameters of your scales. The data will be saved during HA reboots. Graphs will remember the history of changes.\n\nAdd to your **configuration.yaml**:\n\n```yaml\ninput_number:\n  alex_weight:\n    name: Alex Weight\n    min: 50\n    max: 80\n    unit_of_measurement: kg\n    icon: mdi:weight\n  alex_bmi:\n    name: Alex BMI\n    min: 15\n    max: 30\n```\n\nAdd automation:\n\n```yaml\nalias: Weight Data\ntriggers:\n  - trigger: webhook\n    allowed_methods: [ POST ]\n    local_only: true\n    webhook_id: \"594b7e73-1f0f-4c3c-aded-eeaee78a6790\"  # change to random\nconditions: []\nactions:\n  - action: persistent_notification.create\n    data:\n      message: \"{{ trigger.json }}\"  # only for tests\n  - action: input_number.set_value\n    data:\n      value: \"{{ trigger.json.Weight|round(2) }}\"\n    target:\n      entity_id: input_number.alex_weight  # change here\n  - action: input_number.set_value\n    data:\n      value: \"{{ trigger.json.BMI|round(2) }}\"\n    target:\n      entity_id: input_number.alex_bmi  # change here\nmode: single\n```\n\nAdd to `scaleconnect.yaml`:\n\n```yaml\nsync_hass:\n  from: mifitness alex@gmail.com xiaomi-password\n  to: json/latest http://192.168.1.123:8123/api/webhook/594b7e73-1f0f-4c3c-aded-eeaee78a6790\n```\n\n## Command line (CLI)\n\n**Options:**\n\n- `-c {path to config file}` or `-c {raw config in YAML/JSON format}` - Config file path or content.\n- `-r {duration}` - Repeat config file processing after timeout (format: `2h0m0s`).\n- `-i` - \"interactive mode\" for receiving config file content in YAML/JSON format via `stdin` (single line with `\\n` at the end).\n\n**Example.** Send config content from command line and receive response to `stdout`:\n\n```shell\n./scaleconnect -c '{\"sync1\":{\"from\":\"garmin alex@gmail.com garmin-password\",\"to\":\"json stdout\"}}'\n```\n\nBy running the app in \"interactive mode\", you can send commands to it via `stdin` and receive responses in `stdout`.\n\n## Sync logic\n\nEvery time you start the app, the weight data is fully synchronized:\n\n- All the source data for the entire time is loaded.\n- All destination data for the entire time is loaded.\n- If the timestamp completely matches, the data is considered the same.\n  - If all other parameters match, the weighting **is skipped**.\n  - If the other parameters are different, the weighting is **completely replaced** by the new data.\n  - If the `Weight` column is zero, the destination weighting **is deleted**.\n- If the timestamp does not match, the weighing **is uploaded** to the service.\n- If the `Weight` column has zero, the weighting **is skipped**.\n\nAt the first start, I recommend downloading all your data from all services to CSV file and analyze it in Excel for some incorrect data.\n\nIf you need to delete a lot of incorrect data from Garmin, you can download it to CSV file, put zeros in the `Weight` column, and then upload this CSV file to Garmin again.\n\n## Scripting language\n\nYou can change the synchronization behavior and change the weighting values using the powerful scripting language - [expr](https://expr-lang.org/).\n\n```yaml\nsync_expr:\n  expr:\n    Date: 'Date - duration(\"1h\")'             # string RFC 3339, you can adjust the weighing time\n    Weight: 'Weight \u003e 60 ? 0 : Weight'        # float kg, you can use conditions\n    BMI: 'BMI * 0.95'                         # float index, mathematical formulas can be used\n    BodyFat: 'BodyFat - 5.0'                  # float percent, mathematical formulas can be used\n    BodyWater: 'BodyWater'                    # float percent\n    BoneMass: 'BoneMass'                      # float kg\n    MetabolicAge: 'MetabolicAge'              # int years\n    MuscleMass: 'MuscleMass'                  # float kg\n    PhysiqueRating: 'PhysiqueRating'          # int index, from 1 to 9\n    ProteinMass: 'ProteinMass'                # float kg\n    VisceralFat: 'VisceralFat'                # int index, from 1 to 59\n    BasalMetabolism: 'BasalMetabolism'        # int kcal\n    BodyScore: 'BodyScore'                    # int index, from 1 to 100\n    HeartRate: 'HeartRate'                    # int bpm\n    Height: 'Height'                          # float cm\n    SkeletalMuscleMass: 'SkeletalMuscleMass'  # float kg\n    User: 'User'                              # string\n    Source: 'Source + \" some other text\"'     # string, adding custom text information\n```\n\nFor example, many scales measure the `MuscleMass` parameter. Although professional scales, including Garmin, measure `SkeletalMuscleMass`. If you want the `MuscleMass` parameter to be displayed in Garmin instead of `SkeletalMuscleMass`, do this:\n\n```yaml\nsync_expr:\n  expr:\n    SkeletalMuscleMass: 'MuscleMass'  # replace the skeletal mass data with a regular mass\n```\n\nFor example, I bought a new scale from Xiaomi and don't want to sync data from the Zepp after a certain date. And also I don't want to synchronize data without fat information (incorrect weighings):\n\n```yaml\nsync_alex_zepp:\n  expr:\n    Weight: 'BodyFat == 0 || Date \u003e= date(\"2024-11-25\") ? 0 : Weight'\n```\n\nOr I bought a new **Xiaomi 8-Electrode Scale** in addition to the old one **Xiaomi S400**. Now the S400 shows a completely wrong fat percentage. But I want to leave the weights from ols scales because they have **skeletal muscle mass** data, and the new scales don't have this param. Also, I want to ignore weighing without fat information.\n\n```yaml\nsync_alex_mifitness:\n  expr:\n    Weight: 'BodyFat == 0 ? 0 : Weight'  # ignore weighing without fat information\n    BodyFat: 'Date \u003e= date(\"2025-04-01\") \u0026\u0026 Source == \"blt.3.1abcdefabcd00\" ? 0 : BodyFat'  # zero body fat from old scales\n```\n\n## Known Scales\n\n| Scale                                                 | Price | Application    | Sync         | Comment                 |\n|-------------------------------------------------------|-------|----------------|--------------|-------------------------|\n| Garmin Index S2 Smart Scale (010-02294-02)            | $200  | Garmin Connect | Wi-Fi        | Simple impedance        |\n| Fitbit Aria Air Smart Scale (FB203WT)                 | $50   | Fitbit         | Wi-Fi        | Simple impedance        |\n| Mi Smart Scale 2                                      | $20   | Zepp Life      | Mobile Phone | No impedance            |\n| Mi Body Composition Scale 2 (XMTZC05HM)               | $30   | Zepp Life      | Mobile Phone | Simple impedance        |\n| Mi Body Composition Scale S400 (MJTZC01YM)            | $30   | Xiaomi Home    | BLE Gateway  | Dual-frequncy impedance |\n| Xiaomi 8-Electrode Body Composition Scale (XMTZC01YM) | $65   | Mi Fitness     | Wi-Fi        | 8-Electrode impedance   |\n\n## Useful links\n\n- https://github.com/lswiderski/WebBodyComposition\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlexxIT%2FSmartScaleConnect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAlexxIT%2FSmartScaleConnect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlexxIT%2FSmartScaleConnect/lists"}