{"id":17877566,"url":"https://github.com/osa1/dextrack","last_synced_at":"2026-01-16T00:48:15.025Z","repository":{"id":50472798,"uuid":"509745100","full_name":"osa1/Dextrack","owner":"osa1","description":"A Garmin watch face with blood glucose monitoring","archived":false,"fork":false,"pushed_at":"2024-09-28T15:04:42.000Z","size":949,"stargazers_count":8,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-08T15:15:41.149Z","etag":null,"topics":["garmin","garmin-watch","garmin-watch-face","monkey-c","watch-face","watch-faces"],"latest_commit_sha":null,"homepage":"","language":"Monkey C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osa1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-02T12:07:06.000Z","updated_at":"2024-10-10T13:09:01.000Z","dependencies_parsed_at":"2024-05-28T21:27:03.414Z","dependency_job_id":"e2d94126-1795-49df-8dec-1b41a25113f5","html_url":"https://github.com/osa1/Dextrack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osa1%2FDextrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osa1%2FDextrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osa1%2FDextrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osa1%2FDextrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osa1","download_url":"https://codeload.github.com/osa1/Dextrack/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246916744,"owners_count":20854511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["garmin","garmin-watch","garmin-watch-face","monkey-c","watch-face","watch-faces"],"created_at":"2024-10-28T11:52:19.502Z","updated_at":"2026-01-16T00:48:15.012Z","avatar_url":"https://github.com/osa1.png","language":"Monkey C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"right\" width=\"200\" src=\"photo.png\"\u003e\n\n# Dextrack — a Garmin watch face with blood glucose monitoring\n\nDextrack is a Garmin watch face that shows last hour of blood glucose readings,\nobtained from Dexcom share API.\n\n**Please make sure to check the official Dexcom app before making bolus or\neating decisions!**\n\n**Currently only Garmin Fenix 7s Pro is supported.**\n\n## User interface\n\n\u003cimg align=\"right\" src=\"screenshot_annotated.png\"\u003e\n\n1. Last blood glucose reading obtained from Dexcom share.\n\n   This shows a message (instead of a glucose level) when the last reading is\n   more than 10 minutes old.\n\n2. Current time and date\n\n3. Last hour of glucose levels, plotted in a graph.\n\n   - Blue line: 200 mg/dl\n   - Red line: 80 mg/dl\n   - Gray line: in the middle, 140 mg/dl\n\n4. Indicates when the last reading was done, as reported by Dexcom. \"-1m\" in\n   the screenshot means the shown bg level (132 mg/dl) was read by Dexcom 1\n   minute ago.\n\n   When this number (ignoring the minus sign) is less than 5, you don't need to\n   check your phone or Dexcom device for a more recent reading, as Dexcom reads\n   every 5 minutes.\n\n   When this number (ignoring the minus sign) is larger than 5, then it's\n   possible that your phone or Dexcom device will show a more recent reading.\n\n5. Indicates when the next request to Dexcom share will be done, to read more\n   recent numbers.\n\n   An important limitation to be aware of is Garmin SDK requires at least 5\n   minutes between HTTP requests. This means once we get the recent numbers\n   from Dexcom share, we have to wait at least 5 minutes before requesting bg\n   levels again.\n\n   In most cases, the number you will see here will be 5 or less. However in\n   some cases, to catch up with recent readings without too much delay,\n   Dextrack waits more than 5 minutes before reading bg levels.\n\n   For example, suppose we requested bg levels at 14:08, and the most recent\n   reading was done at 14:05. We will show 3-minute-old bg level in (1). If we\n   keep reading new bg levels every 5 minutes, we will always show 3-minute-old\n   data.\n\n   So in this case we wait 7 minutes instead 5. This means we will miss the\n   reading at 14:10, but starting from 14:15 we will always show the most\n   recent reading, with only a few seconds delay.\n\n6. Blood glucose change rate, based on the last two readings.\n\n   \"-0.3/m\" in the screenshot means that between the last two readings, the bg\n   level was dropping 0.3 mg/dl per minute.\n\n7. Watch battery level\n\nWhen there is an error and during the login sequence, (1) shows a message on\nwhat the device is doing, and a number in parens for when the next update will\nbe done.\n\n## Installation\n\nDextrack is currently not available on Connect IQ Store, as it currently has no\nway of configuring Dexcom username, password, and share server to use (based on\nlocation). See development section below for details.\n\nThis will be fixed soon, and you will be able to install and configure it like\nany other watch face in Connect IQ Store.\n\nTo install Dextrack on your watch, you first need to get your account id. This\nis easily done by running this command after cloning the git repo: (requires\nPython 3)\n\n```\n$ ./tools/get_account_id.py \u003cyour Dexcom username\u003e \u003cyour Dexcom password\u003e\n```\n\nThis tool will print a line with 36 characters. This is your Dexcom account id.\nCopy this, and create the file `source/Secrets.mc` with contents:\n\n```\n(:background)\nconst DEX_ACCOUNT_ID = \"\u003cyour Dexcom account id\u003e\";\n\n(:background)\nconst DEX_PASSWORD = \"\u003cyour Dexcom password\u003e\";\n```\n\nNow you can compile the project as usual (see [Garmin's tutorial][1]), **using\nSDK version 7.3.0**, and copy the generated file (the one with extension\n`.prg`) to your watch (e.g. to `Primary/GARMIN/APPS`).\n\n**If you are in the US**, update \"shareous1\" in `get_account_id.py` and\n`source/Consts.mc` files to \"share2\".\n\n[1]: https://developer.garmin.com/connect-iq/connect-iq-basics/getting-started/\n\n## Development\n\nI spent hours but failed to add a settings page to allow configuring Dexcom\nusername, password, and share server. Any help on this would be appreciated.\n\nOnce we have a settings page I will publish Dextrack on Connect IQ Store.\n\n## Thanks\n\nDextrack would not be possible without xDrip developers' heroic effort to [hack\na Dexcom app and reverse engineer the Dexcom share API][2].\n\n[2]: https://github.com/StephenBlackWasAlreadyTaken/xDrip/issues/182#issuecomment-1164859237\n\n## Related software\n\n- [xDrip][3]\n- [Dex CGM app][4] (not open source) is what I used on my watch before writing\n  Dextrack.\n\n[3]: https://github.com/NightscoutFoundation/xDrip\n[4]: https://apps.garmin.com/en-US/apps/0bf06c99-78f1-4b93-83d3-03f2317720b9\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosa1%2Fdextrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosa1%2Fdextrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosa1%2Fdextrack/lists"}