YorkshireIoT / ha-google-fit

Home Assistant Google Fit Custom Component
MIT License
98 stars 9 forks source link

Problems with glucose values #195

Closed matsm85 closed 8 months ago

matsm85 commented 8 months ago

System Health details

System Information

version core-2024.2.1
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.1
os_name Linux
os_version 6.1.63-haos-raspi
arch armv7l
timezone America/Argentina/Buenos_Aires
config_dir /config
Home Assistant Community Store GitHub API | ok -- | -- GitHub Content | ok GitHub Web | ok GitHub API Calls Remaining | 5000 Installed Version | 1.34.0 Stage | running Available Repositories | 1392 Downloaded Repositories | 11
Home Assistant Cloud logged_in | true -- | -- subscription_expiration | 20 de febrero de 2024, 21:00 relayer_connected | true relayer_region | us-east-1 remote_enabled | true remote_connected | true alexa_enabled | true google_enabled | false remote_server | us-east-1-2.ui.nabu.casa certificate_status | ready instance_id | 1c0baefd05064773886f60bf62d5f004 can_reach_cert_server | ok can_reach_cloud_auth | ok can_reach_cloud | ok
Home Assistant Supervisor host_os | Home Assistant OS 11.5 -- | -- update_channel | stable supervisor_version | supervisor-2024.01.1 agent_version | 1.6.0 docker_version | 24.0.7 disk_total | 27.7 GB disk_used | 13.7 GB healthy | true supported | true board | rpi3 supervisor_api | ok version_api | ok installed_addons | File editor (5.8.0), Terminal & SSH (9.9.0), MQTT IO (0.4.0), Samba share (12.3.0), VLC (0.3.0), motionEye (0.20.0), Google Assistant SDK (2.5.0), ESPHome (2023.12.9)
Dashboards dashboards | 1 -- | -- resources | 3 views | 10 mode | storage
Recorder oldest_recorder_run | 11 de febrero de 2024, 01:22 -- | -- current_recorder_run | 16 de febrero de 2024, 10:36 estimated_db_size | 20.18 MiB database_engine | sqlite database_version | 3.44.2

Checklist

Describe the issue

The xdrip of my daughter with type 1 diabetes sends correctly to the "health connect" application, it correctly sends the data to the Google Fit application on my phone, but the data does not reach the Home Assistant integration, or arrives incorrectly, Many times I notice that it stagnates at the maximum or minimum values ​​of the day. I think there is an error in the data that this sensor is collecting, or how the home assistant is collecting it. WhatsApp Image 2024-02-16 at 6 35 54 PM 2024-02-16 WhatsApp Image 2024-02-17 at 9 29 06 AM

Integration Version

fitness por Google, Inc. Firmware: v1

Reproduction steps

Carry out installation according to instructions. Check glucose values ​​in the Google Fit app and compare with the results in the integration. Keep in mind that data is sent every 5 minutes from xdrip.

Debug logs

Logger: homeassistant.components.trend.binary_sensor
Source: components/trend/binary_sensor.py:232
Integration: Trend (documentation, issues)
First occurred: 18:33:46 (1 occurrences)
Last logged: 18:33:46

could not convert string to float: 'mmol/L'
YorkshireIoT commented 8 months ago

Hi @matsm85,

I think this is just a problem with the delay with which Google Fit uploads data from the app to the data being available to query in its REST API (which is what this integration uses).

Typically this can take 30-60 minutes, as explained in the README. I've also noticed that on my phone, it only uploads when on WiFi and some of the battery saving measures on your phone can kill the app stopping it from uploading to the servers.

Firstly, I'd try searching for how to stop your phone OS from killing apps. This varies phone to phone, so I can't provide details here unfortunately.

After doing this, if you could see if there's a difference between the update interval from when you're on WiFi that would also be useful.

Apart from these suggestions, I can't really do anything else as this is a fundamental limitation of the Google Fit REST API which is outside my control. My only other recommendation would be to see if there's someway to try get the data from xDrip directly to Home Assistant. I've no idea if this would be suitable, but perhaps this integration: https://www.home-assistant.io/integrations/nightscout/

Thanks

matsm85 commented 8 months ago

Hola@matsm85,

Creo que esto es solo un problema con la demora con la que Google Fit carga datos desde la aplicación y los datos están disponibles para consultar en su API REST (que es lo que utiliza esta integración).

