你的代码的连接部分没看出什么问题。
是不是你的arduino机器上的IP写错了,怎么他连接的是127.0.0.1的1883.
看现象极有可能应该是你arduino到emqx的1883端口不通。
测试时不用要dashboard上的websocket 来测,推荐下载一个MQTTX 来做原生的mqtt连接,连到1883端口。
代码的其它部分也可以优化一下:
-
在
setup()
函数中,您没有调用client.subscribe()
函数来订阅主题subscribe_topic
。 -
在
loop()
函数中,您在调用client.publish()
函数之前没有检查client.connected()
是否为 true。 -
您在
msg_charArray
中没有为字符串结尾的空字符预留空间。这会导致client.publish()
函数在字符串结尾处写入内存,从而导致程序崩溃。
你电脑上的模拟开发环境跑的时候可以这样写,因为你的EMQX可能就装在那台电脑上。但实际上Arduino板的时候,ip得改成安装emqx的服务器ip