1.【安信可首款4G模组CA-01直连阿里物联网平台①】产品创建
2.【安信可首款4G模组CA-01直连阿里物联网平台②】一机一密认证方式连接
3.【安信可首款4G模组CA-01直连阿里物联网平台③】一型一密认证方式连接
4.【安信可首款4G模组CA-01直连阿里物联网平台④】HmacMD5算法
5.【安信可首款4G模组CA-01直连阿里物联网平台⑤】空间数据可视化,将你的物联网设备位置快速接入到地图上
最近安信可在推出了一块新的4G模组,注意是4G模块,于是乎,很多朋友问我怎么开发, 这里我分享笔记给大家看看!
模块官方文档资料:https://docs.ai-thinker.com/gprs
这里我选择为标准品类,数据格式为 Alink Json 协议!
这时候串口收到:
+MSUB: "/sys/a1PcEbO4qmU/CA01-01/thing/service/property/set",102 byte,{"method":"thing.service.property.set","id":"1164426096","params":{"LightStatus":0},"version":"1.0.0"}
AT+MPUB="/sys/a1PcEbO4qmU/CA01-01/thing/event/property/post",1,0,"test1"
这时候,我们可以从阿里云物联网的日志服务查看看到了这条消息上报:
物模型上报是指遵循alink
协议,这协议干嘛的?就是阿里云自研的协议,现在广泛用到了天猫精灵/阿里飞燕平台上上报,统一了设备上报,那么这个协议和我们普通上报有什么不同?
我举个例子吧!我们在设备详情打开物模型数据,发现有一系列的表,可以实时刷新设备数据,大家有没有疑问设备上报数据时候,如何更新到这个表里面?其实遵循alink
物模型协议即可!
比如,我要更新这个属性LightStatus
为 1,我们应该这样的payload
上报,以此类推怎么样的属性需要在后台一一查询对应!
{
"id": "123",
"version": "1.0",
"params": {
"LightStatus": 1
},
"method": "thing.event.property.post"
}
所以,我们会这样写指令:
AT+MPUB="/sys/a1PcEbO4qmU/CA01-01/thing/event/property/post",1,0,"{"id":"123","version":"1.0","params":{"LightStatus":0},"method":"thing.event.property.post"}"
但是以上在模组上是识别不了,部分字符需要转义哈!所以,下面是正确的格式!
原字符 | 转义后 |
---|---|
" | \22 |
\r | \0D |
\n | \0A |
最后得到这样:
AT+MPUB="/sys/a1PcEbO4qmU/CA01-01/thing/event/property/post",1,0,"{\22id\22:\22123\22,\22version\22:\221.0\22,\22params\22:{\22LightStatus\22:0},\22method\22:\22thing.event.property.post\22}"
AT+CGMR //初始化系统
AT+CGATT?
AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","CMIOT"
AT+SAPBR=1,1
//配置连接MQTT的参数:clientID,username,password
AT+MCONFIG="123456|securemode=3,signmethod=hmacsha1|","CA01-01&a1PcEbO4qmU","25E223E51DFF4F6D7001F12E00F006EA685E1918"
//连接MQTT服务器: URL,端口号
AT+MIPSTART="a1PcEbO4qmU.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
//描述=设置心跳
AT+MCONNECT=1,200
//订阅主题
AT+MSUB="/sys/a1PcEbO4qmU/CA01-01/thing/service/property/set",1
//发布主题,上报物模型协议;
AT+MPUB="/sys/a1PcEbO4qmU/CA01-01/thing/event/property/post",1,0,"{\22id\22:\22123\22,\22version\22:\221.0\22,\22params\22:{\22LightStatus\22:0},\22method\22:\22thing.event.property.post\22}"