From 003a4c57ef31f6982f4d0f2e5fbfafdb2dff2d5e Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Tue, 2 Apr 2024 11:24:46 +0200
Subject: [PATCH 01/10] changed get_body_composition
changed get_body_composition to load data of past week not only today
---
custom_components/garmin_connect/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/custom_components/garmin_connect/__init__.py b/custom_components/garmin_connect/__init__.py
index 26183e0..d063a1e 100644
--- a/custom_components/garmin_connect/__init__.py
+++ b/custom_components/garmin_connect/__init__.py
@@ -120,7 +120,7 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
_LOGGER.debug(f"Summary data: {summary}")
body = await self.hass.async_add_executor_job(
- self._api.get_body_composition, date.today().isoformat()
+ self._api.get_body_composition, (date.today()-timedelta(days=7)).isoformat(), date.today().isoformat())
)
_LOGGER.debug(f"Body data: {body}")
From 83ceb35666e6f9b4b76d6711240c2be96d88bfac Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Tue, 2 Apr 2024 11:26:08 +0200
Subject: [PATCH 02/10] Update garminconnect to 0.2.15
---
custom_components/garmin_connect/manifest.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/custom_components/garmin_connect/manifest.json b/custom_components/garmin_connect/manifest.json
index 7733882..4073328 100644
--- a/custom_components/garmin_connect/manifest.json
+++ b/custom_components/garmin_connect/manifest.json
@@ -7,6 +7,6 @@
"documentation": "https://github.com/cyberjunky/home-assistant-garmin_connect",
"iot_class": "cloud_polling",
"issue_tracker": "https://github.com/cyberjunky/home-assistant-garmin_connect/issues",
- "requirements": ["garminconnect==0.2.12", "tzlocal"],
+ "requirements": ["garminconnect==0.2.15", "tzlocal"],
"version": "0.2.19"
}
From 3bf77a9056e710d7ac8cc3d9373dac0f49b8df18 Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Tue, 2 Apr 2024 11:40:38 +0200
Subject: [PATCH 03/10] Update manifest.json
---
custom_components/garmin_connect/manifest.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/custom_components/garmin_connect/manifest.json b/custom_components/garmin_connect/manifest.json
index 4073328..0d5a918 100644
--- a/custom_components/garmin_connect/manifest.json
+++ b/custom_components/garmin_connect/manifest.json
@@ -7,6 +7,6 @@
"documentation": "https://github.com/cyberjunky/home-assistant-garmin_connect",
"iot_class": "cloud_polling",
"issue_tracker": "https://github.com/cyberjunky/home-assistant-garmin_connect/issues",
- "requirements": ["garminconnect==0.2.15", "tzlocal"],
- "version": "0.2.19"
+ "requirements": ["garminconnect==0.2.12", "tzlocal"],
+ "version": "0.2.20b1"
}
From 9136466115e0c99a619dad98406cb053b132bf94 Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Tue, 2 Apr 2024 11:49:48 +0200
Subject: [PATCH 04/10] fixed typo
---
custom_components/garmin_connect/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/custom_components/garmin_connect/__init__.py b/custom_components/garmin_connect/__init__.py
index d063a1e..f624aee 100644
--- a/custom_components/garmin_connect/__init__.py
+++ b/custom_components/garmin_connect/__init__.py
@@ -120,7 +120,7 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
_LOGGER.debug(f"Summary data: {summary}")
body = await self.hass.async_add_executor_job(
- self._api.get_body_composition, (date.today()-timedelta(days=7)).isoformat(), date.today().isoformat())
+ self._api.get_body_composition, (date.today()-timedelta(days=7)).isoformat(), date.today().isoformat()
)
_LOGGER.debug(f"Body data: {body}")
From 62377b5d5543b28d71530607d81668ba7652a658 Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Tue, 2 Apr 2024 12:16:16 +0200
Subject: [PATCH 05/10] changed body return values
instead of the total average, take the first measurement
---
custom_components/garmin_connect/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/custom_components/garmin_connect/__init__.py b/custom_components/garmin_connect/__init__.py
index f624aee..05796f8 100644
--- a/custom_components/garmin_connect/__init__.py
+++ b/custom_components/garmin_connect/__init__.py
@@ -181,7 +181,7 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
return {
**summary,
- **body["totalAverage"],
+ **body["dateWeightList"][0],
"nextAlarm": alarms,
"gear": gear,
"gear_stats": gear_stats,
From 09e80e4255cdebf127d7a88fc39a79c73be0ba9d Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Wed, 3 Apr 2024 08:04:11 +0200
Subject: [PATCH 06/10] Update manifest.json
---
custom_components/garmin_connect/manifest.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/custom_components/garmin_connect/manifest.json b/custom_components/garmin_connect/manifest.json
index 0d5a918..7733882 100644
--- a/custom_components/garmin_connect/manifest.json
+++ b/custom_components/garmin_connect/manifest.json
@@ -8,5 +8,5 @@
"iot_class": "cloud_polling",
"issue_tracker": "https://github.com/cyberjunky/home-assistant-garmin_connect/issues",
"requirements": ["garminconnect==0.2.12", "tzlocal"],
- "version": "0.2.20b1"
+ "version": "0.2.19"
}
From 47096eabebaa921cf5011f83468c50250ac997f8 Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Fri, 5 Apr 2024 09:43:52 +0200
Subject: [PATCH 07/10] added blood_pressure function
---
custom_components/garmin_connect/__init__.py | 15 +++++++++++
custom_components/garmin_connect/sensor.py | 15 +++++++++++
.../garmin_connect/services.yaml | 25 +++++++++++++++++++
3 files changed, 55 insertions(+)
diff --git a/custom_components/garmin_connect/__init__.py b/custom_components/garmin_connect/__init__.py
index 05796f8..580f5d1 100644
--- a/custom_components/garmin_connect/__init__.py
+++ b/custom_components/garmin_connect/__init__.py
@@ -257,3 +257,18 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
service_data.data.get("visceral_fat_rating", None),
service_data.data.get("bmi", None)
)
+
+ async def add_blood_pressure(self, entity, service_data):
+ """Record a blood pressure measurement"""
+ if not await self.async_login():
+ raise IntegrationError(
+ "Failed to login to Garmin Connect, unable to update"
+ )
+
+ await self.hass.async_add_executor_job(
+ self._api.set_blood_pressure,
+ service_data.data.get("systolic"),
+ service_data.data.get("diastolic"),
+ service_data.data.get("pulse"),
+ service_data.data.get("note", None)
+ )
diff --git a/custom_components/garmin_connect/sensor.py b/custom_components/garmin_connect/sensor.py
index 81ce3b5..a8e9e4c 100644
--- a/custom_components/garmin_connect/sensor.py
+++ b/custom_components/garmin_connect/sensor.py
@@ -108,6 +108,10 @@ async def async_setup_entry(
"add_body_composition", BODY_COMPOSITION_SERVICE_SCHEMA, coordinator.add_body_composition
)
+ platform.async_register_entity_service(
+ "add_blood_pressure", BLOOD_PRESSURE_SERVICE_SCHEMA, coordinator.add_blood_pressure
+ )
+
ENTITY_SERVICE_SCHEMA = vol.Schema(
{
vol.Required(ATTR_ENTITY_ID): str,
@@ -135,6 +139,17 @@ BODY_COMPOSITION_SERVICE_SCHEMA = vol.Schema(
}
)
+BLOOD_PRESSURE_SERVICE_SCHEMA = vol.Schema(
+ {
+ vol.Required(ATTR_ENTITY_ID): str,
+ vol.Required("systolic"): float,
+ vol.Required("diastolic"): float,
+ vol.Required("pulse"): float,
+ vol.Optional("note"): str
+
+ }
+)
+
class GarminConnectSensor(CoordinatorEntity, SensorEntity):
"""Representation of a Garmin Connect Sensor."""
diff --git a/custom_components/garmin_connect/services.yaml b/custom_components/garmin_connect/services.yaml
index d82e9c2..ca9a4e1 100644
--- a/custom_components/garmin_connect/services.yaml
+++ b/custom_components/garmin_connect/services.yaml
@@ -114,3 +114,28 @@ add_body_composition:
entity:
integration: garmin_connect
device_class: weight
+
+add_blood_pressure:
+ name: Adds updated blood pressure metrics
+ description: Adds updated blood pressure metrics.
+ fields:
+ systolic:
+ required: true
+ name: Systolic
+ description: Systolic value
+ example: 120
+ diastolic:
+ required: true
+ name: Diastolic
+ description: Diastolic value
+ example: 80
+ pulse:
+ required: true
+ name: Pulse
+ description: Pulse
+ example: 60
+ notes:
+ required: false
+ name: Notes
+ description: Add a note to the measurement
+ example: "Measured with Beurer BC54"
\ No newline at end of file
From e4331ecf8c91f54060c03c728c6717c504de87fa Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Fri, 5 Apr 2024 10:05:43 +0200
Subject: [PATCH 08/10] added missing entity_id
---
custom_components/garmin_connect/services.yaml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/custom_components/garmin_connect/services.yaml b/custom_components/garmin_connect/services.yaml
index ca9a4e1..0082446 100644
--- a/custom_components/garmin_connect/services.yaml
+++ b/custom_components/garmin_connect/services.yaml
@@ -119,6 +119,14 @@ add_blood_pressure:
name: Adds updated blood pressure metrics
description: Adds updated blood pressure metrics.
fields:
+ entity_id:
+ name: entity
+ description: entity
+ required: true
+ selector:
+ entity:
+ integration: garmin_connect
+ device_class: weight
systolic:
required: true
name: Systolic
From 3d5200581d05ac52990ff861a0195813e0356b9c Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Fri, 5 Apr 2024 10:17:20 +0200
Subject: [PATCH 09/10] try and error ;-)
---
custom_components/garmin_connect/__init__.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/custom_components/garmin_connect/__init__.py b/custom_components/garmin_connect/__init__.py
index 580f5d1..c51d674 100644
--- a/custom_components/garmin_connect/__init__.py
+++ b/custom_components/garmin_connect/__init__.py
@@ -267,8 +267,8 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
await self.hass.async_add_executor_job(
self._api.set_blood_pressure,
- service_data.data.get("systolic"),
- service_data.data.get("diastolic"),
- service_data.data.get("pulse"),
- service_data.data.get("note", None)
+ service_data.data.get('systolic'),
+ service_data.data.get('diastolic'),
+ service_data.data.get('pulse'),
+ service_data.data.get('note', None)
)
From 14c669423989f984a7d0102a47bf1af5055873dc Mon Sep 17 00:00:00 2001
From: kruemelro
Date: Mon, 8 Apr 2024 08:57:53 +0200
Subject: [PATCH 10/10] changed value datatype to int
---
custom_components/garmin_connect/__init__.py | 1 +
custom_components/garmin_connect/sensor.py | 6 +++---
custom_components/garmin_connect/services.yaml | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/custom_components/garmin_connect/__init__.py b/custom_components/garmin_connect/__init__.py
index c51d674..b4d79f1 100644
--- a/custom_components/garmin_connect/__init__.py
+++ b/custom_components/garmin_connect/__init__.py
@@ -260,6 +260,7 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
async def add_blood_pressure(self, entity, service_data):
"""Record a blood pressure measurement"""
+
if not await self.async_login():
raise IntegrationError(
"Failed to login to Garmin Connect, unable to update"
diff --git a/custom_components/garmin_connect/sensor.py b/custom_components/garmin_connect/sensor.py
index a8e9e4c..ec5ea95 100644
--- a/custom_components/garmin_connect/sensor.py
+++ b/custom_components/garmin_connect/sensor.py
@@ -142,9 +142,9 @@ BODY_COMPOSITION_SERVICE_SCHEMA = vol.Schema(
BLOOD_PRESSURE_SERVICE_SCHEMA = vol.Schema(
{
vol.Required(ATTR_ENTITY_ID): str,
- vol.Required("systolic"): float,
- vol.Required("diastolic"): float,
- vol.Required("pulse"): float,
+ vol.Required("systolic"): int,
+ vol.Required("diastolic"): int,
+ vol.Required("pulse"): int,
vol.Optional("note"): str
}
diff --git a/custom_components/garmin_connect/services.yaml b/custom_components/garmin_connect/services.yaml
index 0082446..1fe30b6 100644
--- a/custom_components/garmin_connect/services.yaml
+++ b/custom_components/garmin_connect/services.yaml
@@ -146,4 +146,4 @@ add_blood_pressure:
required: false
name: Notes
description: Add a note to the measurement
- example: "Measured with Beurer BC54"
\ No newline at end of file
+ example: 'Measured with Beurer BC54'
\ No newline at end of file