从IOT云平台获取设备数据
这篇文档主要讲述的就是当设备的数据发送到物联网套件之后,用户的服务端如何获取设备
通过阅读IoT文档,我们了解到队列中消息结构体如下:
一,基于HTTP/2通道的服务端订阅-设备状态和数据
由于低配置且资源受限或者对网络流量有要求的设备,不适合直接构造JSON数据和云端通信,因此选择将数据透传到云端,由云端运行转换脚本将透传的数据转换成Alink JSON格式的数据。您可以在创建产品时,选择数据格式为透传/自定义格式,目前转换脚本通过JavaScript语言开发,需要开发者自行开发转换脚本。物联网平台为开发者提供了用于数据解析的在线脚本编辑器,方便您进行在线的编辑和模拟调试。
当您使用服务端订阅时,请注意以下限制。
连接建立之后,需要立刻发送认证请求。如果15秒内没有认证成功,服务器将主动关闭连接。
连接建立之后,客户端需要定期发送PING包来维持连接。发送PING包的时间间隔可以在客户端设置,默认为30秒,最大60秒。
若超过60秒发送PING包或数据,服务端会关闭连接。
若超过设定的时间,客户端没有收到PONG包或数据应答,SDK将主动断开重连,默认时间间隔为60秒。
推送失败重试消息时,每次批量推送10条。若该批次消息在10秒后,仍未收到客户端回复的ACK,则认为推送超时。
每60秒重新推送一次因客户端离线、消息消费慢等原因导致的堆积消息。
QoS0的消息保存1天,QoS1的消息保存7天。
每个账号最多可以启动64个SDK实例。
默认单租户的限流限制为1,000 QPS。如果您有特殊需求,请提交工单。
二,规则引擎 - 设备数据流转
当设备基于进行通信时,您可以使用规则引擎,编写SQL对Topic中的数据进行处理,并配置转发规则将处理后的数据转发到其他服务。例如:
注意: 如果数据格式为二进制的数据,不支持转发至表格存储、时序时空数据库和云数据库RDS版。
说明:二进制数据可使用 to_base64(*)将原始数据转换成base64String,同时支持内置函数和条件筛选。
具体使用细节参考: 非常详细,在页面一顿配置即可,在此不再长篇大论。
deviceName()
获取当前设备名称,具体请参考函数列表。
单账号最多可以设置1000条规则。
一条规则中转发数据的操作不能超过10个。
数据转发性能依赖所转发的云产品实例,在云产品实例性能足够的情况下,规则引擎为单个账号提供1000QPS的数据转发能力。即,子账号共享主账号配额;消息并发处理,每秒最多允许1000条消息经过规则引擎流转到其他云产品。 如果请求量超出该限制或云产品写入耗时超过1s,数据转发会被限流。
数据转发依赖其他云产品,使用时需确保目标云产品实例正常。目标云产品的实例宕机、欠费、参数错误(如授权变更、值非法)、配置错误等异常状况将会导致消息流转失败。
规则引擎不保证消息只到达一次,在分布式环境下,某些rebalance短暂不一致可能导致一条消息发送多次情况,应用方收到消息后需要去重。
高级版的收费项目包括消息传输费用和设备管理费用。
有一个设备每秒向物联网平台发送0.4 KB大小的消息,然后物联网平台将该消息传输到5个设备,1个应用程序,即5个设备和1个应用程序接收该消息。当月有30天。
每条消息大小0.4 KB,小于每条消息的大小限制(0.5 KB),每条消息计为1条消息。
前100万条消息免费,所以,当月需付费的消息数:1814.4万–100万=1714.4万。
日活设备数量为6个(1个消息发送设备和5个消息接收设备),小于每天每个账号10个免费日活设备赠额,所以设备管理费用为0元。
您可以免费使用规则引擎转发消息,但是将数据转发至其他云产品中时,其他云产品正常计费。