Traduzione da php ad ino

Ciao a tutti,
sapreste aiutarmi a 'tradurre' questo codice php in ino?

$URL = "http://ip_raspberry/123solar/programs/programmultilive.php";
$json = file_get_contents($URL);

$data = json_decode($json, true);
$kw = $data[0]["GPTOT"];

In pratica mi servirebbe per recuperare il dato di produzione di un impianto fotovoltaico, per poi visualizzarlo su un display 2x20

Grazie a tutti.

Enrico

PHP e C sono 2 linguaggi che hanno una sintassi simile ma un concetto di stringhe totalmente diversa.
È meglio che ci dici come vengono trasmessi i dati e cerchiamo di fare un sketch per leggerle.
Ciao Uwe

Ciao Uwe e grazie per la risposta :slight_smile:

In pratica è una chiamata json ad un php che restituisce dei dati, tra cui la potenza prodotta al momento GPTOT.

In php sono 4 righe di codice, ma per arduino non ho idea di come fare :frowning:

Grazie

Leggo nella tua presentazione che hai Arduino e Raspberry. Questo codice è per Raspy?
Non conosco json. Ma a me sembra che quel codice chiami una pagina php ed "estrapoli" dei dati tabellari, e di questi prenda un campo chiamato GPTOT.
Non credo che su Arduino giri json, ma potrei sbagliarmi. Prova a cercare in internet come si usa la libreria json su Arduino e come si effettua una sua chiamata. Il resto non dovrebbe essere difficile.
Comunque se vuoi tradurre quel codice php su Arduino, penso sia utile un minimo di informazioni. Che Arduino hai ? Hai la scheda ethernet ? Quale scheda, WIZ5100 o la ENC (visto che usano librerie diverse) ?
Attendi risposte più precise.

P.S. sai come pilotare un display 20x2 su Arduino (di solito si trovano i 16x2) ?

Ciao Igor e grazie per la risposta.
Il codice php gira sul raspberry e la logica del reperimento dei dati è come l'hai descritta.

Arduino mega 2560 ed ethernet w5100 che già uso per altri giochetti :slight_smile:

Il display è 2x16 non 2x20 ... ho scritto male io :slight_smile:

L'utente @Lesto mi sembra ne sappia molto su parte web e Arduino. Se passa di qui penso possa aiutarti. Oppure potresti mandargli un msg in privato PM ed invitarlo a leggere questo tuo topic.

Grazie nid69ita ... ci provo :slight_smile:

allora, json è un formato di memorizzazione dati mooolto espansivo, paragonabile all'XML. In pratica difficilmente arduino (uno/mega) contiene in memoria stringhe di 100 lettere.

La stessa richiesta POST (in tal caso direi parliamo di post) è mooolto più grande.

Il che vuol dire che al contrario di PHP non puoi pre-analizzare la stringa completa, ma ad ogni byte letto devi controllare che sia necessario.

Se cerchi ho fatto una libreria parser che ti permetterà di estrarre il corpo (JSON), se esso è < 100 char (e non usi troppa ram in altre cose), allora potrai anallizzare con calma il json (no, la decode non esiste, in quanto un array ASSOCIATIVO non esiste nel C, devi fartelo (e di nuovo problemi ram/prestazioni)), ed estrarre i tuoi dati. Se non erro il JSNON che ti aspetti sarà fatto più o meno così:

{
  "variabile":"valore",
  "variabile2":"valore2",
  "GPTOT":"valore",
}

il che, per quanto verboso, è molto semplice da analizzare

Se invece i dati sono > 100 byte (circa) allora la libreria sarà da modificare in modo che l'analisi è fatta mano a mano che si ricevono i byte, e l'algoritmo diventa un pò più complesso.

@nid69ita: grazie, ma conosco poco i protocolli TCP/UDP, il resto è google, per il resto non ho nemmeno una eth shield!

Grazie per le info, Lesto :slight_smile:

Mi sa tanto che seguirò un'altra strada :wink:

una post con valori hidden, oppure una classica get, e i dati te li trovi puliti usando la mia libreria parser.