2026-01-01 17:34:32 +01:00
2025-11-24 06:08:05 +00:00
2021-07-07 15:23:36 +02:00
2025-01-22 14:37:22 +01:00
2024-01-16 12:17:17 +00:00
2025-11-04 16:36:56 +00:00
2025-11-06 15:25:01 +01:00

GitHub Release GitHub Activity License Project Maintenance

Donate via PayPal Sponsor on GitHub

Garmin Connect

The Garmin Connect integration allows you to expose data from Garmin Connect to Home Assistant.

Install via HACS

  • The installation is done inside HACS (Home Assistant Community Store).
  • If you already have HACS installed click on the MyHomeAssistant button below, otherwise install HACS before adding this integration.
    You can find installation instructions here.
  • Once HACS is installed, search for garmin connect and click on "Download". Once downloaded, restart HomeAssistant.

📦 Installation

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

Configuration

  • In the sidebar, click 'Configuration', then 'Devices & Services'. Click the + icon to add "Garmin Connect" to your Home Assistant installation.
    • Enter the credentials of the Garmin Connect account you want to add.
    • Optionally -when MFA is enabled- it will ask for your MFA code.

After successful set up a standard set of sensors are enabled. You can enable more if needed by using the Entities page under Devices and services. (Filter on disabled state)

The integration will fetch new data every 5 minutes, make sure your devices sync to the Garmin Connect website.

Available Sensors

Not every sensor holds meaningful values, it depends on the tracking and health devices you use, or the apps you have connected.

Enabled by default:

Total Steps
Daily Step Goal
Total KiloCalories
Active KiloCalories
BMR KiloCalories
Burned KiloCalories
Total Distance Mtr
Active Time
Sedentary Time
Sleeping Time
Awake Duration
Sleep Duration
Total Sleep Duration
Floors Ascended
Floors Descended
Floors Ascended Goal
Min Heart Rate
Max Heart Rate
Resting Heart Rate
Avg Stress Level
Max Stress Level
Rest Stress Duration
Activity Stress Duration
Uncat. Stress Duration
Total Stress Duration
Low Stress Duration
Medium Stress Duration
High Stress Duration
Body Battery Charged
Body Battery Drained
Body Battery Highest
Body Battery Lowest
Body Battery Most Recent
Average SPO2
Lowest SPO2
Latest SPO2
Next Alarm Time
Total Sleep Duration
HRV Status
Gear Sensors
Chronological Age
Fitness Age
Achievable Fitness Age
Previous Fitness Age
Hydration
Hydration Goal
Hydration Daily Average
Hydration Sweat Loss
Hydration Activity Intake

Disabled by default:

Badges
User Points
User Level
Consumed KiloCalories
Remaining KiloCalories
Net Remaining KiloCalories
Net Calorie Goal
Wellness Start Time
Wellness End Time
Wellness Description
Wellness Distance Mtr
Wellness Active KiloCalories
Wellness KiloCalories
Highly Active Time
Floors Ascended Mtr
Floors Descended Mtr
Min Avg Heart Rate
Max Avg Heart Rate
Abnormal HR Counts
Last 7 Days Avg Heart Rate
Stress Qualifier
Stress Duration
Stress Percentage
Rest Stress Percentage
Activity Stress Percentage
Uncat. Stress Percentage
Low Stress Percentage
Medium Stress Percentage
High Stress Percentage
Latest SPO2 Time
Average Altitude
Moderate Intensity
Vigorous Intensity
Intensity Goal
Latest Respiration Update
Highest Respiration
Lowest Respiration
Latest Respiration
Weight
BMI
Body Fat
Body Water
Bone Mass
Muscle Mass
Physique Rating
Visceral Fat
Metabolic Age
Last Activities
Last Activity
Endurance Score

Screenshots

screenshot

Tips and Tricks

Set up an automation using the garmin_connect.add_body_composition service

Useful if you want to pass your weight from another (incompatible) device to Garmin Connect. Garmin Connect does not calculate your BMI when you enter your weight manually so it needs to be passed along for now.

alias: uiSendWeightToGarminConnect
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.weight
condition:
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: sensor.weight
        above: 75
      - condition: numeric_state
        entity_id: sensor.weight
        below: 88
action:
  - service: garmin_connect.add_body_composition
    data:
      entity_id: sensor.weight
      weight: "{{trigger.to_state.state}}"
      timestamp: "{{ as_timestamp(now())  | timestamp_local}}"
      bmi: >-
        {{ (trigger.to_state.state | float(0) / 1.86**2 )| round(1, default=0)
        }}
mode: single

Examples on how to test actions from HA GUI

Add Body Composition

action: garmin_connect.add_body_composition
data:
  entity_id: sensor.weight
  weight: 87
  bmi: 25.5
  bone_mass: 4.8

See the action template for other available values to add

NOTE: You need to enable the Weight entity

Full example:

alias: WithingsToGarmin
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.withings_poids
conditions:
  - condition: numeric_state
    entity_id: sensor.withings_poids
    above: 55
    below: 80
actions:
  - action: garmin_connect.add_body_composition
    metadata: {}
    data:
      entity_id: sensor.weight
      weight: "{{states('sensor.withings_poids')}}"
      timestamp: "{{ as_timestamp(now())  | timestamp_local}}"
      bmi: >-
        {{ (states('sensor.withings_poids') | float(0) / 1.72**2 )| round(1,
        default=0) }}
      bone_mass: "{{states('sensor.withings_bone_mass')}}"
      muscle_mass: "{{states('sensor.withings_masse_musculaire')}}"
      percent_hydration: >-
        {{ (float(states('sensor.withings_hydration')) /
        float(states('sensor.withings_poids')) * 100 ) | round(2, default=0) }}
      percent_fat: "{{states('sensor.withings_taux_de_graisse')}}"
mode: single

Set Active Gear

action: garmin_connect.set_active_gear
data:
  entity_id: sensor.adidas
  activity_type: running
  setting: set as default

Add Blood Pressure

action: garmin_connect.add_blood_pressure
data:
  entity_id: sensor.min_heart_rate
  systolic: 120
  diastolic: 80
  pulse: 60
  timestamp: 2025-1-21T07:34:00.000Z
  notes: Measured with Beurer BC54

Debugging

Add the relevant lines below to the configuration.yaml:

logger:
  default: info
  logs:
    custom_components.garmin_connect: debug

💖 Support This Project

If you find this library useful for your projects, please consider supporting its continued development and maintenance:

🌟 Ways to Support

  • Star this repository - Help others discover the project
  • 💰 Financial Support - Contribute to development and hosting costs
  • 🐛 Report Issues - Help improve stability and compatibility
  • 📖 Spread the Word - Share with other developers

💳 Financial Support Options

Donate via PayPal Sponsor on GitHub

Why Support?

  • Keeps the project actively maintained
  • Enables faster bug fixes and new features
  • Supports infrastructure costs (testing, AI, CI/CD)
  • Shows appreciation for hundreds of hours of development

Every contribution, no matter the size, makes a difference and is greatly appreciated! 🙏

Description
No description provided
Readme MIT 1.7 MiB
Languages
Python 97.9%
Shell 2.1%