[SOLUCIONADO]leer datos en arduino y enviarlos a nodemcu para subirlos a THINGSP

Hola AlexLPD, antes de nada agradecerte tu colaboración. Ya conseguí con ayuda de surbyte que NodeMCU recibiese los valores de LR leidos en arduino uno con el código que ves debajo para cada módulo. Había porblemas de configuración y de la entrada Rx del NodeMCU.

Por otro lado, ¿a qué te refieres con:

Creo que vas bien, solo que no estas llamando la funcion enviar por soft serial.

¿Cuál es la función de enviar por softserial? Disculpa mi desconocimiento.

Otro tema en el que tienes toda la razón según comentas es el tipo de dato.

Otra cuestión que desconozco y que estaría bueno definir es, tus datos son int o float, y para thingspeak se requiere pasar strings, asi que, considero si debes definir como vas a transmitir los datos de uno a otro:

El primer arduino obtendra los datos y los envia al segundo, mediante; int? float? string?

Al final decidimos enviar a NodeMCU el valor medido directamente en A0 en rango 0-1023 como puedes ver y luego en el código de NodeMCU convertirlo en float y añadirlo como string precedido por la cadena de caracteres "luminosidad relativa =". De esta manera el resultado en el monitor serie de cada módulo es el que puedes ver abajo.

Ahora viene lo importante y lo que llevo atascado desde que conseguimos enviar y recibir los valores. Desde arduino voy a enviar a NodeMCU las lecturas secuenciales de varios sensores. En NodeMCU tengo que ir leyendo y distinguiendo entre los distintos valores que van llegando porque unos serán temperatura, otro luminosidad, humedad, etc y se irán recibiendo en cada ejecución del void loop() en este orden. Como bien dices, para subirlos a thingspeak hay que pasarlos a String y aquí es donde viene mi problema. Surbyte me sugirió indagar en la posibilidad que aparece comentada en el código de arduino a continuación de "Trans.println(valor_medido);" y a continuación de "int valor_medido = mySerial.parseInt();" en el código de NodeMCU para no usar el parseint().
¿Cómo lo consigo?
He leido googleando que hay una función dtrost o algo así pero estoy pegado. Y luego otro problema gordo es cómo subir todos estos datos a thingspeak mediante protocolo MQTT, el cual también envía los datos como String, pero bueno creo que antes que esto hay que solucionar todo lo referente al envio y recepción de datos entre arduino y NodeMCU para no perder ningun valor y poder extraerlos correctamente del buffer.

Voy a seguir indagando. Para cualquier sugerencia espeero vuestra ayuda como siempre por aquí. Muchisimas gracias. Un abrazo.

CODIGO ARDUINO UNO

#include <SoftwareSerial.h>

#define rxPin 2 
#define txPin 3 
 
SoftwareSerial Trans(rxPin, txPin);               //Pines para Rx y Tx.

//Declaración de variables del proceso

unsigned int valor_medido;                        //Valor obtenido al leer por A0.
int ledPin = 10;                                  //Pin de conexión del led de prueba.
float LR;                                         //Variable para almacenar la luminosidad relativa.
int val;                                          //Variable empleada para el mapeo del valor medido para enviarlo al pin 10.

void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode (txPin , OUTPUT);
  Serial.begin(9600);
  Trans.begin(9600);                            //Velocidad de envío para la transmisión al NodeMCU.
}

void loop()
{
  valor_medido = analogRead(A0);                      //Valor de luminosidad medido en A0
  LR = (valor_medido * 100.0) / 1023.0;               //Luminosidad medida en tanto por ciento
  Serial.print(LR);                                              //Para mostrar el valor en el monitor serie de arduino.
  Serial.println(" % luminosidad relativa");
  delay(1000);
  val = map(valor_medido, 0, 1023, 0, 255);       //Mapeo del valor medido al rango de salida de las... 
                                                                       //salidas digitales para encender el led.
  analogWrite(ledPin, val);
  delay(1000);
  Trans.println(valor_medido);                             //Transmisión del valor a NodeMCU.

  // Trans.print(valor_medido);                         //Para cuando quiera enviar varios parámetros...
                                                                      //separados por comas. La coma además 
  // Trans.print(',');                                         //sirven como identificador de parámetro nuevo recibido.
  // Trans.print(humedad);
  // Trans.print(',');
  delay(1000);
}

CODIGO NODEMCU

SoftwareSerial mySerial(13, 15); // RX, TX
float LR;

void setup() 
{
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop() 
{
   if (mySerial.available()>0)
   {
      int valor_medido = mySerial.parseInt();                     //El parseInt funciona cuando en arduino..
                                                                                     //usamos un println en vez de un print. 
                                                                                     //Para cuando midamos varios parámetros, 
                                                                                     //leerá la cadena hasta la coma que.... 
                                                                                     //corresponderá a una medida.
      // String str = mySerial.readStringUntil(',');
      // int data = str.toInt();
      
      if (valor_medido != 0) 
      { 
          LR = ((valor_medido*100.0)/1023.0);
          Serial.println("Luminosidad relativa ="+ String(LR));
      }
  }
  // envio a ThingSpeak
}

MONITOR SERIE ARDUINO UNO

72.53 % luminosidad relativa
72.43 % luminosidad relativa
70.28 % luminosidad relativa
72.73 % luminosidad relativa
70.19 % luminosidad relativa
72.14 % luminosidad relativa
72.14 % luminosidad relativa
72.24 % luminosidad relativa

MONITOR SERIE NODEMCU

Luminosidad relativa =72.53
Luminosidad relativa =72.43
Luminosidad relativa =70.28
Luminosidad relativa =72.73
Luminosidad relativa =70.19
Luminosidad relativa =72.14
Luminosidad relativa =72.14
Luminosidad relativa =72.24