npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

minimed-connect-to-nightscout

v1.5.5

Published

Send Medtronic pump and CGM data to Nightscout.

Downloads

1,388

Readme

minimed-connect-to-nightscout

MiniMed Connect is a device which communicates with a Medtronic insulin pump over 916MHz radio to gather data about pump status. This data may include readings from an Enlite continuous glucose monitor (CGM). The Connect forwards pump data via Bluetooth LE to a proprietary app running on an iPhone. The iPhone app uploads the data to Medtronic's servers, enabling authorized users to view it on the Medtronic CareLink Connect website.

Nightscout is an open source, DIY project that allows real-time access to CGM data on any platform. The core of the Nightscout project is cgm-remote-monitor, a web service which can receive and broadcast CGM data using a Mongo database. Various other software projects communicate with an instance of cgm-remote-monitor, either to transmit data from a CGM device, or to display that CGM data on a computer, smartphone/tablet, or smartwatch.

minimed-connect-to-nightscout is a web scraper which sends data from Medtronic CareLink Connect to Nightscout. It does so by posing as a web browser, logging into CareLink Connect, periodically downloading pump status data from the Medtronic server, and uploading that data to a Nightscout server.

Prerequisites

Installation on Azure

The easiest installation mode is to set up an instance of Nightscout cgm-remote-monitor on Azure and enable the mmconnect plugin. This module is packaged with Nightscout 0.8.2+ and can pull data from CareLink Connect as part of the web server process. Follow this guide.

Installation on Heroku

Another turnkey installation option is to run this on a Heroku worker dyno. You may find this more reliable than Azure. Follow the Share2 Bridge instructions for Heroku, substituting this repo for share2nightscout-bridge.

Deploy

Installation in general

  1. Install Node.
  2. Clone this repository.
  3. npm install to install dependencies.
  4. Set environment variables (see below).
  5. npm start and leave it running.

Required environment variables

  • CARELINK_USERNAME - your username for CareLink
  • CARELINK_PASSWORD - your password for CareLink
  • API_SECRET - the value you use for API_SECRET on your Nightscout website
  • WEBSITE_HOSTNAME - the hostname for your Nightscout instance, which looks like your.host.com. If you are running this script in the same Azure environment as Nightscout, there is no need to set this, as it will already be set by Azure. If you set NS (see below), you do not need to set this.

Optional environment variables

  • CARELINK_REQUEST_INTERVAL - number of milliseconds to wait between requests to the CareLink server (default: 60000)
  • CARELINK_SGV_LIMIT - maximum number of recent sensor glucose values to send to Nightscout (default: 24)
  • CARELINK_MAX_RETRY_DURATION - maximum number of seconds to spend retrying failed requests to CareLink, ideally a power of 2 (default: 512)
  • CARELINK_QUIET - set to a truthy value to not output details of CareLink and Nightscout requests to the console (default: empty)
  • MMCONNECT_SERVER - set to EU if you are based in Europe / using Guardian Connect
  • NS - a fully-qualified Nightscout URL (e.g. https://sitename.azurewebsites.net) which overrides WEBSITE_HOSTNAME

Currently supported data

  • Sensor glucose values and trend (single/double arrow up/down)
  • Pump: active insulin, reservoir level, battery level
  • MiniMed Connect: battery level, connection status to phone, connection status to pump
  • Sensor: calibration state, time until next calibration, sensor duration, connection status to pump
  • Pump model

Understanding of the current data is based mostly on this analysis.

API

run.js demonstrates how to use the key API features in production. A minimal example would look like:

var mmcns = require('minimed-connect-to-nightscout');
var client = mmcns.carelink.Client({username: 'username', password: 'password'});
client.fetch(function(err, data) {
  if (!err) {
    var transformed = mmcns.transform(data);
    mmcns.nightscout.upload(transformed.entries, 'https://your.ns.host/api/v1/entries.json', 'api-secret', callback);
    // ...or:
    mmcns.nightscout.upload(transformed.devicestatus, 'https://your.ns.host/api/v1/devicestatus.json', 'api-secret', callback);
    // ...or use `transformed.entries` and `transformed.devicestatus` directly
  }
});

Contributing

File an issue if you'd like to give feedback, request an enhancement, or report a bug.

Pull requests are welcome, provided they include tests. See test/ for examples. Run npm test to run the suite.

Much of the Medtronic HTTP interaction is based on the excellent work by @bewest and @ianjorgensen on mmcsv.

Disclaimer

This project is intended for educational and informational purposes only. It relies on a series of fragile components and assumptions, any of which may break at any time. It is not FDA approved and should not be used to make medical decisions. It is neither affiliated with nor endorsed by Medtronic, and may violate their Terms of Service.