笔记|解决方案 arduino PubSubClient 库 MQTT 订阅主题没反应 回调函数没效果

解决方案: ①将esp8266的波特率改为14400或19200

AT+UART_DEF=14400,8,1,0,0

②服务端发布消息时,尽量发布多次,直到收到arduino的回复,下面是我的GO代码(理解思路就好)
for i := 0; i < 10000; i++ { text := fmt.Sprintf("msg #%d!", i) token := c.Publish("index", 0, false, text) token.Wait() fmt.Println("publish", text) if s == "1" { // arduino回复的值已经储存在s中 time.Sleep(2000*time.Millisecond) s = "" } time.Sleep(200*time.Millisecond) }

③arduino的callback函数加上一个回复(发布指令)
void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i=0; i

实验现象: 【笔记|解决方案 arduino PubSubClient 库 MQTT 订阅主题没反应 回调函数没效果】串口打印如下:
笔记|解决方案 arduino PubSubClient 库 MQTT 订阅主题没反应 回调函数没效果
文章图片

效果还行,但还有一个bug就是wifi或MQTT服务器容易断开,欢迎有相同问题的同学留言讨论。

    推荐阅读