物联网数据分析提供的数据分析透视中SQL分析功能,不仅支持分析设备上报云端的数据,还可以通过SQL将分析后的决策结果下发至设备进行远程控制。
前提条件
- 仅支持使用真实设备或使用SDK模拟设备实现下发决策至设备的功能。
- 下发数据的设备属性,必须是读写类型。
背景信息
本文以使用Java SDK模拟空调设备为例,利用物联网数据分析提供的数据开发功能编写SQL,从某一个提供数据的产品获取设备数据,并将该数据下发到空调设备。
操作步骤
- 登录物联网平台控制台。
- 创建一个空调设备。
- 参考创建产品,创建如下图所示的空调产品。
产品创建成功后,到产品详情页面获取ProductSecret,以备后续使用。
- 参考单个创建设备,添加空调设备。
设备创建成功后,保存设备证书(ProductKey、DeviceName、DeviceSecret),以备后续使用。
- 使用Link Kit SDK提供的Java SDK Demo模拟空调设备,使其上线。
- 下载Java SDK Demo并解压到本地。
- 解压后在device_id.json文件中,填写已保存的设备信息(ProductKey、DeviceName、DeviceSecret)和产品ProductSecret。
- 启动HelloWorld.java文件中的main方法。
返回
物联网平台控制台,在
设备管理页面选择
空调产品后,可看到产品下的设备状态为
在线。
- 创建商场温度传感器设备,并上报数据到云端。
- 参考创建产品,创建一个商场温度传感器产品。
- 参考批量创建设备,批量添加5个商场温度传感器设备。
- 参考单个添加物模型,为商场温度传感器添加自定义功能。
说明 可根据您的需求添加多种属性,但需要下发的属性,其读写类型必须是读写。
- 在物联网平台,选择,在在线调试页面,选择调试产品和设备后上报属性数据。
商场温度传感器产品下的5个设备,分别上报数据,可上报相同的属性值。
- 在页面,查看空调设备和商场温度传感器设备的数据表。
您可直接输入产品名称关键字,模糊搜索到相关数据表。在
商场温度传感器和
空调的
数据概览页面中复制
$product_key的值,并查看设备属性标识符,以备后续SQL语句中使用。
- 创建数据开发任务。
- 参考SQL分析,创建一个下发数据至设备的任务。
- 在任务中编写如下SQL。
-- 以下示例中的函数均可在函数列表中找到
-- 查询商场温度传感器上报温度且上报时间在五分钟内,且高温数量传感器数量大于5
CREATE VIEW HIGH_TEMPERATURE AS
SELECT count(CurrentTemperature) AS high_temp_num, AreaId ,AVG(CurrentTemperature) AS current_temper
FROM ${pk.Your_ProductKey1}
WHERE CurrentTemperature IS NOT NULL AND DATE_DIFF('MINUTE',FROM_UNIXTIME($event_time/1000),NOW()) < 5 AND CurrentTemperature > 26
GROUP BY AreaId HAVING count(CurrentTemperature) > 5;
INSERT INTO ${pk.Your_ProductKey2.Your_DeviceName2}
SELECT
1 AS PowerSwitch,
-- 根据当前温度调整风速等级
CASE current_temper
WHEN 35 THEN 5
WHEN 32 THEN 4
WHEN 30 THEN 3
WHEN 28 THEN 0
ELSE 0 END AS WindSpeed,
-- 根据月份切换风力类型 自动 - 0;制冷 - 1;制热 - 2;通风 - 3;除湿 - 4;
CASE
WHEN MONTH(NOW()) > 6 AND MONTH(NOW()) < 11 THEN 1
WHEN MONTH(NOW()) > 11 AND MONTH(NOW()) < 4 THEN 2
ELSE 0 END AS WorkMode
FROM HIGH_TEMPERATURE WHERE AreaId='一楼';
其中:
FROM
语句中,Your_ProductKey1替换为商场温度传感器的ProductKey。
INSERT INTO
语句中,Your_ProductKey2和Your_DeviceName2替换为空调设备的ProductKey和DeviceName。
说明 语法解释如下:
INSERT INTO {目标表} SELECT {属性标识符} FROM {数据表/视图} WHERE {过滤条件} [LIMIT (数据条数限制)]
编写完成后需进行语法校验。
- 保存并运行SQL任务。
- 查看HelloWorld.java文件中设备接收到的下发属性。
至此,您已完成利用数据开发SQL将数据下发至设备的操作。