0.名词解释
名称 |
说明 |
产品 |
同一类型号设备的描述 |
通道 |
设备和服务器通讯的不同消息类型,每一种消息类型就是一个通道,也可理解为每一个功能就是一个通道,如:开灯,设置亮度,是两个通道 |
数据项 |
通道内包含的参数字段,如:通道叫做 延时开关,数据项就有两个,即延时时间和设备状态开还是关 |
上行/下行 |
下行:服务器下发命令给设备 ,上行:设备上报数据到服务器 |
1.说明
- tcp协议会发生粘包现象,所以设备收到服务器数据可以根据长度进行拆包,也可以根据帧尾0d0a(回车换行)拆包
- 平台访问地址:http://o.d.gdatacloud.com
- 设备接入域名:d2.gdatacloud.com
- 设备接入端口:1139
- 设备DeviceSecret:物联网平台系统中设备唯一标识(长度32),设备只需获取一次,永远存储在设备中
- 设备nodeId:设备自身唯一标识,比如IMEI、MAC地址,Serial No,或全局定义常量等(长度15)
- 设备需要实现掉线重连功能
- 一台设备只需创建一个tcp连接,无需重复创建
- 开发之前建议先用tcp调试工具模拟设备模拟上线,注册,上报数据
2.接入流程
- 物联网平台创建产品,生成该产品的 ProductKey和 ProductSecret,将 ProductKey和 ProductSecret保存到设备中
- 在该产品下添加设备,录入设备的唯一标识nodeId,平台自动生成该设备的DeviceSecret
- 设备根据产品的 ProductKey,ProductSecret和设备NodeId 换取设备DeviceSecret,将DeviceSecret保存到设备中
- 如果提前知道设备DeviceSecret(平台上有DeviceSecret)可以省去上面步骤,直接进行第四步上报数据
- 设备每次连接服务器成功上线后先进行设备注册(开机,重启,掉线重连等)
- 注册成功后设备正常上报数据
- 设备每次上线只需注册一次,无需每次上报数据前都进行注册
- 上报数据协议格式错误,服务器会主动断开连接
- 请求错误或者失败,请看最后一条响应码
2.1创建产品
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415181851587.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoYW5nemVuZ2xp,size_16,color_FFFFFF,t_70#pic_center)
2.2按照设备功能需求设计通道和数据项
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210603094705946.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoYW5nemVuZ2xp,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210603094714456.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoYW5nemVuZ2xp,size_16,color_FFFFFF,t_70#pic_center)
2.3添加设备
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210617094358243.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoYW5nemVuZ2xp,size_16,color_FFFFFF,t_70#pic_center)
3.手动获取设备DeviceSecret
- 可以复制保存到设备中
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210603205701128.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoYW5nemVuZ2xp,size_16,color_FFFFFF,t_70#pic_center)
4.自动换取设备DeviceSecret
- 设备发送数据示例(直连设备和网关设置需要,网关子设备不需要)
0a 00 44 00 53 31 62 59 68 5a 76 61 2c 61 65 31 62 64 66 62 61 37 61 35 63 61 33 62 35 37 66 38 39 39 63 35 39 31 61 32 37 36 33 66 39 65 31 62 33 33 39 63 39 2c 38 36 39 36 34 30 30 35 36 33 36 30 34 37 35 0d 0a
| 起始位 | 数据总长度 | 操作类型 | ProductKey| 分割符 | ProductSecret| 分割符 | NodeId | 结束位 |
起始位:0a
数据总长度:00 44 = 68
操作类型:00 = 换取DeviceSecret
ProductKey: 53316259685a7661 = S1bYhZva
逗号分割:2c = ‘,’
ProductSecret: 61653162646662613761356361336235376638393963353931613237363366396531623333396339 = ae1bdfba7a5ca3b57f899c591a2763f9e1b339c9
逗号分割:2c = ‘,’
nodeId: 383639363430303536333630343735 = 869640056360475
结束位: 0d 0a
参数 |
说明 |
长度 |
起始位 |
起始位 ,固定:0x0a |
1 |
数据长度 |
所有数据的长度,不含起始位,不含长度位自身长度 |
2 |
操作类型 |
0x00 是换取DeviceSecret, 0x01 是上传数据,0x02 是设备注册,0x03 是下发命令,0x04远程升级 |
1 |
ProductKey |
产品appId |
n |
分隔符 |
逗号分隔符,固定:0x2c ,ASCII编码 |
1 |
ProductSecret |
产品密钥,云平台中获取</ |