Differences

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

Link to this comparison view

priot:laboratoare:06 [2024/11/13 10:53]
jan.vaduva [Exercitii]
priot:laboratoare:06 [2024/11/19 02:49] (current)
alexandru.bala [Exemplu de cod pentru Abonare pe Laptop utilizând paho-mqtt]
Line 1: Line 1:
 ===== Laboratorul 06: Web Programming and APIs, Data Visualization,​ si Mesaje MQTT ===== ===== Laboratorul 06: Web Programming and APIs, Data Visualization,​ si Mesaje MQTT =====
  
-==== Scopul Laboratorului:​ ====+===== Scopul Laboratorului: ​=====
 În acest laborator, studenții vor învăța: În acest laborator, studenții vor învăța:
   * Cum să obțină date dintr-un API gratuit fără cheie.   * Cum să obțină date dintr-un API gratuit fără cheie.
Line 10: Line 10:
  
  
-====Notiuni Teoretice====+===== Notiuni Teoretice===== 
  
-1. Ce este un API??+=== 1. Ce este un API? ===
  
 Un API (Application Programming Interface) este un set de reguli și protocoale care permite unei aplicații să acceseze date sau funcționalități dintr-o altă aplicație. Un API (Application Programming Interface) este un set de reguli și protocoale care permite unei aplicații să acceseze date sau funcționalități dintr-o altă aplicație.
  
-JSON (JavaScript Object Notation)+=== 2. JSON (JavaScript Object Notation) ​===
 JSON este un format de schimb de date simplu și ușor de citit, folosit pentru transmiterea de date structurate. JSON este un format de schimb de date simplu și ușor de citit, folosit pentru transmiterea de date structurate.
  
  
-Matplotlib+=== 3. Matplotlib ​===
 Matplotlib este o librărie de vizualizare pentru Python, utilizată pentru a crea o varietate de grafice, inclusiv grafice liniare, diagrame de bare și grafice de tip pie. Matplotlib este o librărie de vizualizare pentru Python, utilizată pentru a crea o varietate de grafice, inclusiv grafice liniare, diagrame de bare și grafice de tip pie.
  
  
-MQTT+=== 4. MQTT ===
 MQTT (Message Queuing Telemetry Transport) este un protocol de mesagerie ușor pentru IoT, utilizat pentru a comunica între dispozitive prin topicuri la care se abonează și publică date. MQTT (Message Queuing Telemetry Transport) este un protocol de mesagerie ușor pentru IoT, utilizat pentru a comunica între dispozitive prin topicuri la care se abonează și publică date.
  
  
  
-====Configurarea Mediului de Lucru====+===== Configurarea Mediului de Lucru =====
  
-Instalați ​librăriile necesare cu comanda:+Plecând de la configurarea pentru laboratorul precendent va fi necesară adăugarea unor noi librării: 
 +  * matplotlib 
 +  * paho-mqtt
  
-pip install requests matplotlib paho-mqtt+Ambele librării vor fi necesare pentru crearea subscriber-ului. Pentru simplitate recomandăm utilizarea Python pentru crearea acestuia.  
 +Scopul subscriber-ului în cadrul acestui laborator va fi de a crea o agregare vizuală a datelor. ​
  
 +==== Instalarea librăriilor Python====
 +Instalați librăriile necesare cu ajutorul comenzii:
 +<code bash >pip install requests matplotlib paho-mqtt</​code>​
  
  
-====Extragerea Datelor de la Open-Meteo API====+ 
 + 
 +===== Extragerea Datelor de la Open-Meteo API =====
 Vom folosi API-ul gratuit de la Open-Meteo pentru a obține date despre prognoza meteo. Vom folosi API-ul gratuit de la Open-Meteo pentru a obține date despre prognoza meteo.
 URL-ul API-ului: URL-ul API-ului:
Line 43: Line 51:
 https://​api.open-meteo.com/​v1/​forecast?​latitude=44.4268&​longitude=26.1025&​hourly=temperature_2m https://​api.open-meteo.com/​v1/​forecast?​latitude=44.4268&​longitude=26.1025&​hourly=temperature_2m
  
