Google Fit Sensor Component

Overview

hacs_badge made-with-python Donate

Google Fit Sensor Component

Based on

Creates Google Fit sensors. At the moment, the component provides following measurements:

  • steps
  • distance
  • time
  • calories
  • weight
  • height
  • sleep
  • heartrate
  • oxygen
  • blood pressure
  • nutrition
  • hydratation
  • BMR

Installation

HACS - Recommended

  • Have HACS installed, this will allow you to easily update.
  • Add https://github.com/IvanVojtko/googlefit-homeassistant as a custom repository with Type: Integration
  • Click Install under "Google Fit" integration.
  • Restart Home-Assistant.

Manual

  • Copy directory custom_components/google_fit to your /custom_components directory.
  • Configure.
  • Restart Home-Assistant.

Example configuration.yaml

In order to add this component as is, add a new sensor:

sensor:
  - platform: google_fit
    name: Google Fit

Google Fit credentials

In order to generate credentials.json, see the prerequisites for the Google Calendar component: https://www.home-assistant.io/components/calendar.google/#prerequisites To make sensor work you have to enable the Fitness API in your project. Add all Fitness API read scopes. After generating credentials, download credentials.json file and place it into this directory, next to get_credentials.py In oder to enable Fitness API open Google Cloud console: https://console.cloud.google.com/apis/library/fitness.googleapis.com and enable API.

To allow HA access your Fit data, you need to complete a challenge. It can't be completed by HA so that's why you need to use get_credentials.py script. First install all the requirements using python -m pip install -r requirements.txt. Then run script python get_credentials.py, open the generated URL, allow access and don't forget to tick mark all permissions. This script will generate .google_fit.token file. Copy this file to your HA configuration directory.

Sensors

Sensor name Entity
Steps sensor.google_steps
Calories sensor.google_calories
Distance sensor.google_distance
Heart rate sensor.google_heart_rate
Resting heart rate sensor.google_resting_heart_rate
Move time sensor.google_move_time
Blood oxygen sensor.google_oxygen
Sleep sensor.google_sleep
Blood pressure SYS sensor.google_blood_pressure_sys
Blood pressure DIA sensor.google_blood_pressure_dia
Hydratation sensor.google_hydratation
BMR sensor.google_bmr

Attributes

Attribute name Entity Attribute
Potassium sensor.google_nutrition potassium
Calcium sensor.google_nutrition calcium
Vitamin A sensor.google_nutrition vitamin_a
Vitamin C sensor.google_nutrition vitamin_c
Total carbs sensor.google_nutrition carbs.total
Polyunsaturated fat sensor.google_nutrition fat.polyunsaturated
Monounsaturated fat sensor.google_nutrition fat.monounsaturated
Calories sensor.google_nutrition calories
Trans fat sensor.google_nutrition fat.trans
Total fat sensor.google_nutrition fat.total
Sodium sensor.google_nutrition sodium
Saturated fat sensor.google_nutrition fat.saturated
Protein sensor.google_nutrition protein
Cholesterol sensor.google_nutrition cholesterol
Iron sensor.google_nutrition iron
Sugar sensor.google_nutrition sugar
Dietary fiber sensor.google_nutrition dietary_fiber

Comments
  • .google_fit.token format

    .google_fit.token format

    When I run python3 get_credentials.py the resulting token is in some strange format that Home Assistant doesn't like.

    <80>^D<95><80>^D^@^@^@^@^@^@<8c>^Ygoogle.oauth2.credentials<94><8c>^KCredentials<94><93><94>)<81><94>}<94>(<8c>^Etoken<94><8c>TOKEN REMOVED<94><8c>^Fexpiry<94><8c>^Hdatetime<94><8c>^Hdatetime<94><93><94>C
    ^Gæ^B^D^V^P^\^N9<87><94><85><94>R<94><8c>^Q_quota_project_id<94>N<8c>^G_scopes<94>]<94>
    ...
    

    I'm assuming this should be a JSON string. @IvanVojtko Can you point me in the right direction to generating a proper token?

    opened by Terit 3
  • Redirect to localhost:8080 after OAuth Consent Screen

    Redirect to localhost:8080 after OAuth Consent Screen

    When i access the URL generated by get_credentials.py and check all permissions and click Continue i get redirected to a URL like http://localhost:8080/?state=rYmM5PTvl7MbN... and the script will not generate a .google_fit.token. When i check the generated URL, there is a "redirect_uri" parameter which specifies the localhost:8080.

    Did i miss something in the configuration?

    // Edit: I found, that in the credentials.json the "redirect_url" to localhost is specified. I changed it to my external HA domain, but then Google gives the error "Redirect URI mismatch".

    opened by remklov 1
  • installation

    installation

    Hallo, thank's for Your job, I've follow all the procedure, but finally I have no idea that how i can finalize the HA data access, please, can You explain step by step how i can run script and optain authorisations?! Thank's in advance, Gdi

    opened by Gdii 1
  • Question about multiple Google Fit users

    Question about multiple Google Fit users

    I was able to get your integration working today and it is very cool! Thank you for creating this. I am wondering if it is possible to pull Fit data from to different Google accounts? I'd really love to be able to pull stats from my Fit as well as my girlfriends. Perhaps multiple .google_fit.token? Thanks in advance!

    opened by Andrewdlec 3
  • Error 400: invalid_request

    Error 400: invalid_request

    After couple of days working the integration stopped providing data, log says:

    google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked.', {'error': 'invalid_grant', 'error_description': 'Token has been expired or revoked.'})

    while trying to re-authenticate with google, google says

    You can't sign in to this app because it doesn't comply with Google's OAuth 2.0 policy for keeping apps secure.

    I am only one experiencing this?

    opened by baldachyn 11
  • Question about Fit heartrate reporting and update interval

    Question about Fit heartrate reporting and update interval

    Hi! First, thank you for creating this integration. I've only been using it for a bit over a day now, but I've been really enjoying it so far.

    The only maybe-issue I'm running into so far is with the Google Fit heart rate sensor. Specifically, for me, it seems to update very irregularly - often only once every several hours - and the resulting data and history in Home Assistant have little in common with the data that's visible in Google Fit directly.

    Here's an example, with my February 8th heart rate data as shown in the Fit app overlaid on a graph of the same time period in Home Assistant.

    GFit Heartrate

    I'm new to all of this, but especially the Google API stuff (I just fumbled through the API instructions, I think correctly), so I don't know if this 'problem' is something I did wrong, or something up with the integration, or if this data is just as good as Google is willing to offer.

    Any help or insight on how to get better heartrate data (or just confirmation that this is as good as it gets, disappointing as that would be) is greatly appreciated.

    opened by NCC1941 5
Releases(v0.0.4)
Owner
Ivan Vojtko
Ivan Vojtko
WinBoost: Boost your windows system.

Winboost runs a complete checkup of your entire system locating junk files, speed-reducing issues and causes of any system or application glitches or crashes. Through a lot of research and testing, w

Smit Parmar 4 Oct 01, 2021
Supercharge your NFTs with new behaviours and superpowers!

WrapX Supercharge your NFTs with new behaviours and superpowers! WrapX is a collection of Wrappers (currently one - WrapXSet) to decorate your NTFs ad

Emiliano Bonassi 9 Jun 13, 2022
Import Apex legends mprt files exported from Legion

Apex-mprt-importer-for-Blender Import Apex legends mprt files exported from Legion. REQUIRES CAST IMPORTER Usage: Use a VPK extracter to extract the m

15 Dec 18, 2022
More routines for operating on iterables, beyond itertools

More Itertools Python's itertools library is a gem - you can compose elegant solutions for a variety of problems with the functions it provides. In mo

2.8k Jan 02, 2023
Curses frontend for Canto daemon

Canto Curses The curses (text) client for canto-daemon. Canto-daemon is required to work and is found at: http://github.com/themoken/canto-next Requir

Jack Miller 86 Dec 28, 2022
A hackers attempt at an MVP anki plugin

my anki plugin if you have found this by accident, you should probably run away this is nothing more than a hackers attempt at an MVP anki plugin I re

Chris Hall 1 Nov 02, 2021
A simple hash system.

PBH-Hash-System A simple hash system. Usage You could use it like this: from pbh import pbh print(pbh("Hey", True)) Output: 2feae2471698cfcdcbd6b98ca

Karim 3 Mar 24, 2022
C++ Environment InitiatorVisual Studio Code C / C++ Environment Initiator

Visual Studio Code C / C++ Environment Initiator Latest Version : v 1.0.1(2021/11/08) .exe link here About : Visual Studio Code에서 C/C++환경을 MinGW GCC/G

Junho Yoon 2 Dec 19, 2021
Taxonomy addition for complete trees

TACT: Taxonomic Addition for Complete Trees TACT is a Python app for stochastic polytomy resolution. It uses birth-death-sampling estimators across an

Jonathan Chang 3 Jun 07, 2022
Python implementation of the ASFLIP advection method

This is a python implementation of the ASFLIP advection method . We would like to hear from you if you appreciate this work.

Raymond Yun Fei 133 Nov 13, 2022
Ningyu Jia(nj2459)/Mengyin Ma(mm5937) Call Analysis group project(Group 36)

Group and Section Group 36 Section 001 name and UNI Name UNI Ningyu Jia nj2459 Mengyin Ma mm5937 code explanation Parking.py (1) Calculate the rate of

1 Dec 04, 2021
Python Interactive Graphical System made during Computer Graphics classes (INE5420-2021.1)

PY-IGS - The PYthon Interactive Graphical System The PY-IGS Installation To install this software you will need these dependencies (with their thevelo

Enzo Coelho Albornoz 4 Dec 03, 2021
Graphsignal Logger

Graphsignal Logger Overview Graphsignal is an observability platform for monitoring and troubleshooting production machine learning applications. It h

Graphsignal 143 Dec 05, 2022
Download and archive entire usenet newsgroups over NNTP.

Usenet Archiving Tool This code is for archiving Usenet discussions, not downloading files. Newsgroup posts are saved under the authors name and email

Corey White 2 Dec 23, 2021
Open source tools to allow working with ESP devices in the browser

ESP Web Tools Allow flashing ESPHome or other ESP-based firmwares via the browser. Will automatically detect the board type and select a supported fir

ESPHome 195 Dec 31, 2022
A Notifier Program that Notifies you to relax your eyes Every 15 Minutes👀

Every 15 Minutes is an application that is used to Notify you to Relax your eyes Every 15 Minutes, This is fully made with Python and also with the us

FSP Gang s' Admin 1 Nov 03, 2021
Este script añade la config de s4vitar a bspwm automaticamente!

Se ha testeado este script en ParrotOS, Kali y Ubuntu. Funciona para todos los sistemas operativos basados en Debian. Instalación git clone https://gi

yorkox 201 Dec 30, 2022
Bots in moderation and a game (for now)

Tutorial: come far funzionare il bot e durarlo per 24/7 (o quasi...) Ci sono 17 passi per seguire: Andare sul sito Replit https://replit.com/ Vedrete

ZacyKing 1 Dec 27, 2021
A numbers check python package

A numbers check python package

Fayas Noushad 3 Nov 28, 2021
Pokemon sword replay capture

pokemon-sword-replay-capture This is an old version (March 2020) pokemon-sword-replay-capture-mar-2020-version of my Pokemon Replay Capture software.

11 May 15, 2022