Normalmente, esto puede tardar entre 30 y 60 minutos, como se explica en el archivo README. También noté que en mi teléfono, solo se carga cuando está conectado a WiFi y algunas de las medidas de ahorro de batería en su teléfono pueden desactivar la aplicación e impedir que se cargue en los servidores.

En primer lugar, intentaría buscar cómo evitar que el sistema operativo de su teléfono elimine aplicaciones. Esto varía de un teléfono a otro, por lo que lamentablemente no puedo proporcionar detalles aquí.

Después de hacer esto, si pudieras ver si hay una diferencia entre el intervalo de actualización cuando estás en WiFi, eso también sería útil.

Aparte de estas sugerencias, realmente no puedo hacer nada más ya que se trata de una limitación fundamental de la API REST de Google Fit que está fuera de mi control. Mi única otra recomendación sería ver si hay alguna forma de intentar obtener los datos de xDrip directamente a Home Assistant. No tengo idea si esto sería adecuado, pero tal vez esta integración: https://www.home-assistant.io/integrations/nightscout/

gracias

Thank you very much for your answer! Since I uploaded this problem here, the sensor does not give values, yet I continue to correctly see the values every 5 minutes in my Google Fit application. So the problem is not the update time of between 30 and 60 minutes. Isn't there a problem with mmol/l? I can't understand what my phone has to do with the data I see in HomeAssitant. I have HomeAssitant installed on a raspberry. I would really appreciate it if you can spend some time on this, as millions of people could benefit from this, since diabetes is a very serious disease and my idea is to get Alexa to issue alerts for possible health risks. And I see your work as much more interesting than nigthscout, which also involves paying for some services. Screenshot_20240225-122005

YorkshireIoT commented 8 months ago

Hi @matsm85,

Sorry for the confusion, I'll have a look into the could not convert string to float: 'mmol/L' issue.

Just to clarify a few things though:

Since I uploaded this problem here, the sensor does not give values, yet I continue to correctly see the values every 5 minutes in my Google Fit application. So the problem is not the update time of between 30 and 60 minutes.

  • Even if you can see the data in your Google Fit, it can still take up to an hour for Google themselves to make the data available to us through REST API querires. I can't understand what my phone has to do with the data I see in HomeAssitant. I have HomeAssitant installed on a raspberry.
  • I assume you're using some Android phone to pass the data to Google Fit. It is your phone which then uploads the data via Google Fit services which then makes it available to query through the REST API. If your phone isn't connected to the internet, for example, then you will see no Google Fit data in Home Assistant.
matsm85 commented 8 months ago

Thank you very much for removing my doubts. Hopefully my problem is something regarding mmol/l. I apologize for creating a new topic, my English is not very good and I thought I was not clear. You can delete it. I await your comments on mmol/l. Remember that the sensor is constantly in unknown

YorkshireIoT commented 8 months ago

Hi @matsm85,

I've verified that Blood Glucose data inputted directly into the Google Fit app shows properly within the integration.

From the attached debug logs, the error is coming from the trend sensor, not from this integration.

Can you enable debug logging for this integration and attach the google_fit logs?

matsm85 commented 8 months ago

Hi @YorkshireIoT I have enabled debug logging and the google fit option does not appear in the list. Screenshot_20240302-110937 Screenshot_20240302-111634

YorkshireIoT commented 8 months ago

You'll have to view the raw logs and filter by google_fit.

You can get the logs by going to your configuration folder, or on the logs page scroll down and click Download Full Logs.

image.

If you have you access to the configuration folder with a terminal (i.e. through SSH or with the Terminal addon), you can run this command from within the config directory

grep google_fit home-assistant.log
YorkshireIoT commented 8 months ago

Hi @matsm85, I deleted your logs as it contained some personal data.

The integration is reporting no blood glucose values on your account.

Unfortunately, it gets a bit complicated from here for you verify what's at fault.

  1. Please visit the Google OAuth 2.0 Playground
  2. Find Fitness v1 and the select the blood glucose read option. image
  3. Select "Authorise API" and sign in with your Google Fit account with the data
  4. Click Exchange authorisation code for tokens. image
  5. In the request URI run these two requests and please post the output here
    • https://fitness.googleapis.com/fitness/v1/users/me/dataSources
    • https://fitness.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.blood_glucose:com.google.android.gms:merged/dataPointChanges image

Please be sure to remove your access tokens before posting any information.

matsm85 commented 8 months ago

this? I have deleted the data of: Authorization and nextPageToken

