1. 设备
这章我们总结了在涉及dev表,devp表,deverr表,devlog表遇到的问题和思考
为什么不把dev数据存入obj系列表?
因为dev数据结构特殊,要求必须向阿里云靠拢,它有ProductKey,deviceName,还有iotid,最重要的是设备的online/offline,active,lon,lat。而obj数据结构简单,只有idx1,idx2,idx3根本没有办法满足这些,所以dev单独起一套是必然的。
以json格式存库的数据库data字段叫jata.
每种设备只能有一个type,所有阿里云的type必须是Aliot.Bed
这种type表达。在它的产品类型上增加一个Aliot.
的前缀。
定下dev表的type字段和skma字段的区别
type字段要做为devp表的字段。因为阿里云的产品在创建的时候就规定了它是阿里云内定的物联网设备类型。
skma字段不能作为devp表的字段,因为我们认为每个设备可以发送多种数据格式。
所有设备上报的属性里,必须有一个skma属性,表明上传的json解析格式。
2. 庆科床带上报数据格式
[!note] 这里用了Alink的数据格式来表达。这种数据格式规定设备在上传数据的时候必须是
params:{字典}
这种格式。
第一种数据格式,发送完整的睡眠监测数据
{
params:{
"skma":"imbh", //schema
"br":23, //breathRate
"hr":48, //heartrate
"mo":125, //bodymotion
"ib":1, //inbed
}
}
第二种数据格式,发送心跳数据,它不用发送任何附加字段,发送到云服务端自带时间戳。
每5分钟发一次,属于心跳包。并附带一些设备状态字段。附加的设备状态字段是用来调试的。因为这个数据包频率非常低,所以可以多放些字段。
服务器收到alive包后会把参数更新到farm表里。它表示设备的内置参数。
{
params:{
"skma":"alive", //表明1:联网 2:可以接受下行命令
"datup":1,//是否上传数据给阿里云iot, 0:不上传 1:上传。对于账户余额不足的用户,平台运维(人工/系统)会主动把TA名下的设备下发指令,设置为datup为0,不让它上传数据,但仍旧能发5分钟一次的心跳,以便后台统计活跃设备。
"led":"",//LED灯的模式,如果设备没有led,那保持`null`。
"time":1585851466,//设备的时间戳. 嵌入式设备怎么读去本地运行的时间戳。上传这个字段是为了服务器方便统计,那个设备时钟不对了,如果不对,服务器要下发同步时间的指令。
}
}