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
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