@@ -153,15 +153,21 @@ def from_garmin_response(cls, data: dict[str, Any]) -> Optional["GarminHRVData"]
153153 parsed_data = {}
154154
155155 # Primary HRV value - use lastNightAvg as RMSSD equivalent
156- if "lastNightAvg" in hrv_summary :
156+ if (
157+ "lastNightAvg" in hrv_summary
158+ and hrv_summary ["lastNightAvg" ] is not None
159+ ):
157160 parsed_data ["hrv_rmssd" ] = float (hrv_summary ["lastNightAvg" ])
158161
159162 # Weekly average as backup SDRR value
160- if "weeklyAvg" in hrv_summary :
163+ if "weeklyAvg" in hrv_summary and hrv_summary [ "weeklyAvg" ] is not None :
161164 parsed_data ["hrv_sdrr" ] = float (hrv_summary ["weeklyAvg" ])
162165
163166 # No direct score in Garmin API, use lastNightAvg
164- if "lastNightAvg" in hrv_summary :
167+ if (
168+ "lastNightAvg" in hrv_summary
169+ and hrv_summary ["lastNightAvg" ] is not None
170+ ):
165171 parsed_data ["hrv_score" ] = float (hrv_summary ["lastNightAvg" ])
166172
167173 if not any (parsed_data .values ()):
@@ -190,15 +196,15 @@ def from_garmin_response(cls, data: dict[str, Any]) -> Optional["GarminStressDat
190196 try :
191197 parsed_data = {}
192198
193- # Use the actual Garmin API field names
194- if "avgStressLevel" in data :
199+ # Use the actual Garmin API field names - handle None values
200+ if "avgStressLevel" in data and data [ "avgStressLevel" ] is not None :
195201 parsed_data ["avg_stress" ] = float (data ["avgStressLevel" ])
196202
197- if "maxStressLevel" in data :
203+ if "maxStressLevel" in data and data [ "maxStressLevel" ] is not None :
198204 parsed_data ["max_stress" ] = float (data ["maxStressLevel" ])
199205
200206 # Use average as score since no direct score available
201- if "avgStressLevel" in data :
207+ if "avgStressLevel" in data and data [ "avgStressLevel" ] is not None :
202208 parsed_data ["stress_score" ] = float (data ["avgStressLevel" ])
203209
204210 if not any (parsed_data .values ()):
@@ -245,7 +251,14 @@ def from_garmin_response(
245251 field_mappings = {
246252 "resting_hr" : ["restingHeartRate" , "resting_hr" , "restingHR" , "rhr" ],
247253 "max_hr" : ["maxHeartRate" , "max_hr" , "maxHR" , "maximumHR" ],
248- "avg_hr" : ["avgHeartRate" , "avg_hr" , "averageHR" , "avgHR" ],
254+ "avg_hr" : [
255+ "avgHeartRate" ,
256+ "averageHeartRate" ,
257+ "avg_hr" ,
258+ "averageHR" ,
259+ "avgHR" ,
260+ "minHeartRate" ,
261+ ],
249262 }
250263
251264 parsed_data = {}
0 commit comments