Acum ceva timp, am pus pe blog articolul Prezentare, stocare date si executare comenzi de pe pagina Cayenne (2) si regasind modulul, am constatat ca nu mai functioneaza. Pe mail tot primeam anumite avertizari si chiar cand am intrat pe server sa vad, ca s-a schimbat modul de lucru cu comenzi cu protocol MQTT, dar am tot ignorat "avertismentele" 👽.
Am reconectat placa Arduino Uno care e legata cu cea de retea cu chip-ul W5100 si am modiifcat sa mearga identic ca inainte.
Vrand sa pun pe laptopul ce avea instalat sistemul de operare Windows 10 pe 64 biti, sistemul de operare Ubuntu (o versiune prietenoasa de Linux) am avut neplacuta surpriza sa pierd informatiile de pe hard-uri, avand 2, un SSD pe care era Windows-ul si un harddisk clasic.
Dupa reinstalarea Windows-ului 10, la o distanta de 2-3 luni am avut parte de multe ecrane albastre, care m-au deranjat, asa ca am zis sa vad daca nu cumva sistemul de operare este vinovat, asa ca am instalat Windows 7 (cel cu care fusese vandut laptopul) pe SSD.
Am vrut sa instalez si Ubuntu, dar sa nu mai am probleme de dual boot pe acelasi HDD (se cam strica la update-ul lui Win sau Linux, fiind relativ dificil de reparat), asa ca am discutat cu Vlad (de fapt l-am cam stresat cu solicitari de informatii despre o instalare ok, mai ales la Linux).
Am instalat Windows 7 avand doar SSD-ul montat, apoi am instalat Ubuntu 18.04 (ultima versiune, la acest moment) pe hardisk-ul clasic (SSD-ul fiind scos), dupa care le-am pus pe amandoua si ramane sa aleg la boot-are (pornire) ce sistem de operare sa ruleze.
Am avut parte, din nou, de o surpriza neplacuta, neputand alege hardisk-ul de pe care sa boot-eze, ci doar CD/DVD sau harddisk, oricat am caut in BIOS-ul laptopului HP pavilion DV7.
Solutia mi-a fost indicata tot de Vlad, si anume utilitarul Grub2win care se instaleaza usor si se configureaza (relativ) usor.
Eu am creat partea de selectie astfel
folosindu-ma de informatiile de le ofera programul
si mai ales
asa ca acum, la pornire, am 7 secunde sa aleg daca porneste in Windows 7 sau sa selectez Grub 2 for Windows (care e configurat pentru Ubuntu)
rezultand la alegerea Grub 2 for Windows, pornirea in Linux (Ubuntu)
Față de cele 2 articole anterioare (1 și 2), acum am noutăți, pot comanda soneria de oriunde am net (gsm sau wifi) și am o interfața prietenoasă, nu mai trebuie să dau comenzi scrise.
Pentru a putea comanda de oriunde de pe net, am deschis portul 1883 de pe router-ul local unde este Raspberry Pi
și activez funcția DNS dinamic pentru contul de la RDS
și aloc un nume de domeniu
Pentru a folosi ușor de pe telefon cu Android, am folosit aplicația IoT MQTT Panel (IoT Controler)
Am un singur periferic numit clopot pe serverul de la tehniq.go.ro
care este configurat simplu
Momentan, am configurat doar 2 butoane (comenzi)
astfel, Bell1 pe canalul DoorBell și comanda Bell1 (aprinde scurt primul led), iar butonul Chime5 pe canalul DoorBell și comanda Chime5 (aprinde cele 4 leduri într-o ordine anume).
În articolul anterior am folosit un server Mosquitto instalat pe un laptop cu sistem de operare Windows 10, de data asta am instalat serverul pe un Raspberry Pi Zero cu dongle Wi-Fi (care poate fi înlocuit cu un Raspberry Pi Zero W), care funcâionează ca o cameră de supraveghere, deci tot stă mereu pornit.
Am crezut că e foarte simplu să instalez serverul Mosquitto pe raspberry Pi, dar sunt ceva probeleme c u pachetul de instalare, ața că am reusit să îl instalez doar cu informaâiile din articolul Install Mosquitto on a Raspberry Pi.
Am instalat programele pe Raspberry de pe laptopul cu Windows 10, prin intermediul programului Putty
si am făcut testul de comunicare scriind în fereastră
mosquitto_sub -d -t 'test-mosquitto'
și deschizând o a doua fereastră Putty (se repetă pașii cu configurarea, user-ul și parola), apoi se dă comanda
mosquitto_pub -d -t 'test-mosquitto' -m 'This is a test message'
deci serverul merge, așa că am modificat IP-ul pentru server în sketch-ul soneriei și l-am încărcat din nou.
Am schimbat și adresa serverului în aplicația MyMQTT de pe telefon în 192.168.2.20 si am dat comenzi de aprindere scurtă led-uri pe canalul Doorbell de genul Bell1 ,, Bell4, apoi de aprindere tip melodie Chime1 .. Chime5.
Pentru a verifica ulterior funcționarea serverului se dă comanda netstat -a ca și in Windows căutând portul 1883
Funcționare este identică ca pe serverul de pe Windows, după cum se vede și din filmulețele
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.
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).