luni, 3 octombrie 2016

Server senzori cu NodeMcu


Salutare tuturor!

La rugamintea unui prieten (Salut Silviu !) am decis sa ma reintorc, pret de un articol, la NodeMcu. 
Dupa cum bine stiti nu sunt cel mai mare fan al acstui controller insa, uneori, pentru aplicatii simple care nu necesita un numar mare de clienti "jucaria" poate oferi rezultate mai mult decat multumitoare.

Pentru toate celelalte exista Raspberry Pi :)

Asadar, s-a dorit un sistem care sa permita manipularea iesirilor digitale, capabil sa citeasca starea unor senzori si care sa afiseze datele intr-o interfata prietenoasa in browser.

Ce a iesit se poate vedea in clipul de mai jos:



Pagina HTML...

Pentru ca mi s-a deschis apetitul de JQuery, nu veti gasi prea mult cod html in pagina. Am vrut ca pagina sa poate fi modificata usor, pentru a putea servi necesitatilor in functie de fiecare caz in parte.
Nu voi zabovi prea mult in a explica cum functioneaza ci mai mult in a explica cum se utilizeaza:




Dupa cum se vede in poza de mai sus, au fost definite doua variabile: dateOutput si dateSenzori.
Variabila dateOutput este responsabila pentru generarea tabelului care contine iesirile digitale, iar variabila dateSenzori este responsabila pentru generarea tabelului care contine starea senzorilor.

Tot ce trebuie facut pentru a crea o aplicatie particulara este modificarea parametrilor subliniati. Atat!
Mai jos se poate vedea cum arata pagina html generata cu datele din figura anterioara: 




Pentru transmiterea datelor catre server am folosit Ajax. Requestul trimis catre server arata in felul urmator:


Programul rezident in NodeMcu va analiza requestul si va actiona in consecinta. Nimic iesit in comun. Poate doar pentru requestul care schimba starea unui buton? Sa vedem ce reprezinta fiecare sir de caractere din request:

GET /change?change=btn_out_0*tabControl*0*.

  1. change - ii "spune" lui NodeMcu ca se doreste schimbarea starii unui buton;
  2. btn_out_0 - id-ul butonului;
  3. tabControl - numele tabelului din care face parte butonul;
  4. 0 - numarul de ordine al butonului din tabel;
  5. * - separator intre date pentru a putea fi manipulate cu usurinta de NodeMcu.
NodeMcu...


Ca de obicei codul html se incarca in SPIFFS (ce este si cu ce se mananca gasiti in articolele anteriorare dedicate lui NodeMcu). In rest nimic special: in functie de request este apelata functia dedicata.

Pentru exemplificare s-a folosit un senzor de temperatura DS18B20, doua switch-uri - pentru a simula intrairile digitale, si un potentiometru - pentru a citi o valoare analogica.



Ca de obicei codul sursa se poate descarca de aici.

Sa auzim de bine ! 

PS:
Pentru orice nelamurire, ma puteti contacta !

Un comentariu:

  1. Las Vegas | Casino | DrmCD
    'Taco City 통영 출장안마 Resort & Casino' 과천 출장샵 by Wynn 파주 출장안마 Resorts, Las Vegas: 부산광역 출장마사지 This $500,000 resort is the ultimate destination for gaming and entertainment, featuring 광주 출장마사지

    RăspundețiȘtergere