-<​code ​lang meteo.py>​+<​code ​python ​meteo.py>​
 import requests import requests
  
Line 61: Line 69:
 </​code>​ </​code>​
  
-====Vizualizarea Datelor====+===== Vizualizarea Datelor ​=====
  
 Codul pentru Vizualizare - Tipuri Multiple de Grafice: Codul pentru Vizualizare - Tipuri Multiple de Grafice:
  
-<code view_data.py>​+<​code ​python ​view_data.py>​
 import matplotlib.pyplot as plt import matplotlib.pyplot as plt
  
Line 79: Line 87:
 </​code>​ </​code>​
  
-====Trimiterea și Recepționarea Mesajelor „Hello World” folosind MQTT====+===== Trimiterea și Recepționarea Mesajelor „Hello World” folosind MQTT =====
  
 Pentru a trimite și primi mesaje „Hello World” folosind MQTT, vom folosi `umqtt` pentru publicare pe Raspberry Pi și `paho-mqtt` pentru abonare pe laptop. Pentru a trimite și primi mesaje „Hello World” folosind MQTT, vom folosi `umqtt` pentru publicare pe Raspberry Pi și `paho-mqtt` pentru abonare pe laptop.
-===Cod pentru Publicare pe Raspberry Pi (umqtt)=== + 
-<code hello.py>​+==== Exemplu de cod pentru Publicare pe Raspberry Pi utilizând ​umqtt ==== 
 +<​code ​python ​hello.py>​
 import network import network
 import time import time
Line 91: Line 100:
 password = '​Parola_Retelei'​ password = '​Parola_Retelei'​
 mqtt_server = '​IP-ul_Brokerului'​ mqtt_server = '​IP-ul_Brokerului'​
-topic = b"​test/​topic"​+topic = "​test/​topic"​
 client_id = "​pico_publisher"​ client_id = "​pico_publisher"​
  
Line 113: Line 122:
 </​code>​ </​code>​
  
-===Cod pentru Abonare pe Laptop ​(paho-mqtt)=== +==== Exemplu de cod pentru Abonare pe Laptop ​utilizând ​paho-mqtt ​==== 
-<code subscribe.py>​+<​code ​python ​subscribe.py>​
 from paho.mqtt import client as mqtt_client from paho.mqtt import client as mqtt_client
  
Line 139: Line 148:
 </​code>​ </​code>​
  
-====Interacțiunea cu platforma Nordic Thingy:​52====+<​note>​In case you experience issues with Paho MQTT Client Callback Version, try the following approach: 
 +<​code>​ 
 +client ​mqtt_client.Client(client_id ​client_id, callback_api_version ​mqtt_client.CallbackAPIVersion.VERSION1) 
 +</​code>​ 
 +</​note>​ 
 + 
 +===== Comunicații BLE - platforma Nordic Thingy:​52 ​====== 
  
 Acest ghid vă oferă un punct de pornire pentru conectarea și utilizarea dispozitivului Nordic Thingy:52. Acest ghid vă oferă un punct de pornire pentru conectarea și utilizarea dispozitivului Nordic Thingy:52.
Line 149: Line 164:
 Instrucțiunile de mai jos acoperă configurarea BLE și utilizarea uneltelor software de la Nordic. Instrucțiunile de mai jos acoperă configurarea BLE și utilizarea uneltelor software de la Nordic.
  
-===Cerințe:===+== Echipamente necesare: ==
  
   * Dispozitiv **Nordic Thingy:52**   * Dispozitiv **Nordic Thingy:52**
   * **Smartphone sau computer** cu suport Bluetooth   * **Smartphone sau computer** cu suport Bluetooth
   * **Aplicația nRF Connect** (disponibilă pentru iOS, Android, Windows, MacOS și Linux)   * **Aplicația nRF Connect** (disponibilă pentru iOS, Android, Windows, MacOS și Linux)
