kashamalasha / nightscout-widget-electron

An Electron widget application to show on a desktop blood glucose value is getting from Nightscout API

Home Page:https://github.com/kashamalasha/nightscout-widget-electron

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Owlet

The cross-platform application, that uses the Nightscout API. The aim is to provide a lightweight interface for your T1D measurement visualization (blood sugar levels).

The app's name is "Owlet", which means baby owl and is chosen because of the Nightscout project logo.

Donate me on Boosty Donate me on PayPal

README Translation

IT PL RU

Project Description

The widget will stay on top of your screen, so you don't need to keep your Nightscout site in the browser opened to see your/your relative's or kid's measurements in real-time anymore.

I was inspired by the mlukasek/M5_NightscoutMon solution, built on M5 Stack's hardware platform.

Screenshot-widget

Installation packages

Download for Windows

Download for macOS(Apple Silicon)

Download for macOS(Intel)

Download for Linux

Download Souces

Download Souces

LINUX user, expand it and read..
The widget is packed in an [AppImage](https://appimage.org/) package due to the following reasons:
  • It runs on all common Linux distributions
  • It supports an auto-update feature (but doesn't support notification about it)
  • AppImage usage simplifies the development process and testing on many different Linux distributions

I recommend using AppImageLauncher to properly integrate the AppImage into the OS and create all the necessary .desktop files to launch it as an installed application. However, this decision is entirely up to you. You can launch the application immediately after downloading from the folder you choose to download and create the .desktop file manually.

Please install the listed dependencies using the OS package manager:

  • wmctrl
  • xdg-utils

Without these listed dependencies, the widget will still work, but it might be difficult to manage the window states properly (wmctrl is used to hide the app from the application panel and tray) and to open other applications (xdg-open is used to open the browser for redirecting to the Nightscout site and open the file manager to navigate to the logs folder).

Without these packages, the widget will alert you about the missing dependencies once a day on every launch.

Auto-update may cause freezing. The application starts checking for updates right after the launch, but only once a day. If it finds a new version in the latest releases, it will begin downloading and replacing the AppImage on your drive, which usually takes about 1-2 minutes. If the application freezes, you need to wait until it awakens, or alternatively, you can kill the process using the ps command and restart it.

The issue is related to the lack of usability of the notification-daemon. Sometimes, the D-Bus service doesn't configure properly, and as a result, the notify-send command cannot be executed. If the notify-send command works fine on your distribution, then it is not your issue, and everything should function properly.

Please note that the AppImage doesn't have yet a built-in mechanism to notify about the updates. If you are knowledgeable about how to implement this feature, you are welcome to contribute by submitting a pull request; I would sincerely appreciate it.

⚠️ Before start

‼️ THIS IS VERY IMPORTANT: You have to be sure that all steps are done before you make the first launch!

  1. Log in to the admin panel of your Nightscout site (e.g. https://some-cgm.site.com/admin/)
  2. Create a new role with permission to read data using the pattern *:*:read
  3. Create a new subject for the application with the role created in step 2, or use an existing role with the pattern to read data *:*:read
  4. Copy the access token for this subject to your clipboard or save it

First start

On the first launch, the app will prompt you to fill in the following settings

Screenshot-widget

1. Nightscout API Settings

  • NIGHTSCOUT URL - is the address of your nightscout (e.g. https://some-cgm.fly.dev)
  • NIGHTSCOUT TOKEN - the access token you've created on the previous steps
  • NIGHTSCOUT REQUEST INTERVAL (SEC.) - (default: 60) the interval of the getting information from the Nightscout site to display in the widget

2. Widget preferences

  • AGE LIMIT (MIN.) - (default: 20) the timeout of data requesting interval, after that interval widget will change its appearance to a "frozen" state. This typically indicates that the reader is offline, detached from the sensor, or the smartphone's battery is drained. If you prefer the widget not to freeze, you can set this property to 0. The maximum allowable value for this field, as well as the maximum value shown, is 999 minutes.

Screenshot-widget

  • SHOW AGE - (default: enabled) that option displays additional information about how old the shown data is

  • UNITS IN MMOL/L - (default: enabled) that option allows to display sensor glucose values in mmol/l instead of mg/d. If you decide to modify this setting, please verify the blood sugar level preferences based on the selected units of measurement after making changes. Remember to save the settings after adjusting the measurement unit system.

  • CALC TREND - (default: disabled) This option allows to calculate the direction of the trend using the last six received (for the last half an hour) SGV values. You may find it useful when your sensor doesn't have built-in option (e.g., Dexcom, Medtronic) and the Nightscout API doesn't store this value. In such cases, you will see a - symbol in the bottom right corner of the widget all the time instead of a trend arrow.

The app uses the following Abbot™ FreeStyle Libre™ sensors algorithm to recognize the trend pattern.

Screenshot-widget

You can find more information on the approach to using trend arrows to adjust insulin doses in the article of the Journal of the Endocrine Society: Approach to Using Trend Arrows in the FreeStyle Libre Flash Glucose Monitoring Systems in Adults.

PDF version available for downloading.

3. Blood sugar levels preferences

Set the blood sugar tracking parameters using the following guides:

  • Above the HIGH LEVEL TRESHOLD (default: 10) and below th LOW LEVEL THRESHOLD (default: 3.5) the last value will be colored in red

Screenshot-widget

  • Above the TARGET TOP LEVEL (default: 8.5) and below the TARGET BOTTOM LEVEL (default: 4) the last value will be colored in orange

Screenshot-widget

  • By default, the last value will be colored in green

Screenshot-widget

  • You may test the entered connection parameters by clicking the TEST button to verify the Nightscout site is accessible and the token is correct
  • If everything is ok, press the SAVE button to save settings and restart the application

4. Settings language and localization

  • You can choose the settings language by clicking on the top left EN icon and selecting your preferred language.

Screenshot-widget

  • Currently, the application offers the following languages:

    • English
    • Hebrew
    • Italian
    • Polish
    • Russian
    • Slovak
    • Spanish
  • If you feel confident and have a good grasp of a foreign language, you can contribute to the translation of the application by becoming a project contributor on POEditor.

Using the widget

  • After restarting, the widget will always stay on top of the screen until you close it by clicking the top left corner with the X sign.
  • If you need to change the settings you can click by the gear symbol in the bottom left corner.
  • If you want to fast navigate to the Nightscout site, you can click the middle button with the graph symbol.

Auto updates

  • The widget has a built-in implementation of the update system.
  • The widget will check for the latest release availability every time it starts, but only once a day.
  • If the latest release is available, the widget will automatically download and install it right after exiting.
  • On Mac and Windows operating systems, users will receive a notification about the newly downloaded version.
  • On Linux, the notification doesn't work properly yet.

Work In Progress

  • Unit tests coverage using Jest
  • Create landing page of the project based on Jekyll
  • Replace the Electron engine for the Tauri app

If you feel desire to improve it or help. You can suggest any ideas or detected bugs to the project board.

To build it from source code

To clone and run this repository, you'll need Git and Node.js (which comes with npm) installed on your computer. From your command line do:

# Clone this repository
git clone https://github.com/kashamalasha/nightscout-widget-electron
# Go into the repository
cd nightscout-widget-electron
# Install dependencies
npm install
# Run the app
npm start
# Or run in developer mode for deeper logging and debugging
npm run dev

Operating systems compatibility

Compatible with:

  • Apple MacOS (10.10+)
  • Microsoft Windows (10+)
  • Linux (tested on Ubuntu, Fedora, CentOS, Alma on GNOME Desktop and XFCE)

Additional Resources

License

GNU GPL v3

Contacts

Feel free to contact me any of these ways:

🙏 I'll appreciate any feedback!

About

An Electron widget application to show on a desktop blood glucose value is getting from Nightscout API

https://github.com/kashamalasha/nightscout-widget-electron

License:GNU General Public License v3.0


Languages

Language:JavaScript 76.5%Language:CSS 13.4%Language:HTML 10.1%