GitHub Readme.md
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 mail@example.com 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: AE, AP, AU, CA, DE, EU2, EU2, FR, JP, US, LA) 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 NIGHTSCOUT_DEVICE_NAME Sets the device name used in Nightscout nightscout-librelink-up 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 ALL_DATA Upload all available data from LibreLink Up instead of just data newer than last upload. LibreLinkUp sometimes lags behind in reporting recent historical data, so it is advised to run the script with ALL_DATA set to true at least once a day. trueThere are different options for using this script.
environment variables
Deploy
to deploy the appThe 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="mail@example.com"
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 "librelinku-123456789abcde" | 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="mail@example.com" \
-e LINK_UP_PASSWORD="mypassword" \
-e LINK_UP_TIME_INTERVAL="5" \
-e LINK_UP_REGION="EU" \
-e NIGHTSCOUT_URL="nightscout.yourdomain.com" \
-e NIGHTSCOUT_API_TOKEN=$(echo -n "librelinku-123456789abcde" | sha1sum | cut -d ' ' -f 1) \
-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: "mail@example.com"
LINK_UP_PASSWORD: "mypassword"
LINK_UP_TIME_INTERVAL: "5"
LINK_UP_REGION: "DE"
NIGHTSCOUT_URL: "nightscout.yourdomain.com"
NIGHTSCOUT_API_TOKEN: "14c779d01a34ad1337ab59c2168e31b141eb2de6"
LOG_LEVEL: "info"
NIGHTSCOUT_API_TOKEN
must be a SHA1 hash of an Access Token from Nightscout (Add new subject first in Nightscout's Admin Tools if required), e.g. your Access Token for a subject named LibreLinkUp might be librelinku-123456789abcde
.
Obtain your hash with
echo -n "librelinku-123456789abcde" | sha1sum | cut -d ' ' -f 1
(use shasum
instead of sha1sum
on Mac)
which will print the hash (40 characters in length):
14c779d01a34ad1337ab59c2168e31b141eb2de6
You might also use an online tool to generate your hash, e.g. https://codebeautify.org/sha1-hash-generator