IoT Async

Qualche mese fa avevo sviluppato una applicazione IoT per misurare la temperatura e spedire i dati ad una coda mqtt.
Poi c’era uns server che collezionava i dati.
Totale: tre server, con tre punti di fallimento ma architettura molto “cool”

In effetti però la potenza dei moderni chip embedded è tale che è possibile implementare una soluzione completamente asincrona “alla Erlang”.
Con meno di 8 euro, potete procuravi il chip esp8266 su Amazon

con relativo sensore

e poi sviluppare un servizio micropython che vi notifichi il cambio di temperatura in modo asincrono.

L’idea è che chi è interessato alla temperatura si “registri” sul disposivo IoT con qualcosa come

curl http://esp8266/subTemp/$callerHostname/$desideredPort/$callerRef
# Esempio attualizzato
curl http://esp8266/subTemp/mypc/7001/pushTemp

Dopodiché sarà il dispositivo IoT con i suoi tempi (per esempio dettati dalla funzionalità del sensore, ecc) a fare una chiamata all’ indietro  (callback) del tipo

http://callerHostname:desideredPort/callerRef/$temperature/$humidity
# Esempio attualizzato
http://mypc:7001/pushTemp/23/84

Per semplicità le chiamate sono in GET (benché dovrebbero essere delle POST).

L’agente interessato a tale misure può essere un server scritto in nodejs, python o ruby e può anche richiedere la notifica ad un server terzo (per es esposto su Internet), per es sottoscrivendolo con qualcosa come

curl http://esp8266/subTemp/serverPippo/80/sendTemperatureAndHumidity