物联网边缘计算提供驱动内置能力,支持将驱动内置到网关。驱动内置功能,支持您在本地管理驱动文件,再结合云端配置驱动和驱动信息,将驱动部署到边缘端使用。

前提条件

内置的驱动需要符合Link IoT Edge的驱动规范,因此,请参考驱动开发内容,开发您的驱动程序。

背景信息

物联网边缘计算提供驱动内置能力,支持将驱动程序内置到网关,然后在云端配置部署驱动描述信息(驱动名称、驱动编码语言、驱动运行环境、硬件架构等)和驱动通道配置、设备配置等。驱动内置发布示意图
驱动内置发布流程图如下所示。驱动内置发布流程图

一、云端操作

  1. 物联网平台控制台左侧导航栏中,单击边缘计算 > 驱动管理
  2. 驱动管理页面,选择自研驱动,单击右侧的新建驱动
  3. 新建驱动对话框,根据提示设置驱动参数。
    • 驱动信息驱动内置发布
      表 1. 驱动信息参数说明
      参数 描述
      驱动名称 自定义驱动的名称。支持大小写英文字母、数字和英文下划线(_),必须以英文字母开头,不超过20个字符。
      通信协议类型 驱动开发所依赖的行业标准通信协议。当前支持的协议类型有ModbusOPCUA自定义
      语言类型 驱动的语言类型,支持Node.js 8Python3.5CJava 8类型。

      其中,若选择C类型,则还需要选择驱动的CPU架构

      驱动是否内置 选择是否内置驱动文件。
      • :无需上传驱动文件,使用本地内置驱动。
      • :需要上传驱动文件,通过云端部署通道直接部署驱动。详情请见云端发布

      内置发布必须选择

      驱动版本 设置驱动的版本,必须是该驱动唯一的版本号,即一个驱动不可以设置两个相同的版本号。
      驱动适配的边缘版本 选择驱动适配的边缘版本,即该驱动只能在该边缘版本及以上版本的网关中运行。
      驱动版本描述 描述您创建的驱动,可以为空。
    • 驱动配置云端发布-驱动配置
      表 2. 驱动配置参数说明
      参数 描述
      配置格式 配置格式有如下三种:
      • 键值对配置
      • JSON格式
      • 配置文件
      配置格式为键值对配置时 单击新增配置,通过设置配置名称注释来配置驱动。

      最多添加100个键值对。

      配置格式为JSON格式时 编写JSON格式配置内容,内容不超过1 KB。编写内容时,系统自动校验格式。若格式错误,可根据系统提示编写正确格式的内容。
      配置格式为配置文件时 需要在本地编写配置文件,并上传。
    • 容器配置云端发布驱动-容器配置
      表 3. 容器配置参数说明
      参数 描述
      是否使用宿主机host模式 选择是否隔离容器的网络。直接使用宿主机网络环境。
      • 是:表示不隔离容器的网络,直接使用宿主机网络环境。
      • 否:表示隔离容器的网络,需要设置网络端口映射
      网络端口映射 是否使用宿主机host模式时出现的参数。函数的网络环境和宿主机的环境是完全隔离的。通过网络端口映射,将容器内函数的监听端口映射到宿主机的某一个端口上,实现不同主机上的客户端程序,能够访问该函数提供的服务。最多支持映射10条网络端口。

      例如,运行在宿主机容器内的 fc-http-server函数,通过监听Socket的80端口对外界提供服务。此时,其它主机上的客户端程序访问宿主机的80端口,是无法直接访问 fc-http-server函数。因此需要将 fc-http-server函数所在的容器端口映射到宿主机的某一个端口上(例如将容器内的80端口映射到宿主机8080端口),允许其它主机上的客户端程序通过访问 宿主机的IP地址:8080,访问到容器内部的 fc-http-server函数。

      是否启动特权模式

      容器内的root用户实际上只是宿主机的一个普通用户。若在容器内部做修改系统时间、使用mount命令等需要root权限的操作,则需要赋予容器privileged特权。

      说明 特权模式下,容器内部拥有宿主机的root权限,而且宿主机的所有设备会默认映射到容器内部,即无需配置设备映射
      设备映射 是否启动特权模式时出现的参数。设备管理系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的设备(例如串口)时,需要将设备映射到运行函数的容器内部。最多可添加10个设备映射。
      卷映射 文件系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的文件时,需要将文件映射到运行函数的容器内部。最多可添加10个卷映射。
    • 配置校验配置校验
      表 4. 配置校验参数说明
      参数 描述
      驱动配置 勾选表示将该驱动配置到边缘实例并关联子设备后,必须设置驱动配置,才可以将驱动部署到边缘实例。
      设备配置 勾选表示将该驱动配置到边缘实例并关联子设备后,必须设置设备配置,才可以将驱动部署到边缘实例。
  4. 设置参数完成后,单击确认。您可以在自研驱动列表中看到刚刚创建的驱动。
    驱动ID

    鼠标放到驱动名称上,可以查看该驱动的ID,请单击复制并保存驱动ID的文本内容,后续步骤中将使用该驱动ID。

