Sto lavoricchiando per inviare i dati dei miei sensori a thingspeak, ma c'è una cosa assai ostica.
I valori devono essere convertiti in stringa prima di essere inviati e non so come convertire in stringa le float e l'unsigned long.
L'int me la cavo, grazie agli esempi sul sito, ma oltre a quello boh... so che forse dovrei usare sprintf ma io ed il C siamo ancora al primo appuntamento, dobbiamo conoscerci meglio -_-'
Anyway:
Ho queste 8 variabili
float toutES; // tout DHT
float houtES; // rh out DHT
float tinES; // tin DHT
float hinES; // rh in DHT
float T1ES; // h20
float T2ES; // hot
unsigned long mediaHzES; // media dei valori di luce dall'ultimo log
int statusSSRES; //status
Che devo convertire in una stringa di questo tipo (senza le parentesi ovviamente):
Tout, tin , t1 e t2 sono valori di temperatura in °C quindi mi andrebbe benissimissimo un solo decimale dopo la virgola.
hin ed hout sono valori di umità, anche qui un solo decimale dopo la virgola sarebbe ottimo.
mediaHz varia da 0 a 69mila e qualcosa...
status vale o 0 d 1 ed al momento è l'unico che so convertire
astrobeed:
La ftoa() non è una funzione standard del C, su Arduino puoi usare la dtostrf() .
Ok, andiamo per gradi.
Ho iniziato a costruire la stringa e per ora ci sono e funziona. Ho messo dentro l'unsigned long con ltoa e l'int con itoa.
/*----- ThingSpeak -----*/
char charbufferluce[7]; //luce
char charbufferssr[2]; // SSR
ltoa(mydata.mediaHzES,charbufferluce,10);
itoa(mydata.statusSSRES,charbufferssr,10);
char stringaTs[16] = "1="; // Field 1
strcat(stringaTs, charbufferluce);
strcat(stringaTs, "&2="); // Field 2
strcat(stringaTs, charbufferssr);
updateThingSpeak(stringaTs);
dtostrf invece proprio non la capisco (non ho basi di C) se mi fate un esempio pratico ve ne sarei grata
@carletto il tuo consiglio è buono, se avessi il controllo su entrambi i lati della comunicazione avrei fatto anche io così... purtroppo però invio i dati a thingspeak (una cosa come pachube) un host per il datalogging che non mi permette di fare un operazione simile sul dato ricevuto.
Ok, ci sono riuscita
L'unica cosa, se vi va, datemi un occhiata alle dimensioni dei buffer per verificare che siano adeguate...
considerato che i valori di temperatura possono andare in negativo tipo -12.4.