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

简介: 为了测试物联网平台数据分析的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
目录
相关文章
|
1月前
|
编解码 API Android开发
深入了解设备交互 API 如何改变我们的生活
深入了解设备交互 API 如何改变我们的生活
29 3
|
5月前
计算机维修的工具与设备
计算机维修的工具与设备。
19 1
|
7月前
|
JSON 物联网 开发工具
设备接入组件功能介绍
设备接入组件功能介绍
324 0
|
7月前
|
编解码 Android开发
Android平台GB28181设备接入模块分辨率发生变化怎么办?
我们在做Android平台gb28181设备接入模块的时候,遇到这样的情况,比如横竖屏分辨率不锁定,采集摄像头的时候,可以实现,横屏状态采集横屏,竖屏状态采集竖屏,简单来说,横屏状态比如采集的1280*720的,竖屏状态,采集的数据源成了720*1280。
|
9月前
|
数据采集 人工智能 算法
基于设备数据的设备关系绑定
本文讨论了实体分割和物品追踪在物流行业的应用。物品追踪系统可实现物品在转场过程中的实时追踪,从而提高物流效率,减少误差和损失。实体分割技术可以将快递包裹中的不同物品进行分割和识别,从而使其更易于管理和追踪。文章还探讨了实体分割和物品追踪技术在不同物流场景中的应用,并讨论了相关技术的优缺点以及未来的发展方向。
89 0
|
9月前
|
人机交互
操作系统进行设备控制的常见方式
基于上一篇博客,对操作系统进行常见设备控制的方式介绍,并知识拓展。
176 2
操作系统进行设备控制的常见方式
中央空调系统运行原理以及相关设备介绍
中央空调系统运行原理以及相关设备介绍
硬件开发笔记(九): 硬件开发基本流程,制作一个USB转RS232的模块(八):创建asm1117-3.3V封装库并关联原理图元器件
有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的。为了更好的表述封装设计过程,本文描述了一个创建asm1117-3.3V封装,将原理图的元器件关联引脚封装。
硬件开发笔记(九): 硬件开发基本流程,制作一个USB转RS232的模块(八):创建asm1117-3.3V封装库并关联原理图元器件
|
传感器 芯片
硬件开发笔记(七): 硬件开发基本流程,制作一个USB转RS232的模块(六):创建0603封装并关联原理图元器件
有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的。为了更好的表述封装设计过程,本文描述了贴片电阻电容0603芯片封装,创建贴片焊盘,关将原理图的元器件关联引脚封装。
硬件开发笔记(七): 硬件开发基本流程,制作一个USB转RS232的模块(六):创建0603封装并关联原理图元器件
硬件开发笔记(六): 硬件开发基本流程,制作一个USB转RS232的模块(五):创建USB封装库并关联原理图元器件
有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的。为了更好的表述封装设计过程,本文描述了一个创建USB封装,创建DIP焊盘,关将原理图的元器件关联引脚封装。   该USB是完全定义建立的封装,DIP带固定柱
硬件开发笔记(六): 硬件开发基本流程,制作一个USB转RS232的模块(五):创建USB封装库并关联原理图元器件

热门文章

最新文章