Salve, mi chiedevo se fosse possibile e come, leggere una parte di un sito di cui ho bisogno per poi salvarla in una variabile per poi usarla come voglio ad esempio in una funzione.
Oppure leggere l'intero sito e salvarlo in una variabile ad esempio "c" per poi filtrare il contenuto di "c" per poi trovare quello che mi serve e salvarlo in un'altra variabile.
Vi faccio un esempio.
Voglio verificare che su una pagina web ci sia una informazione vera o falsa (ad esempio la parola stessa true o false) per poi salvarla su una variabile che posso usare.
Si ce l'ha. Ed è questa: "on": false, oppure "on": true,
Ma questi due stati sono nel mezzo di altrettante scritte come anche i livelli ecc... In pratica quando vado a leggere e salvare la pagina nella variabile ho bisogno di filtrare tutto e avere solo la parte "on": true/false da salvare nella variabile.
Si la pagina web è di una centralina che ho in casa
@snake95, prima di andare oltre nella discussione, come previsto dal regolamento del forum italiano, corri a presentarti in questo thread altrimenti il moderatore blocca il post.
Ottimo! Allora proseguiamo con l'analisi del problema...
Da quanto dici, immagino che tu non abbia possibilità di modificare il sorgente HTML della pagina.
Come ti dicevo, devi essere sicuro di poter identificare in modo univoco quel dato.
Di solito gli elementi HTML che compongono una pagina possono essere caratterizzati da un id specifico e se questo è il tuo caso, ti basterà fare un "parsing" del sorgente HTML con il tuo microcontrollore (a proposito, di che scheda si tratta) fino a trovare la/le chiavi.
Prova ad abilitare nel browser gli strumenti di sviluppo (tasto F12 di solito), quindi usando lo strumento specifico (prima icona in alto a sinistra), seleziona il testo di cui hai bisogno. Dovrebbe evidenziarsi il sorgente nella posizione dove è definito l'elemento.
Ad esempio, ember590 è l'id dell'elemento HTML div che racchiude il testo "This topic will close..." mentre ti scrivo questa risposta
No read legge byte per byte dallo stream, per cercare del testo in uno stream devi usare l'istruzione find.
Ad esempio, il seguente pezzettino di codice, cerca nello stream dei dati proveniente dal client la stringa "ember590" senza fare altro. Quando (e se) la trova, legge i successivi byte fino al terminatore di riga (se c'è!) e stampa sul monitor seriale.
Ci sono ovviamente altri modi per leggere i dati dallo stream, ma questo per ora può andare bene secondo me.
Ma quindi non si tratta di una pagina web con testo, pulsanti, immagini etc etc?
In realtà dal tuo print-screen sembrerebbe essere ancora più semplice di quanto ipotizzato perché quella è una stringa di testo in formato JSON.
Ci sono molte librerie che ti consentono di fare il parsing del JSON ed estrapolare la coppia di chiave:valore di cui hai bisogno.
Se la scheda che stai usando ha sufficiente RAM (per capirci tipo una ESP8266 oppure ESP32), puoi anche concederti il lusso di salvare prima tutto il JSON in una variabile e poi fare il parsing ad esempio con la libreria ArduinoJSON.
Nel caso in cui la RAM sia poca (tipo Arduino Uno), meglio scegliere una libreria che consente di fare il parsing del JSON direttamente sullo stream dei dati proveniente da client, ad esempio come questa libreria perché la tua pagina JSON potrebbe essere di diversi Kbyte.
Grazie per la risposta, ho passato il pomeriggio per fare delle prove con le righe che mi avevi scritto prima e alla fine facendo così ho risolto, in quanto ora la risposta è pulita pulita un bel "true" o un bel "false" proprio quello di cui avevo bisogno.
Grazie.
if (client.find("on\":")){
String nextLine = client.readStringUntil(',');