venerdì 5 novembre 2021

Come creare un flusso di dati con ESP32

 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.

 

Spero di essere stato utile a qualcuno 
TecnoGeppetto

Nessun commento: