内置发布

更新时间: 2021-06-21 14:17:52

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

前提条件

内置的驱动需要符合物联网边缘计算的驱动规范,因此请确保已根据驱动规范,开发完成了您的驱动程序。驱动开发详情,请参见驱动开发

背景信息

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

驱动内置发布示意图

驱动内置发布流程图如下所示。

驱动内置发布流程图

云端操作

  1. 登录AIoT开放平台

  2. 在左侧导航栏选择资源管理 > 边缘计算 > 驱动管理

  3. 驱动管理页面,单击新建驱动

  4. 新建驱动页面,根据提示设置驱动参数。

    • 驱动信息

      参数

      描述

      驱动名称

      自定义驱动的名称。支持大小写英文字母、数字和下划线(_),必须以英文字母开头,不超过20个字符。

      通信协议类型

      驱动开发所依赖的行业标准通信协议。当前支持的协议类型有ModbusOPCUALoRa WAN自定义

      语言类型

      驱动的语言类型,支持Node.js 8Python 3.5CJava 8类型。

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

      驱动是否内置

      选择是否内置驱动文件。

      • :无需上传驱动文件,使用本地内置驱动。

      • :需要上传驱动文件,通过云端部署通道直接部署驱动。

      内置发布必须选择

      驱动版本

      设置驱动的版本,必须是该驱动唯一的版本号,即一个驱动不可以设置两个相同的版本号。

      驱动适配的边缘版本

      选择驱动适配的边缘版本,即该驱动只能在该边缘版本及以上版本的网关中运行。

      驱动版本描述

      描述您创建的驱动,可以为空。

    • 驱动配置

      参数

      描述

      配置格式

      配置格式有如下三种:

      • 键值对配置

      • JSON格式

      • 配置文件

      配置格式为键值对配置时

      单击新增配置,通过设置配置名称注释来配置驱动。最多添加100个键值对。

      配置格式为JSON格式时

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

      配置格式为配置文件时

      需要在本地编写配置文件,并上传。

    • 容器配置

      参数

      描述

      是否使用宿主机host模式

      选择是否隔离容器的网络。

      • 是:表示不隔离容器的网络,直接使用宿主机网络环境。

      • 否:表示隔离容器的网络,需要设置网络端口映射

      网络端口映射

      是否使用宿主机host模式时出现的参数。函数的网络环境和宿主机的环境是完全隔离的。通过网络端口映射,将容器内函数的监听端口映射到宿主机的某一个端口上,实现不同主机上的客户端程序,能够访问该函数提供的服务。

      最多支持映射10条网络端口。

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

      是否启动特权模式

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

      说明

      特权模式下,容器内部拥有宿主机的root权限,而且宿主机的所有设备会默认映射到容器内部,即无需配置设备映射。

      设备映射

      是否启动特权模式时出现的参数。设备管理系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的设备(例如串口)时,需要将设备映射到运行函数的容器内部。最多可添加10个设备映射。

      卷映射

      文件系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的文件时,需要将文件映射到运行函数的容器内部。最多可添加10个卷映射。

      内存限制

      设置容器的内存上限。

      • 当容器内存使用超过限制时,容器会被重启。

      • 如果内存限制值过小,可能会导致容器内的应用运行失败。

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

    • 校验配置

      参数

      描述

      驱动配置

      选中该参数,表示将该驱动分配到边缘主机并关联终端设备后,必须设置驱动配置,才可以将驱动部署到边缘主机。

      设备配置

      选中该参数,表示将该驱动分配到边缘主机并关联终端设备后,必须设置设备配置,才可以将驱动部署到边缘主机。

  5. 完成参数的设置并上传成功驱动文件后,单击确认。您可以在驱动管理页面中看到刚刚创建的驱动。

    说明

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

边缘端操作

物联网边缘计算提供led_driver示例驱动程序,请参见led_driver源码。您可以使用示例驱动程序,体验驱动内置功能。

  1. 登录边缘一体机,执行如下命令,创建内置驱动总目录。

    sudo -E mkdir -p /linkedge/pre-installed/
  2. 执行如下命令,创建内置驱动文件夹,并将本文“前提条件”中准备的驱动程序及依赖库放置到该目录下。

    sudo -E mkdir -p /linkedge/pre-installed/{your_driver_name}/

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

    sudo -E mkdir -p /linkedge/pre-installed/led_driver/
  3. 检查网关是否已安装如下内置驱动的依赖工具。

    工具名称

    用途

    sed

    查找和替换文本文件内容的工具。

    jq

    JSON文件解析工具。

    base64

    Base64编码工具。

  4. (可选)若网关上没有sed、jq、base64工具,您需要执行如下步骤,确保内置驱动Shell脚本工具正常运行。

    1. 进入物联网边缘计算默认配置目录。

      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==",
          }
      }
  5. 在内置驱动文件夹下,单击下载内置驱动Shell脚本工具,然后解压。

    脚本工具解压后的目录结构如下所示。

    .
    └── led_driver
        |—— pre-installed.sh
        |—— lib
        └── main
  6. 进入内置驱动所在目录,执行内置驱动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
  7. 将内置驱动分配到边缘主机,并部署边缘主机,完成边缘端驱动内置流程。详细操作,请参见驱动调试

常见问题

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

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

相关操作

  1. 驱动管理页面,单击驱动操作列中的版本管理

    新版-驱动版本管理
  2. 版本管理面板,单击相关操作按钮,管理该驱动的版本信息。

    操作

    描述

    新增版本

    单击新增版本,可为该驱动增加新版本,详细操作及参数说明,请参本文上方云端操作

    发布

    单击发布,在弹出的确认发布驱动版本对话框,确认发布驱动信息后,单击发布。

    说明

    驱动发布成功后,不可以删除该版本驱动,只能查看或下载该版本驱动。

    编辑

    驱动版本的状态为未发布时才有的操作按钮。单击编辑,可修改该版本驱动的信息。参数说明,请参见本文上方云端操作

    下载

    单击下载,可下载该版本驱动文件。

    删除

    驱动版本的状态为未发布时才有的操作按钮。单击删除,可删除该版本驱动。

    查看

    驱动版本的状态为已发布时才有的操作按钮。单击查看,可查看该版本驱动信息,也可以修改该版本驱动信息。参数说明,请参本文上方云端操作

  3. 在云端发布驱动后,即可将驱动分配到边缘主机,关联终端设备,通过边缘主机的部署,将驱动和终端设备部署到边缘端。具体操作,请参见驱动调试

阿里云首页 物联网边缘计算 相关技术圈