2024-10-31

Virtuino programowanie cześć 3 czyli po co skrypty są

 


Pracując okazjonalnie z aplikacją VIRTUINO nie miałem pojęcia jakie potężne możliwości oferuje. Większość z nich (np. rejestrator danych czy charakterystyki czasowe) mają sens jedynie przy stale działającej aplikacji. A gdy już uruchomimy na stałe Virtuino pojawia się nam nieprawdopodobna liczba możliwych operacji i działań. Wcześniej używany BLYNK w tym porównaniu wypada bardzo słabiutko. 




Jeżeli chcemy wykorzystać programistyczne możliwości Virtuino należy zapewnić nieprzerwaną pracę aplikacji 24/7 oraz niezawodną łączność pomiędzy aplikacją a modułami ESP.

Zapewnienie stabilnej i nieprzerwanej pracy aplikacji w Androidzie tak naprawdę nie jest możliwe. Nie do takich celów został zaprojektowany ten system. To nie Linux czy Windows Serwer. Ponadto z założenia Android minimalizuje liczbę aplikacji działających w tle. W zasadzie działa tylko to co widzimy na ekranie - pozostałe aplikacje (za wyjątkiem niewielu systemowych) zawieszają działanie. I tak zmiana karty w przeglądarce zamraża działanie wcześniej oglądanej karty. To sam dotyczy pulpitów Virtuino. Zmiany w obrębie pulpitu dokonują się jedynie wtedy gdy pulpit jest widoczny. Jaki ma to konsekwencje dla działania aplikacji zostanie opisane później.  

Te i inne ograniczenia mocno rzutują na możliwości zapewnienia nieprzerwanej pracy Virtuino w systemie Android. Można postawić aplikację na Windowsie ale to burzy piękną koncepcję pulpitu sterującego domowym systemem automatyki - czyli powieszenie taniego tabletu i sterowania z niego całym domem.

Należy więc przyzwyczaić się do tego że jednak czasami nasza aplikacja przestanie działać i uwzględnić to przy projektowaniu systemu. Na przykład wszystkie istotne funkcje sterowania muszą działać autonomicznie w obrębie danego modułu ESP nawet w przypadku utraty komunikacji z Virtuino. Nie jest to trudne i większości przypadków w zupełności akceptowalne. 

Pewne działania można tez zrobić w samym Virtuino


Dla zwiększenia niezawodności pracy Androida warto postawić Virtuino na "czystym" systemie bez żadnych dodatkowych aplikacji. Warto też przypiąć ekran Virtuino co może zapobiec przypadkowemu wyłączeniu aplikacji https://support.google.com/android/answer/9455138?hl=pl#pin_older_android

W ustawieniach baterii należy wskazać Virtuino jako aplikację wyłączoną z automatycznej kontroli działania co pozwoli na automatyczne uruchamianie aplikacji przy włączeniu urządzenia i działaniu aplikacji w tle. Powinno pozwolić ale u mnie to jak raz nie działa na Android w wersji 8. 

Jeśli mamy w miarę stabilnie uruchomione Virtuino należy zapewnić jeszcze stabilne połączenie aplikacji z modułami. Przez chwilę był problem z niezawodnością komunikacji pomiędzy aplikacją a modułami. Transmisja danych zawieszała się co jakiś czas i wymagany był restart aplikacji lub ESP. Problem udało się  zlokalizować i naprawić. Szczegóły tu>>>  i tu>>>>

Teraz już można przystąpić do programowania w Virtuino używając podstawowego do tego narzędzia jakim są skrypty






Skrypty to tak naprawdę procedury i funkcje, których używamy dokładnie tak jak w każdym języku programowania. Do dyspozycji mamy ponadto zmienne wewnętrzne (emulator) i dane zewnętrzne powiązane z określonym modułem. Żonglując odpowiednio tymi zasobami możemy tworzyć naprawdę złożone i efektywne bloki programowe wspierające działania poszczególnych modułów.

Pytanie zasadnicze - po co skrypty i czy nie dałoby się ich funkcji połączyć na przykład z widgetami ???

Odpowiedź brzmi: NIE
Skrypty są po to by zmusić aplikację do wykonywania pewnych zadań w tle. Jak pisałem Android "obsługuje" zasadniczo tylko widoczny pulpit aplikacji. Pozostałe aplikacje a nawet inne pulpity tej samej aplikacji (np. karty przeglądarki czy pulpity Virtuino) pozostają uśpione do czasu aż je wyświetlimy. Jeśli na widocznym pulpicie (A) dokonamy zmiany wartości zmiennej za pomocą jakiegoś widgetu, a zmienna ta jest użyta również na innym pulpicie (B) to zmiany na pulpicie B zostaną wprowadzone dopiero gdy pulpit B wyświetlimy. Nie ma to większego znaczenia dla większości widgetów. Ale jeśli taki widget na pulpicie B miałby swoją zmianą generować jakąś akcję (takie możliwości ma na przykład widget BUTTON) to zmiana wartości zmiennej na widocznym pulpicie A nie wygeneruje akcji przez widget znajdujący się na uśpionym pulpicie B.

Toteż najważniejszą cechą istnienia skryptów  w Virtuino jest to, iż przekształca one prostą aplikację HMI (Human-Machine Interface) w spójny system integrujący w sposób kompletny wszystkie elementy domowej automatyki niezależnie od pulpitu który jest aktualnie wyświetlany.
Skrypty zmieniają wartości zmiennych (pinów) niezależnie od tego czy dany pin jest lub nie jest powiązany z jakimkolwiek widgetem umieszczonym na pulpicie .

Jak to zrobić opowie nam niewątpliwie nasz ulubiony ciąg dalszy.


Brak komentarzy:

Prześlij komentarz