This is an old revision of the document!
În acest laborator, studenții vor învăța:
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.
JSON (JavaScript Object Notation) JSON este un format de schimb de date simplu și ușor de citit, folosit pentru transmiterea de date structurate.
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.
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.
Instalați librăriile necesare cu comanda:
pip install requests matplotlib paho-mqtt
Vom folosi API-ul gratuit de la Open-Meteo pentru a obține date despre prognoza meteo. URL-ul API-ului:
https://api.open-meteo.com/v1/forecast?latitude=44.4268&longitude=26.1025&hourly=temperature_2m
import requests url = "https://api.open-meteo.com/v1/forecast?latitude=44.4268&longitude=26.1025&hourly=temperature_2m" response = requests.get(url) if response.status_code == 200: data = response.json() temperatures = data['hourly']['temperature_2m'] times = data['hourly']['time'] for time, temp in zip(times[:10], temperatures[:10]): print(f"{time}: {temp}°C") else: print("Eroare la obținerea datelor. Cod status:", response.status_code)
Codul pentru Vizualizare - Tipuri Multiple de Grafice:
import matplotlib.pyplot as plt plt.figure(figsize=(10, 5)) plt.plot(times[:10], temperatures[:10], marker='o', label="Temperatura (°C)") plt.xticks(rotation=45) plt.title("Evolutia Temperaturii in Bucuresti") plt.xlabel("Ora") plt.ylabel("Temperatura (°C)") plt.legend() plt.show()
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.
import network import time from umqtt.simple import MQTTClient ssid = 'Numele_Retelei' password = 'Parola_Retelei' mqtt_server = 'IP-ul_Brokerului' topic = b"test/topic" client_id = "pico_publisher" wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) while not wlan.isconnected(): time.sleep(1) client = MQTTClient(client_id, mqtt_server) client.connect() try: while True: message = b"Hello World" client.publish(topic, message) print(f"Mesaj trimis: {message.decode()}") time.sleep(10) finally: client.disconnect()
from paho.mqtt import client as mqtt_client broker = 'localhost' port = 1883 topic = "test/topic" client_id = "python_subscriber" def connect_mqtt(): def on_connect(client, userdata, flags, rc): if rc == 0: client.subscribe(topic) client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port) return client def on_message(client, userdata, msg): print(f"Mesaj primit pe topicul '{msg.topic}': {msg.payload.decode()}") client = connect_mqtt() client.on_message = on_message client.loop_forever()
Acest ghid vă oferă un punct de pornire pentru conectarea și utilizarea dispozitivului Nordic Thingy:52. Pentru a interacționa cu Nordic Thingy:52, în următoarele rânduri vă prezentam pașii de configurare, conectarea la dispozitiv și accesarea senzorilor și funcțiilor sale.
Thingy:52 este o platformă de prototipare IoT, echipată cu senzori, actuatori și conectivitate Bluetooth Low Energy (BLE). Instrucțiunile de mai jos acoperă configurarea BLE și utilizarea uneltelor software de la Nordic.
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.
Descărcați și instalați aplicația nRF Connect pe smartphone (nRF-Connect-for-Android or nRF-Connect-for-iPhone) sau computer (nRF-Connect-for-Desktop).
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.
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.
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.
Pentru a opri Thingy:52, apăsați și țineți apăsat butonul de pornire până când LED-ul se stinge.
Exercitiile aceastea se ruleaza pe Raspberry Pi Pico, intr-un setup similar cu ce am avut si laboratoarele trecute
Configurați un topic nou, cum ar fi `senzori/temperatura`, și modificați codul pentru a trimite valori de temperatură.
Testați trimiterea și recepția datelor prin MQTT.
Vizualizați datele primite de la senzor într-un grafic folosind Matplotlib.