使用Arduino访问EMQX的服务器链接不上的问题

已切换单片机和WS5100链接服务器,联网成功但无法访问MQTT服务器

你的代码的连接部分没看出什么问题。
是不是你的arduino机器上的IP写错了,怎么他连接的是127.0.0.1的1883.
看现象极有可能应该是你arduino到emqx的1883端口不通。

测试时不用要dashboard上的websocket 来测,推荐下载一个MQTTX 来做原生的mqtt连接,连到1883端口。

代码的其它部分也可以优化一下:

  1. setup() 函数中,您没有调用 client.subscribe() 函数来订阅主题 subscribe_topic

  2. loop() 函数中,您在调用 client.publish() 函数之前没有检查 client.connected() 是否为 true。

  3. 您在 msg_charArray 中没有为字符串结尾的空字符预留空间。这会导致 client.publish() 函数在字符串结尾处写入内存,从而导致程序崩溃。

你电脑上的模拟开发环境跑的时候可以这样写,因为你的EMQX可能就装在那台电脑上。但实际上Arduino板的时候,ip得改成安装emqx的服务器ip

此稿可以删除,我更新了同类的问题,避免重复单片机和WS5100链接服务器,联网成功但无法访问MQTT服务器