brokensound77 / pydexcom

Simple Python API to interact with Dexcom Share service

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Donate PyPI GitHub Workflow Status

pydexcom

A simple Python API to interact with Dexcom Share service. Used to get real time Dexcom GCM sensor data.

Setup

  1. Download the Dexcom G6 / G5 / G4 mobile app and enable the Share service.

    Note: the service requires setup of at least one follower to enable the share service, but pydexcom will use your credentials, not the follower's.

  2. Install the pydexcom package.

    pip3 install pydexcom

Usage

>>> from pydexcom import Dexcom
>>> dexcom = Dexcom("username", "password") # add ous=True if outside of US
>>> bg = dexcom.get_current_glucose_reading()
>>> bg.value
85

>>> bg.mmol_l
4.7

>>> bg.trend
4

>>> bg.trend_description
'steady'

>>> bg.trend_arrow
'→'

>>> bg.time
datetime.datetime(2020, 5, 6, 18, 18, 42)

FAQ

What do I need to get started?
If you are currently on the Dexcom GCM system, all you need is the appropriate mobile app with the Dexcom Share service enabled.
Where is this package being used?
For now this package is mainly being used in the Dexcom home assistant integration, but is generic enough to be used in lots of applications. In fact, reddit user paulcole710 used it to track glucose levels using a Raspberry Pi and e-ink display.
Why not use the official Dexcom Developer API?
The official Dexcom API is a great tool to view trends, statistics, and day-by-day data, but is not suitable for real time fetching of glucose readings.
How can I let you know of suggestions or issues?
By all means submit a pull request if you have a feature you'd like to see in the next release, alternatively you may leave a issue if you have a suggestion or bug you'd like to alert me of.
Are there any features in development?
Sure, I'm thinking of implementing a session status checker, or maybe an asynchronus version. That being said, simplicity - getting real time blood glucose information - is most important to this package.

Development

Dexcom class
Method Input Output Description
__init__ username:str,
password:str,
ous:bool=True
Dexcom Dexcom constructor, stores authentication information
create_session Creates Dexcom Share API session by getting session id
verify_serial_number serial_number:str bool Verifies if a transmitter serial number is assigned to you
get_glucose_readings minutes:int=1440,
max_count:int=288
[GlucoseReading]/
None
Gets max_count glucose readings within the past minutes, None if no glucose reading in the past 24 hours
get_latest_glucose_reading GlucoseReading/
None
Gets latest available glucose reading, None if no glucose reading in the past 24 hours
get_current_glucose_reading GlucoseReading/None Gets current available glucose reading, None if no glucose reading in the past 6 minutes
GlucoseReading class
Attribute Definition Example
value Blood glucose value in mg/dL. 85
mg_dl Blood glucose value in mg/dL. 85
mmol_l Blood glucose value in mmol/L. 4.7
trend Blood glucose trend information as number 0 - 9 (see constants). 4
trend_description Blood glucose trend information description (see constants). 'steady'
trend_arrow Blood glucose trend information as unicode arrow (see constants). '→'
time Blood glucose recorded time as datetime. datetime.datetime(2020, 5, 6, 18, 18, 42)
Constants
Trend Trend description Trend arrow
0 '' ''
1 'rising quickly' '↑↑'
2 'rising' '↑'
3 'rising slightly' '↗'
4 'steady' '→'
5 'falling slightly' '↘'
6 'falling' '↓'
7 'falling quickly' '↓↓'
8 'unable to determine trend' '?'
9 'trend unavailable' '-'

About

Simple Python API to interact with Dexcom Share service

License:MIT License


Languages

Language:Python 100.0%