Script written in TypeScript that uploads CGM readings from LibreLink Up to Nightscout. The upload should work with at least Freestyle Libre 2 (FGM) and Libre 3 CGM sensors.
The script takes the following environment variables
Variable | Description | Example | Required |
---|---|---|---|
LINK_UP_USERNAME | LibreLink Up Login Email | [email protected] | X |
LINK_UP_PASSWORD | LibreLink Up Login Password | mypassword | X |
LINK_UP_CONNECTION | LibreLink Up Patient-ID. Can be received from the console output if multiple connections are available. | 123456abc-abcd-efgh-7891def | |
LINK_UP_TIME_INTERVAL | The time interval of requesting values from libre link up | 5 | |
LINK_UP_REGION | Your region. Used to determine the correct LibreLinkUp service (Possible values: US, EU, DE, FR, JP, AP, AU, AE) | EU | |
NIGHTSCOUT_URL | Hostname of the Nightscout instance (without https://) | nightscout.yourdomain.com | X |
NIGHTSCOUT_API_TOKEN | SHA1 Hash of Nightscout access token | 162f14de46149447c3338a8286223de407e3b2fa | X |
NIGHTSCOUT_DISABLE_HTTPS | Disables the HTTPS requirement for Nightscout URLs | true | |
LOG_LEVEL | The setting of verbosity for logging, should be one of info or debug | info | |
SINGLE_SHOT | Disables the scheduler and runs the script just once | true |
There are different options for using this script.
- Click on
- Login to Heroku if not already happened
- Provide proper values for the
environment variables
- Important: make sure that yor Nightscout API token is hashed with SHA1
- Click
Deploy
to deploy the app
The installation process can be started by running npm install
in the root directory.
To start the process simply create a bash script with the set environment variables (start.sh
):
#!/bin/bash
export LINK_UP_USERNAME="[email protected]"
export LINK_UP_PASSWORD="mypassword"
export LINK_UP_TIME_INTERVAL="5"
export NIGHTSCOUT_URL="nightscout.yourdomain.com"
# use `shasum` instead of `sha1sum` on Mac
export NIGHTSCOUT_API_TOKEN=$(echo -n "foo-bar-baz" | sha1sum | cut -d ' ' -f 1)
export LOG_LEVEL="info"
npm start
Execute the script and check the console output.
The easiest way to use this is to use the latest docker image:
docker run -e LINK_UP_USERNAME="[email protected]" \
-e LINK_UP_PASSWORD="mypassword" \
-e LINK_UP_TIME_INTERVAL="5" \
-e NIGHTSCOUT_URL="nightscout.yourdomain.com" \
-e NIGHTSCOUT_API_TOKEN="librelinku-123456789abcde" \
-e LOG_LEVEL="info" \
timoschlueter/nightscout-librelink-up
If you are already using a dockerized Nightscout instance, this image can be easily added to your existing docker-compose file. In this example, the region is set for germany ("DE"):
version: '3.7'
services:
nightscout-libre-link:
image: timoschlueter/nightscout-librelink-up
container_name: nightscout-libre-link
environment:
LINK_UP_USERNAME: "[email protected]"
LINK_UP_PASSWORD: "mypassword"
LINK_UP_TIME_INTERVAL: "5"
LINK_UP_REGION: "DE"
NIGHTSCOUT_URL: "nightscout.yourdomain.com"
NIGHTSCOUT_API_TOKEN: "librelinku-123456789abcde"
LOG_LEVEL: "info"
- Integration into Nightscout: I have not yet looked into the plugin architecture of Nightscout. Maybe this should be converted into a plugin.