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

简介: 为了测试物联网平台数据分析的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
目录
相关文章
|
6月前
|
编解码 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)1
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
337 1
|
15天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
17 1
|
6月前
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
383 2
|
3月前
|
监控 安全 iOS开发
|
3月前
|
编解码 网络协议 前端开发
如何实现Android平台GB28181设备接入模块按需打开摄像头并回传数据
后台采集摄像头,如果想再进一步扩展,可以把android平台gb28181的camera2 demo,都移植过来,实现功能更强大的国标设备侧,这里主要是展示,收到国标平台侧的回传请求后,才打开摄像头,才开始编码打包,最大限度的减少资源的占用
|
6月前
|
存储 安全 网络安全
网工大题题型总结(2)---设备类型及设备故障问题
网工大题题型总结(2)---设备类型及设备故障问题
203 2
|
数据采集 人工智能 算法
基于设备数据的设备关系绑定
本文讨论了实体分割和物品追踪在物流行业的应用。物品追踪系统可实现物品在转场过程中的实时追踪,从而提高物流效率,减少误差和损失。实体分割技术可以将快递包裹中的不同物品进行分割和识别,从而使其更易于管理和追踪。文章还探讨了实体分割和物品追踪技术在不同物流场景中的应用,并讨论了相关技术的优缺点以及未来的发展方向。
145 0
|
物联网 API
设备端和服务端检测设备是否在线的方法
使用物联网时,有时设备端和服务端都需要检测设备是否在线。
1331 0
|
物联网 测试技术 数据安全/隐私保护
蓝牙核心规范V5.3版本有这些变动,你需要知道的都在这里
蓝牙核心规范V5.3版本有这些变动,你需要知道的都在这里
508 0
蓝牙核心规范V5.3版本有这些变动,你需要知道的都在这里