Aktualizujemy 2 aplikację na bramkach
Aktualizacje wydamy jutro na kanale BETA, a 31 marca na kanale stabilnym.
Głównym celem jest uproszczenie pierwszego uruchomienia bramki ale też “uładnienie” kolejnych uruchomień
Stopniowo odchodzimy od pokazywania konsoli i ustawień, a będziemy pokazywać same ładne ekrany… bo wszyscy lubią ładne ekrany
AisLauncher
Pierwsza zmieniona aplikacja to AisLauncher.
AisLauncher to nasz Androidowy… Launcher, czyli aplikacja do uruchamiania aplikacji.
Nasz Launcher realizuje w systemie 2 rzeczy:
- uruchomienia aplikacji AIS-dom serwer
- aktualizację aplikacji AIS-dom serwer
Jedyną zamianą w tej aplikacji jest to, że przy pierwszym uruchomieniu bramki będzie ona uruchamiać nie aplikację AIS dom serwer ale nowy kreator do pierwszej konfiguracji… nie zauważycie tej zmiany bo, mieliście już pierwsze uruchomienie bramki.
Ta sugestywna ikonka pokazuje co robi aplikacja AisLauncher:
Ais Dom Serwer
Serwer AIS to jest aplikacja która działa na bramce i jest uruchamiana przez AisLauncher po każdym starcie bramki.
Podczas pierwszego uruchomienia (lub po pełnym resecie tej aplikacji), aplikacja AIS dom serwer pobiera najnowszą paczkę pakietów startowych które potrzebuje do działania:
następnie je rozpakowuje:
generuje dostep ssh i uruchamia usługi:
Normalnie podczas każdego startu bramki, odbywa się taki przepływ: System Android → AisLauncher → AIS dom serwer → uruchomienie usług
- ais / ha
- ftp
- mqtt
- webssh
- …
→ uruchomienie ładnego ekranu
Po uruchomieniu usług, najczęściej następowało przejście do ustawień aplikacji albo do jednego z trybów sterowania, albo system zostawał w konsoli… ten “flow” był ogarniany przez system Android który sam uruchamiał ostatnie aktywności.
Teraz będzie zauważalna zmiana w tym procesie - pokażemy tylko na chwilę konsolę podczas startu - żeby można było widzieć czy wszystkie usługi wstają poprawnie. Następnie zawsze automatycznie przejdziemy do “ładnego ekranu”.
Czyli będzie “mniej widocznej konsoli i ustawień w systemie” i o to w tej aktualizacji chodzi
Dodatek 1 - Instalacja ręczna aplikacji Androidowych
Poniższy opis jest dla zaawansowanych technicznie osób. Nie rób tego jeśli nie jesteś pewny, że wiesz co robisz.
Gdyby ktoś już tęsknił za znikająca za szybko konsolą i chciał zrobić instalację ręcznie to już wyjaśniamy jak to zrobić.
W ten sam sposób można instalować inne aplikacji Android na bramce - więc ten opis może się przydać.
- Pobranie aplikacji
Najłatwiej to zrobić programem curl
który dostarczamy na bramce.
To jest komenda która wpisana w konsoli pobiera aplikację AisLauncher.apk z naszej strony OTA i zapisuje ją w folderze /sdcard na bramce:
curl -o "/sdcard/AisLauncher.apk" -L https://powiedz.co/ota/android/AisLauncher.apk
efekt:
- Instalacja aplikacji
Aplikację może instalować tylko su
(super user), aplikacja która instaluje inne aplikacje w systemie Android to program pm
package manager.
Ta komenda to uruchomienie instalacji aplikacji z lokalizacji sdcard (do której jest dostęp po ftp), jako su/root w systemie:
su -c "pm install -r /sdcard/AisLauncher.apk"
efekt komendy - zainstalowana nowa aplikacja na bramce:
To samo możemy zrobić z aplikacją AIS dom serwer - analogiczne 2 komendy:
pobieramy:
curl -o "/sdcard/AisPanelApp-test.apk" -L https://powiedz.co/ota/android/AisPanelApp-test.apk
instalujemy:
UWAGA - po instalacji aplikacji serwer nastąpi zatrzymanie serwera na bramce przez system Android. Trzeba ponownie uruchomić bramkę żeby wszystko wstało ponownie.
su -c "pm install -r /sdcard/AisPanelApp-test.apk"
Dodatek 2 - Uruchamianie aplikacji Android z konsoli AIS
Do uruchamiania w systemie Android innych aplikacji / aktywności służy mechanizm intencji.
Z konsoli możemy zrobić to za pomocą aplikacji am
application manager.
Np ta komenda wydana z konsoli włącza nasz “ładny ekran”:
su -c "am start -n pl.sviete.dom/pl.sviete.dom.WelcomeActivity --es BROADCAST_REDIRECT_ME_TO_ACTIVITY 1"
podobie możecie uruchomić z konsoli aplikację Explorer plików:
su -c "am start -n pl.sviete.dom.anexplorer.pro/dev.dworks.apps.anexplorer.DocumentsActivity"
Ten sam mechanizm działa do każdej aplikacji Android która rozumie “intencje”.
W ten sposób możecie zrobić automatyzację i otwierać np aplikację Netflix komendą głosową “Uruchom Nowy wspaniały świat”
Dodatek 3 powłoka Linux / bash
Tak jak opisywaliśmy na początku, podczas każdego startu bramki, odbywa się taki przepływ w systemie:
System Android → AisLauncher → AIS dom serwer → Uruchomienie usług (ssh, ais / ha, ftp, mqtt…) → Uruchomienie aktywności Android / ładnego ekranu
Ten ostatni krok (wyświetlenie ładnego ekranu) realizowany jest obecnie w powłoce startowej użytkownika Linux.
Żeby konsola nie pojawiała się na starcie wystarczy zmienić kolejność 2 lnijek w bash:
Np. tak jak pokazano strzałkami:
pm2 resurrect
czyli wskrzeszenie serwisów przez pm2
i
su -c "am start -n pl.sviete.dom/pl.sviete.dom.WelcomeActivity --es BROADCAST_REDIRECT_ME_TO_ACTIVITY 1"
start WelcomeActivity, czyli ładnego ekranu.
Gdyby zamienić te 2 linijki to nie będzie konsoli na starcie tylko ładny ekran… ale to jeszcze nie teraz
Nie piszemy o jaki dokładnie plik na bamce chodzi, żebyście nie popsuli sobie bramek - ta konfiguracja to zaawansowany temat dla tych co rozumieją bash - polecamy wprowadzenie: