Dopo aver realizzato le esperienze con ModBus ed ESP32 descritte nel precedente post, avere cioè creato un device che in funzione Master interroga dei device Slave con il protocollo MobBus attraverso un collegamento seriale, si presenta il problema di trasmettere questi dati da qualche parte per poterli utilizzare, magari su Dashboard intelligenti.
Photo by Jorge Ramirez on Unsplash |
Come fare?
La prima cosa che ho pensato è quella di rendere possibile la trasmissione dei dati raccolti attraverso una connessione ad un server in Cloud. I sistemi di connessione più noti sono la classica GET o la sorella maggiore POST. La differenza tra i due metodi è molto semplice, la GET trasmette i dati aggiungendoli direttamente in chiaro , all'indirizzo di chiamata ( tipo : http//ilsitoRicevente.it?id=111&dato1=222)
Il metodo POST invece non passa i parametri direttamente nell'indirizzo, ma li allega come file e li trasmette a parte all'indirizzo del server ricevente. Questo metodo è più sicuro perchè è più difficile intercettare i dati così trasmessi e quindi viene usato quando è importante la privacy e l'integrità del dato.
Per costruire la chiamata POST al mio server utilizzo la libreria urequest già presente nella configurazione di base del Micropython installata sul ESP32, quindi basta importarla nel programma.
Qui di seguito il programma di base che ho impostato per inviare i dai con una chiamata POST .
import urequests as requests
import ujson
url = "https://iot.sottosopraweb.com/register.php"
header = {'api_key': '***LA MIA API KEY****',
'Content-Type': 'application/json'}
data = {"ser":"777", "t1": "22", "t2": "23", "ai": "24", "ah": "25"}
data = ujson.dumps(data)
r = requests.post(url, data=data, headers=header)
print(r.text)
Dopo aver importato le librerie necessarie, costruisco l'header della chiamata, a cui aggiungo il codice ApiKey che servirà come chiave per far accettare il pacchetto al server. costruisco la variabile data , passo la variabile data alla libreria ujson per formattare il testo in modo "digeribile" dal sistema ricevitore ed in finale creo la request (faccio la chiamata al server) e mi stampo la risposta da parte del server.
Nessun commento:
Posta un commento