Se afișează postările cu eticheta broker. Afișați toate postările
Se afișează postările cu eticheta broker. Afișați toate postările

luni, 25 noiembrie 2019

Termostat MQTT cu ESP8266 (2)

    Acum un an si ceva, am publicat articolul Termostat MQTT cu ESP8266 pe care l-am testat in gol cca 3-4 luni. El nu a controlat o centrala termica sau un sistem de aer conditionat, ci doar a aprins un led rosu cand ar fi trebuit sa actioneze in gol.
   Zilele trecute am reluat testele, pornind o placa Raspberry Pi Zero W cu cardul SD de la o alta placa, ce avea instalat serverul broker Mosquitto dupa cum am prezentat in articolul Sonerie cu comandă locală sau prin protocol MQTT prin server Mosquitto (2)
    Am adaptat ultimul sketch prezentat in primul articol (MQTT_ESP8266_termostat_base.ino) sa aprinda afisajul doar cand apas butonul sau daca dau comenzi de pe telefon. La sketck-ul din link, afisajul OLED sta aprins mereu, dar nu se recomanda, deoarece textele raman imprimate... asa ca incarcati versiunea MQTT_ESP8266_termostat_ok.ino dupa ce finalizati testele.
   Deci, in mod normal, afisajul este stins, dar functioneaza termostatul:
- temperatura ambianta mai mare decat temperatura dorita
- temperatura ambianta mai scazuta decat temperatura dorita
   Daca se apasa butonul de pe cablaj sau se dau comenzi de pe telefon:
- temperatura ambianta mai mare decat temperatura dorita
- temperatura ambianta mai scazuta decat temperatura dorita
    Schema de conectare este eceeasi, bineinteles:
   Aplicatia folosita este aceeasi, IoT MQTT Panel.
unde am creat un un canal numit termostat
care e configurat astfel:
eu am completat doar numele, adresa IP a serverului (gasite de aplicatia Advanced IP scanner) si portul 1883 si conexiune TCP (ID-ul canalului este geberat automat de aplicatie).
   Dupa ce am creat butoane, indicatoarele si graficul, pe telefon apare asa:
   Pentru a creea un buton, grafic sau indicator, se apasa butonul + din partea de jos a ecranului

si se alege ce sa creez.

   Pentru cele 3 butoane, configuratiile sunt in stanga, iar in dreapta corespondenta din program (sketch):
- crestere temepratura

- scadere temperatura

- aprindere afisaj
unde "topic" este cel din linia 137

   Pentru cele indicatoare, configurarile sunt:
- temperatura reala
- umiditatea relativa a aerului
- temperatura dorita
- stare releu / led
unde in program, comenzile sunt:
   Pentru grafic, vom avea configurarile in aplicatie;
   De data aceasta nu am mai facut filmulete, dar pun 2 din ele, realizate anul trecut:


   Cred ca datele prezentate sunt suficiente sa realizati si voi un termostat de genul asta.
Eu mai am de implementat partea de conectare cu parola, dar nu am timp momentan de teste.





duminică, 10 iunie 2018

Sonerie cu comandă locală sau prin protocol MQTT prin server Mosquitto

   După ce am reușit să primesc valorile temperatruii și umidității de la o placă NodeMCU (ESP8266) prin intermediul unui server Mosquitto prin protocol MQTT (vedeți articolul anterior), acum o sa vă prezint o sonerie cu mai multe tonuri cu comandă locală (din buton, cum are orice sonerie), dar și de pe un telefon sau calculator prin comenzi MQTT.
   Materialul care l-am testat este prezentat într-un video numit MQTT Door Bell și în descriere se găsește sketch-ul, care se numește DoorBell3Publish.ino
   Am încărcat și eu acel sketch și până să-i conectez niste led-uri, am pus să se aprindă scurt ledul intern albastru (de la GPIO2 - D4) când a primit o comandă cunoscută. În filmul original se observă că sunetele sunt obținute mecanic, dar pe mine mă interesa modul de comandă.. se pot folosi buzzer-e active sau unul pasiv folosind comanda Tone (de generase sunete).
   Corespondennța pinilor GPIO cu cele Arduino sunt prezentate în figura de mai jos
