diff --git a/lib/plugins/lvconnect.js b/lib/plugins/lvconnect.js
new file mode 100644
index 00000000..d230ac20
--- /dev/null
+++ b/lib/plugins/lvconnect.js
@@ -0,0 +1,84 @@
+'use strict';
+
+var engine = require('lvconnect');
+
+function init( env, bus ) {
+  if(   env.extendedSettings.lvconnect &&
+      ( env.extendedSettings.lvconnect.userName           || env.extendedSettings.lvconnect.proUserName           ) &&
+      ( env.extendedSettings.lvconnect.password           || env.extendedSettings.lvconnect.proPassword           ) &&
+      ( env.extendedSettings.lvconnect.trustedDeviceToken || env.extendedSettings.lvconnect.proTrustedDeviceToken )
+  ) {
+    return create( env, bus );
+
+  } else {
+    console.info( 'LibreView connect is not enabled, or misconfigured.' );
+  }
+}
+
+function create( env, bus ) {
+  let opts = {
+    login         : {
+      accountName        : env.extendedSettings.lvconnect.userName ||
+                           env.extendedSettings.lvconnect.proUserName,
+      password           : env.extendedSettings.lvconnect.password ||
+                           env.extendedSettings.lvconnect.proPassword,
+      trustedDeviceToken : env.extendedSettings.lvconnect.trustedDeviceToken ||
+                           env.extendedSettings.lvconnect.proTrustedDeviceToken,
+      patientId          : env.extendedSettings.lvconnect.patientId,
+      proCredentialsUrl  : env.extendedSettings.lvconnect.proCredentialsUrl,
+      proCredentialsKey  : env.extendedSettings.lvconnect.proCredentialsKey
+    },                   // No shorter than 5 minutes, or longer than 8 hours
+    interval             : env.extendedSettings.lvconnect.interval >   299999 ||
+                           env.extendedSettings.lvconnect.interval < 28800001 ?
+                           env.extendedSettings.lvconnect.interval :  3600000,
+    nightscout           : {},
+    maxFailures          : env.extendedSettings.lvconnect.maxFailures       || 3,
+    fetchTimeout         : env.extendedSettings.lvconnect.fetchTimeout      || 2000,
+    firstFullDays        : env.extendedSettings.lvconnect.firstFullDays     || 1
+    // timeOffsetMinutes    : env.extendedSettings.lvconnect.timeOffsetMinutes
+  };
+
+  return {
+    startEngine : ( entries ) => {
+
+      opts.callback  = callback( entries );
+      opts.lastts    = lastts( entries );
+
+      let timer = null;
+      (function run() {
+        console.info( "Fetching LibreView Data..." );
+        engine(opts);
+        timer = setTimeout(run, opts.interval);
+      })();
+
+      if (bus) bus.on('teardown', () => { if( timer ) clearInterval(timer); });
+    }
+  };
+}
+
+function callback( entries ) {
+  return ( err, glucose ) => {
+    if( err )
+      console.error( 'lvconnect error: ', err );
+    else
+      entries.create( glucose, ( err ) => {
+        if( err ) console.error('lvconnect storage error: ', err);
+      });
+  };
+}
+
+function lastts( entries ) {
+  return ( records ) => {
+    entries.list({
+      find: {
+        device: {
+          $regex: 'lvconnect'
+        }
+      },
+      count: 1,
+    }, records );
+  }
+}
+
+init.create   = create;
+init.callback = callback;
+exports = module.exports = init;
diff --git a/lib/server/bootevent.js b/lib/server/bootevent.js
index b377abcc..4f362adc 100644
--- a/lib/server/bootevent.js
+++ b/lib/server/bootevent.js
@@ -357,6 +357,22 @@ function boot (env, language) {
     next( );
   }

+  function setupLVConnect (ctx, next) {
+
+    console.log('Executing setupLVConnect');
+
+    if (hasBootErrors(ctx)) {
+      return next();
+    }
+
+    ctx.lvconnect = require('../plugins/lvconnect')(env, ctx.bus);
+    if (ctx.lvconnect) {
+      ctx.lvconnect.startEngine(ctx.entries);
+    }
+    next( );
+  }
+
+
   function finishBoot (ctx, next) {

     console.log('Executing finishBoot');
@@ -386,6 +402,7 @@ function boot (env, language) {
     .acquire(setupConnect)
     .acquire(setupBridge)
     .acquire(setupMMConnect)
+    .acquire(setupLVConnect)
     .acquire(finishBoot);
 }

diff --git a/package.json b/package.json
index ef36cda4..0fd957cf 100644
--- a/package.json
+++ b/package.json
@@ -106,6 +106,7 @@
     "jsdom": "=11.11.0",
     "jsonwebtoken": "^9.0.0",
     "lodash": "^4.17.20",
+    "lvconnect": "^0.1.22",
     "memory-cache": "^0.2.0",
     "mime": "^2.4.6",
     "minimed-connect-to-nightscout": "^1.5.5",