Request / Response
GET /fitness/v1/users/me/dataSources HTTP/1.1
Host: fitness.googleapis.com
Content-length: 0
Authorization: ----
HTTP/1.1 200 OK
Content-length: 23
X-xss-protection: 0
Content-location: https://fitness.googleapis.com/fitness/v1/users/me/dataSources
X-content-type-options: nosniff
Transfer-encoding: chunked
Vary: Origin, X-Origin, Referer
Server: ESF
-content-encoding: gzip
Cache-control: private
Date: Sat, 02 Mar 2024 18:20:17 GMT
X-frame-options: SAMEORIGIN
Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-type: application/json; charset=UTF-8
{
  "dataSource": []
}
Request / Response
GET /fitness/v1/users/me/dataSources/derived:com.google.blood_glucose:com.google.android.gms:merged/dataPointChanges HTTP/1.1
Host: fitness.googleapis.com
Content-length: 0
Authorization: -----
HTTP/1.1 200 OK
Content-length: 208
X-xss-protection: 0
Content-location: https://fitness.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.blood_glucose:com.google.android.gms:merged/dataPointChanges
X-content-type-options: nosniff
Transfer-encoding: chunked
Vary: Origin, X-Origin, Referer
Server: ESF
-content-encoding: gzip
Cache-control: private
Date: Sat, 02 Mar 2024 18:22:24 GMT
X-frame-options: SAMEORIGIN
Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-type: application/json; charset=UTF-8
{
  "nextPageToken": "-------", 
  "deletedDataPoint": [], 
  "dataSourceId": "derived:com.google.blood_glucose:com.google.android.gms:merged", 
  "insertedDataPoint": []
}
YorkshireIoT commented 8 months ago

That's exactly what I wanted, thank you @matsm85.

This explains why the integration isn't showing any data. There just isn't any accessible through the REST API.

This is outside the scope of what I know and this repository but could you check the following:

  1. You're definitely using the same Google account for the Google Fit app and in the integration.
  2. That your data permissions are enabled for vitals. You can do this by going to settings in the app and click this. Store vitals data should be enabled Screenshot_20240303-094426
matsm85 commented 8 months ago

Yes, that option is enabled and the API, integration and Google Fit account are the same. Screenshot_20240303-115237 Screenshot_20240303-115453

In addition, the phone's sensor data is updated correctly in HomeAssitant. Screenshot_20240303-120218 It catches my attention that in the metrics data of my Google account only respiratory rate and heart rate appear to be deleted. It seems like glucose isn't even collecting data that it can delete. I tried to find an option to specifically enable glucose data but the Googlefit application does not have it. Maybe it can be done within the Google account but I can't find it.

YorkshireIoT commented 8 months ago

I don't have much more to suggest unforuntately. Would you mind trying again with the Google OAuth Playground, but as well as authenticating blood glucose can you also enable activity read? image

Before pressing Allow can you take a screenshot of this screen and attach it to your reply image

Finally, can you run this *Request URI again: https://fitness.googleapis.com/fitness/v1/users/me/dataSources and again, attach the response.

Thanks

matsm85 commented 8 months ago

2024-03-03 (2)

Request / Response GET /fitness/v1/users/me/dataSources/derived:com.google.blood_glucose:com.google.android.gms:merged/dataPointChanges HTTP/1.1 Host: fitness.googleapis.com Content-length: 0 Authorization:------

HTTP/1.1 200 OK Content-length: 208 X-xss-protection: 0 Content-location: https://fitness.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.blood_glucose:com.google.android.gms:merged/dataPointChanges X-content-type-options: nosniff Transfer-encoding: chunked Vary: Origin, X-Origin, Referer Server: ESF -content-encoding: gzip Cache-control: private Date: Sun, 03 Mar 2024 16:42:30 GMT X-frame-options: SAMEORIGIN Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-type: application/json; charset=UTF-8 { "nextPageToken": "-----", "deletedDataPoint": [], "dataSourceId": "derived:com.google.blood_glucose:com.google.android.gms:merged", "insertedDataPoint": [] }

Request / Response GET /fitness/v1/users/me/dataSources HTTP/1.1 Host: fitness.googleapis.com Content-length: 0 Authorization: ------

