首先贴上相关链接:使用MQTT.fx接入物联网平台、使用MQTT客户端连接阿里云MQTT服务器、阿里云物联网平台。
当遇到问题无从下手时可以找阿里的售后工程师:物联网平台支持与服务。
MQTTfx下载链接,下载完成后打开软件,界面如下。
首先你要在阿里云物联网平台创建产品和设备,获取四元组:ProductKey、ProductSecret、DeviceName、DeviceSecret。然后像下面一样填充数据。
填入:${YourProductKey}.iot-as-mqtt.${region}.aliyuncs.com
意义:代理地址,其中${YourProductKey}代表你的产品密钥,${region}代表你所使用的代理商地址,如下图所示。具体参考地域和可用区。
填入:1883或其他
意义:代理端口
填入:${clientId}|securemode=3,signmethod=hmacsha1|
意义:
${clientId}为设备的ID信息。可取任意值,长度在64字符以内。建议使用设备的MAC地址或SN码。
securemode为安全模式,TCP直连模式设置为securemode=3,TLS直连为securemode=2。
signmethod为算法类型,支持hmacmd5和hmacsha1。
signmethod我试过hmacsha256,可以连接上物联网,当然password要对应修改为对应的加密方式进行生成。
如果securemode=2则要在SSL/TLS配置为下图。
填入:${YourDeviceName}&${YourPrductKey}
意义:用户名,${YourDeviceName}为你的设备名,${YourPrductKey}为你的产品密钥。
填入:由对应加密方式将参数值拼接而成生成的密码。
意义:密码,生成方法可用阿里提供的工具密码生成工具。它仅支持hmacmd5和hmacsha1。如果需要hmacsha256加密方式,可以到HMAC在线计算根据下图中的手动生成方法来操作。
例如参数为:
productKey:a1mWJcKdnBv
productSecret:M3Z5FAAoWvEj2ORw
deviceName:AInf4dmKbXkfHNN1C00K
deviceSecret:Mt9Hu81Z2lpGrmLzaj6gKTN2CaNkcIrq
clientID:A614A614|securemode=3,signmethod=hmacsha256|(注意加粗的部分才是ClientID,| |内部的是额外参数)
timestamp:66666
按照以下格式填入参数
clientId${YourClientId}deviceName${YourDeviceName}productKey${YourProductKey}timestamp${YourTimestamp}(timestamp不必要,仅用作区分)
在MQTTfx填充完数据之后点击连接即可,进入物联网发现设备在线,可以开始进行调试。
推送数据到阿里云之前,先要复制对应的Topic到MQTTfx的推送栏。
然后在推送框内部填写数据。
点击推送,在物联网平台监控运维->日志服务->上行数据分析可以看到推送的事件。
另外如果要修改对应的设备属性则要传输符合Alink编写规则的数据,并且推送的目的Topic为属性相关的主题。
在推送框填入如下数据:
{
"id":"666",
"version":"1.0",
"params":{
"Data":"seanOY"
},
"method":"thing.event.property.post"
}
params内部的Data为产品功能的标识符,可自定义。
点击推送然后进入物联网平台可以发现设备运行状态的数据变化为"seanOY"。
在物联网平台复制所要订阅的Topic,然后填入MQTTfx的subscribe栏,然后就可以接受到来自该Topic的数据了。
在物联网平台发布消息,然后查看MQTTfx会发现对应的数据。
我在调试ESP32的时候想用MQTTfx来获取ESP32发送的数据,像这种数据流通:ESP32<->物联网平台<->远端服务器。但是目前还没调试完成,希望大家有好的解决方法或思路可以提供一下,感谢了!