Enviar variable float mediante MQTT

jose:
No me queda claro como conectas los arduinos,porque en el codigo que muestras incluyes la libreria softwareserial pero no veo que definas un objeto de este tipo ni que lo inicialices.Por otro lado ,defines un array de 5 elementos ,pero con

   dtostrf(tempfl,4,2,temp);

le estas diciendo que dedique 4 caracteres para la parte entera y 2 para la decimal + el final de cadena y no se si la coma ocuparia un caracter mas.....

Tienes razón con ambas cosas: la librería de SoftwareSerial la usaba sin sentido puesto que comunico los dos arduinos mediante los pines 0 y 1 (TX para el arduino con la Shield del termómetro, y RX para el de la Shield wifi). Además, junto las masas de los dos arduinos con otro cable, por lo que conecto ambos arduinos con dos cables.

Respecto a lo del array de 5 elementos, también tienes razón, mal usado. Ahora he definido un array de 6 elementos (00.00 (5 valores) + final de cadena).

Así he conseguido que mande bien el dato! Pero sólo una vez, a la segunda ya me empieza a marear:

Ahora el código está así:

  if(msg == "TEMPERATURA") {
    Serial.flush();
    while(Serial.available() == 0);
    float tempfl = Serial.parseFloat();
    char temp[6];
    dtostrf(tempfl,2,2,temp);
    mqttClient.publish("from/arduino",temp);
  }

No sé si será por el dtostrf()... habrá que investigar.

Saludos y gracias!