Esp32 controllabile senza ip pubblico

Salve,
ho realizzato una piccola automazione del mio magazzino cercando di realizzare un minimo di domotica. Ho realizzato la prima versione a casa dove tutto funziona perfettamente, ma sul posto mi sono imbattuto in un problema che potrebbe far abbandonare il progetto. Praticamente sul arduino nano eps32 ho realizzato oltre all'automazione anche una pagina web (scarna) dove controllo le luci e dei relè, ma tutto ha senso solo da remoto, quindi tramite internet. La differenza che ho tra casa e il magazzino è il router, in quanto in magazzino ho un router con una sim e la classe dell'ip Wan è 10.XXX.XXX.XXX e non posso fare il port forwarding.
Pensavo di far aprire ad Arduino una pagina web su di un host-free e mandare una stringa con tutti i dati per poi realizzare una seconda pagina che mi faccia visualizzare il tutto. Ma non saprei come poi dare i comandi ad arduino. Pensavo se esistesse già un qualcosa che potesse far comunicare con l'esterno senza poter aprire porte o nattare nulla.

Ci sono diversi servizi online per fare qualcosa come quello che vuoi fare tu, come ad esempio l'arcinoto Blynk o lo stesso Arduino Cloud, ma se hai già un tuo host a disposizione, allora hai di sicuro anche un database MySQL già pronto.

E allora perché non usarlo a tuo vantaggio?
Devi però separare le informazioni "variabili" da mostrare nella pagina HTML dalla pagina stessa.
Non ho idea di come hai realizzato adesso la tua interfaccia, ma l'aggettivo "scarna" mi fa pensare al solito stringone creato a runtime come purtroppo si vede sempre fare nei tutorial online.

La pagina web recupera le informazioni dal database, ed il tuo nano ESP32 dovrà solo aggiornare i valori nelle tabelle (se ti interessa ho scritto una libreria che lo fa in modo diretto senza usare i soliti script PHP).

1 Like

Ciao Grazie per la risposta.
Questa è la soluzione che volevo intraprendere. Hai materiale, su cui poter iniziare a studiare?
Grazie ancora

OK, arduino invia i dati verso Mysql, ma poi come faccio io ad inviare i dati ad arduino per eseguire le funzioni? Devo far leggere ad arduino il db per eseguire le funzioni?

Non puoi, in una connessione server/client è sempre il client che inizia la comunicazione.

Il tuo ESP32 dovrà interrogare ciclicamente il database e quando i dati verranno aggiornati dall'interfaccia web, reagire di conseguenza.

Se pensi che ti possa essere utile, questa mattina ho approfittato del tempo libero per aggiornare la mia libreria ed aggiungere un esempio su come usare una tabella per sincronizzare una lista di ingressi ed uscite del micro.

hai il link delle librerie in questione? :walking_man:

Certo, trovi tutto qui.

Come service per il database remoto, se non ne hai già uno ti consiglio https://filess.io/
Il piano gratuito ha il limite di 5 sessioni contemporanee (che ad occhio e croce sono 2/3 client massimo), però è veloce e funziona piuttosto bene e soprattutto non ha il vincolo della connessione solo da localhost come spesso accade con i database associati ai siti web (in quel caso saresti obbligato ad usare anche uno scritp PHP sul server stesso).
La libreria in questione funziona con MySQL e con MariaDB.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.