服务开发+虚拟设备完成设备属性变更模拟

简介: 为了测试物联网平台数据分析的GIS组件,我们准备模拟一个设备随机在一定范围内(比如在(120±0.05,30±0.01)附近,避免一下子跑到非洲,一下子跑到南极)上报地理信息。由于物联网平台的虚拟设备推送只能定时推送+全取值范围随机数值,不能满足有一定数学表达式的推送策略。如果手上没有设备(尤其是正常设备无法通过热点WIFI接入测试环境),又想在云端持续的模拟设备行为,怎么办呢?通过服务开发+虚拟

为了测试物联网平台数据分析的GIS组件,我们准备模拟一个设备随机在一定范围内(比如在(120±0.05,30±0.01)附近,避免一下子跑到非洲,一下子跑到南极)上报地理信息。由于物联网平台的虚拟设备推送只能定时推送+全取值范围随机数值,不能满足有一定数学表达式的推送策略。如果手上没有设备(尤其是正常设备无法通过热点WIFI接入测试环境),又想在云端持续的模拟设备行为,怎么办呢?通过服务开发+虚拟设备,可以在云端实现比较灵活的设备模拟行为,同时还能把这部分模拟数据传到RDS数据库。

image.png
(有数学表达式就会报错)

场景:一个为老年痴呆症的病人准备的手环,可以每分钟上报一次心跳数据以及当前的地理位置。

第一步:创建产品

进入阿里云物联网平台,在产品页面新建一个产品,选择自定义品类即可,命名为“阿尔茨海默氏症老人监控手环”。
image.png

第二步:定义功能

进入产品的功能定义页,定义两个自定义功能——地理位置和心跳。
image.png

地理位置只需要在“添加功能”里用标准的功能即可,如图,其他全部配置项默认即可。
image.png
心跳为一个整型数据,如图。
image.png

第三步:创建设备实例

在设备面板点击“添加设备”,选择刚才创建的手环产品,然后输入随意的设备名称即可。
image.png
image.png

第四步:将设备导入IoT Studio项目中

IoT Studio为交付型业务做了项目维度的隔离,因此需要将用到的设备导入到对应的项目中。
首先打开物联网平台的“开发服务”选项进入IoT Studio。点击某个项目名称的“查看”进入项目详情页。然后点击右上角的“导入产品”。选择刚才的手环产品,然后导入,可以在设备管理页看到产品以及下属的设备已经导入项目里。
image.png
image.png
image.png
image.png

第五步:创建一个服务

由于我们是想模拟设备定时上报随机数的行为,因此需要创建一个定时服务。
首先进入服务开发工作台,新建一个“手环模拟”服务。
image.png
image.png

选择一个定时触发节点,配置为每分钟运行一次。
image.png

接下来选择一个Node.js脚本节点,输入代码表达式,以及一定的数据格式整理,注意对地理信息的对象结构,属性的顺序不能错,否则待会会下发失败。
image.png

module.exports = async function(payload, node, query, context) {
  var num = 40+20*Math.random();
  var long = 120+0.05*Math.random();
  var lati = 30+0.1*Math.random();
  var geo = {long,lati};
  bpm = parseInt(num);
  long = long.toFixed(5);//避免小数点太长
  long = Number(long);
  lati = lati.toFixed(5);//避免小数点太长
  lati = Number(lati);
  var Geo = {"CoordinateSystem":1,"Latitude":lati,"Longitude":long,"Altitude":0};//数据不用双引号,保持数值格式传给后续物的管理服务API
  payload = {bpm, Geo};
  console.log("payload: ", payload);
  return payload;
}

接下来选择手环的设备节点,选择要模拟的设备名“Wrist001”,然后地理位置选择来自节点“Node.js脚本”的,下方选取对象输入"Geo",心跳选择来自“上一节点(payload)”的“bpm”字段。如图。做完后记得cmd(ctrl)+ S保存一下。
image.png
image.png
在服务开发中,数据是以payload的形式传递的,如在js脚本节点里,我们定义了payload为{bpm,Geo},实际运行时,payload的数据如下:

{
    "bpm":42,
  "Geo":
  {    
    "CoordinateSystem":1,
    "Latitude":120.00231,
    "Longitude":30.05273,
    "Altitude":0
  }
}

