Files
Retro_HA/ROADMAP.md
Krzysztof Cieślik 22a3e0fe7e Initial commit
2026-06-13 21:43:53 +02:00

2.8 KiB

RetroHA — Roadmap

Sieć i integracja z HA

  • Ekran konfiguracji: adres serwera HA + Long-Lived Access Token
  • Klient REST (Retrofit) — pobieranie stanu encji (/api/states)
  • Wywoływanie serwisów HA (/api/services/<domain>/<service>) — toggle, execute
  • WebSocket (/api/websocket) — subskrypcja zdarzeń state_changed dla aktualizacji w czasie rzeczywistym
  • Logika ponownego łączenia po utracie połączenia (exponential backoff)
  • Wskaźnik stanu połączenia w górnym pasku (połączono / rozłączono / łączenie)
  • Obsługa błędów: timeout, 401 Unauthorized, 404 Not Found

Architektura — warstwa sieciowa (moduł shared)

  • HaApiService — interfejs Retrofit z endpointami REST
  • HaEntity — DTO mapujący JSON z /api/states
  • HaWebSocketClient — klient WebSocket z obsługą auth, subscribe_events
  • EntityStateCache — mapujący entity_id → EntityState (w Prefs i MainActivity)
  • HaWorkerHandlerThread jako jeden wątek sieciowy (single-core device)
  • WeakReference / runOnUiThread w callbackach sieciowych — unikanie wycieków Activity

Konfiguracja widgetów

  • Ekran dodawania widgetu — przeglądarka encji HA (lista z wyszukiwarką)
  • Trwałe zapisywanie listy widgetów (JSON w SharedPreferences)
  • Usuwanie widgetu (przez ekran wyboru encji)
  • Zmiana kolejności widgetów (drag & drop lub przyciski ↑↓)
  • Filtrowanie widgetów przez zakładki (Oświetlenie, Gniazdka, Moc, itp.)

Obsługa typów encji

  • light — sterowanie jasnością (slider, auto-zapis po puszczeniu)
  • light — sterowanie kolorem (jeśli obsługuje)
  • climate — wyświetlanie temperatury docelowej, trybu HVAC; widok szczegółów
  • sensor / binary_sensor — wyświetlanie wartości i stanów
  • switch — przełączanie ON/OFF
  • automation / script — wywoływanie akcji (EXECUTE)

Wydajność i stabilność

  • Bauhaus Canvas — autorski, lekki silnik graficzny (ręczne rysowanie na Canvas)
  • Optymalizacja onDraw — cachowanie StaticLayout, unikanie alokacji w pętli rysowania
  • Obsługa bardzo starych urządzeń (optymalizacja pod słabe procesory)
  • ProGuard / R8 dla release buildu

UI

  • Zakładki (Tabs) do szybkiego filtrowania domen
  • Obsługa języków (PL/EN)
  • Tryb Kiosk (Wake Lock) — ekran nie gaśnie przy widocznej aplikacji
  • Responsywność — automatyczna liczba kolumn (Grid)

i18n

  • Pełne wsparcie dla języka polskiego (PL)
  • Pełne wsparcie dla języka angielskiego (EN)
  • Tłumaczenia na języki: DE, FR, UK

Testy

  • Testy instrumentalne — AppNavigationTest, AutomatedClickTest
  • Monkey Stress Test — testowanie stabilności pod dużym obciążeniem
  • Unit testy — ExampleUnitTest