Respiratory rate from Garmin (Health Snapshot & Avg during sleep)

Hi,

is there a way to include the respiratory rates that Garmin logs during Health Snapshots and night as data fields to plot on a chart?

Thanks, Florian

3 Likes

Hi,

I’d love to see this too. It would be really useful if Intervals made the nightly (and daily) respiratory rate available as a data field that we can chart, ideally alongside HRV and Resting HR in the dashboard. Those three together can paint a pretty solid picture of current recovery/strain — and respiratory rate often reacts earlier than RHR (similar to HRV), which makes it especially interesting for spotting things like an incoming infection early.

Related context (why this would be valuable): https://www.youtube.com/watch?v=2O-PX4n2G4E

So yes — +1 for a feature request to allow importing/visualizing Respiration (wellness) data from Garmin Connect in graphs, including values from Health Snapshot and sleep averages.

Thanks,
best wishes from sunny Tirol
Andreas

4 Likes

The combination of respiratory rate, HRV, and resting HR makes total sense, especially since Garmin already provides this data. It’s a clear gap in the current feature set and would add real value for recovery and health monitoring.

Fully agree with everything Andreas wrote. Why isn’t this available yet?

1 Like

Garmin has that data, but I don’t know for sure if they also make it available over the API…
Maybe they do, and then it shouldn’t be to hard to import it in a Custom Wellness field. I know that HRV from snapshot is available, but I don’t know if and how the other numbers are available. Could be an array of data, could be separate numbers, etc
Bottom line, if it is available in a direct way, easy. If it needs more dev work, patience. If Garmin isn’t making it available, no way.

1 Like

@MedTechCD @david - It looks like Garmin does expose sleep respiratory-rate metrics, because the garmin-grafana project is already pulling them from Garmin and writing them out (Influx) as fields.

In their fetcher, the sleep JSON (dailySleepDTO) contains:

  • averageRespirationValue
  • lowestRespirationValue
  • highestRespirationValue

…along with other useful stuff like overnight HRV and resting HR which are already present in Intervals. Here’s the relevant part I spotted:

all_sleep_data = garmin_obj.get_sleep_data(date_str)
sleep_json = all_sleep_data.get("dailySleepDTO", None)

# ...
"fields": {
            "sleepTimeSeconds": sleep_json.get("sleepTimeSeconds"),
            "deepSleepSeconds": sleep_json.get("deepSleepSeconds"),
            "lightSleepSeconds": sleep_json.get("lightSleepSeconds"),
            "remSleepSeconds": sleep_json.get("remSleepSeconds"),
            "awakeSleepSeconds": sleep_json.get("awakeSleepSeconds"),
            "averageSpO2Value": sleep_json.get("averageSpO2Value"),
            "lowestSpO2Value": sleep_json.get("lowestSpO2Value"),
            "highestSpO2Value": sleep_json.get("highestSpO2Value"),
            "averageRespirationValue": sleep_json.get("averageRespirationValue"),
            "lowestRespirationValue": sleep_json.get("lowestRespirationValue"),
            "highestRespirationValue": sleep_json.get("highestRespirationValue"),
            "awakeCount": sleep_json.get("awakeCount"),
            "avgSleepStress": sleep_json.get("avgSleepStress"),
            "sleepScore": ((sleep_json.get("sleepScores") or {}).get("overall") or {}).get("value"),
            "restlessMomentsCount": all_sleep_data.get("restlessMomentsCount"),
            "avgOvernightHrv": all_sleep_data.get("avgOvernightHrv"),
            "bodyBatteryChange": all_sleep_data.get("bodyBatteryChange"),
            "restingHeartRate": all_sleep_data.get("restingHeartRate"),
            "avgSkinTempDeviationC": all_sleep_data.get("avgSkinTempDeviationC"),
            "avgSkinTempDeviationF": all_sleep_data.get("avgSkinTempDeviationF")
            }
# ...

Source: garmin_fetch.py in garmin-grafana:
https://github.com/arpanghosh8453/garmin-grafana/blob/main/src/garmin_grafana/garmin_fetch.py

So these values (and others) seem to be available “over the API” already. It would be awesome if Intervals.icu could also import and expose these respiration fields (sleep avg + min/max), ideally as chartable series alongside HRV/RHR.

Bye from snowy Tirol
Andreas