Hola a tod@s de nuevo. Después de varios meses de modificaciones y la ayuda de surbyte he llegado al código final que muestro a continuación y que partía de otro post antiguo cuyo enlace añadiré también. Este código lee los datos de temperatura y humedad de 9 sensores dht22 y un sensor de co2 que lee via serie. Procesa los datos y actúa en consecuencia activando una electrovalvula y unos extractores mediante varios relés de estado solido. Además envío los datos medios medidos a un modulo nodemcu a través de comunicación serie para subirlos a una plataforma IoT. En el envío de datos a nodemcu y la subida de éstos a la plataforma IoT no hay problema, el problema está del lado de arduino y lo expongo a continuación:
Cuando el sistema lleva varias horas funcionando, en los últimos días me he dado cuenta que si no apago todo y enciendo arduino puede estar horas o dias enteros enviando a nodemcu el mismo valor de temperatura, humedad y CO2. Pensé que podrían haberse roto los sensores pero es muy casual que se rompan todos a la vez y en ese caso no volverían a funcionar correctamente a cortar la alimentación y volver a reponerla.
He llegado a la conclusión de que el fallo está en Arduino Mega o el código porque reseteo el nodemcu y se dejan de enviar datos a la plataforma IoT por lo que intuyo que le están llegando valores nulos, en cuyo caso tengo programado en nodemcu que no envíe nada a la plataforma IoT.
Además cuando aparece este problema de valores repetidos, si reseteo Arduino los valores medios de temperatura y humedad y el valor de CO2 son nulos, es como si la función que he creado llamada lecturas() no se ejecutase.
Todo esto me lleva a pensar que cuando las lecturas en el lado de arduino no se realizan correctamente o simplemente no se realizan por la razón que desconozco, lo que se envía constantemente a nodemcu son los últimos valores de temperatura y humedad media y CO2 que se leyeron antes de que comenzase a fallar.
Además tengo programado que cada 4 horas se active la electroválvula y me envíe un valor 1 a la plataforma IoT y una vez enviada la pongo de nuevo a 0, pues bien cuando aparece el problema en cuestión se mandan constantemente los valores mencionados repetidamente pero esta variable sí se envía correctamente, cero cuando es cero y uno cuando es uno.
Me tiene totalmente loco y no sé cómo solucionar el problema porque ha estado funcionando todo durante meses correctamente. He ido modificando el código y no sé si es que en alguna modificación la he liado pero no logro encontrar dónde. Si no me caben los códigos aquí los agrego en otro mensaje. Sigo dándole vueltas, mientras tanto espero a ver si alguien me puede ayudar. Muchas gracias siempre.
Saludos.
ENLACE:


