Le app incontrano il mondo fisico: sensori, attuatori e IoT

· Cosimo Luigi Manes

Finora un’app Reactive lavorava su dati scritti a mano, importati o arrivati dal servizio dati open. Da oggi può ascoltare il mondo fisico: un sensore di temperatura che pubblica via MQTT, una bilancia Bluetooth, un ESP32 collegato via USB, un tag NFC, l’accelerometro del telefono. E può anche comandarlo: un interruttore nel documento che accende una luce vera. Come sempre, tutto nel browser: nessun server da installare, nessun account, i dati restano sul dispositivo.

Il principio: le letture sono dati come gli altri

Ogni direttiva IoT riversa le letture nello store reattivo — una chiave per l’ultimo valore, una collezione per lo storico — e da lì in poi vale tutto quello che Reactive sa già fare: tabelle, aggregazioni, condizionali, grafici Python, perfino le direttive AI che riassumono o rispondono a domande sui dati. Un termometro diventa un grafico con tre righe di testo:

::mqtt-sub[temp]{topic="casa/salotto/temp" into="letture"}

Adesso: :value[temp] °C — media :avg[letture]{field="value"}

::python{data="letture"}
import matplotlib.pyplot as plt
plt.plot([float(r["value"]) for r in data["letture"]])
::/python

MQTT: il canale universale

MQTT è la lingua franca dell’IoT — la parlano Home Assistant, Tasmota, ESPHome e qualunque microcontrollore. Tre direttive la portano nei documenti, su qualsiasi browser:

Il broker si dichiara una volta sola nel frontmatter (mqttServer: wss://...) e nel documento viaggiano solo endpoint, mai credenziali — lo stesso principio delle chiavi di sincronizzazione.

Bluetooth, seriale, NFC: il dispositivo davanti a te

Per gli oggetti vicini non serve nemmeno il broker:

Il browser fa da garante: Bluetooth, seriale e NFC partono solo da un click dell’utente, mai in automatico.

E il REST? ::iot-poll

Per i dispositivi che espongono un’API HTTP (Shelly, Tasmota, o qualunque servizio JSON) c’è ::iot-poll: interroga l’endpoint a intervalli regolari e tiene la collezione allineata allo stato corrente. Un’avvertenza pratica: l’app è servita in HTTPS, quindi gli endpoint http:// di rete locale sono bloccati dal browser — per il traffico locale il broker MQTT resta la via maestra.

Cosa ci si costruisce

Come per il resto della piattaforma, l’editor aiuta: le nuove direttive sono nell’autocompletamento (con attributi e descrizioni) e l’assistente AI le conosce e le propone quando descrivi un’app che parla coi dispositivi.

Tutti i dettagli nella guida alla sintassi e nella guida alle direttive.