ESP8266 Multipli, passaggio di stringhe - NodeMCU V3

Ciao a tutti!

avrei bisogno di aiuto su un progetto che sto portando avanti da un mesetto, ma su cui sono completamente bloccato, vi spiego:

Il progetto consiste nell'avere 7 NodeMCU che gestiscono rispettivamente ognuno un Sonar (hc-sr04), un Servo, una piccola cassa Audio, un buzzer, un bottone ed un mini lettore di schede SD (DFPlayer Mini).

SOLAMENTE UNO dei 7 nodeMCU ospita un WebServer che genera una pagina web in HTML con dei tasti che andranno a compiere svariate azioni. Ad ogni bottone premuto, il rispettivo NodeMCU (associato a quel tasto) dovrà ricevere l'istruzione di compiere una azione (sempre la stessa).

Il problema nasce a questo punto, i NodeMCU verranno collegati ad una rete WiFi con svariati client, vorrei fare in modo che il nodeMCU che fa da WebServer (quando viene premuto un tasto) invii una stringa di testo al rispettivo NodeMCU Client che, se trova corrispondenza nella stringa contenuta su quest'ultimo, allora il client compierà quell'azione. Una specie di "password" trasmessa in stringa, anche in chiaro non ha importanza.

Ho già fatto correttamente tutti gli schemi elettrici e la parte di programmazione della pagina web, con le relative azioni su servo ecc, ma non so come fare per inviare una stringa da un NodeMCU ad un altro. Sapete se esiste una libreria che gestisca questa informazione o avete una bozza di codice che possa essermi di aiuto? Ho provato con richieste HTTP in GET e POST ma non sono arrivato a nessun punto.

Il progetto di per se non è molto semplice, ahimé sono completamente bloccato su questo punto :frowning:

Altra piccola info, conoscete un modo per far collegare i NodeMCU (ESP8266) ad una wifi wpa2-enterprise? Ovvero con Username e Password?

Avevo letto di una libreria in giro ma non trovo nulla al riguardo

Grazie in anticipo per le vostre risposte :slight_smile:

Non ho ben capito come sono collegate le "periferiche" al server.

Se pensavi di collegarle tramite wif,i le richieste HTTP in GET, dovrebbero funzionare, ovviamente invertendo la logica: non è il webserver che invia una notifica alle periferiche una volta premuto il pulsante sulla pagina web, ma è la periferica che ad intervalli regolari fa polling sul server con una richiesta GET per farsi dire se deve fare qualcosa oppure no.

In teoria se sei riuscito a gestire una pagina web non dovresti avere difficoltà a creare una seconda "pagina" in cui nell'url della richiesta vengono passati i parametri (l'ID della periferica) e nella risposta vengono inviati direttamente i comandi da eseguire (al posto dei tag HTML), che poi verranno letti e interpretati dalla periferica che ha eseguito la richiesta.

Non so se ti sono stato d'aiuto.

P.

Non ho molta esperienza con gli esp, ma forse la cosa più semplice che puoi fare e considerarli tutti server; che poi, visto che devono compiere delle operazioni su richiesta, sono effettivamente server connessi alla stessa rete locale :slight_smile:

Diciamo che hai un server principale (Server0) e n server periferici:

  • ad ognuno dei server assegni un ip statico, credo si possa fare facilmente, altrimenti ti basta configurare il router per associare ip con i mac address delle singole schede

  • configuri ognuno dei server periferici per ricevere una singola richiesta POST/GET che esegue l'azione relativa (servo, buzzer, etc), se preferisci puoi fare controllo sul richiedente (ricevi una pwd o magari si può verificare l'ip del richiedente, non saprei)

  • sul Server0 ti crei una tabellina per associare IP del server periferico con la relativa azione da compiere

  • sul Server0, quando premi un pulsante, invii una richiesta POST/GET al relativo IP che deve compiere l'azione richiesta (tabella IP/Azione)

Ripeto, non ho molta esperienza con gli esp, e non so se si possa fare in maniera più semplice di così, ma questo è quello che io proverei a fare.

Facci sapere

Federico