神一样的老师 发表于 2025-1-14 10:13:32

【行空板K10】Mind+程序如何通过MQTT连接巴法云平台

本帖最后由 zoey不种土豆 于 2025-1-14 10:19 编辑

在【行空板K10】利用Nanomq的桥接转发能力实现接入任意的MQTT服务器 中介绍了行空板K10内置的MQTT组件只支持阿里云、OneNet、EasyIoT和SIoT4种MQTT服务器。这对想使用其他MQTT服务器的用户来说不太方便。今天分享一下如何直接使用内置的MQTT组件来连接巴法云。

巴法云的MQTT认证方式
巴法云的MQTT认证方式有两种:


[*]方式一:用户私钥作为连接MQTT服务器的客户端ID,连接时用户名和密码为空,或随意填写,即设备连接时不需要账号和密码。
[*]方式二:如果客户端ID设置错误或不匹配,系统会使用用户名和密码进行身份验证,其中用户名是appID,密码是secretKey,appID和secretKey的获取方式,可见api接口中用户接口接口<设置新的AppID和secretKey>获取。

一般用户多喜欢使用第一种,但是Mind+提供的MQTT组件不支持修改clientid,会自动生成随机的clientid,所以无法使用第一种方式。我们只能使用第二种方式来实现。

生成巴法云的appID和secretKey
第二种方式需要先生成appID和secretKey。巴法云的相关文档是这样的:

6、设置新的AppID和secretKey​
接口说明:如果调用成功,系统会生成新的新的AppID和secretKey,旧的AppID和secretKey不会失效。

JSON格式 数据类型 "Content-Type": "application/json; charset=utf-8"

POST接口
https://pro.bemfa.com/vs/web/v1/userSecretKey

正确返回:
{
    "code": 0,
    "msg": "success",
    "data": {
      "appID": "beid_xQjMwcjN0EzNx8VM3UDN3A",
      "secretKey": "7IoRBu2g4kSMywplr9ihofJz4n90HsW9"
    }
}


巴法云在后台没有提供相应的界面,所以我们只好借助Windows的curl命令实现。
curl -X POST https://pro.bemfa.com/vs/web/v1/userSecretKey -H "Content-Type: application/json; charset=utf-8"-d "{\"openID\":\"7801e4ba1bf7406593d47250797860fd\"}"

执行后,curl会返回如下信息:
{"code":0,"msg":"success","data":{"appID":"beid_xQjMwcjN0EzNx8VM3UDN3A","secretKey":"7IoRBu2g4kSMywplr9ihofJz4n90HsW9"}}
这样我们就可以得到自己想要的ID了。

测试
我们还是用【行空板K10】利用Nanomq的桥接转发能力实现接入任意的MQTT服务器提供的程序。


在设置MQTT参数的部分使用前面生成的ID和KEY。

然后烧写程序并运行。

此时在巴法云的后台就可以看到终端登录成功:


数据也被正确的上传。

结语
虽然比常规使用巴法云的方式多了一个步骤,但整体还是比较容易实现的。不过这种方法不能适用于华为云IotDA,因为华为云对用户名、密码和clientid三者都有严格的要求。

页: [1]
查看完整版本: 【行空板K10】Mind+程序如何通过MQTT连接巴法云平台