与阿里物联网平台对接流程
1.1 阿里物联网平台侧操作说明
1.1.1 用户注册步骤1:访问https://help.aliyun.com/product/30520.html?spm=a2c4g.11174283.6.540.32021668tk7sOP。点击”注册”,进入注册页面 步骤2:填写注册信息,完成注册 步骤3:完成实名认证,开通物联网平台 图1.1 用户注册 1.1.2 产品创建&设备创建“设备管理”—“产品”—“新建产品” 图1.2 创建产品 数据格式可以选择ICA或者透传格式,不影响数据通信。产品创建后,出现如下界面,表示产品已经创建成功。 图1.3 产品创建成功
点击“管理设备”—“添加设备”
图1.4 设备管理界面
图1.5 添加设备 点击“添加设备”,填写DeviceName,添加成功后,会出现设备证书。设备证书中的ProductKey、DeviceName、DeviceSecret、产品名称、URL是创建MQTT client的必须填充的信息。 设备创建成功后,可以看到设备还没有被激活 图1.6 设备创建成功
图1.7 URL信息
用户每定义一类产品都会自动生成对应的Topic列表,当然我们也可以"自定义Topic"便于测试。
Tips: 系统订阅/发布的主题在"产品信息"中,每个设备的三元组信息在"设备信息中",URL、Port在“MQTT连接参数”中
图1.8 系统默认创建Topic列表
图1.9 用户自定义Topic
Tips:用户只有定义Topic,模组才能订阅&上发数据
1.2 模组侧操作说明1.2.1 与阿里物联网平台交互介绍mqtt的at命令是根据mqtt的功能划分来设计的,包括mqtt create, mqtt sub,mqtt unsub,mqtt pub,mqtt delete和mqtt receive,共6个at命令: mqtt create的作用是创建socket和mqtt连接,发送这条at命令后在云平台上能看到设备上线。由于阿里物联网平台的mqtt client创建时使用的clientID,username和password字符比较长,所以create时配置的发送和接受的buffer需要尽量大一些,最好设置为512或以上。目前建议只创建一个mqtt client,多个mqtt client测试还不够充分。 Mqtt sub:订阅topic Mqtt unsub:取消订阅的topic Mqtt pub:发送数据给云平台 Mqtt delete:删除mqtt,包括mqtt连接和socket连接 Mqtt receive:接收mqtt server下发的数据
使用mqtt的at命令的流程如下: 步骤1:使用mqtt create创建mqtt连接,mqtt的参数在mqtt create的时候已经配置 步骤2:使用mqtt sub订阅topic 步骤3:使用mqtt pub发送数据 步骤4:当mqtt server下发数据的时候,mqtt receive命令会自动接收,并以“+MQTTRECV:id,tag,topic,data”的格式,打印出来 步骤5:使用mqtt delete删除mqtt连接 图1.10 与阿里物联网平台交互图 1.2.2 与阿里物联网平台交互操作
1.2.2.1 连接方式1:一机一密
配置“DeviceName”、“ProductKey”、“DeviceSecret”、URL、Port 1) 模组/设备上线 发送如下命令,打开阿里物联网平台的“设备管理”,可以看到对应的设备状态变成绿色,设备显示“在线” 1. AT+LMQTTCFG="aliauth",0,"a1xFDTv3InR","ec_smoke","sWZtNMYkODMxvauyaSiGeJrVEp9jZ4Tg 2. AT+LMQTTOPEN=0,"a1xFDTv3InR.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883 3. AT+LMQTTCONN=0,"eigencomm"
“产品名称”、“DeviceName”、“ProductKey”、“DeviceSecret”、URL、Port是创建阿里物联网MQTT 客户端必须填充的信息。上述参数对应平台信息见1.1.2节产品创建图示,模组指令参考《LierdaNT35E&NT26E-CN AT命令手册》 图1.11 设备上线
2) 设备发送数据 AT+LMQTTPUB=0,0,0,1,"a1xFDTv3InR/ec_smoke/user/get",10,"update"
发送上述指令之后,在页面中点击“设备详情”—“日志服务”—“前往查看”,可以看到,已经收到client上报的数据。 为了考虑兼容性,LMQTTPUB指令中长度信息≥实际发送的数据即可。 图1.12 日志服务界面 点击“MessageID”查看上报数据详细情况,把内容显示设置为“Text(UTF-8)”,可以看到收到的数据就是发送过来的“update” 图1.13 上报消息详细内容 3) 阿里物联网平台下发数据 平台下发数据,对应模组端是“订阅消息”。测试阿里物联网平台下发数据有2种方式,这里使用设备端直接下发方式,平台定义服务/属性方式用户自行按照阿里云协议定义相应接口。 首先用户参考图3.9定义Topic,然后模组端发送如下指令订阅该消息 1. AT+LMQTTSUBUNSUB=0,0,1,"/a1JszCpjS61/NT35E_06011/user/COMMUTEST",2
订阅成功后平台下发的数据模组就可以接受了,在“设备”—“查看”—“Topic列表”—“发布消息”中下发数据。
图1.14 平台下发消息 图1.15 填充待发送数据 图1.16 模组收到对应的数据 1.2.2.2 连接方式2:用户ID、秘钥连接(一机一密)
通过刚刚的连接方式,已经实现了模组的数据通信,但是有些客户可能觉得麻烦,因为要来回复制三元组、URL、Port端口号。这里使用“设备”—“查看”—“MQTT参数”统一复制,简化用户操作方式进行通信。 图1.17 MQTT连接参数 如图1.17,打开阿里云设备信息界面,点击“mqtt连接参数”查看待填充的参数。 AT+LMQTTOPEN=0,"iot-06z00csmvukc0w2.mqtt.iothub.aliyuncs.com",1883 AT+LMQTTCONN=0,"gg1mTfE3P4r.869149048073220|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|","869149048073220&gg1mTfE3P4r","dfff87be89a9d7f472c5b973797d124317dda75b292aa64fd274a6fb383fab5c"
这里不需要在填充对应的三元组,在LMQTTOPEN中填充URL、端口,然后在LMQTTCONN中填充clientId、username、passwd,其他与上述连接方式相同,简化用户填充流程。
1.2.2.3一型一密钥(预注册)1) 平台连接参数获取 所需参数如下图所示 至此我们获得所需的所有参数。 1. "ProductKey": gg1mTfE3P4r 2. "ProductSecret": 4cLuZilHKJlXv56V 3. "ProductKey": gg1mTfE3P4r 4. "DeviceName": 866449060001973 5. "InstanceId": iot-06z00csmvukc0w2 6. "productName": MB26
2)平台连接参数获取 1. [20:55:49.793]发→◇AT+LMQTTCFG="cloud",0,2,1 2. □ 3. [20:55:49.799]收←◆ 4. OK 5. 6. [20:56:07.510]发→◇ AT+LMQTTCFG="aliauth",0,"gg1mTfE3P4r","866449060001973","","MB26","4cLuZilHKJlXv56V","register","hmacsha1","tlspsk","2","iot-06z00csmvukc0w2",1 7. □ 8. [20:56:07.526]收←◆ 9. OK 10. 11. [20:56:14.683]发→◇AT+LMQTTOPEN=0,"gg1mTfE3P4r.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883 12. □ 13. [20:56:14.692]收←◆ 14. OK 15. 16. [20:56:15.728]收←◆ 17. +LMQTTOPEN: 0,0 18. 19. [20:56:20.076]发→◇AT+LMQTTCONN=0,"test" 20. □ 21. [20:56:20.081]收←◆ 22. OK 23. 24. [20:56:20.236]收←◆ 25. +LMQTTCONN: 0,0,0 26. 27. [20:56:20.254]收←◆ 28. +LMQTTURC: RECV,0,42405,"/ext/register",{"deviceSecret":"a1abdf10967991647860f03d7c324d02","productKey":"gg1mTfE3P4r","deviceName":"866449060001973"} 29. 30. [20:56:23.076]收←◆ 31. +LMQTTCONN: 0,0,0 32. 33. [20:59:26.602]发→◇AT+LMQTTSUBUNSUB=0,0,1,"/gg1mTfE3P4r/866449060001973/user/test",2 34. □ 35. [20:59:26.610]收←◆ 36. OK 37. 38. [20:59:26.743]收←◆ 39. +LMQTTSUBUNSUB: 0,1,0,1
1.2.2.4一型一密钥(免预注册)1)平台参数获取 同一型一密预注册,但无需创建设备,AT指令设备名称处填写任意值 新老版本实例说明: 需注意平台如图显示处,如果为cn-shanghai则连接参数倒数第二位,实例id填空,不是则为新版本阿里实例需要填实际平台显示实例id。
1. [18:27:29.042]发→◇AT+ECMTCFG="cloud",0,2,1 2. □ 3. [18:27:29.045]收←◆ 4. OK 5. 6. [18:27:37.556]发→◇AT+ECMTCFG="aliauth",0,"a1d0LIp2fj7","ec-hou22se","","qhq_test_1230A","Qi3nNvkDhmeISoZH","regnwl","hmacsha1","tlspsk","-2",,1 7. □ 8. [18:27:37.560]收←◆ 9. OK 10. 11. [18:27:49.948]发→◇AT+ECMTOPEN=0,"a1d0LIp2fj7.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883 12. □ 13. [18:27:49.951]收←◆ 14. OK 15. 16. [18:27:51.107]收←◆ 17. +ECMTOPEN: 0,0 18. 19. [18:27:54.771]发→◇AT+ECMTCONN=0,"ec_city" 20. □ 21. [18:27:54.774]收←◆ 22. OK 23. 24. [18:27:55.173]收←◆ 25. +ECMTCONN: 0,0,0 26. 27. +ECMTRECV: 0,42405,"/ext/regnwl",{"clientId":"1RAdzxzNh1EwZRjG5tHt000100","productKey":"a1d0LIp2fj7","deviceName":"ec-hou22se","deviceToken":"^1^1655375274601^627844c2d081717"} 28. 29. [18:27:57.870]收←◆ 30. +ECMTCONN: 0,0,0
1.2.2.2 MQTTS1. [22:32:18.089]发→◇AT+LMQTTCFG="cloud",0,2,1 2. □ 3. [22:32:18.091]收←◆ 4. OK 5. 6. [22:32:24.975]发→◇AT+LMQTTCFG="aliauth",0,"gg1mTfE3P4r","869149048073220","04ec6a741f40457aefb1ebf0099d951c","","","","hmacsha1","tlspsk","",,0 7. □ 8. [22:32:24.978]收←◆ 9. OK 10. 11. [22:32:31.926]发→◇AT+LMQTTOPEN=0,"gg1mTfE3P4r.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883 12. □ 13. [22:32:31.929]收←◆ 14. OK 15. 16. [22:32:32.930]收←◆ 17. +LMQTTOPEN: 0,0 18. 19. [22:32:41.444]发→◇AT+LMQTTCONN=0,"test" 20. □ 21. [22:32:41.447]收←◆ 22. OK 23. 24. [22:32:41.543]收←◆ 25. +LMQTTCONN: 0,0,0
|