HTTP/1.1 200 OK Content-length: 11502 X-xss-protection: 0 Content-location: https://fitness.googleapis.com/fitness/v1/users/me/dataSources X-content-type-options: nosniff Transfer-encoding: chunked Vary: Origin, X-Origin, Referer Server: ESF -content-encoding: gzip Cache-control: private Date: Sun, 03 Mar 2024 16:43:53 GMT X-frame-options: SAMEORIGIN Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-type: application/json; charset=UTF-8 { "dataSource": [ { "dataStreamName": "top_level", "dataType": { "field": [ { "name": "duration", "format": "integer" } ], "name": "com.google.active_minutes" }, "dataQualityStandard": [], "application": { "packageName": "com.google.android.fit" }, "device": { "model": "moto g82 5G", "version": "", "type": "phone", "uid": "332ebb7b", "manufacturer": "motorola" }, "dataStreamId": "derived:com.google.active_minutes:com.google.android.fit:motorola:moto g82 5G:332ebb7b:top_level", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "duration", "format": "integer" } ], "name": "com.google.active_minutes" }, "dataStreamName": "merge_active_minutes", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.active_minutes:com.google.android.gms:merge_active_minutes", "type": "derived" }, { "dataStreamName": "top_level", "dataType": { "field": [ { "name": "activity", "format": "integer" } ], "name": "com.google.activity.segment" }, "dataQualityStandard": [], "application": { "packageName": "com.google.android.fit" }, "device": { "model": "moto g82 5G", "version": "", "type": "phone", "uid": "332ebb7b", "manufacturer": "motorola" }, "dataStreamId": "derived:com.google.activity.segment:com.google.android.fit:motorola:moto g82 5G:332ebb7b:top_level", "type": "derived" }, { "dataStreamName": "activity_from_steps", "dataType": { "field": [ { "name": "activity", "format": "integer" } ], "name": "com.google.activity.segment" }, "dataQualityStandard": [], "application": { "packageName": "com.google.android.gms" }, "device": { "model": "Moto Z3 Play", "version": "", "type": "phone", "uid": "1875e63c", "manufacturer": "Motorola" }, "dataStreamId": "derived:com.google.activity.segment:com.google.android.gms:Motorola:Moto Z3 Play:1875e63c:activity_from_steps", "type": "derived" }, { "dataStreamName": "from_activity_samples<-derived:com.google.activity.samples:com.google.android.gms:Motorola:Moto Z3 Play:1875e63c:detailed", "dataType": { "field": [ { "name": "activity", "format": "integer" } ], "name": "com.google.activity.segment" }, "dataQualityStandard": [], "application": { "packageName": "com.google.android.gms" }, "device": { "model": "Moto Z3 Play", "version": "", "type": "phone", "uid": "1875e63c", "manufacturer": "Motorola" }, "dataStreamId": "derived:com.google.activity.segment:com.google.android.gms:Motorola:Moto Z3 Play:1875e63c:from_activity_samples<-derived:com.google.activity.samples:com.google.android.gms:Motorola:Moto Z3 Play:1875e63c:detailed", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "activity", "format": "integer" } ], "name": "com.google.activity.segment" }, "dataStreamName": "merge_activity_segments", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.activity.segment:com.google.android.gms:merge_activity_segments", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "activity", "format": "integer" } ], "name": "com.google.activity.segment" }, "dataStreamName": "merge_activity_segments_local", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.activity.segment:com.google.android.gms:merge_activity_segments_local", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "calories", "format": "floatPoint" } ], "name": "com.google.calories.bmr" }, "dataStreamName": "merged", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.calories.bmr:com.google.android.gms:merged", "type": "derived" }, { "dataStreamName": "top_level", "dataType": { "field": [ { "name": "calories", "format": "floatPoint" } ], "name": "com.google.calories.expended" }, "dataQualityStandard": [], "application": { "packageName": "com.google.android.fit" }, "device": { "model": "moto g82 5G", "version": "", "type": "phone", "uid": "332ebb7b", "manufacturer": "motorola" }, "dataStreamId": "derived:com.google.calories.expended:com.google.android.fit:motorola:moto g82 5G:332ebb7b:top_level", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "calories", "format": "floatPoint" } ], "name": "com.google.calories.expended" }, "dataStreamName": "merge_calories_expended", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.calories.expended:com.google.android.gms:merge_calories_expended", "type": "derived" }, { "dataStreamName": "top_level", "dataType": { "field": [ { "name": "intensity", "format": "floatPoint" } ], "name": "com.google.heart_minutes" }, "dataQualityStandard": [], "application": { "packageName": "com.google.android.fit" }, "device": { "model": "moto g82 5G", "version": "", "type": "phone", "uid": "332ebb7b", "manufacturer": "motorola" }, "dataStreamId": "derived:com.google.heart_minutes:com.google.android.fit:motorola:moto g82 5G:332ebb7b:top_level", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "intensity", "format": "floatPoint" } ], "name": "com.google.heart_minutes" }, "dataStreamName": "from_heart_rate<-merge_heart_rate_bpm", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.heart_minutes:com.google.android.gms:from_heart_rate<-merge_heart_rate_bpm", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "intensity", "format": "floatPoint" } ], "name": "com.google.heart_minutes" }, "dataStreamName": "merge_heart_minutes", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.heart_minutes:com.google.android.gms:merge_heart_minutes", "type": "derived" }, { "dataStreamName": "top_level", "dataType": { "field": [ { "name": "steps", "format": "integer" } ], "name": "com.google.step_count.delta" }, "dataQualityStandard": [], "application": { "packageName": "com.google.android.fit" }, "device": { "model": "moto g82 5G", "version": "", "type": "phone", "uid": "332ebb7b", "manufacturer": "motorola" }, "dataStreamId": "derived:com.google.step_count.delta:com.google.android.fit:motorola:moto g82 5G:332ebb7b:top_level", "type": "derived" }, { "dataStreamName": "derive_step_deltas<-raw:com.google.step_count.cumulative:Motorola:Moto Z3 Play:1875e63c:Step Counter", "dataType": { "field": [ { "name": "steps", "format": "integer" } ], "name": "com.google.step_count.delta" }, "dataQualityStandard": [], "application": { "packageName": "com.google.android.gms" }, "device": { "model": "Moto Z3 Play", "version": "", "type": "phone", "uid": "1875e63c", "manufacturer": "Motorola" }, "dataStreamId": "derived:com.google.step_count.delta:com.google.android.gms:Motorola:Moto Z3 Play:1875e63c:derive_step_deltas<-raw:com.google.step_count.cumulative:Motorola:Moto Z3 Play:1875e63c:Step Counter", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "steps", "format": "integer" } ], "name": "com.google.step_count.delta" }, "dataStreamName": "estimated_steps", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "steps", "format": "integer" } ], "name": "com.google.step_count.delta" }, "dataStreamName": "merge_step_deltas", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.step_count.delta:com.google.android.gms:merge_step_deltas", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "steps", "format": "integer" } ], "name": "com.google.step_count.cumulative" }, "dataStreamName": "Step Counter", "device": { "model": "Moto Z3 Play", "version": "", "type": "phone", "uid": "1875e63c", "manufacturer": "Motorola" }, "dataStreamId": "raw:com.google.step_count.cumulative:Motorola:Moto Z3 Play:1875e63c:Step Counter", "type": "raw" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "steps", "format": "integer" } ], "name": "com.google.step_count.cumulative" }, "dataStreamName": "pedometer Non-wakeup", "device": { "model": "moto g82 5G", "version": "", "type": "phone", "uid": "332ebb7b", "manufacturer": "motorola" }, "dataStreamId": "raw:com.google.step_count.cumulative:motorola:moto g82 5G:332ebb7b:pedometer Non-wakeup", "type": "raw" } ] }

