2024-11-04

Virtuino programowanie część 5 skrypty dla instrukcji IF i CASE

 


JEŻELI prawidłowo zaprogramujesz LEDa zobaczysz piękną tęczę kolorów JEŻELI NIE czeka cię  ciemność.

Żaden algorytm działania nie może się obyć bez najpopularniejszej instrukcji warunkowej IF THEN Instrukcja ta dostępna jest też jako skrypt w Virtuino. Popatrzmy co potrafi i do czego może się przydać






Wydaje się że skrypt "IF" jest bardzo podobny do wcześniej omawianego jednowejściowego skryptu "Logical gate". I tu i tu sygnał wyjściowy zależy od wartości TRUE lub FALSE sygnału wejściowego.
Jednak oba skrypty różnią się między sobą i to bardzo.




Podstawowa różnica jest taka iż dla obu warunków THEN i ELSE (odpowiadającym warunkom TRUE i  FALSE) w skrypcie IF można przypisać 10 różnych akcji



Jeśli wybierzemy akcję SEND skrypt będzie się zachowywał jak jednowejściowa bramka logiczna. Ale już kolejne 9 akcji dają nam nieprawdopodobną możliwość manipulowania wartością pinów a przede wszystkim wpływania na działanie samej aplikacji Virtuino. Muszę przyznać, iż z takimi funkcjami aplikacji dla IoT spotykam się po raz pierwszy.  Omówienie dostępnych akcji będzie (może) w przyszłości. Instrukcja IF jako jedyna warunkowa funkcja w Virtuino jest najczęściej używanym skryptem bez którego nie można zrealizować żadnego złożonego algorytmu.

Zmienne (piny) w skrypcie IF mogą przybierać dowolne wartości zarówno liczbowe jak i tekstowe.
JEŻELI chcemy programować cokolwiek w aplikacji Virtuino TO prędzej czy później musimy użyć skryptu IF więc warto się z nim zapoznać dokładniej.

Instrukcja CASE pozwoli nam na wybór dla większej niż 2 wartości zmiennej wejściowej. Co że nie ma takiego skryptu? Ano nie ma. Ale jest możliwość stworzenia własnego skryptu CASE. Oto on

/* 
This script returns a text depending if the input Tag value
*/

//--- Copy values from Virtuino Variables to JavaScript variables
let inputValue = +Virtuino.readValue("inputTag");   // use the + to read as number

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

function isValidNumber(v){
	return ((v!=null) & (!isNaN(v)));
}

if (isValidNumber(inputValue)){          // be sure the input is not null 
switch (inputValue ) {
  case 1:
   value ="very slowly";
    break;

  case 2:
   value ="slowly";
    break;
    
      case 3:
   value ="fast";
    break;
    
      case 4:
   value ="very fast";
    break;

  // include as many cases as you like

  default:
    value ="dangerously";
    break;
}
    result = '{"tag":"outputTag", "value":"'+ value+ '"}';   // enclose  text value with  " " 
}
else {
	result = null;     // don't  write anything to the output
}

  I znowu jak poprzednio skorzystałem z gotowego wzorca skryptu "Get a text message depending of the input value (Text sript)" przerabiając go nieco.  5 minut i nowy własny skrypt gotowy przy pomocy tego poradnika. Byłoby szybciej gdyby nie te pojedyncze i podwójne cudzysłowie.

Teraz to już na poważnie zaczyna się programowanie w Virtuino. Aż strach pomyśleć co będzie dalej...
Ale o tym może nam kiedyś opowie nasz ulubiony ciąg dalszy.

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. 

2023-12-02

VRTUINO i programowanie część 1 >> czyli po co nam to programowanie?

 


Brzmi dziwnie ? Trochę tak acz nie za bardzo. Do tej chwili cały kod programu zawarty był w modułach ESP. Virtuino jedynie odbierało jakieś wielkości z modułu by je wyświetlać w aplikacji (np temperaturę z czujnika) lub wysyłało coś do modułu   (np. stan przełącznika). Przyszedł jednak czas by wykorzystać całkiem niemały potencjał możliwości programowania zawarty w skryptach. To początek odkrywania nowych możliwości VIRTUINO.

2023-10-08

Websockets i Viruino cz II

 


Dziś druga część opisu zmagań o przywrócenie połączenia między aplikacją a modułem w komunikacji Websocket.





2023-10-06

Websockets i Viruino

Czy mówiłem że Virtuino podoba mi się z każdym dniem coraz bardziej i bardziej? Tak właśnie jest. Można z nim zrobić absolutnie wszystko co zaplanuję dla domowej automatyki. I nie ma w zasadzie żadnych wad. No może jedną niedogodność jaką odkryłem po roku użytkowania. Zastosowany w Virtuino system komunikacji opary na bibliotece WebSockets czasami zawieszał mi komunikację między modułem a aplikacją. Ale i to dało się bez problemu rozwiązać dzięki niesamowitej elastyczności i możliwościom Virtuino. Dziś opis jak poprawić dobre na jeszcze lepsze.


2023-01-30

ESP8266 wysyła REST API do serwera WWW - cz. III VIRTUINO Cloud


To ostatnia opowieść mojej trylogii o REST API w wykonaniu ESP8266. Powinna być pierwszą gdyż to ESP8266 właśnie będzie wysyłał potrzebne mi informacje do sieci międzygalaktycznej bym mógł je sobie odczytać z dowolnego miejsca na świcie. I to wszystko z przyjaznym domowym systemem IoT jakim jest bez wątpienia VIRTUINO i bez otwierania domowej sieci na zewnętrzny dostęp z INTERNETu. Popatrzmy więc jak to się robi.


ESP8266 VIRTUINO cloud REST API cz II


Pierwsze (w zasadzie udane) próby z PHP dla przesyłania danych z ESP i ich wizualizacji na stronie WWW mam już za sobą. Dane nie trafiają jeszcze z modułu na serwer lecz z przeglądarki. Teraz pozostaje już tylko podmienić przeglądarkę na odpowiedni kod mikrokontrolera i wszystko powinno działać. Powinno? Nie do końca. Przedtem trzeba jeszcze rozwiązać problem zapamiętywania i udostępniania danych na serwerze WWW. I od tego zacznę dzisiejszy wpis.

2023-01-27

PHP i VIRTUINO z REST API - czyli zaczynamy cz I

 


Dlaczego PHP i VIRTUINO już wspominałem - jest to konieczność umieszczenia jakiś informacji na stronie WWW, wysyłanych przez ESP  schowany za ruterem w wewnętrznej domowej sieci. A bez choćby minimalnej znajomości kodowania PHP to się nie uda. Jednak cały mój kurs nauki postaram się ograniczyć do kilku elementów związanych z odbiorem informacji z mikrokontrolera i  ich prezentacją na stronie WWW. 

A wszystko to z pomocą  PHP właśnie.


2023-01-22

VIRTUINO i moja chmura

 

Co 10 sekund spróbuję wysyłać dane z mojego ESP8266 na jakąś (najlepiej tu na blogu) stronę WWW. O np taką

https://virtuino.blogspot.com/p/test.html

jeśli coś takiego zadziała to będzie najlepszy sposób bym mógł odczytać interesującą mnie informację z domowej automatyki bez korzystania z chmurowych systemów IoT czy otwierania wewnętrznej sieci na INTERNET.