2024-11-02

Virtuino programowanie część 4 pierwszy przykład

 


Dziś pierwszy przykład programowania w Virtuino i co z tego wynikło









Do niedawna możliwości sterowania w obrębie domowej sieci automatyki wyglądał mniej więcej tak


Zielone strzałki to bezpośrednie sterowania z pilota do gniazda RF433 - to wciąż najpopularniejszy sposób załączania czegoś bez potrzeby ruszania się z fotela. Jedyny problem z tym rodzajem komunikacji to wymóg pracy z tym samym protokołem nadajnika i odbiornika. Ogranicza to wykorzystanie elementów systemu do jednego producenta lub konieczność stosowania urządzeń zdolnych do nauki nadawanego lub odbieranego kodu.

Niebieskie strzałki to sterowanie odbiornikiem przez nadajnik via moduł ESP. To świetny sposób na połączenie nadajników i odbiorników różnych producentów gdzie moduł ESP robi konwersję protokołów. Głównym jednak zadaniem takiej komunikacji jest realizacja programowo zaplanowanych działań np. załączanie oświetlenia o określonych porach czy uruchomienie obiegu pompy CWU z chwilą zadziałania czujki PIR.

Fioletowa strzałka pojawiła się z chwilą dodania do systemu IoT aplikacji Virtuino. Pozwoliło to na sterowanie działaniem poszczególnych modułów ESP z jednego miejsca jak również obserwację ich stanu. Nie była to jakaś istotna rewolucja w działaniu systemu - ot przyjemny gadżet którym można pochwalić się przed kolegami. Na tym etapie "rozwoju" systemu aplikacja Virtuino była załączana sporadycznie na różnych urządzeniach - najczęściej w aplikacji na telefonie bądź komputerze.

Przełomem stało się uruchomienie na stałe aplikacji Virtuino na leciwym już nieco tablecie. Dzięki temu pojawiła się jeszcze jedna strzałka

Czerwona strzałka wskazuje możliwość przesyłania dowolnych sygnałów pomiędzy modułami ESP  z wykorzystaniem Virtuino jako pośrednika. I to już był początek rewolucji. Rewolucji, która wciąż trwa i rozwija się w najlepsze. A wszystko dzięki narzędziom i skryptom zaprojektowanym przez Iliasa w Virtuino.
 

Przesłanie sygnału z jednego modułu ESP do innego modułu za pomocą Virtuino polega na przesłaniu wartości pinu  dowiązanego do nadawcy do pinu odbiorcy. 

Jest oczywistym, że takie przesyłanie wartości pinów (zmiennych) musi odbywać się niezależnie od tego jaki pulpit Virtuino jest wyświetlany czyli że trzeba to zrobić za pomocą skryptu. Jedyny warunek jest taki by aplikacja Virtuino była aktywna.

Przesyłanie sygnałów pomiędzy modułami można to zrobić na wiele sposobów w zależności jakim typem wielkości operujemy. 

I tak dla danych typu binarnego można użyć skryptu Logical gate

Przeniesienia wartości można dokonać dowolną funkcją logiczną


choć najbardziej oczywistą będzie funkcja BUF czyli wzmacniacza nie odwracającego powtarzającego wartość wejścia na wyjście.


połączenie dwu modułów ESP polega na zadeklarowaniu wejścia pinem jednego modułu a wyjścia drugiego np.


Powyższy skrypt przesyła sygnał z pinu V5 modułu o nazwie esp_grzalka do pinu V2 modułu esp_pompa. I to wszystko. Przy każdej zmianie wartości pinu V5 zmieni się odpowiednio wartości pinu V2. 

Przyjęło się że wartości TRUE i FALSE to 1 i 0. Virtuino dopuszcza jednak dowolne wartości jakie podstawimy pod TRUE i FALSE dla wejścia i wyjścia


przy czym wartość TRUE na wyjściu (128) będzie wtedy i tylko wtedy gdy pin wejściowy będzie miał wartość 555. Przy innych wartościach pinu V5 pin wyjściowy V2 będzie zawsze przyjmował wartość FALSE (77).

Co więcej wartościami mogą być wielkości typu TEXT więc niejako przy okazji można sobie tym skryptem zrobić porównywarkę tekstu !!! (tym ciekawym tematem może zajmę się w przyszłości)

Proste? Genialnie proste i niezwykle elastyczne. A to dopiero początek

Wartości liczbowych nie da się przesłać skrypem funkcji logicznych. Do tego celu musimy użyć skryptu funkcji matematycznych (Math script). Jego zastosowanie jest bardzo proste


Liczba z pinu V18 modułu esp_licznik zostaje wprost przeniesiona do pinu V11 modułu esp-sieć. Liczby mogą być w dowolnym formacie w tym zmiennoprzecinkowym. 

Naturalnie tym skryptem można też przesłać wartości binarne 0/1

Pozostaje jeszcze jeden typ zmiennych, który możemy chcieć przesyłać - to zmienne tekstowe. 

Wykorzystamy do przesłania danych skrypt "Text to variables converter". Skrypt ten pozwala wyodrębniać dane liczbowe z ciągu tekstowego. Jeżeli pozostawimy puste pola analizy (prefix suffix) to dane tekstowe bez żadnej zmiany zostaną skopiowane z pinu wejściowego do wyjściowego.


Jest to najbardziej uniwersalny skrypt przesyłania danych z jednego pinu na drugi - można nim przesłać dowolny typ wielkości.

Ale można zrobić to bardziej elegancko. Virtuino udostępnia możliwość tworzenia własnych skryptów w JavaScript. To daje nam możliwość prawdziwego programowania w aplikacji praktycznie bez żadnych ograniczeń. Skryptom użytkownika poświęcony będzie oddzielny post. Dziś tylko przykład jak to działa.

Nie znam JavaScript więc przerobię istniejący przykład skryptu "Copy a variable to another variable including the timestamp" usuwając z niego zbędny znacznik czasowy.

Po nieznacznej modyfikacji kod wygląda tak

/* 
This sript copy a variable to another variable
The code copies the value and the timestamp of the value
*/

//--- Copy values from Virtuino Variables to JavaScript variables
var inputValue = Virtuino.readValue("inputTag");
//var inputTimestamp = Virtuino.readTimeStamp("inputTag");

//---  enter the JavaScript code like the example below

if (inputValue!=null){	// check if the input is null
  result = '{"tag":"outputTag", "value":"'+ inputValue+ ' "}';
}
else  {              // no input value available yet
	result = null;	  // return a null value 
}


Skrypt kopiuje wartość pinu V1 z modułu esp_pompa do V6 modułu esp_licznik o dowolnym typie zmiennej.
To pierwsze podejście do możliwości jakie oferują nam skrypty Virtuino. Co będzie dalej opowie nam (być może) ciąg dalszy


Brak komentarzy:

Prześlij komentarz