🏠 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:

🎬 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.