This shows you the differences between two versions of the page.
|
si:laboratoare:2025:04 [2025/10/25 23:22] andreea.miu [Exercitii] |
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 aceasta, vom 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> | ||
| Line 64: | 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 83: | 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-ul, il 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 90: | 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: <code> | + | * Pentru a publica date folsind ceasul, folosim comanda: <code> |
| mqttc_pub -h broker.hivemq.com -t si-labs -m <message> | mqttc_pub -h broker.hivemq.com -t si-labs -m <message> | ||
| </code> | </code> | ||
| - | * Trimiteti mai multe date modificand topic-ul si valoarea. | + | * 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> | ||