物联网边缘计算提供驱动内置能力,支持将驱动内置到网关。驱动内置功能,支持您在本地管理驱动文件,再结合云端配置驱动和驱动信息,将驱动部署到边缘端使用。
前提条件
内置的驱动需要符合物联网边缘计算的驱动规范,因此请确保已根据驱动规范,开发完成了您的驱动程序。驱动开发详情,请参见驱动开发。
背景信息
物联网边缘计算提供驱动内置能力,支持将驱动程序内置到网关,然后在云端配置部署驱动描述信息(驱动名称、驱动编码语言、驱动运行环境、硬件架构等)和驱动通道配置、设备配置等。

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

云端操作
登录AIoT开放平台。
在左侧导航栏单击资源管理 > 边缘计算 > 驱动管理。
在驱动管理页面,单击的新建驱动。
在新建驱动页面,根据提示设置驱动参数。
驱动信息
参数
描述
驱动名称
自定义驱动的名称。支持大小写英文字母、数字和英文下划线(_),必须以英文字母开头,不超过20个字符。
通信协议类型
驱动开发所依赖的行业标准通信协议。当前支持的协议类型有Modbus、OPCUA、LoRa WAN和自定义。
语言类型
驱动的语言类型,支持Node.js 8、Python 3.5、C和Java 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端口),允许其它主机上的客户端程序通过访问宿主机的IP地址:8080
,访问到容器内部的fc-http-server
函数。是否启动特权模式
容器内的root用户实际上只是宿主机的一个普通用户。若在容器内部做修改系统时间、使用mount命令等需要root权限的操作,则需要赋予容器privileged特权。
说明特权模式下,容器内部拥有宿主机的root权限,而且宿主机的所有设备会默认映射到容器内部,即无需配置设备映射。
设备映射
当是否启动特权模式为否时出现的参数。设备管理系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的设备(例如串口)时,需要将设备映射到运行函数的容器内部。最多可添加10个设备映射。
卷映射
文件系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的文件时,需要将文件映射到运行函数的容器内部。最多可添加10个卷映射。
内存限制
设置容器的内存上限。 当容器内存使用超过限制时,容器会被重启。如果内存限制值过小,可能会导致容器内的应用运行失败。默认内存为1024 MB,请根据容器内应用大小,上调内存限制。
校验配置
参数
描述
驱动配置
勾选表示将该驱动分配到边缘主机并关联终端设备后,必须设置驱动配置,才可以将驱动部署到边缘主机。
设备配置
勾选表示将该驱动分配到边缘主机并关联终端设备后,必须设置设备配置,才可以将驱动部署到边缘主机。
完成参数的设置并上传成功驱动文件后,单击确认。您可以在驱动管理页面中看到刚刚创建的驱动。
说明鼠标悬浮到驱动名称上,可以查看该驱动的ID,请单击复制并保存驱动ID的文本内容,后续步骤中将使用该驱动ID。
边缘端操作
物联网边缘计算提供led_driver示例驱动程序,请参见led_driver源码。您可以使用示例驱动程序,体验驱动内置功能。
登录边缘一体机执行如下命令,创建内置驱动总目录。
sudo -E mkdir -p /linkedge/pre-installed/
执行如下命令,创建内置驱动文件夹,并将本文“前提条件”中准备的驱动程序及依赖库放置到该目录下。
sudo -E mkdir -p /linkedge/pre-installed/{your_driver_name}/
其中,{your_driver_name}为您驱动程序的名称。例如驱动程序名称为led_driver,则实际执行的命令如下所示。
sudo -E mkdir -p /linkedge/pre-installed/led_driver/
检查网关是否已安装如下内置驱动的依赖工具。
工具名称
用途
sed
查找和替换文本文件内容的工具。
jq
JSON文件解析工具。
base64
Base64加密工具。
(可选)若网关上没有sed、jq、base64工具,您需要执行如下步骤,确保内置驱动Shell脚本工具正常运行。
进入物联网边缘计算默认配置目录。
cd /linkedge/gateway/build/config/config-manager
打开config_default.json文件,找到
config
条目。在
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==", } }
在内置驱动文件夹下,下载内置驱动Shell脚本工具并解压。
脚本工具解压后的目录结构如下所示。
. └── led_driver |—— pre-installed.sh |—— lib └── main
进入内置驱动所在目录,执行内置驱动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
将内置驱动分配到边缘主机,并部署边缘主机,完成边缘端驱动内置流程。详细操作,请参见驱动调试。
常见问题
问:内置驱动Shell脚本执行完成后,没有看到设备上线?
答:必须在云端完成驱动的配置,并部署到网关后,才能上线与之关联的终端设备。
相关操作
在驱动管理页面,单击驱动操作栏中的版本管理。
在版本管理面板,单击相关操作按钮,管理该驱动的版本信息。
操作
描述
新增版本
单击新增版本,可为该驱动增加新版本,详细操作及参数说明,请参本文上方云端操作。
发布
单击发布,在弹出的确认发布驱动版本对话框,确认发布驱动信息后,单击发布。
说明驱动发布成功后,不可以删除该版本驱动,只能查看或下载该版本驱动。
编辑
驱动版本的状态为未发布时才有的操作按钮。单击编辑,可修改该版本驱动的信息。参数说明,请参见本文上方云端操作。
下载
单击下载,可下载该版本驱动文件。
删除
驱动版本的状态为未发布时才有的操作按钮。单击删除,可删除该版本驱动。
查看
驱动版本的状态为已发布时才有的操作按钮。单击查看,可查看该版本驱动信息,也可以修改该版本驱动信息。参数说明,请参本文上方云端操作。
在云端发布驱动后,即可将驱动分配到边缘主机,关联终端设备,通过边缘主机的部署,将驱动和终端设备部署到边缘端。具体操作,请参见驱动调试。
在文档使用中是否遇到以下问题
更多建议
匿名提交