Montajul realizat are butonul local la GPIO5 care corespunde lui D1
  Dacă se apasă butonul, led-urile se aprind într-o ordine corespunzătoare primei melodii.
  Pentru a veriifca dacă serverul Mosquitto este activ și ce IP are dăm comanda netstat - a din Commmand prompt cum am mai prezentat
  Observăm că portul 1883 este deschis la 192.168.1.106, asa că asta punem în sketch (MQTT_ESP8266_DoorBell.ino)
completăm și numele releței wi-fi din casă/apartament și parola.
   Deschidem aplicația MyMQTT de pe telefonul cu Android și scriem adresa serverului
   Apoi la partea de comenzi (Publish) trecem Doorbell ca fiind canalul de comunicare (tipic-ul)
care este notat și în sketck
  Pentru sunete simple dăm comenzi Bell1 .. Bell4 corespunzătoare unui aprinderi scurte a led-ului de la 1 la 4 (în cazul testului)
sau scurte melodii prin comenzi Chime1 ..Chime5 pentru melodii de la 1 la 5.
   Cel mai bine se vede modul de funcționare îm filmulete, așa că am făcut 2:
- Sonerie cu comandă locală sau prin protocol MQTT prin server Mosquitt
- Doorbell with locat or MQTT control
   Menționez că eu am folosit serverul Mosquitto instalat pe laptop, dar ideea e să fi fie instalat pe o placă Raspberry Pi, ținând cont că trebuie să fie mereu pornit acest server și din cauza consumului de energie, laptopul sau desktop-ul având un consul de 50-150W, iar Raspberry Pi de 1,5-7W în funcâe de versiune (raspberry Pi Zero consuma cel mai puțin).

sâmbătă, 9 iunie 2018

Trimitere comenzi MQTT la o placa NodeMCU (ESP8266) prin server local Mosquitto (Broker)

   Vrând neapărat să trimit comenzi către o placă NedeMCU (ESP8266) de pe calculator sau de pe un telefon (Android) folosind protocol MQTT și server local (Mosquitto - Broker), am tot săpat pe internet și, cu greu, am găsit ceva care să pot testa.
   Serverul Mosquitto l-am instalat pe un laptop cu Windows 10 cum am prezentat în articolul anterior), ulterior o să folosesc un Raspberry Pi.
   Am dat de articolul Use NodeMCU to send temperature/humidity data to MQTT IOT broker în care se folosește un NodeMCU cu un senzor de temperatură și umiditate de tip DHT22 (AM2302), care trimite periodic către serverul local temperatura și umiditatea, iar dacă dacă serverul primește comenzi de la un alt periferic, într-o anumită configurație, trimite temperatura sau umiditatea din acel moment. Serverul trimite și perifericelor, care au pus un anumit cuvânt ce corespunde mesajului, valorile temperaturii și umidității.
   Am modificat programul (sketch-ul) el devenind MQTT_ESP8266_DHT_simple.ino și am obținut în ecranul de monitorizare serială informații îmbucurătoare
   Am verificat dacă serverul Mosquitto este pornit și dacă apare conectarea plăcii la el (laptopul are IP 192.168.1.105). Portul 1883 folosit de server este activ la IP-ul laptopului, deci totul e în regulă până acum.
   Trebuie să dăm comenzi pentru a afișa temperatura sau umiditatea la un anumit moment, așa că am lansat Command promt ca Administrator
și am schimbat directorul de lucru cu cel al aplicatiei serverului
   Am dat comanda 0 pe canalul Show 
și placa NodeMCU programată cu limbaj Arduino răspunde cât e umiditatea la acel moment
 Am dat comanda 1 pe canalul Show 
și placa NodeMCU programată cu limbaj Arduino răspunde cât e temperatura la acel moment.
   Am mai da o dată comanda
și placa a răspuns imediat.
   Am instalat pe un telefon cu Android aplicatia MyMQTT, care era recomandată în articolul The Seven Best MQTT Client Tools și am configurat aplicaâia pentru serverul meu, fiind nevoie doar de adresa IP.
apoi am trims comanda Show și 0 pentru a arăta umiditatea
serverul primețte comanda ș o trimit emai departe plăcii NodeMCU, care trimite informația.
  Am trimis apoi comanda  Show și 1 pentru a arăta temperatura 


  Am configurat în telefon și cuvântul Show pentru a primi de la server datele de le trimite placa NodeMCU
și vedem datele
   A realizat un prim filmulet numit comenzi MQTT catre ESP8266 prin server local Mosquitto în care prezint pe scurt ce am scris ma înainte despre modul de a da comenzile.