Hallo zusammen,
ich bekomme diese Fehlermeldung
no matching function for call to 'PubSubClient::publish(const char [37], float&)'
und die IDE hebt diese Zeile hervor
mqttClient.publish("HH_Brutschrank/Eierwender/Temperatur", temperature);
wenn ich versuche diese auf eine Wemos D1 mini zu laden.
uint16_t error;
char errorMessage[256];
// Read Measurement
uint16_t co2 = 0;
float temperature = 0.0f;
float humidity = 0.0f;
bool isDataReady = false;
error = scd4x.getDataReadyFlag(isDataReady);
if (error) {
Serial.print("Error trying to execute readMeasurement(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
return;
}
if (!isDataReady) {
return;
}
error = scd4x.readMeasurement(co2, temperature, humidity);
if (error) {
Serial.print("Error trying to execute readMeasurement(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
} else if (co2 == 0) {
Serial.println("Invalid sample detected, skipping.");
} else {
Serial.print("Co2:");
Serial.print(co2);
Serial.print("\t");
Serial.print("Temperatur:");
Serial.print(temperature);
Serial.print("\t");
Serial.print("Luftfeuchte:");
Serial.println(humidity);
mqttClient.publish("HH_Brutschrank/Eierwender/Temperatur", temperature);
mqttClient.publish("HH_Brutschrank/Eierwender/Luftfeuchte", humidity);
mqttClient.publish("HH_Brutschrank/Eierwender/Kohlendioxid", co2);
}
Das ist nur ein Teil. Wenn es notwendig ist kann ich auch alles hier hin kopieren.
Ich habe schon im Netz gesucht - bin aber nicht wirklich weiter gekommen.
Grüße
Manfred
Da versuchst etwas, was nicht unterstützt wird.
Was und wie es geht, findest Du in der lib.
Unter anderem steht dort:
boolean PubSubClient::publish(const char* topic, const char* payload) {
return publish(topic,(const uint8_t*)payload, payload ? strnlen(payload, this->bufferSize) : 0,false);
}
boolean PubSubClient::publish(const char* topic, const char* payload, boolean retained) {
return publish(topic,(const uint8_t*)payload, payload ? strnlen(payload, this->bufferSize) : 0,retained);
}
boolean PubSubClient::publish(const char* topic, const uint8_t* payload, unsigned int plength) {
return publish(topic, payload, plength, false);
}
boolean PubSubClient::publish(const char* topic, const uint8_t* payload, unsigned int plength, boolean retained) {
Ich habe es jetzt so gelöst.
uint16_t error;
char errorMessage[256];
// Read Measurement
uint16_t co2 = 0;
float temperature = 0.0f;
float humidity = 0.0f;
bool isDataReady = false;
error = scd4x.getDataReadyFlag(isDataReady);
if (error) {
Serial.print("Error trying to execute readMeasurement(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
return;
}
if (!isDataReady) {
return;
}
error = scd4x.readMeasurement(co2, temperature, humidity);
if (error) {
Serial.print("Error trying to execute readMeasurement(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
} else if (co2 == 0) {
Serial.println("Invalid sample detected, skipping.");
} else {
Serial.print("Co2:");
Serial.print(co2);
Serial.print("\t");
Serial.print("Temperatur:");
Serial.print(temperature);
Serial.print("\t");
Serial.print("Luftfeuchte:");
Serial.println(humidity);
String Temperatur;
Temperatur.concat(temperature);
String Luftfeuchte;
Luftfeuchte.concat(humidity);
String Kohlendioxid;
Kohlendioxid.concat(co2);
mqttClient.publish("HH_Brutschrank/Eierwender/Temperatur", Temperatur.c_str());
mqttClient.publish("HH_Brutschrank/Eierwender/Luftfeuchte", Luftfeuchte.c_str());
mqttClient.publish("HH_Brutschrank/Eierwender/Kohlendioxid", Kohlendioxid.c_str());
}
Funktioniert.
Kann man machen. Zumindest passt jetzt der übergebene Datentyp 
Wenn Du die Lösung markierst, dann ist das später auch in der Suchfunktion zu finden...
In dem Post, der die Lösung ist unten das Kästchen Solution bzw.Lösung anhaken 
system
Closed
8
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.