Differences

This shows you the differences between two versions of the page.

Link to this comparison view

iothings:laboratoare:lab7 [2022/04/20 15:53]
cosmin.chenaru created
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 ====
  
 +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.
  
 +{{:​iothings:​laboratoare:​lab7-mqtt-flow.png|}}
 ==== Exerciții ==== ==== Exerciții ====
  
-=== Ex. 1 ===+=== Ex. 1 - CoAP === 
 + 
 +Download-ați biblioteca [[https://​github.com/​hirotakaster/​CoAP-simple-library|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. 
 + 
 +{{:​iothings:​laboratoare:​lab7-coap-server-png.png|}} 
 + 
 +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. 
 + 
 +<​note>​ 
 +Portul definit implicit de CoAP este portul UDP 5683. În biblioteca CoAP_simple_library din Arduino IDE, portul este definit in fișierul "​libraries/​CoAP_simple_library/​coap-simple.h":​ 
 + 
 +<​code>​ 
 +#define COAP_DEFAULT_PORT 5683 
 +</​code>​ 
 +</​note>​ 
 + 
 +Instalați apoi biblioteca CoAPthon din Python cu ajutorul utilitarului PIP: 
 + 
 +<​code>​ 
 +pip install CoAPthon 
 +</​code>​ 
 + 
 +<note important>​Pentru Python3 trebuie să instalați CoAPthon3</​note>​ 
 + 
 +Folosiți următoarea comandă pentru a aprinde/​stinge LED-ul: 
 + 
 +<​code>​ 
 +/​usr/​local/​bin/​coapclient.py -o PUT -p "​coap://​$ESP32_BOARD_IP/​light"​ -P "​1"​ 
 +</​code>​ 
 + 
 +=== Ex. 2 (Opțional) - Android "IoT CoAP" application === 
 + 
 +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 24: 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
iothings/laboratoare/lab7.1650459196.txt.gz · Last modified: 2022/04/20 15:53 by cosmin.chenaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0