esp8266连接mqtt时client.publish出现的小问题

client.publish发送变化数据的问题

温湿度为例

先是获取数据;加入我们获取的湿度为humidity,温度为temp;
下一步就是我们的发送环节啦,client.publish(“主题”,内容);
我们字节将内容替换是会报错的,我们需要对数据简单加工一下;
String temp= String(temp);
String humidity = String(humidity);
strcpy(c,temp.c_str());
strcpy(h,humidity.c_str());
snprintf (msg, 50, c, value);
snprintf (msgone, 50, h, value);
然后我们就可以发送啦
client.publish(“humidity”, msgone);
client.publish(“temp”, msg);

显示如下(自己写的网站):

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

### 使用ESP8266连接MQTT服务器 对于希望利用ESP8266模块来接入MQTT协议的开发者而言,了解具体的配置流程以及掌握相应的编程技巧至关重要。下面将详细介绍这一过程,并提供一段用于实践的代码示例。 #### 配置说明 在开始之前,需确认已安装好Arduino IDE环境,并添加了ESP8266开发板的支持包。接着设置Wi-Fi参数,包括SSID和密码,使设备能够成功连入互联网。之后便是选择合适的MQTT代理服务端地址及其监听端口号;通常情况下,默认采用1883作为TCP传输层上的标准端口[^1]。 #### 示例代码 以下是基于Arduino平台编写的简易程序片段,展示了怎样让ESP8266节点成为MQTT客户端并与指定主题交互: ```cpp #include <ESP8266WiFi.h> #include <PubSubClient.h> // WiFi网络凭证 const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // MQTT Broker信息 const char* mqtt_server = "broker_address"; WiFiClient espClient; PubSubClient client(espClient); void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect("ESP8266Client")) { Serial.println("connected"); // Once connected, publish an initial message client.publish("outTopic", "hello world"); // ... and resubscribe client.subscribe("inTopic"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED pin as output Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); long now = millis(); if (now - lastMsg > 2000) { lastMsg = now; ++value; snprintf (msg, MSG_BUFFER_SIZE, "hello world #%ld", value); Serial.print("Publish message: "); Serial.println(msg); client.publish("outTopic", msg); } } ``` 此段代码实现了基本的功能需求——建立无线局域网连接、尝试向MQTT broker发起握手请求直至成功为止、周期性发送测试数据给特定的主题(outTopic),同也准备好了接收来自其他订阅者的消息(inTopic)[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值