This shows you the differences between two versions of the page.
iothings:laboratoare:lab7 [2022/04/20 18:05] cosmin.chenaru [Exerciții] |
iothings:laboratoare:lab7 [2024/07/15 22:03] (current) cosmin.chenaru Change IP hardcoding |
||
---|---|---|---|
Line 9: | Line 9: | ||
Există o sumedenie de implementări software a protocolului CoAP ([[https://en.wikipedia.org/wiki/Constrained_Application_Protocol#Implementations|Implementations]]), dar în acest laborator vom folosi biblioteca "[[https://github.com/hirotakaster/CoAP-simple-library|CoAP simple library]]" pentru Arduino IDE pentru a rula un server CoAP, și implementarea [[https://github.com/Tanganelli/CoAPthon|CoAPthon]] din Python pentru a rula un client CoAP. | Există o sumedenie de implementări software a protocolului CoAP ([[https://en.wikipedia.org/wiki/Constrained_Application_Protocol#Implementations|Implementations]]), dar în acest laborator vom folosi biblioteca "[[https://github.com/hirotakaster/CoAP-simple-library|CoAP simple library]]" pentru Arduino IDE pentru a rula un server CoAP, și implementarea [[https://github.com/Tanganelli/CoAPthon|CoAPthon]] din Python pentru a rula un client CoAP. | ||
+ | O captură Wireshark arată cum protocolul CoAP rulează peste protocolul UDP: | ||
+ | |||
+ | {{:iothings:laboratoare:lab7-coap-capture.png?600|}} | ||
==== MQTT ==== | ==== MQTT ==== | ||
Line 43: | Line 46: | ||
<code> | <code> | ||
- | /usr/local/bin/coapclient.py -o PUT -p "coap://192.168.1.151/light" -P "1" | + | /usr/local/bin/coapclient.py -o PUT -p "coap://$ESP32_BOARD_IP/light" -P "1" |
</code> | </code> | ||
- | === Ex. 2 - MQTT === | + | === Ex. 2 (Opțional) - Android "IoT CoAP" application === |
- | 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: | + | Instalați aplicația "IoT CoAP" pentru a trimite mesaje către plăcuța ESP32. |
+ | {{:iothings:laboratoare:lab7-iot-coap-app.png|}} | ||
+ | === Ex. 3 - MQTT === | ||
+ | |||
+ | După ce instalați biblioteca "PubSubClient" din Library Manager al Arduino IDE, deschideți exemplul "mqtt_esp8266". | ||
+ | |||
+ | {{:iothings:laboratoare:lab7-mqtt-esp8266.png|}} | ||
+ | |||
+ | Chiar dacă este scris pentru ESP8266, putem rula programul pe ESP32 modificând următoare linie: | ||
+ | |||
+ | <code> | ||
+ | - #include <ESP8266WiFi.h> | ||
+ | + #include <WiFi.h> | ||
+ | </code> | ||
+ | |||
+ | 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ă: | ||
+ | |||
+ | <code> | ||
+ | pip install paho-mqtt | ||
+ | </code> | ||
+ | |||
+ | Folosiți {{:iothings:laboratoare:mypythonmqttclient.py.txt|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. | ||
+ | |||
+ | <note important> | ||
+ | Din topicul "inTopic" puteți schimba in "iot-lab7-myLED-inTopic", iar din topicul "outTopic" in "iot-lab7-myTemperature-outTopic". | ||
+ | </note> | ||
===== Resurse ===== | ===== Resurse ===== | ||
Line 56: | Line 86: | ||
* https://github.com/hirotakaster/CoAP-simple-library | * https://github.com/hirotakaster/CoAP-simple-library | ||
* https://en.wikipedia.org/wiki/Constrained_Application_Protocol | * https://en.wikipedia.org/wiki/Constrained_Application_Protocol | ||
+ | * https://play.google.com/store/apps/details?id=ch.buedev.iot_coap&hl=en&gl=US | ||
+ | * https://www.digikey.de/en/maker/blogs/2019/how-to-use-mqtt-with-the-raspberry-pi |