În acest laborator vom folosi două protocoale de comunicație des întâlnite în domeniul IoT.
CoAP (Constrained Application Protocol) este un protocol de comunicație ce rulează peste protocolul UDP/IP, fiind folosit în domenii cu resurse limitate de curent (putere consumată) și cu posibile pierderi de pachete de rețea (lossy networks).
Există o sumedenie de implementări software a protocolului CoAP (Implementations), dar în acest laborator vom folosi biblioteca ”CoAP simple library” pentru Arduino IDE pentru a rula un server CoAP, și implementarea CoAPthon din Python pentru a rula un client CoAP.
O captură Wireshark arată cum protocolul CoAP rulează peste protocolul UDP:
MQTT este un protocol de transport a mesajelor de la un producător (publisher) către un consumator (subscriber). Spre deosebire de CoAP care are o arhitectură client-server, MQTT folosește un intermediar (broker) pentru a redirecționa mesajele de la producător la consumator.
Download-ați biblioteca CoAP-simple-library și copiați fișierele in directorul cu biblioteci din Arduino IDE (de obicei în Documents/Arduino/libraries). Este nevoie de un restart al aplicației Arduino IDE după instalarea unei biblioteci direct în acel director, în loc de a folosi Library Manager.
Deschideți exemplul numit “esp32” din biblioteca “CoAP simple library” și ajustați codul astfel încât LED-ul conectat la GPIO2 (sau GPIO5 pe unele plăcuțe) să fie aprins prin CoAP. Notați IP-ul obținut de ESP32 pentru a-l folosi din clientul de CoAP.
#define COAP_DEFAULT_PORT 5683
Instalați apoi biblioteca CoAPthon din Python cu ajutorul utilitarului PIP:
pip install CoAPthon
Folosiți următoarea comandă pentru a aprinde/stinge LED-ul:
/usr/local/bin/coapclient.py -o PUT -p "coap://$ESP32_BOARD_IP/light" -P "1"
După ce instalați biblioteca “PubSubClient” din Library Manager al Arduino IDE, deschideți exemplul “mqtt_esp8266”.
Chiar dacă este scris pentru ESP8266, putem rula programul pe ESP32 modificând următoare linie:
- #include <ESP8266WiFi.h> + #include <WiFi.h>
Plăcuța ESP32 va folosi clientul MQTT pentru a înregistra un “subscriber” la topicul “inTopic”, iar de pe un calculator vom instala biblioteca “paho-mqtt” pentru a instanția un client de MQTT în modul “publisher”. Pentru a instala “paho-mqtt”, folosiți următoarea comandă:
pip install paho-mqtt
Folosiți acest program Python pentru a stinge/aprinde LED-ul de pe plăcuța ESP32.
Vom folosi un broker de MQTT public, la adresa “test.mosquitto.org”, atât pentru clientul MQTT de pe ESP32 cât și pentru clientul Python. Din acest motiv, este important să schimbăm numele topic-urilor pentru a nu primi mesaje de la alte device-uri din Internet, care folosesc același server public.