matsm85 commented 8 months ago

The Motorla Z3 seems strange to me, I haven't had that device for many years.

matsm85 commented 8 months ago

I did it all from scratch with another gmail account: I have the problem at the beginning again, the value is stuck in the first value I take. inbound8026376890396333593

These are the results:

Request / Response GET /fitness/v1/users/me/dataSources HTTP/1.1 Host: fitness.googleapis.com Content-length: 0 Authorization:___ HTTP/1.1 200 OK Content-length: 2061 X-xss-protection: 0 Content-location: https://fitness.googleapis.com/fitness/v1/users/me/dataSources X-content-type-options: nosniff Transfer-encoding: chunked Vary: Origin, X-Origin, Referer Server: ESF -content-encoding: gzip Cache-control: private Date: Sun, 03 Mar 2024 20:25:25 GMT X-frame-options: SAMEORIGIN Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-type: application/json; charset=UTF-8 { "dataSource": [ { "dataQualityStandard": [], "dataType": { "field": [ { "name": "blood_glucose_level", "format": "floatPoint" }, { "optional": true, "name": "temporal_relation_to_meal", "format": "integer" }, { "optional": true, "name": "meal_type", "format": "integer" }, { "optional": true, "name": "temporal_relation_to_sleep", "format": "integer" }, { "optional": true, "name": "blood_glucose_specimen_source", "format": "integer" } ], "name": "com.google.blood_glucose" }, "dataStreamName": "merged", "application": { "packageName": "com.google.android.gms" }, "dataStreamId": "derived:com.google.blood_glucose:com.google.android.gms:merged", "type": "derived" }, { "dataQualityStandard": [], "dataType": { "field": [ { "name": "blood_glucose_level", "format": "floatPoint" }, { "optional": true, "name": "temporal_relation_to_meal", "format": "integer" }, { "optional": true, "name": "meal_type", "format": "integer" }, { "optional": true, "name": "temporal_relation_to_sleep", "format": "integer" }, { "optional": true, "name": "blood_glucose_specimen_source", "format": "integer" } ], "name": "com.google.blood_glucose" }, "dataStreamName": "health_platform", "application": { "packageName": "com.eveningoutpost.dexdrip" }, "dataStreamId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform", "type": "raw" } ] }

