Salve ragazzi, sto lavorando ad un progetto con Arduino Yun, nel quale mi viene richiesto di inviare dati su un web server (emoncms) utilizzando curl. Riesco a prelevare facilmente i dati dal mio sensore (flussometro), il problema sorge quando provo ad inviarli al web server tramite wi-fi. Ecco il codice che ho utilizzato:
//Gestione di un flussostato
#include <Bridge.h>
int ingresso = 2; //Piedino di ingresso del flussostato
double flusso; //Quantità di acqua che scorre
double volume; //Indica il volume di acqua
double contvol=0; // Volume totale di acqua;
volatile int count; //Variabile di conteggio
void setup() {
pinMode (ingresso, INPUT); //Imposta piedino 2 in ingresso
attachInterrupt (digitalPinToInterrupt(ingresso), impulso, RISING); //Configura interrupt 0 pin 2
Bridge.begin();
Serial.begin (9600); //Velocità seriale
}
void loop() {
count = 0; //Resetta il conteggio
interrupts(); //Abilita gli interrupt
delay (1000); //Pausa di 1 secondo
noInterrupts(); //Disabilita gli interrupt
// Frequenza di impulso (Hz) = 7.5Q, dove Q è il flusso in L/min
flusso=(count*60/7.5); //Flusso in L/h
flusso = 100*flusso;
char temp[4];
itoa(flusso,temp,10);
String flusso_str =String(temp);
flusso_str="flow:"+flusso_str;
sdpSendHTTP (flusso_str);
}
void impulso() { //funzione di interrupt
count = count + 1; //Incrementa count di 1
}
void sdpSendHTTP(String msg){
Process p;
String curlCMD;
//String credenziali;
//credenziali = user + ":" + pwd;
// create CURL command
curlCMD = "curl ";// -H \"Content-Type: application/json\"";
//curlCMD += " -u " + credenziali;
curlCMD += " -X GET ";// -d '";
//curlCMD += msg;
curlCMD += " http://...../emoncms/input/post.json?node=0&json={"+msg+"}&apikey=.......";
p.runShellCommand(curlCMD);
}
Ho visto anche altre soluzioni, ma purtroppo sono costretto ad utilizzare curl e wi-fi. Il msg costruito ed inviato è una stringa e deve restare tale, non posso utilizzare il formato json. Sono consapevole che le limitazioni sono fin troppe, ma purtroppo è proprio questa la difficoltà. Grazie