简要概括就是用Docker下载官方给的EMQX镜像文件进行本地化部署,跑通MQTT流程之后,通过点点点的操作,连接上EMQX-Cloud,然后就可以通过外网
与STM32进行MQTT通信。
EMQX镜像布置挺简单的,我参考了这个up主的视频:https://www.bilibili.com/video/BV1YZ4y1f744/?spm_id_from=333.1391.0.0&vd_source=beec58a3b47d41e57aa18f0a85908b48
然后结合豆包的问答环节,比较轻松完成了EMQX本地化部署。


直接运行即可,然后打开浏览器,进入网址http://localhost:18083


然后先授权几个客户端


添加几个账号的用户名和密码

下一步尝试跑通MQTT流程:先是用软件调试跑一遍。
下载这个

然后用CMD控制台 ipconfig得到本机的IP地址
然后就是用软件直接模拟MQTT客户端

点了连接之后,订阅主题,名字就随意了,也可以用到通配符+或者#,意思就是多选,不仅仅只接收这一个名字的主题,接收一类。

然后就可以看到连接上了。

连两个就可以互相发消息了。
回到主页把这个复制一下,这个是后面要填的静态客户端ID映射表的那个节点名称

注册一个EMQX-Cloud https://cloud.emqx.com/

跟本地一样,也需要授权几个客户端的用户名和密码,到时候本地EMQX就是模拟一个客户端,所以需要用到。
下一步直接尝试EMQX本地化桥接EMQX-Cloud
下拉菜单打开,选择集成,再选择连接器

创建一个通道

MQTT服务




然后点击测试连接,通了之后直接点创建
有点疏忽,这个地方也得填 SNI,就填跟MQTT服务地址一样的就行,去掉端口号

连接器通了之后,就开始创建规则



一个简单的规则设置好了

在MQTTX打开两个客户端,一个连上EMQX本地,通过这个再通过那个规则通道向云端发送数据,
另一个客户端连上EMQX云端,用来显示数据,记得要跟规则配置的topic一样,T1
然后就可以收到一堆乱七八糟的数据。

记得是连接本地的那个给T1发数据。
修改一下规则

干净了些。

然后就是需要云端给本地发
这个时候我们需要认识一些东西

规则就是最后的综合实践。动作就是本地向云端发送数据,Sources就是云端向连接器这个通道发送数据(但是连接器
不会自动将数据回发给本地EMQX组)所以下一步来了,再次打开上次创建的规则。

添加输入

添加输出,把先前那个给删掉,不然你会跟我一样惨



然后就可以云端给本地发送信息了。
下一步就是用单片机跑通MQTT本地的EMQX,其实这个时候也可以顺便跑通云端了,毕竟云端数据已经下来了。
下一步就可以用单片机解析数据做处理了。
另外:之所以这样搞了一圈,就是因为这是我第一次用MQTT,原本是想直接云端,结果需要TLS什么的验证,查了下资料,感觉
直接搞很难成,然后找了几个小时没找到公网的1883的MQTT云(我差不多做完这一套的时候找到了),就问了问豆包本地化部署是什么,
怎么样,然后豆包强烈推荐我先搞一下本地化部署。部署倒是挺快,我部署完之后直接用MQTT例程跑,然后一卡一卡地前进,
特别是心跳包这个东西,老是自动掉线,花了半天没搞定,只能换种方法写个空包定时发送。然后就是桥接上云了,只能说很坎坷,
从中午12点到凌晨6点,着不住了,还好弄完了。
