Przejdź do treści
Wszystkie projekty

02Portfolio

WireAmbi — oświetlenie auta z telefonu i Android Auto

Aplikacja na Androida do tanich taśm LED ELK-BLEDOM i MELK, działająca na telefonie i na ekranie Android Auto. Światło pulsuje w rytm muzyki, a polecenia głosowe działają bez internetu. Z bramą led-auto aplikacja pokazuje też stan drzwi i zamków.

  • 01/07
  • 02/07
  • 03/07
  • 04/07

W liczbach

Testy automatyczne
359
Od uderzenia w muzyce do wysłania koloru
6 ms
Style reakcji na muzykę
9
01

Problem

Tanie sterowniki taśm LED z rodziny ELK-BLEDOM nie mają dokumentacji, a aplikacja producenta nie działa na ekranie auta. Różne modele rozumieją te same polecenia inaczej: sterownik w aucie je ignorował, choć telefon za każdym razem zgłaszał, że wysłał je poprawnie. Sterownik nie informuje o swoim stanie, przyjmuje tylko jedno połączenie naraz i nie ma szyfrowania. Przy Android Auto dźwięk nie wychodzi z głośnika telefonu, więc tryb muzyczny nie usłyszy go przez mikrofon.

02

Podejście

Polecenia sterowników wziąłem z publicznej listy modeli w integracji elkbledom dla Home Assistant i sprawdziłem je na sprzęcie. Aplikacja rozpoznaje model po nazwie i wybiera jeden z trzech wariantów komunikacji, a efekty, które różne modele rozumieją inaczej, liczy sama. Każde polecenie czeka na potwierdzenie i w razie odmowy idzie jeszcze raz, a przy szybkich zmianach koloru do taśmy trafia zawsze najnowszy, więc światło nie zostaje w tyle. W trybie muzycznym aplikacja słucha tego, co odtwarza telefon, wykrywa uderzenia oraz tempo utworu i przewiduje kolejne uderzenie. Logika jest oddzielona od Androida i Bluetootha, więc testy sprawdzają dokładnie te bajty, które trafiłyby do sterownika. Ekrany w Android Auto trzymają się limitów systemu, które odczytałem z kodu samej biblioteki. Z bramą led-auto aplikacja łączy się szyfrowanym kanałem WireLink.

03

Efekt

Aplikacja działa z prawdziwym sterownikiem (MELK-OC21) na Androidzie 15. Ekrany do auta sprawdziłem w emulatorze Android Auto, a w samochodzie aplikacja działa z bramą led-auto i panelem Android Auto. Pilnuje jej 359 testów automatycznych, a wersja do publikacji buduje się bez ostrzeżeń. Od wykrycia uderzenia w muzyce do wysłania koloru mija średnio 6 ms. Przy utworze 123 BPM typowy odstęp między błyskami wyniósł 487 ms, a z tempa wynika 488 ms. Interfejs jest po polsku i angielsku.

Jak to działa

Najważniejsze funkcje w krótkich klipach.

  1. 01

    Parowanie bez zgadywania

    Kreator prowadzi przez uprawnienia i wyszukiwanie urządzeń Bluetooth, a sterowniki sortuje od najsilniejszego sygnału. Wybrany sterownik zapamiętuje, więc w aucie WireAmbi łączy się sam, także po wejściu w Android Auto.

  2. 02

    Kolory, sceny i koło barw

    Osiem gotowych kolorów, koło barw na pełen zakres i sceny, które zapisują pod nazwą kolor, jasność, tryb i tempo. Suwak wysyła tylko wartość, na której zatrzymał się palec, a każde polecenie czeka na potwierdzenie, więc żadne nie ginie po cichu.

  3. 03

    Światło w rytm muzyki

    Aplikacja słucha tego, co odtwarza telefon, a nie mikrofonu, więc tryb muzyczny działa też z Android Auto. Sama wykrywa uderzenia i tempo utworu, a kolejne uderzenie przewiduje z wyprzedzeniem. Do wyboru jest dziewięć stylów reakcji, od pulsu po tęczę i iskry.

  4. 04

    Kalibracja pod każdy sterownik

    Tanie sterowniki rozumieją polecenia na trzy różne sposoby, a aplikacja wybiera właściwy po nazwie urządzenia. Gdy taśma jest inaczej okablowana i kolory się mylą, test kolorów od razu to pokazuje, a jedno stuknięcie ustawia właściwą kolejność.

  5. 05

    Panel auta z bramą led-auto

    Telefon łączy się z bramą led-auto szyfrowanym kanałem WireLink i na bieżąco pokazuje stan zamków i drzwi na modelu 3D auta. Po otwarciu drzwi zapala się światło wejścia. Odryglowanie i szyby aplikacja zabezpiecza biometrią albo PIN-em właściciela, ale w aucie te funkcje nie są jeszcze podłączone.

  6. 06

    Android Auto i głos offline

    Na ekranie auta są siatka kolorów, sceny i kafle skrótów, które układa się w telefonie. Polecenia głosowe rozpoznaje Vosk bez internetu. Aplikacja zna tylko swoją listę komend i wykonuje polecenie dopiero wtedy, gdy dobrze rozpoznała każde słowo.

Napisz