W oryginale aplikacja nazywa się "Owlet", co oznacza małą sowę. Nazwa wzięła swój początek w logo Nightscout. Polska nazwa, Sówka, zdecydowanie jest zgrabniejsza :)
Sówka jest projektem międzyplatformowym zbudowanym przy użyciu frameworka Electron, wykorzystującego API Nightscout. Celem było przygotowanie ultralekkiego interfejsu dla dyskretnej i ciągłej obserwacji odczytów glikemii z twojego systemu CGM.
Widżet pozostaje ponad wszystkimi oknami, nie musisz już utrzymywać otwartej zakładki Nightscout w przeglądarce, aby na bieżąco śledzić zmiany poziomu glukozy u siebie lub swojego dziecka/podopieczniego.
Zainspirowałem się rozwiązaniem mlukasek/M5_NightscoutMon, zbudowanym na platformie sprzętowej M5 Stack's.
LINUX user, expand it and read.. (English)
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.
‼️ TO JEST BARDZO WAŻNE: Musisz się upewnić, że wykonałeś/aś wszystkie poniższe kroki jeszcze przed pierwszym uruchomieniem aplikacji!
- Wejdź na swoją stronę Nightscout, zaloguj się swoim API Secret i z menu hamburger wybierz Narzędzia administratora (np. https://some-cgm.site.com/admin/)
- Utwórz nowy obiekt o nazwie owlet i uprawnieniach readable
*:*:read
- Po dodaniu obiektu kliknij niebieski link, strona otworzy się w nowej zakładce
- Wykopiuj pełny adres strony, razem z zawartym w nim tokenem - wystarczy skopiować do schowka, ale możesz także zapisać w pliku
Przy pierwszym uruchomieniu aplikacja poprosi o uzupełnienie danych i wybór odpowiednich ustawień. Zanim przejdziesz dalej, zerknij na lewy górny róg okna ustawień - znajduje się w nim przełącznik języka. Wybierz Polish.
- NIGHTSCOUT - ADRES (URL) - to jest twój adres Nightscout (np. https://some-cgm.fly.dev) - wklej tu zawartość schowka, skasuj znaki /? jeśli zostały na końcu po przeniesieniu tokena do pola niżej
- NIGHTSCOUT - TOKEN - token wykopiowany z pola powyżej, jeśli robiłeś/aś wszystko zgodnie z instrukcję, będzie się zaczynał od owlet-
- CZAS MIĘDZY ODCZYTAMI NIGHTSCOUT (SEK.) - (domyślnie: 60) czas pomiędzy kolejnymi zapytaniami do strony Nightscout. Dla FreeStyle Libre z odczytami co minutę wybierz 60, dla pozostałych systemów CGM możesz wydłużyć czas do 300. Jeśli odczyty będą opóźnione, zmniejszaj ten parametr.
- BRAK DANYH OD (MIN.) - (domyślnie: 20) parametr wskazuje czas w minutach, po którym aplikacja uzna połączenie z sensorem CGM za "zamrożone". Zwykle oznacza to brak połączenia z internetem aplikacji CGM, błąd/awarię/utratę sensora lub transmitera, albo po prostu wyczerpanie baterii smartfona obsługującego system CGM. Jeśli wolisz, by widżet nie oznaczał takiego stanu, po prostu wpisz tu 0. Maksymalna doswolona wartość to 999, co oznacza 999 minut przed oznaczeniem sensora jako offline/zamrożony.
-
CZAS OD ODCZYTU - (domyślnie: włączony) pokazuje czas w minutach, jaki upłynął od odtatniego odczytu CGM
-
UŻYJ MMOL/L - (domyślnie: włączony) właczenie tej opcji oznacza obsługę w mmol/L. Polscy użytkownicy powinni odznaczyć ten checkbox, co będzie oznaczać przełącznie aplikacji w tryb wyświetlania w mg/dL. Pamiętaj, że należy zmodyfikować także Zakresy glikemii w prawym okienku.
-
KALKULUJ TREND - (domyślnie: wyłączony) włączenie tej opcji spowoduje wewnętrzne wyliczanie strzałki trendu na podstawie ostatnich sześciu odczytów (czyli z ostatnich 30 minut). Włącz jeśli zamiast strzałki trendu zobaczysz na widźecie, w prawym dolnym rogu, znak "-" (minus). W standardowych warunkach opcja ta nie wymaga włączenia - dane o trendzie będą przekazywane przez Nightscout.
Aplikacja używa metody wyliczania trendu znanego z systemu FreeStyle Libre™ produkowanych przez Abbot™.
Więcej informacji o strzałkach trendu, ich interpretacji oraz zasadach dostosowania dawek insuliny znajdziesz w artykule Journal of the Endocrine Society: Approach to Using Trend Arrows in the FreeStyle Libre Flash Glucose Monitoring Systems in Adults.
Wersja PDF w/w artykułu do ściągnięcia.
Ustaw zakresy wyświetlania glikemii zgodnie z poniższymi wytycznymi, zgodnymi z consensusem ATTD 2019. Domyślne wartości w polach są wyrażone w mmol/L i dla polskich użytkowniów powinny być zmienione na wartości w mg/dL. Polskie tłumaczenie zawiera w nawiasach podpowiedź co do standardowych wartości wyświetlania. Znajdą one zastosowanie w większości przypadków, użyj innych jeśli jesteś kobietą w ciąży lub i/lub masz inne wytyczne od swojego diabetologa.
- Powyżej znacznika WYSOKI (250) (domyślnie: 10) i poniżej znacznika NISKI (55) (domyślnie: 3.5) ostatni odczyt na widźecie będzie w kolorze czerwonym
- Powyżej W ZAKRESIE - GÓRA (180) (domyślnie: 8.5) i poniżej W ZAKRESIE - DÓŁ (70) (domyślnie: 4) ostatni odczyt na widźecie będzie w kolorze pomarańczowym
- Pomiędzy znacznikami W ZAKRESIE - DÓŁ (70) i W ZAKRESIE - GÓRA (180) ostatni odczyt na widźecie będzie w kolorze zielonym - i tego widoku wam życzymy jak najczęściej :)
- Możesz przetestować wpisane parametry połączenia z Nightscout klikając przycisk PRZETESTUJ aby upewnić się, czy wprowadzony URL i token są poprawne
- Jeśli wszystko jest w porządku, kliknij przycisk ZAPISZ aby trwale zapisać ustawienia widżetu i go zrestartować
- Możesz zmienić wersję językową klikając znacznik EN w prawym górnym roku okna ustawień i wybierając preferowany język. Znacznik zmieni się na PL w przypadku języka polskiego.
-
Aktualnie aplikacja oferuje języki:
- English
- Italian
- Polish
- Russian
-
Jeśli czujesz się na siłach, chcesz pomóc w rozwoju aplikacji, to zapraszamy do zespołu w roli tłumacza. Wystarczy założyć konto w POEditor i zgłosić się do mnie (metody kontaktu na dole tego pliku).
- Po każdorazowym restarcie komputera widżet zostanie automatycznie uruchomiony i pozostanie na ekranie ponad wszelkimi widocznymi oknami innych aplikacji. Tak będzie do momentu wyłączenia aplikacji poprzez kliknięcie znaku X w lewym górnym rogu widżetu.
- Jeśli chcesz dokonać zmian w ustawieniach, kliknij ikonkę zębatki w dolnym lewym rogu widżetu.
- Jeśli chcesz szybko otworzyć stronę Nightscout, kliknij środkową ikonkę (wykres) po lewej stronie widżetu. Twoja strona Nightscout otworzy się w domyślnej przeglądarce.
- Aplikacja posiada wbudowany mechanizm automatycznych aktualizacji.
- Aplikacja sprawdzi, czy pojawiła się nowsza wersja przy każdym starcie widżetu, jednakże nie częściej niż raz dziennie.
- Jeśli na serwerze developera dostępna jest nowsza wersja, aplikacja ściągnie i zainstaluje ją przy kolejnym zamknięciu widżetu (ręcznym lub podczas zamykania systemu).
- Na platformach macOS i Windows użytkownik otrzyma stosowną informację o pobraniu nowszej wersji.
- Na komputerach z systemem Linux, takie powiadomienie nie działa jeszcze poprawnie.
- Unit tests coverage using Jest
- Strona internetowa projektu bazująca na Jekyll
- Wymiana silnika aplikacji Electron na Tauri app
Jeśli masz ochotę pomóc lub znalazłeś jakieś pole do poprawek: Możesz zgłosić błędy lub zaproponować rozwiązania/poprawki na tablicy projektu.
Aktualna wersja repozytorium aplikacji zawiera następujące pliki i katalogi (English):
package.json
- Points to the app's main file and lists its details and dependencies.main.js
- Starts the app and creates a widget. This is the app's main process.widget.html
- An HTML file for the main window. This is the app's renderer process starting point.settings.html
- An HTML file for the settings window. This is the app's settings.styles.css
- Styles for the renderer processjs/widget.js
- The app's core renderer process JS code.js/settings.js
- The settings form renderer process JS code.js/logger.js
- Logger adapter for electron-log library.js/preload.js
- The API interface for IPC messaging between main process and renderer process.js/backend.js
- The code to obtain data from Nightscout API using AJAX.js/util.js
- The JS code to adapt collected data to a human-readable view.js/auto-update.js
- The app's auto-updater JS implementation.js/translator.js
- This file contains the implementation of the localization JS class.js/localization/{lang}.json
- These files contain key sets for localization, with {lang} being a placeholder for the specific language code.js/config-schema.json
- The app's config json schema validation file.js/config-sample.json
- The app's config.json examplejs/config-default.json
- The default values for the config.jsonbuild/
- The build directory contains the necessary files for building the application on your host from the source code.docs/
- Screenshots for this README.
Do sklonowania i uruchomienia aplikacji będziesz potrzebował/a Git i Node.js (które są dostępne dzięki npm) zainstalowanym na twoim komputerze. Z linii komend wykonaj:
# Klonowanie repozytorium
git clone https://github.com/kashamalasha/nightscout-widget-electron
# przejście do lokalnego repozytorium
cd nightscout-widget-electron
# Instalacja
npm install
# Uruchomienie aplikacji
npm start
# Ewentualnie uruchomienie w trybie inżynieryjnym dla pogłebionego logowania i debugowania
npm run dev
Aplikacja jest kompatybilna z systemami operacyjnymi:
- Apple macOS,
- Microsoft Windows,
- Linux (przetestowane na dystrybucjach: buntu, Fedora, CentOS, Alma/GNOME Desktop i XFCE)
Możesz skompilować ze źródeł aplikację natywnie działającą w twoim systemie operacyjnym i według twoich ustawień systemowych korzystając z następujących narzędzi:
- electron-forge
- electron-builder (aktualnie wykorzystywany przeze mnie)
- electronjs.org/docs - pełna dokumentacja Electon
- electron.build - dokumentacja electron-builder
- Nightscout API v3 - dokumentacja Nightscout API v3
- Icons8.com - Świetne ikonki i zasoby użyte przeze mnie w tym projekcie
- POEditor - lokalizacja aplikacji (tłumaczenia)
Zachęcam do kontaktu ze mną za pośrednictwem preferowanej metody:
🙏 Będę wdzięczny za wszelkie komentarze i informacje zwrotne!