Wróć do bloga
Agenci AI

HA Battery Monitor – projekt naszego kursanta

Bateria w czujniku Zigbee potrafi rozładować się po cichu, zanim ktokolwiek to zauważy. HA Battery Monitor odpytuje Home Assistant o stan baterii i jakość sygnału, a Gemini zamienia surowe odczyty w diagnozę: który czujnik padnie za dwa tygodnie i dlaczego.

6 min czytania
case study, Home Assistant, Zigbee, Python, Gemini API, smart home

„Czy bateria w czujniku smart home może się rozładować po cichu? Nie w moim domu” – tak Tomasz, jeden z naszych kursantów, opisał punkt wyjścia swojego projektu.

W jego domu Home Assistant zarządza siecią czujników Zigbee – temperatury, otwarcia drzwi. Każdy z nich działa na baterii, a bateria w czujniku smart home ma to do siebie, że rozładowuje się bez ostrzeżenia. Sam Home Assistant udostępnia stan baterii przez lokalne API. Problem w tym, że nikt nie sprawdza tego API codziennie, dopóki jakiś czujnik nie przestanie odpowiadać.

Zamiast poprzestać na prostym odpytaniu API o stany urządzeń, Tomasz połączył lokalną automatykę z modelem AI – tak powstał HA Battery Monitor.

Post na LinkedIn Tomasza o stacjonarnym strażniku ekosystemu Home Assistant

Jak działa aplikacja

1

Integracja z Home Assistant

Odpytuje lokalne API o stany baterii, jakość sygnału Zigbee (LQI) oraz RSSI dla wszystkich czujników w domu.

2

Architektura SQLite

Zapisuje zebrane odczyty do lokalnej bazy danych przez SQLAlchemy ORM – pełna historia, bez zbędnego ruchu sieciowego.

3

Agregacja i optymalizacja promptu

Generuje lekkie zapytanie zredukowane z milionów do około 3 tys. tokenów – tylko najnowsze snapshoty odczytów.

4

Analiza przez Gemini API

Model AI przetwarza dane i przygotowuje zwięzły, interaktywny raport HTML z przewidywaniami zużycia energii i alertami.

5

Natywna obsługa w Windows

System pokazuje powiadomienia (Toasts) i otwiera raport w natywnym oknie WebView2 (pywebview).

Krok trzeci jest tu kluczowy. Surowa historia odczytów z bazy SQLite potrafi urosnąć do milionów wpisów – gdyby trafiały do modelu w całości, każde zapytanie kosztowałoby fortunę i czekałoby wieczność. Aplikacja agreguje je do najnowszych snapshotów per czujnik, zanim cokolwiek wyśle do Gemini. Stąd ~3 tys. tokenów zamiast milionów.

Diagnoza, nie tylko liczba

Surowe API Home Assistant zwróciłoby samą liczbę: 22% baterii. HA Battery Monitor idzie dalej – łączy poziom baterii z jakością połączenia radiowego i pyta, dlaczego bateria spada tak szybko.

Raport AI: analiza drenażu baterii termometru w sypialni przez słaby sygnał sieci Zigbee, z rekomendacjami rozbudowy sieci mesh

Dla termometru w sypialni raport wygląda tak: 22% baterii przy LQI 96 i RSSI -76 dBm. Sam poziom baterii teoretycznie wystarczyłby na kilka tygodni pracy, ale słaby sygnał wymusza częste retransmisje z maksymalną mocą nadawczą – a to przyspiesza rozładowanie do szacowanych 1,5–2 tygodni. Model proponuje konkretne działania: rozbudować sieć mesh o routery Zigbee (urządzenia bateryjne same sygnału dalej nie przekazują), dołożyć router w połowie drogi między koordynatorem a sypialnią, i sprawdzić, czy kanał Zigbee (15, 20 albo 25) nie koliduje z pasmem 2,4 GHz własnego Wi-Fi.

Na tym samym przebiegu inne cztery czujniki wypadły gorzej niż w prognozie – trzy z nich były już rozładowane w chwili sprawdzenia:

UrządzenieBateriaLQI (0–255)RSSI [dBm]Diagnoza
Termometr w salonie0%252-37Krytyczny – bateria całkowicie wyczerpana
Termometr od podwórkaunavailableunavailableunavailableKrytyczny – brak połączenia (prawdopodobnie rozładowana bateria)
Termometr od drogiunavailableunavailableunavailableKrytyczny – brak połączenia (prawdopodobnie rozładowana bateria)
Termometr w sypialni22%96-76Ostrzeżenie – słaby zasięg przyspiesza rozładowanie
Zbiorcze zestawienie stanu czterech czujników Zigbee w raporcie AI, z trzema urządzeniami w stanie krytycznym

Warto zwrócić uwagę na termometr w salonie: LQI 252 (najlepsze możliwe w tej skali) i RSSI -37 dBm (silny sygnał), a mimo to bateria na zerze. To pokazuje, że model nie zgaduje jednej przyczyny dla wszystkich – dobre połączenie po prostu oznacza zwykłe zużycie baterii, a nie problem z siecią, w przeciwieństwie do sypialni.

Zanim jeszcze otworzysz raport

Aplikacja nie czeka, aż ktoś sam ją uruchomi. Dodana do autostartu Windows, wysyła systemowe powiadomienia, gdy tylko wykryje rozładowany czujnik:

Powiadomienia systemowe Windows o rozładowanych czujnikach: termometr od drogi, od podwórka i w salonie

Pełny, interaktywny raport otwiera się dopiero na żądanie – w natywnym oknie WebView2, bez przeglądarki.

~3 tys.
tokenów na zapytanie do Gemini, po agregacji
1,5–2 tyg.
prognozowany czas do rozładowania słabo pokrytego czujnika
0%
poziom baterii, przy którym LQI wciąż był najwyższy z możliwych

Konfiguracja na start, potem cisza

Pierwsze uruchomienie sprowadza się do trzech pól: adresu Home Assistant, długowiecznego tokenu dostępowego i klucza do Gemini API.

Ekran pierwszej konfiguracji HA Battery Monitor – adres Home Assistant, token dostępowy i klucz Gemini API

Po zapisaniu konfiguracji aplikacja działa w tle. Nie trzeba jej pilnować – to ona pilnuje, żeby żaden czujnik temperatury czy otwarcia drzwi nie wyłączył się w najmniej odpowiednim momencie.

Całość powstała w Pythonie i jest open source na GitHubie.

Repozytorium HABatteryCheckerForWindows na GitHubie – foldery examples, pics, src oraz README

To kolejny z projektów, jakie kursanci StormIT budują dla siebie w trakcie nauki. Zobacz pozostałe albo sprawdź, jak zacząć swój.

Chcesz wdrożyć to u siebie?

Praktyczne kursy i wdrożenia AI oraz automatyzacji. Albo zapisz się na newsletter, żeby nie przegapić nowych treści.