设备模拟器

物联网边缘计算(Link IoT Edge)提供了场景联动、函数计算、流数据分析等多种服务,帮助用户构建物联网应用程序。考虑到用户没有大量可连接的实际设备来测试使用应用程序,物联网边缘计算同时提供一套设备模拟器(DeviceSimulator)的解决方案。

设备模拟器包含两部分:

  • 驱动:在边缘端可以模拟所有类型的设备。设备的属性、事件、服务取决于物模型的定义,物模型相关信息,请参见物模型
  • 控制工具:改变设备模拟器的属性值、触发设备模拟器进行事件上报。

您只需要将设备和设备模拟器的驱动绑定,并部署至边缘端,结合控制工具,便可以脱离真实的物理设备进行应用程序的测试。本文将会对设备模拟器的使用进行详细介绍。

前提条件

  • 下载设备模拟器驱动。
    产品规格边缘版本号驱动下载地址
    专业版、标准版v1.8.2 ~ 最新版本DeviceSimulator_v0.2
  • 设备模拟器只适用于Link IoT Edge标准版和专业版v1.8.2及以上版本环境中使用,因此开始操作本文内容前,请确保您已完成边缘实例的创建。具体操作,请参见专业版环境搭建标准版环境搭建

使用设备模拟器驱动

  1. 上传驱动。
    1. 登录边缘计算控制台
    2. 在左侧导航栏单击驱动管理
    3. 驱动管理页面自研驱动页签下,单击新建驱动
    4. 新建驱动对话框设置驱动参数,上传前提条件中下载到本地的设备模拟器驱动文件。具体操作,请参见云端发布
      本示例中的参数设置如下图所示,其余参数,请参见云端发布内容设置,也可以不设置。新建驱动
    5. 完成参数的设置并上传成功驱动文件后,单击确认。您可以在驱动列表中看到刚刚创建的驱动。
  2. 分配驱动到边缘实例。
    1. 左侧导航栏单击边缘实例,在前提条件中创建好的边缘实例右侧单击查看
    2. 实例详情页面设备与驱动页签下,单击全部驱动右侧的+图标,在弹出面板中选择自研驱动,找到步骤1创建的DeviceSimulator驱动,单击对应操作列下的分配,将该驱动分配到边缘实例。
      分配驱动
    3. (可选)若您的边缘实例产品规格为专业版,则需要进行容器配置
      选择已分配的DeviceSimulator驱动,单击设备列表右侧的容器配置,设置如下图参数后,单击保存容器配置

      网络端口映射参数说明如下所示,其他说明,请参见示例驱动

      表 1. 参数说明
      参数描述
      宿主机端口设置一个宿主机当前没有在使用的端口号,将容器内端口映射到此端口上,例如设置为8999端口。
      容器内端口容器内端口固定位为9000。
      协议类型此处选择TCP
  3. 添加子设备到边缘实例。
    1. 全部驱动下,单击DeviceSimulator驱动,然后在设备列表区域单击分配子设备,在DeviceSimulator驱动下,为边缘实例分配子设备。
    2. 分配子设备面板中,单击添加子设备
      新建子设备
    3. 添加设备对话框,单击新建产品,创建产品。
      新建产品
    4. 创建产品对话框中设置参数后,单击完成
      详细的参数说明,请参见创建产品
      表 2. 参数说明
      参数描述
      产品名称设置产品名称。
      所属品类选择标准品类下的边缘计算 > 其它设备
      接入网关协议选择自定义
    5. 添加设备对话框,单击前往配置为产品添加物模型。
      设置物模型
      • 为产品添加temperature属性,详细的参数说明,请参见单个添加物模型中的“添加自定义功能”步骤。属性设置
      • 为产品添加high_temperature事件,详细的参数说明,请参见单个添加物模型中的“添加自定义功能”步骤。事件设置

        为事件增加参数。

        事件参数
    6. 返回添加设备对话框,输入DeviceName的值后单击确定,为产品添加设备。
      添加设备
    7. 分配子设备对话框中,选择温度传感器产品下的temperatureSensor01设备,单击该设备右侧的分配,将该设备分配到实例中。
  4. 部署边缘实例。
    实例详情页面右上角单击部署,部署边缘实例。此时会弹出部署进程的对话框,您可以单击对话框中的查看日志查看具体部署情况。部署成功后边缘实例名称后显示部署成功

使用设备模拟器控制工具

设备模拟器控制工具的功能和真实物理设备的按键类似。完成本文上方使用设备模拟器驱动的操作后,可使用设备模拟器控制工具。

  1. 登录您的远程终端。登录操作详情,请参见远程服务访问
  2. (可选)若您使用Link IoT Edge专业版软件,则需要在远程终端执行docker ps | grep 驱动名,查看是否有驱动容器。
    如果有驱动容器,则需要执行如下命令,修改设备模拟器工具配置。否则无需执行此步骤。
    echo 宿主机IP:宿主机端口 > /linkedge/run/ds_ctrl.conf
    说明 宿主机IP为您边缘网关的宿主机IP;宿主机端口为您在本文上方使用设备模拟器驱动中的步骤2进行容器配置时设置的端口(本示例中为8999)。
  3. 使用设备模拟器控制工具控制设备行为。
    进入/linkedge/gateway/build/bin 目录,执行 ./ds_ctrl命令即可看到工具的使用方式。
    Usage: ds_ctrl <command>
    
    where <command> is one of:
        property, event
    
    ds_ctrl property productKey deviceName params            Change property
    ds_ctrl event productKey deviceName eventCode params     Trigger event
    
    
    For example(productKey = xxx, deviceName = yyy):
        ds_ctrl property xxx yyy '{"temperature":30}'
        ds_ctrl event xxx yyy alarm '{"temperature":90}'
    • 可改变设备属性:
      1. 改变温度。
        使用工具将温度传感器温度改为30。
        ./ds_ctrl property a1WuxHr**** temperatureSensor01 '{"temperature":30}'
        系统返回如下信息,表示温度设置成功。
        Send property success!
      2. 登录物联网平台控制台,在实例概览页面,单击公共实例
      3. 在左侧导航栏选择设备管理 > 设备,在相应设备名称右侧单击查看

        设备详情页面,选择物模型数据 > 运行状态页签,查看设备的运行状态。

        运行状态
      4. (可选)模拟多次温度变化。
        连续执行如下命令5次,每次将温度值+1。
        ./ds_ctrl property a1WuxHr**** temperatureSensor01 '{"temperature":31}'
        可在控制台中,设备的物模型数据 > 运行状态页签,单击查看数据查看数据的变化。运行状态
    • 可触发设备事件:
      1. 上报高温事件。
        ./ds_ctrl event a1WuxHr**** temperatureSensor01 high_temperature '{"temperature":90}'
      2. 登录物联网平台控制台,在实例概览页面,单击公共实例
      3. 在左侧导航栏选择设备管理 > 设备,在相应设备名称右侧单击查看

        设备详情页面,选择物模型数据 > 事件管理页签,查看设备的事件。

        事件管理

在线调试设备

  1. 物联网平台控制台公共实例页面左侧导航栏,选择监控运维 > 在线调试,在在线调试页面,选择调试产品和调试设备。在线调试
  2. 获取设备属性。
    单击属性调试,选择模块,然后单击获取,即可在输入框中看到当前温度值为35调试真实设备
  3. 设置设备属性。
    温度设为40,单击设置后可在设备运行状态查看温度传感器温度值已变更为40。
  4. 其他自定义服务,会将相关信息打印到驱动日志中,并返回如下信息。
    {"code":0,"message":"success"}