Bump actions/checkout from 5 to 6
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 connectand click on "Download". Once downloaded, restart HomeAssistant.
📦 Installation
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
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
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! 🙏
