Pues tienes toda la razón en que andas muy perdido jeje, pero no te preocupes, ya te explico donde estas.
Basicamente estas reportando a thinger lo siguiente
a = Serial1.println(“AT+CSQ”)
thing[“Señal”] >> outputValue (a);
Estas reportando el resultado de dar una instrucción a un puerto serial, es decir, no tengo idea que respuesta es esa, es el resultado de que el micro ejecute la instrucción de hablarle al modem, no es la respuesta del modem en sí, me explico?.
Entonces hay que captar es el String que responde el modem, extraer el dato que quieres y eso es lo que debes reportar, yo asumo que es un int o un float, y bueno no sé si quieras hacer alguna operación matemática con ese dato.
Hay ejemplos de comunicación serial bidireccional entre el puerto serie como el siguiente
#include
SoftwareSerial mySerial(2,3);
void setup()
{
Serial.begin(19200);
//Serial.println(“Begin”);
mySerial.begin(19200);
}
void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
Que básicamente te dan la opción de mandarle comandos AT al modem desde la consola serial, y te permiten visualizar en consola lo que el modem responde, esto último es lo que debe captar en una variable y reportar a la nube.
Ese ejemplo es bastante básico, creo hay comandos que te indican incluso la cantidad de caracteres que fueron recibidos en el buffer, esto puede ser útil al momento de almacenarlo en una variable.
Duro ahí, cualquier cosa pregunta de nuevo.