Differences

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

Link to this comparison view

si:laboratoare:2025:04 [2025/10/25 22:34]
andreea.miu created
si:laboratoare:2025:04 [2025/10/26 00:04] (current)
andreea.miu [Laboratorul 04. MQTT]
Line 1: Line 1:
 ===== Laboratorul 04. MQTT ===== ===== Laboratorul 04. MQTT =====
- 
-<​hidden>​ 
-WIP 
-</​hidden>​ 
  
 ==== Despre IoT ==== ==== Despre IoT ====
Line 43: Line 39:
  
 **1.** Folosind sistemul de build al NuttX, vom compila aplicatia ''​mqttc_pub''​. Codul sursa a acesteia il puteti gasi in ''​apps/​examples/​mqttc''​. **1.** Folosind sistemul de build al NuttX, vom compila aplicatia ''​mqttc_pub''​. Codul sursa a acesteia il puteti gasi in ''​apps/​examples/​mqttc''​.
-  * Activati ''​CONFIG_EXAMPLES_MQTTC''​ folosind ''​make menuconfig''​ pentru a putea rula exemplul default din NuttX, ''​mqttc_pub''​.+  ​* Folositi configuratia ''​hacktorwatch:​iot'',​ care include tool-uri necesare (precum ''​wapi''​ pentru conectarea la o retea WiFi) 
 +  ​* Activati ''​CONFIG_EXAMPLES_MQTTC''​ folosind ''​make menuconfig''​ pentru a putea rula exemplul default din NuttX, ''​mqttc_pub''​
   * Compilati, incarcati pe ceas noul binar si conectati-va la seriala folosind utilitarul picocom.   * Compilati, incarcati pe ceas noul binar si conectati-va la seriala folosind utilitarul picocom.
   * Verificati ca aplicatia e instalata, folosind comanda: ''?''​.   * Verificati ca aplicatia e instalata, folosind comanda: ''?''​.
  
-**2.** Pentru a putea testa aplicatia, ​ne dorim sa cream un setup de tipul //​Publisher-Subscriber//​. Pentru aceastavom crea un MQTT subscriber ​care sa primeasca datele trimise de MQTT publisher (reprezentat de placa).+**2.** Pentru a putea testa aplicatia, ​veti face un setup de tipul //​Publisher-Subscriber//, ​in care ceasul va publica date, iar masina virtuala / host-ul le va primi cu ajutorul unui script Python.
  
   * Instalati libraria ''​paho-mqtt''​ pe masina virtuala: ''​pip3 install paho-mqtt''​.   * Instalati libraria ''​paho-mqtt''​ pe masina virtuala: ''​pip3 install paho-mqtt''​.
Line 55: Line 52:
 </​note>​ </​note>​
  
-  * Folositi ​scriptul Python 3 de mai jos, si plasati-l ​pe masina virtuala; acest script joaca rolul de MQTT subscriber din figura prezentata in laborator. Pregatiti un terminal separat (ideal: pe care sa il puteti vedea in paralel cu primul) din care veti rula la finalul exercitiului acest script.+  * Urcati ​scriptul Python 3 de mai jos pe masina virtuala ​/ host; acest script joaca rolul de MQTT subscriber din figura prezentata in laborator.
  
 <file python mqtt_subscriber.py>​ <file python mqtt_subscriber.py>​
 import paho.mqtt.client as mqtt import paho.mqtt.client as mqtt
-import ssl 
  
 broker = "​broker.hivemq.com"​ broker = "​broker.hivemq.com"​
Line 65: Line 61:
 topic = "​si-labs"​ topic = "​si-labs"​
  
-# This is the Subscriber 
 def on_connect(client,​ userdata, flags, rc, properties):​ def on_connect(client,​ userdata, flags, rc, properties):​
     print("​Connected with result code: " + str(rc))     print("​Connected with result code: " + str(rc))
Line 78: Line 73:
 client.on_connect = on_connect client.on_connect = on_connect
 client.on_message = on_message client.on_message = on_message
- 
-if port == 8883: 
-    client.tls_set(tls_version=ssl.PROTOCOL_TLSv1_2) 
     ​     ​
 client.connect(broker,​ port, 60) client.connect(broker,​ port, 60)
Line 87: Line 79:
 </​file>​ </​file>​
  
-  * Pentru a putea trimite mesaje folosind ​ESP32, vom conecta ​placa la WiFi. Puteti folosi orice retea WiFi disponibila (ideal: activati ​un hotspot cu ajutorul telefonului). ​Folositi urmatorii pasi pentru ​a conecta ​placa la reteaua WiFi: <​code>​+  ​* Pregatiti 2 terminale deschise in paralel pe masina virtuala / host pentru a vedea trimiterea si primirea mesajelor (optional, puteti folosi [[https://​github.com/​tmux/​tmux/​wiki|tmux]] pentru a gestiona terminalele). Folositi unul dintre terminale pentru a rula scriptul de mai sus, iar celalalt pentru a va conecta la seriala smartwatch-ului. 
 + 
 +<note tip> 
 +Scriptul Python de mai sus poate fi rulat si direct pe Windows / Mac folosind linia de comanda. 
 +</​note>​ 
 + 
 +  ​* Pentru a putea trimite mesaje folosind ​smartwatch-ulil vom conecta la WiFi. Puteti folosi orice retea WiFi disponibila (sau puteti activa ​un hotspot cu ajutorul telefonului). ​Pentru ​a conecta ​ceasul ​la reteaua WiFi, folositi comenzile: <​code>​
 ifup wlan0 ifup wlan0
 wapi psk wlan0 <​mypasswd>​ 3 wapi psk wlan0 <​mypasswd>​ 3
Line 94: Line 92:
 </​code>​ </​code>​
  
-  * In final, veti avea deschise 2 terminale: unul ce ruleaza scriptul Python (MQTT subscriber),​ si altul ce afiseaza seriala placii, pe care se afla MQTT publisher-ul. ​Pentru a publica date, folosim comanda: ​''​mqttc_pub -t si-labs -m <​message>​''​ +  * Pentru a publica date folsind ceasul, folosim comanda: ​<​code>​ 
-  * Trimiteti mai multe date modificand topic-ul si valoarea.+mqttc_pub ​-h broker.hivemq.com ​-t si-labs -m <​message>​ 
 +</​code>​ 
 +  * Trimiteti mai multe date modificand topic-ul si valoarea. ​Nu uitati sa modificati topic-ul si in scriptul Python!
  
-<​note ​important+<​note ​tip
-Schimbati numele ​topic-ului atat in scriptul Python, cat si in comanda ​de mai sus (altfel, veti primi si mesajele de la ceilalti colegi).+Observati cum protocolul MQTT nu tine cont de reteaua WiFi la care sunteti conectati, ci doar de topic-ul setat de voi. Incercati sa transmiteti mesaje pe topic-ul ''​si-labs''​ si observati calculatoarele colegilor abonati ​la acelasi topic.
 </​note>​ </​note>​
  
si/laboratoare/2025/04.1761420845.txt.gz · Last modified: 2025/10/25 22:34 by andreea.miu
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