gpt4 book ai didi

c++ - 主题名称的 MacAddress - Arduino IDE MQTT

转载 作者:行者123 更新时间:2023-12-04 01:02:50 25 4
gpt4 key购买 nike

我想使用我系统的 mac 地址作为主题名称。

我想要这样的东西:project/00:1B:44:11:3A:B7/temperature/status

我这样试过:

#define TEMP_STATUS_TOPIC "project/" + WiFi.macAddress() + "temperature/status"   
#define TEMP_CONTROL_TOPIC "project/temperature/control"

但是我得到这个错误:

no matching function for call to 'MQTTClient::publish(StringSumHelper&, char [128], size_t&)'

任何提示将不胜感激!

编辑:

我正在使用 mqtt.fx 客户端。

这是我调用发布的地方:

sensors.requestTemperatures(); 
float t = sensors.getTempCByIndex(0);
bool static led_temp_status = HIGH;

const int capacity = JSON_OBJECT_SIZE(3);
StaticJsonDocument<capacity> poolsystem;

if (t < destemp) {
led_temp_status = LOW;
digitalWrite(LED_EXTERNAL_TEMP, led_temp_status);
const int capacity = JSON_OBJECT_SIZE(3);
StaticJsonDocument<capacity> poolsystem;

poolsystem["temp"] = t;
poolsystem["heatstatus"] = "on";
char buffer[128];
size_t n = serializeJson(poolsystem, buffer);
Serial.print(F("JSON message: "));
Serial.println(buffer);
mqttClient.publish(TEMP_STATUS_TOPIC, buffer, n);
} else {
led_temp_status = HIGH;
digitalWrite(LED_EXTERNAL_TEMP, led_temp_status);

poolsystem["temp"] = t;
poolsystem["heatstatus"] = "off";
char buffer[128];
size_t n = serializeJson(poolsystem, buffer);
Serial.print(F("JSON message: "));
Serial.println(buffer);
mqttClient.publish(TEMP_STATUS_TOPIC, buffer, n);
}

最佳答案

您正在使用 #define 但试图像它的变量一样进行字符串添加。请记住,#define 原语只是将您放在其后的代码替换为代码。该错误告诉您没有对具有 StringSumHelper& 参数的 publish() 的函数调用,这就是 #define 放置的内容下。

使用变量确定 MQTT 主题,然后在您的 publish() 调用中使用该变量。

关于c++ - 主题名称的 MacAddress - Arduino IDE MQTT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67678977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com