2.8 KiB
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_changeddla 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 RESTHaEntity— DTO mapujący JSON z/api/statesHaWebSocketClient— klient WebSocket z obsługąauth,subscribe_eventsEntityStateCache— mapującyentity_id → EntityState(wPrefsiMainActivity)HaWorker—HandlerThreadjako jeden wątek sieciowy (single-core device)WeakReference/runOnUiThreadw callbackach sieciowych — unikanie wyciekówActivity
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ółówsensor/binary_sensor— wyświetlanie wartości i stanówswitch— przełączanie ON/OFFautomation/script— wywoływanie akcji (EXECUTE)
Wydajność i stabilność
- Bauhaus Canvas — autorski, lekki silnik graficzny (ręczne rysowanie na
Canvas) - Optymalizacja
onDraw— cachowanieStaticLayout, 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