AJuda em publicar em MQTT

Boa noite pessoal
Estou com um problema a publicar um valor de um sensor capacitivo de humidade, daqueles que se metem no solo, num broker.
Vou meter aqui parte do codigo para não ficar muito extenso mas se for necessário meto o codigo inteiro. Vamos então por partes

void sendHumidity()
{
  int sensorValue = analogRead(AnalogPin);

  float percentageHumidity = map(sensorValue, wet, dry, 100, 0); 

  delay(1000);
  Serial.print(percentageHumidity);
  Serial.println("%"); 
}

Esta função pega nos valores maximo "wet" e minimo "dry" definidos no inicio do codigo em const int e faz uma conversão para percentagem. Até aqui tudo bem.
O que eu quero agora é pegar nesse valor já convertido e publica-lo num broker atraves da PubSubclient.

Agora é que começam os problemas. Vou postar a parte do codigo conde publico os sensores

void MQTT_Heartbeat()
{
    MQTTclient.publish((base_mqtt_topic + "/RSSI").c_str(),String(WiFi.RSSI()).c_str(),true);         // Publish RSSI
    MQTTclient.publish((base_mqtt_topic + "/Uptime").c_str(),String(millis()/1000).c_str(),true);     // Uptime in seconds 
    MQTTclient.publish((base_mqtt_topic + "/WaterLevel").c_str(),String(digitalRead(WaterLevelSensor)).c_str(),true); // State of the Water Level Sensor
    MQTTclient.publish((base_mqtt_topic + "/Temperature").c_str(),String(dht.readTemperature()).c_str(),true);   // Publish Temperature
    MQTTclient.publish((base_mqtt_topic + "/Humidity").c_str(),String(dht.readHumidity()).c_str(),true);   // Publish Humidity  
    MQTTclient.publish((base_mqtt_topic + "/PlantHumidity").c_str(),?????,true);   // Publish Humidity of Plant  
}

Como faço para publicar o valor da float de cima em que o valor já esta convertido?
Já tentei várias maneiras e não da... O topico não sai de 0.
Já tentei converter float para String mas devo estar a fazer algo de errado.
Alguém me podia ajudar?
Obrigado

Olá.
Foi você mesmo que criou esses tópicos de MQTT?
Publicar é bem simples.
MQTTclient.publish("Topico", String(percentageHumidity ).c_str());
O seu problema é que está bem complexo seu caminho do tópico usando uma variável e ainda usou no final para reter o valor. Se souber o que fez pode deixar. Ficaria assim se for publicar o valor mapeado no tópico Humidity
MQTTclient.publish((base_mqtt_topic + "/Humidity").c_str(),String(percentageHumidity).c_str(),true); // Publish Humidity

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.