因此,在执行下一个节点“阿尔兹海默症监控手环”的产品控制功能,当我们在下发数据时(实际调用了物的管理服务中的setThingProperty的API),我们选择下发的地理位置数据来自于“上一个节点(payload)”或者“Node.js脚本”节点都是等价的。

第六步:部署调试

点击下方的部署按钮,然后成功后点击启动。
image.png
image.png
是否我们真的要等待一分钟才能生效呢?不,我们可以点击调试,选择一个时间进行模拟,这样服务就会根据模拟时间是否满足触发条件而决定是否执行。
image.png
image.png
image.png
发现虽然显示调试成功(服务被触发),但是日志里显示device not actived,这是怎么回事呢?原来物的管理服务需要设备处于在线状态才行,因此需要打开虚拟设备让其保持在线。如图,选择wrist001设备,点击启动虚拟设备即可。
image.png,
image.png
image.png

回到服务开发工作台继续点击调试,选择时间。可以看到调试成功了,我们看看日志属性是否成功下发。
image.png
image.png
同时可以回去设备管理页面,查看wrist001的设备运行状态,看看是否成功获取数据。
image.png
image.png
成功。

第七步:用途

后面可以加上RDS存储,进行心跳今日平均数计算等扩展服务。
image.png
image.png
模拟设备轨迹图的意义在于在硬件开发未ready的情况下调试应用开发,这样能加快开发进度。
image.png

下一篇文章我们将教大家如何以IoT Studio为主,围绕物联网平台的各项能力完成一个软硬结合可交付的SaaS应用,敬请期待!

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
5月前
计算机维修的工具与设备
计算机维修的工具与设备。
19 1
|
7月前
|
JSON 物联网 开发工具
设备接入组件功能介绍
设备接入组件功能介绍
321 0
|
9月前
|
数据采集 人工智能 算法
基于设备数据的设备关系绑定
本文讨论了实体分割和物品追踪在物流行业的应用。物品追踪系统可实现物品在转场过程中的实时追踪,从而提高物流效率,减少误差和损失。实体分割技术可以将快递包裹中的不同物品进行分割和识别,从而使其更易于管理和追踪。文章还探讨了实体分割和物品追踪技术在不同物流场景中的应用,并讨论了相关技术的优缺点以及未来的发展方向。
88 0
中央空调系统运行原理以及相关设备介绍
中央空调系统运行原理以及相关设备介绍
|
Android开发
RK3399平台开发系列讲解(系统修改记录篇)1.13、安卓系统hal层修改最大支持摄像头数量
RK3399平台开发系列讲解(系统修改记录篇)1.13、安卓系统hal层修改最大支持摄像头数量
131 0
|
物联网 测试技术 数据安全/隐私保护
蓝牙核心规范V5.3版本有这些变动,你需要知道的都在这里
蓝牙核心规范V5.3版本有这些变动,你需要知道的都在这里
447 0
蓝牙核心规范V5.3版本有这些变动,你需要知道的都在这里
|
Java Linux 数据安全/隐私保护
将ABAP On-Premises系统连接到中央检查系统以进行自定义代码迁移
将ABAP On-Premises系统连接到中央检查系统以进行自定义代码迁移
122 0
将ABAP On-Premises系统连接到中央检查系统以进行自定义代码迁移
|
Android开发
网关设备是一台安卓来管理子设备
网关设备(安卓)跟子设备通信是通过Modbus RTU通信的,现在有个问题就是点位配置,与每个子设备通信的命令和获取每个属性的命令都是不一样的,现在需要做成跟设备绑定配置在一块的,这个有没有好一点的方案
|
存储 运维 调度
如何进行预防性设备维护
定期查明潜在的设备故障并主动进行修复,预防性维护不再是只有大公司才能负担的奢侈品。现在,它是一种可扩展的框架和解决方案,可以扩大整个业务范围的ROI和寿命。
450 0
如何进行预防性设备维护
|
小程序
蜻蜓设备绑定报错“没有权限”-排查方案
蜻蜓设备绑定报错“没有权限”
蜻蜓设备绑定报错“没有权限”-排查方案