二、边缘端操作

Link IoT Edge提供led_driver示例驱动程序,详情请参见led_driver源码。您可以使用示例驱动程序,体验驱动内置功能。

  1. 根据环境搭建内容完成边缘实例的创建,并上线网关。
  2. 登录网关执行如下命令,创建内置驱动总目录。
    sudo -E mkdir -p /linkedge/pre-installed/
  3. 执行如下命令,创建内置驱动文件夹,并将“前提条件”中准备的驱动程序及依赖库放置到该目录下。
    sudo -E mkdir -p /linkedge/pre-installed/{your_driver_name}/

    其中,{your_driver_name}为您驱动程序的名称。例如驱动程序名称为led_driver,则实际执行的命令如下所示。

    sudo -E mkdir -p /linkedge/pre-installed/led_driver/
  4. 检查网关是否已安装如下内置驱动的依赖工具。
    工具名称 用途
    sed 查找和替换文本文件内容的工具。
    jq JSON文件解析工具。
    base64 Base64加密工具。
  5. (可选)若网关上没有sedjqbase64工具,您需要执行如下步骤,确保内置驱动Shell脚本工具正常运行。
    1. 进入Link IoT Edge默认配置目录。
      cd /linkedge/gateway/build/config/config-manager
    2. 打开config_default.json文件,找到config条目。
    3. config条目下,新增如下key:value键值对。
      {
          "config": {
              "gw_drivercode_{your_driver_id}": "{your_driver_path}",
          }
      }

      其中,{your_driver_id}一、云端操作中保存的驱动ID;{your_driver_path}为Base64加密后的内置驱动文件夹路径。

      例如,驱动ID为f16f13322**********3959cf3,内置驱动文件夹路径/linkedge/pre-installed/led_driver/,该路径Base64加密后为L2xpbmtlZGdlL3ByZS1pbnN0YWxsZWQvbGVkX2RyaXZlcg==,则实际增加的key:value键值对如下。

      {
          "config": {
              "gw_drivercode_f16f133222ad4ca0a097d86563959cf3": "L2xpbmtlZGdlL3ByZS1pbnN0YWxsZWQvbGVkX2RyaXZlcg==",
          }
      }
  6. 在内置驱动文件夹下,下载内置驱动Shell脚本工具并解压。
    脚本工具解压后的目录结构如下所示。
    .
    └── led_driver
        |—— pre-installed.sh
        |—— lib
        └── main
  7. 进入内置驱动所在目录,执行内置驱动Shell脚本工具。
    cd /linkedge/pre-installed/{your_driver_name}/
    sudo -E ./pre-installed.sh {your_driver_id} --default

    其中,{your_driver_name}为驱动程序名称,{your_driver_id}一、云端操作中保存的驱动ID。

    例如,驱动程序名称为led_driver,驱动ID为f16f13322**********3959cf3,则实际执行的命令如下。

    cd /linkedge/pre-installed/led_driver/
    sudo -E ./pre-installed.sh f16f13322**********3959cf3
  8. 参考驱动调试内容,将内置驱动分配到边缘实例,并部署边缘实例,完成边缘端驱动内置流程。

常见问题

问:内置驱动Shell脚本执行完成后,没有看到设备上线?

答:必须在云端完成驱动的配置,并部署到网关后,才能上线与之关联的子设备。

后续步骤

  1. 物联网平台控制台左侧导航栏中,单击边缘计算 > 驱动管理
  2. 驱动管理页面自研驱动页签,单击驱动操作栏中的版本管理驱动版本管理
  3. 版本管理对话框,单击相关操作按钮,管理该驱动的版本信息。
    操作 描述
    新增版本 单击新增版本,可为该驱动增加新版本,详细操作及参数说明请参见本文上方一、云端操作
    发布 单击发布,在弹出的确认发布驱动版本对话框,确认发布驱动信息后,单击发布
    说明 驱动发布成功后,不可以删除该版本驱动,只能查看下载该版本驱动。
    编辑 驱动版本的状态为未发布时才有的操作按钮。单击编辑,可修改该版本驱动的信息,参数说明请参见本文上方一、云端操作
    下载 单击下载,可下载该版本驱动文件。
    删除 驱动版本的状态为未发布时才有的操作按钮。单击删除,可删除该版本驱动。
    查看 驱动版本的状态为已发布时才有的操作按钮。单击查看,可查看该版本驱动信息,也可以修改该版本驱动信息,参数说明请参见本文上方一、云端操作
  4. (可选)单击驱动操作栏中的上架,可将自研驱动作为商品,上架到物联网市场。上架驱动操作请参见驱动市场
  5. 在云端发布驱动后,即可将驱动分配到边缘实例,关联子设备,通过边缘实例的部署,将驱动和子设备部署到边缘端。详情请参见驱动调试