Request / Response GET /fitness/v1/users/me/dataSources/derived:com.google.blood_glucose:com.google.android.gms:merged/dataPointChanges HTTP/1.1 Host: fitness.googleapis.com Content-length: 0 Authorization: ____ HTTP/1.1 200 OK Content-length: 6310 X-xss-protection: 0 Content-location: https://fitness.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.blood_glucose:com.google.android.gms:merged/dataPointChanges X-content-type-options: nosniff Transfer-encoding: chunked Vary: Origin, X-Origin, Referer Server: ESF -content-encoding: gzip Cache-control: private Date: Sun, 03 Mar 2024 20:35:03 GMT X-frame-options: SAMEORIGIN Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-type: application/json; charset=UTF-8 { "nextPageToken": "xCIzFrK/gMRoiWG1SaHBJXzYzQ1p4b01ITnVpSmptcHlObW92ZmxKcUdJUQ==", "deletedDataPoint": [], "dataSourceId": "derived:com.google.blood_glucose:com.google.android.gms:merged", "insertedDataPoint": [ { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709468854854000000", "endTimeNanos": "1709468854854000000", "value": [ { "mapVal": [], "fpVal": 5.387709617614746 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709492758495000000", "endTimeNanos": "1709492758495000000", "value": [ { "mapVal": [], "fpVal": 7.6712446212768555 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709493058186000000", "endTimeNanos": "1709493058186000000", "value": [ { "mapVal": [], "fpVal": 7.395725727081299 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709493357316000000", "endTimeNanos": "1709493357316000000", "value": [ { "mapVal": [], "fpVal": 6.9100661277771 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709493657814000000", "endTimeNanos": "1709493657814000000", "value": [ { "mapVal": [], "fpVal": 6.158227443695068 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709493958181000000", "endTimeNanos": "1709493958181000000", "value": [ { "mapVal": [], "fpVal": 5.355020999908447 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709494258181000000", "endTimeNanos": "1709494258181000000", "value": [ { "mapVal": [], "fpVal": 4.640540599822998 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709494558372000000", "endTimeNanos": "1709494558372000000", "value": [ { "mapVal": [], "fpVal": 4.0428056716918945 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709494823297000000", "endTimeNanos": "1709494823297000000", "value": [ { "mapVal": [], "fpVal": 3.7439379692077637 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" }, { "modifiedTimeMillis": "1709496279692", "startTimeNanos": "1709495897008000000", "endTimeNanos": "1709495897008000000", "value": [ { "mapVal": [], "fpVal": 5.00945520401001 }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [] }, { "mapVal": [], "intVal": 1 } ], "dataTypeName": "com.google.blood_glucose", "originDataSourceId": "raw:com.google.blood_glucose:com.eveningoutpost.dexdrip:health_platform" } ] }

matsm85 commented 8 months ago

look at this, the data in googlefit totally coincides with what the command you showed me gives me. Fpval: inbound6796491270038743387

However, I still see the first value in homeassitant after two hours.

matsm85 commented 8 months ago

For some reason my Gmail account is not sending data, the other account I used to send you the screenshots does. The problem is what you already told me, it only updates every 60/120 minutes. Which makes the data useless for something as important as blood glucose.

YorkshireIoT commented 8 months ago

Hi @matsm85, thanks for reporting back with that information. Unfortunately, that long delay is something from Google and is outside my control and as such can't be "fixed" in this integration. Sorry about this, it's probably not what you wanted to hear.

matsm85 commented 8 months ago

@YorkshireIoT Can't the lost data be loaded into your integration? That is, even if it is to obtain the delayed data, to achieve a real graph. I don't know if I'm clear.

YorkshireIoT commented 8 months ago

Potentially, but there's already an issue open that's related to that (#59) where I plan to do the initial investigation into whether data can be backdated in Home Assistant.