Wyjaśnienie unikalnej architektury AI-Speaker.
Postaram się opisać, co jest unikalnego w naszym projekcie, czym różnimy się od systemu na RPi czy na mini serwerach z kontenerami Dockera. Pozwoli to lepiej zrozumieć, dlaczego idziemy tą drogą i podjąć decyzję czy AIS to system dla Ciebie? Zapraszam do lektury.
Linux + Android
Na bramkach AIoT mamy 3 warstwy:
- Jądro Linux-a,
- System Android
- Aplikacje AIS dom.
Aplikacja AIS-dom współdzieli to samo jądro z systemem Android.
Cały system AI-Speaker ma takie składowe:
- System Android ze środowiskiem Linux : minimalny system podstawowy oraz dodatkowe pakiety dostępne za pomocą menedżera pakietów APT z naszego repozytorium pakietów Ais Linux.
- AIS dom + inne nasze aplikacje dostępne w Google Play
- Platforma automatyki : platfroma AIS-dom bazująca na Home Assistant Core oraz na projekcie Zigbee2Mqtt do komunikacji z urządzeniami zigbee. Te systemy działają w naszej aplikacji AIS dom (w przestrzeni naszego użytkownika w systemie).
- Usługi online : w serwisie online mamy zdefiniowane stacje radiowe, podcasty, kanały wiadomości oraz dostępy do usług zewnętrznych wymagających uwierzytelnienia. Panel integratora
Aktualizacje AIS, które wydajemy co miesiąc, dotyczą głównie punktu 3. - aktualizujemy to co działa w aplikacji AIS dom. Projekty Home Assistant Core oraz Zigbee2Mqtt są bardzo intensywnie rozwijane i to jest główną przyczyną częstych aktualizacji.
Partycje na bramce- wyjaśnienie
Mamy te same partycje, co system Android, ponieważ ten system został zaprojektowany tak żeby nie dało się go zepsuć. Postaram się to wyjaśnić i opisać rolę partycji: boot, system, recovery, data, cache (te same partycje są na tablecie, telefonie, zegarku, telewizorze, samochodzie… z systemem Android).
/boot
To jest partycja, która umożliwia uruchomienie bramki (jak zresztą sugeruje nazwa). Zawiera jądro Linuxa i ramdysk. Bez tej partycji urządzenie po prostu nie będzie mogło się uruchomić. Aktualizacja tej partycji powinna być wykonywana tylko wtedy, gdy jest to absolutnie konieczne - chodzi o to, że po wyczyszczeniu tej partycji NIE MOŻNA ponownie uruchamiać urządzenia przed jej ponownym zapisaniem.
/system
Ta partycja zawiera cały system operacyjny Android, z wyjątkiem jądra i ramdysku (na partycji boot). Obejmuje to interfejs użytkownika Androida, a także wszystkie aplikacje systemowe AIS, które są fabrycznie zainstalowane na urządzeniu.
Ta partycja jest montowana tylko do odczytu - nie można nic zapisać w partycji system.
/recovery
Partycja odzyskiwania to alternatywna partycja rozruchowa (boot), która umożliwia uruchomienie urządzenia w celu wykonania na nim zaawansowanych operacji… takich jak → przywrócenie do ustawień fabrycznych.
/data
Partycja danych, zwana także partycją użytkownika, zawiera dane użytkownika - to miejsce, do którego trafiają Twoje integracje, ustawienia i zainstalowane aplikacje. Wyczyszczenie tej partycji zasadniczo powoduje przywrócenie ustawień fabrycznych na urządzeniu, przywracając je do stanu, w jakim było po pierwszym uruchomieniu. Podczas usuwania danych / przywracania ustawień fabrycznych w trybie recovery jest to ta partycja, którą czyścisz.
/cache
Jest to partycja, na której Android przechowuje często używane dane i ekrany (aktywności) aplikacji. Wyczyszczenie pamięci podręcznej nie wpływa na Twoje dane w systemie, ale po prostu usuwa ulotne dane, które są automatycznie tam ponownie zapisywane w miarę dalszego korzystania z urządzenia.
Pełny reset aplikacji
Pełny reset aplikacji opisany w dokumentacji, to wyczyszczenie danych w jednej aplikacji → AIS dom, która jest na partycji data. Nie ma to wpływu na cały system i o to chodzi.
tak samo działa to na telefonie z Android itd…
Aplikacja AIS dom, a co za tym idzie Home Assistant i Zigbee2Mqtt działają w przestrzeni użytkownika i nie mają możliwości pisana w przestrzeniach innych użytkowników (aplikacja w android to użytkownik Linux). Partycja system jest tylko do odczytu.
Tak wygląda układ partycji w DEV1:
Korzyści i ograniczenia
Architektura naszego systemu - współdzielenie jądra Linux-a z Android to ogromne korzyści:
Mamy “niezniszczalną” strukturę systemu zaprojektowaną przez firmę Android, którą kupiło Google żeby konkurować z iOS.
Cały system Android bazuje na Linux i jest za darmo wraz z dostępem do kodów.
Mamy jądro Linux-a skompilowane przez Amlogic, wraz z zastrzeżonymi kodekami audio i video, które ma tylko Amlogic - dzięki temu odtwarzamy świetnie multimedia. Te same kompilacje dostaje np. Google czy Amazon od Amlogic do ich sprzętów.
Mamy świetne API Android i dostęp do ogromnej ilości usług w tym TTS i STT, które jest zaimplementowane w systemie
Mamy dostęp do układów i płyt Amlogic w dobrych cenach, bo są one produkowane i sprzedawane w milionach egzemplarzy.
Są też ograniczenia, nie można mieć wszystkiego:
Nasz serwer działa w przestrzeni użytkownika systemu, czyli w lokalizacji naszej aplikacji: /data/data/pl.sviete.dom
dlatego nie używamy oficjalnych pakietów Debiana ani Ubuntu w swoim środowisku. Mamy własne kompilacje binarek, które uwzględniają tą niestandardową ścieżkę (cały nasz system można uruchomić na telefonie czy tablecie i też będzie działał).
Nie mamy kontenerów tak jak w mini serwerach PC (głównie dlatego, że wirtualizacja to spadek wydajności).
Nie mamy GPIO tak jak w RPi.
Podsumowując
System AIS to nie jest opowiedź na wszystkie problemy tego świata i nie zastępuje wszystkich urządzeń. Inni producenci nie powinni się martwić, no może poza Fibaro ale wg nas bramki AIoT będą w ten sposób robione jak nasza. Naszym docelowym klientem będzie użytkownik, który radzi sobie z telefonem Android. Gdyby nie Android i jego architektura oraz “ograniczenia” to już dawano projekt by się zakończył niepowodzeniem bo nie nadążylibyśmy wysyłać kart pamięci
Jak potrzebujesz GPIO, to kup płytkę developerską która ma GPIO - jest takich setki.
Jak chcesz administrować bazami danych, zarządzać kontenerami Dockera, to kup mini serwer NUC i instaluj tam kontenery Dockera i nimi zarządzaj.
A jak chcesz po prostu bramkę, która działa bez wentylatora i do której możesz po minucie od uruchomienia powiedzieć: “Włącz radio …” i Jolka to zrobi, a następnie możesz zintegrować urządzenia, ponazywać je i też głosowo nimi sterować, po 30 minutach czytania dokumentacji dojdziesz do tego, że kliknięciem możesz włączyć szyfrowany dostęp zdalny i mieć sterowanie domu z całego Internetu… Jeżeli rozumiesz tą wartość, to bramka AIS dom jest dla Ciebie
Polecamy się
PS
Ten post to trochę odpowiedź na wątki z “forum dla fachowców od OpenSource”, którzy nie widzą wartości dodanej w tym AIS i Jolce… bo przecież to kopia HA, Z2M i RPi i jeszcze Pythona i Linuxa skopiowali (a nie, to chyba jednak HA skopiowało Pythona od Google, a Google Android od Linuxa), ale w sumie to po co przepłacać jak “można ze szwagrem taki system zrobić z Internetu”???
Nie będzie innej odpowiedzi… będziemy przekierowywać tu. Mamy sporo kodu do napisania i szkoda czasu na dyskusje, szczególnie z osobami które pod przykrywką adwokata Open Source “chcą nam pomóc”… a jak nie dostają sprzętu za darmo to recenzują, że nie widzą wartości w takim urządzeniu Kody AIS są Open Source, my potrafimy programować, tworzymy i wspieramy Open Source, co nie znaczy, że rozdajemy za darmo.