Hola que tal amigos del foro, ya se que hay que googlear y a pesar de que lo he hecho, no me sale esta cosa.
Resumen de cuentas:
Tengo un sensor de temperatura conectado a un ESP8366 que envia datos a internet, adicionalmente quiero que me mande un correo a gmail mediante IFTTT, hasta aqui todo bien , el problema?
La libreria IFTTT que estoy usando me pide para enviar el dato de temperatura que este vaya en formato *char.
Aqui es donde esta el "problema":
When you want to trigger the webhook, call the trigger method with zero to three char* to be passed as values:
(Cuando tu quieras pasar el gatillo de webhok, pasando de 0 a 3 valores *char.
webhook.trigger(); //esto envia solo el correo
webhook.trigger("value1"); //esto envia el correo con un value1, etc
webhook.trigger("value1", "value2");
webhook.trigger("value1", "value2", "value3");
cosas que ya hice:
1.- Intente mandar el float directamente (jejeje que no funciono)
2- Intente convertir a char el float y eviar solo el char (no funciono)
3.- Intente convertir enviar un *char, pero no se activa el gatillo.
COSAS QUE SE:
Se que es un float,
Entiendo que char es un tipo de datos
entiendo que char* es la direccion de un tipo de datos, del mismo tipo.
Con eso en mente me dispuse a hacer un pequeño programa para ver si podía entender esto:
float temperature_float = 23.15;
char *direc_data="";
char data[8] = "";
void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("valores al incio de programa");
Serial.print("Float "); Serial.println(temperature_float);
Serial.print("Direc* "); Serial.println((unsigned int)( &direc_data));
Serial.print("Char "); Serial.println((unsigned int)(data));
dtostrf(temperature_float, 6, 2, data);
Serial.println("valores al final de programa");
Serial.print("Float "); Serial.println(temperature_float);
Serial.print("Direc* "); Serial.println((unsigned int)( &direc_data));
Serial.print("Char "); Serial.println(data);
Serial.print("Char* "); Serial.println(*direc_data);
//Serial.println("borra char");
/*
char* dtostrf(float number, int tamanyo, int decimales, char* buffer);
/* | | | \_ buffer donde almacenaremos la cadena
| | \_ Precisión (nº decimales)
| \_Tamaño del número en carácteres
\_ Número a convertir
*/
}
void loop() {
// put your main code here, to run repeatedly:
}
El programa se compila, corre y todo, esta es la salida en el serial;
valores al incio de programa
Float 23.15
Direc* 512
Char 640
valores al final de programa
Float 23.15
Direc* 512
Char 23.15
Char*
Ahora bien, hasta donde puedo decir, el programa si convierte el float en un char.
Podemos ver la dirección de este char en la memoria, pero por alguna razon no imprime
el contenido, o mas bien no graba en memoria el contenido.
Me he dado una vuelta por Esta web, muy clara por cierto y de ahi he sacado parte del codigo.
Pero aca si imprimen el *char asi;
Serial.print("El valor contenido en la direccion de memoria apuntada por el puntero_a: ");
Serial.println(*puntero_a); //imprime el valor que hay en la dirección contenida en el puntero
Que parte de esto estoy haciendo mal?
Por su ayuda, desde ya, Gracias!.
-Alex.