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

前提条件

内置的驱动需要符合Link IoT Edge的驱动规范,因此请确保已根据驱动规范,开发完成了您的驱动程序。驱动开发详情请参见驱动开发

背景信息

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

一、云端操作

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

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

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

      内置发布必须选择

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

      单击新增配置,通过设置配置名称注释来配置驱动。

      最多添加100个键值对。

      配置内容配置格式JSON格式时显示的参数。

      编写JSON格式配置内容,内容不超过1 KB。编写内容时,系统自动校验格式。若格式错误,可根据系统提示编写正确格式的内容。

      上传配置文件配置格式配置文件时显示的参数。

      需要在本地编写配置文件并上传。配置文件的编写,请参见驱动编码

    • 容器配置云端发布驱动-容器配置
      参数描述
      是否使用宿主机host模式选择是否隔离容器的网络。直接使用宿主机网络环境。
      • :表示不隔离容器的网络,直接使用宿主机网络环境。
      • :表示隔离容器的网络,需要设置网络端口映射
      网络端口映射是否使用宿主机host模式时出现的参数。函数的网络环境和宿主机的环境是完全隔离的。通过网络端口映射,将容器内函数的监听端口映射到宿主机的某一个端口上,实现不同主机上的客户端程序,能够访问该函数提供的服务。最多支持映射10条网络端口。

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

      是否启动特权模式

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

      说明 特权模式下,容器内部拥有宿主机的root权限,而且宿主机的所有设备会默认映射到容器内部,即无需配置设备映射
      设备映射是否启动特权模式时出现的参数。设备管理系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的设备(例如串口)时,需要将设备映射到运行函数的容器内部。最多可添加10个设备映射。
      卷映射文件系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的文件时,需要将文件映射到运行函数的容器内部。最多可添加10个卷映射。
      内存限制设置容器的内存上限。
      • 当容器内存使用超过限制时,容器会被重启。
      • 如果内存限制值过小,可能会导致容器内的应用运行失败。

      默认内存为1024 MB,请根据容器内应用大小,上调内存限制。

    • 配置校验配置校验
      表 3. 配置校验参数说明
      参数描述
      驱动配置勾选表示将该驱动配置到边缘实例并关联子设备后,必须设置驱动配置,才可以将驱动部署到边缘实例。
      设备配置勾选表示将该驱动配置到边缘实例并关联子设备后,必须设置设备配置,才可以将驱动部署到边缘实例。
  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查找和替换文本文件内容的工具。
    jqJSON文件解析工具。
    base64Base64加密工具。
  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_f16f13322**********3959cf3": "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. (可选)单击驱动操作栏中的上架,可将自研驱动作为商品,上架到物联网市场。上架驱动操作请参见驱动市场
  6. 在云端发布驱动后,即可将驱动分配到边缘实例,关联子设备,通过边缘实例的部署,将驱动和子设备部署到边缘端。详情请参见驱动调试