-  * **SDK Nordic Thingy:52** (opțional, ​când intenționați să programați dispozitivul)+  * **SDK Nordic Thingy:52** (opțional, ​utilizat pentru programarea în mod custom a dispozitivului- nu este în scopul laboratorului
  
-===Porniți Thingy:52===+== Etape: ​=
 +== 1. Porniți Thingy:52 ==
  
-Apăsați butonul de pornire de pe Thingy:​52.\\ +<note tip>Apăsați butonul de pornire de pe Thingy:​52.\\ 
-LED-ul ar trebui să înceapă să clipească, indicând că dispozitivul este gata de conectare prin BLE.+LED-ul ar trebui să înceapă să clipească, indicând că dispozitivul este gata de conectare prin BLE.</​note>​
  
-===Conectare prin Aplicația nRF Connect===+== 2. Conectarea la dispozitiv ​=
 +<note tip> 
 +  - Descărcați și instalați aplicația nRF Connect
 +    * pentru smartphone - [[https://​play.google.com/​store/​apps/​details?​id=no.nordicsemi.android.mcp&​hl=en|nRF-Connect-for-Android]] or [[https://​apps.apple.com/​us/​app/​nrf-connect-for-mobile/​id1054362403|nRF-Connect-for-iPhone]])  
 +    * pentru computer ([[https://​www.nordicsemi.com/​Products/​Development-tools/​nRF-Connect-for-Desktop|nRF-Connect-for-Desktop]]).\\ 
 +  - Deschideți aplicația și asigurați-vă că Bluetooth-ul este activat și aplicația are acordate permisiunile necesare utilizării Bluetooth.\\ 
 +  - În aplicația **nRF Connect**, scanați dispozitivele disponibile.\\ 
 +  - Thingy:52 ar trebui să apară în listă cu un nume asemănător cu Thingy.\\ 
 +  - Selectați Thingy:52 pentru a vă conecta.  
 +  - După conectare, veți putea vedea serviciile și caracteristicile acestuia.\\ 
 +</​note>​  
 +== 3. Accesarea Senzorilor și Funcțiilor ​==
  
-Descărcați și instalați aplicația nRF Connect pe smartphone ([[https://​play.google.com/​store/​apps/​details?​id=no.nordicsemi.android.mcp&​hl=en|nRF-Connect-for-Android]] or [[https://​apps.apple.com/​us/​app/​nrf-connect-for-mobile/​id1054362403|nRF-Connect-for-iPhone]]) sau computer ([[https://​www.nordicsemi.com/​Products/​Development-tools/​nRF-Connect-for-Desktop|nRF-Connect-for-Desktop]]).\\ +Odată ce Thingy:52 este conectat, puteți începe să accesați senzorii și funcțiile sale prin aplicația nRF Connect sau dezvoltând o aplicație proprie capabilă să comunice ​prin BLE.
-Deschideți aplicația și asigurați-vă că Bluetooth-ul este activat.\\ +
-În nRF Connect, scanați dispozitivele disponibile.\\ +
-Thingy:52 ar trebui să apară în listă cu un nume asemănător cu Thingy.\\ +
-Selectați Thingy:52 pentru a vă conecta. După conectare, veți putea vedea serviciile și caracteristicile acestuia.\\ +
- +
-===Accesarea Senzorilor și Funcțiilor=== +
- +
-Odată ce Thingy:52 este conectat, puteți începe să accesați senzorii și funcțiile sale prin aplicația nRF Connect sau programatic ​prin BLE.+
  
   * **Senzorii de Mediu**:   * **Senzorii de Mediu**:
Line 182: Line 201:
       * Senzorul de lumină măsoară intensitatea luminii ambientale și culorile, iar aceste date sunt accesibile prin **Serviciul de Lumină**.       * Senzorul de lumină măsoară intensitatea luminii ambientale și culorile, iar aceste date sunt accesibile prin **Serviciul de Lumină**.
  
- +<note important>​Funcționalitatea lui Thingy poate fi configurată wireless printr-un API Bluetooth.  
-===Acces Programatic=== +Acest lucru face posibilă crearea de **demonstrații șprototipuri fără a programa efectiv ​Nordic Thingy:​52** ​în sine, ci doar prin dezvoltarea aplicației sau soluției cloudPe măsură ce sunt lansate noi versiuni ale firmware-ului, Thingy poate fi actualizat wireless folosind aplicațiile furnizate. Utilizatorii avansați pot folosi Thingy ca kit de dezvoltare ​prin construirea propriului ​firmware și încărcarea acestuia ​pe placa de bază.</​note>​
-Dacă doriți să personalizați interacțiunea programatic,​ Nordic ​Thingy:52 poate fi controlat prin SDK-urile Nordic sau prin **API-urile BLE nRF52**+
- +
-  - **Descărcați SDK-ul ​Nordic Thingy:​52** ​de pe site-ul Nordic. +
-  ​**Configurați mediul ​de dezvoltare** utilizând IDE-ul recomandat de Nordic, [[https://​www.nordicsemi.com/​Products/​Development-tools/​nRF-Connect-for-VS-Code|nRF-Connect-for-VS-Code]]. +
-  - **Personalizați ​firmware-ul** sau creați aplicații proprii modificând codul din SDK-ul Thingy:​52 ​și încărcându-l ​pe dispozitiv cu ajutorul unui programator SWD. +
- +
-<note important>​Din păcate, momentan nu avem un programator SWD, însă este util să identificați funcționalitățile și complexitatea unui proiect similar cu tema voastră.</​note>​+
  
  
-===Opriți Thingy:52===+== 4. Opriți Thingy:52 ==
 Pentru a opri Thingy:52, apăsați și țineți apăsat butonul de pornire până când LED-ul se stinge. Pentru a opri Thingy:52, apăsați și țineți apăsat butonul de pornire până când LED-ul se stinge.
  
  
-====Exercitii==== +===== Exercitii ​===== 
-Exercitiile aceastea se ruleaza ​pe Raspberry Pi Pico, intr-un setup similar cu ce am avut si laboratoarele trecute+<note warning>​**Nu incercati exercitiile ​pe Thingy:​52**</​note>​
  
-<note important>​Nu incercati exercitiile pe Thingy:​52</​note>​ 
  
-===Exercitiu ​1:=== +<​note>​**Task 0:** Exercitiile de mai jos se bazează pe implementarea bazată pe Raspberry Pi Pico. Setup-ul este similar celui din laboratorul precedent. 
-Configurați un topic nou, cum ar fi `senzori/​temperatura`,​ și modificați codul pentru a trimite valori de temperatură. +  * //Etapa 1// - porniți Mosquitto cu configurarea realizata anterior: 
-===Exercitiu ​2:=== +   <​code bash>​mosquitto -v -c "​C:​\Program Files\mosquitto\mosquitto.conf"​ </​code>​ 
-Testați trimiterea și recepția datelor prin MQTT. +  * //Etapa 2// - rulați pe Raspberry Pi Pico codul **hello.py** 
-===Exercitiu ​3:=== +  * //Etapa 3// - rulați pe computer utilizând Python codul **subscribe.py** 
-Vizualizați datele primite de la senzor ​într-un grafic folosind Matplotlib.+</​note>​ 
 +<​note>​**Task ​1:** 
 +Configurați un topic nou, cum ar fi `senzori/​temperatura`,​ și modificați codul de Raspberry Pi Pico pentru a trimite valori ​preluate ​de la senzorul ​temperatură. 
 +</​note>​ 
 +<​note>​**Task ​2:** 
 +Testați trimiterea și recepția datelor prin MQTT folosind utilitarul **mosquitto_sub** ​ 
 +</​note>​ 
 +<​note>​**Task ​3:** 
 +Modificați codul de subscriber prezentat în cadrul **subscribe.py** pentru a vizualiza ​datele primite de la Raspberry Pi Pico într-un grafic folosind ​librăria ​Matplotlib.</​note>​
priot/laboratoare/06.1731487994.txt.gz · Last modified: 2024/11/13 10:53 by jan.vaduva
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