Przejdź do treści
Home Blog Projekty O mnie

HomeOffice - Home Assistant

🏠 HomeOffice - Home Assistant

HomeOffice - Home Assistant to aplikacja desktopowa, która automatycznie synchronizuje status pracy z Home Assistant, dzięki czemu domownicy wiedzą, kiedy można zapukać, a kiedy lepiej poczekać. Monitoruje aktywność mikrofonu, kamery oraz grafik pracy, a następnie wystawia odświeżany status, który Home Assistant wykorzystuje do sterowania oświetleniem LED w moim gabinecie.

Tak wygląda moja domowa sygnalizacja:

  • 🟣 Spotkanie z kamerą – światła LED świecą fioletem
  • 🔴 Spotkanie tylko z mikrofonem – paski zmieniają się na czerwone
  • 🟡 W godzinach pracy – kolory przechodzą na ciepły żółty
  • 🟢 Poza pracą – wraca spokojna zieleń

Aplikacja to zestaw wiszących przycisków, które prezentują się następująco: Podgląd aplikacji HomeOffice

🎬 Demo

✨ Funkcjonalność

Aplikacja działa w dwóch trybach: automatycznym i manualnym.

Tryb automatyczny analizuje trzy sygnały:

  • skonfigurowane godziny pracy (dni i zakresy czasowe),
  • aktywność mikrofonu,
  • aktywność kamery.

Na ich podstawie przypisuje statusy: Available, Working, Meeting – microphone lub Meeting – camera i natychmiast wysyła je do Home Assistant przez REST API.

Tryb manualny pozwala wybrać dowolny status z listy (Available, Working, Meeting audio, Meeting video, Turn off) bez czekania na automatykę. Przydaje się np., gdy chcę na chwilę wyłączyć powiadomienia lub wejść w „focus mode”.

🔌 Integracja z Home Assistant

Aplikacja wysyła status do encji input_select.work_status, którą można wykorzystać do:

  • kafelków na dashboardzie,
  • automatyzacji (np. przyciszenie dzwonka, blokada odkurzacza w trakcie spotkań),
  • wysyłania powiadomień push do domowników.

Wystarczy podać URL instancji, Long-Lived Access Token oraz nazwę encji. Wszystkie dane odkładam w pliku YAML, więc konfigurację łatwo przenieść między komputerami.

🧱 Architektura

Projekt został napisany w Javie 21 z użyciem:

Warstwa UI

  • JavaFX 21 - framework do budowy interfejsu graficznego
  • JFoenix 9.0.10 - Material Design dla JavaFX
  • FontAwesomeFX - ikony

Warstwa logiki

  • Java Virtual Threads - mechanizm automatyzacji działa w osobnych wątkach
  • Java HttpClient - komunikacja REST API z Home Assistant
  • Jackson - parsowanie i serializacja konfiguracji YAML

Integracje systemowe

  • JNA (Java Native Access) i Windows Registry API do śledzenia urządzeń na Windowsie,
  • natywne wywołania macOS do tej samej funkcji na Makach.