全部产品

驱动调试

设备接入驱动编码完成后,需进行驱动的调试。调试阶段包括:编译打包、上传驱动、搭建环境、创建物模型、创建设备、部署驱动、查看调试信息、调试数据交互和本地替换更新驱动。

驱动依赖注意事项

设备接入驱动根据协议和业务场景的不同,可能会涉及第三方库依赖。物联网边缘计算针对开发驱动所用不同开发语言,分别制定了第三方库依赖规则。

  • C版本SDK:

    C语言属于编译型语言,如果编译目标环境和运行环境不一致,则很可能导致不可运行。所以对于使用设备接入C版本SDK开发驱动,需要保证开发编译目标环境和运行环境相同。

    驱动包中包含驱动程序和依赖动态库。如果该驱动依赖于第三方库,则需要将动态库和驱动程序一起打包生成最终驱动程序包。

  • Node.js版本SDK:

    使用设备接入SDK Node.js版本开发驱动时,若依赖第三方库,需要到Link IoT Edge运行环境上开发驱动,并在驱动目录中使用如下命令安装依赖。

    npm install 第三方库名
  • Python版本SDK:

    使用设备接入SDK Python版本开发驱动时,若依赖第三方库,需要到Link IoT Edge运行环境上开发驱动,并在驱动目录中使用如下命令安装依赖。

    pip3 install -t . 第三方库名

驱动打包注意事项

基于物联网边缘计算提供的SDK开发驱动并完成调试后,需将产物打包为ZIP包,并确保驱动Binary或index源文件在ZIP包第一级目录。

每个版本SDK开发的驱动在打包时,有不同的打包规则。

  • 基于C SDK开发的驱动

    对于C语言开发的驱动,驱动包中包含驱动程序和驱动依赖的动态库。如果驱动程序包含依赖库,则需要将依赖库放置指定的位置,即在驱动程序当前路径下的lib文件夹下。具体操作步骤如下:

    1. 规定驱动程序需命名为main

    2. main当前路径下创建lib文件夹。

    3. main依赖的动态库全部拷贝到lib文件夹下。

    4. 使用zip命令对当前路径下的mainlib进行压缩处理生成ZIP包。

      zip -r your_driver_name.zip main lib

  • 基于Python SDK开发的驱动

    驱动包文件中须包含index.py,并且在该文件中定义handler函数。驱动是一个在函数计算应用引擎中持续运行的函数,所以在驱动包中须包含index.py文件,并且在该文件中定义handler函数。

    驱动运行时,会加载index.py文件。而该文件中,函数计算应用定义的handler函数是不会被调用,因此驱动代码须放在handler函数外,保证加载index.py文件时能直接执行。更多信息,请参见Python版本SDK

  • 基于Node.js SDK开发的驱动

    驱动包文件中须包含index.js,并且在该文件中定义handler函数。

    驱动运行时,会加载index.js文件。而该文件中,函数计算应用定义的handler函数是不会被调用,因此驱动代码须放在handler函数外,保证加载index.js文件时能直接执行。更多信息,请参见Nodejs版本SDK

步骤1:编译打包

  1. 下载示例代码。

    git clone https://github.com/aliyun/linkedge-thing-access-sdk-c.git
  2. 进入linkedge-thing-access-sdk-c目录,完成示例编译。

    cd linkedge-thing-access-sdk-c
    make prepare && make && make install
  3. 查看示例编译产物。

    cd build/bin/demo/demo_led/ && ls -l

    系统显示类似如下图表示已完成编译并打包。

    代码执行片段

步骤2:上传并发布驱动

更多操作详情及参数说明,请参见驱动发布

  1. AIoT开放平台左侧导航栏单击资源管理 > 边缘计算 > 驱动管理

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

    本示例中,驱动是否内置需要选择,然后单击上传文件,上传已完成编译并打包的led_driver.zip驱动文件。其余参数,请参见云端发布内容设置。

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

步骤3:分配驱动和设备到主机

部署驱动依赖主机的部署,主机是您边缘一体机的抽象资源能力。

  1. 登录边缘计算控制台

  2. 在左侧导航栏单击节点管理 > 终端设备管理

  3. 终端设备管理页面,选择您的主机名称,单击通用设备 > +驱动

  4. 分配驱动面板中,选择自研驱动并在已创建的自定义驱动对应操作栏中单击分配。然后单击确定

    新版-分配自研驱动到边缘实例
  5. 选择已分配的自定义驱动demo_driver,单击添加设备,在demo_driver驱动下为主机分配设备。

    1. 在弹出的添加设备对话框中,单击所属产品下的打开产品管理页终端设备管理-添加设备

    2. 系统跳转到物联网平台控制台,创建如下图所示led_demo产品。操作详情,请参见创建产品

      新版-创建led_demo产品
    3. led_demo产品添加自定义属性和事件,然后发布上线自定义功能。操作详情,请参见单个添加物模型

      • 属性

        添加自定义功能
      • 事件

        设置事件参数

        输出参数设置如下图所示。编辑事件参数

    4. 创建产品完成后,切换回边缘计算控制台终端设备管理页面。在添加设备对话框中,为刚刚创建的产品添加如下图设备,然后单击确定

      新版-添加灯设备
  6. 分配设备到边缘主机后,单击设备名称对应操作栏中的设备配置,配置设备信息。

    设备配置

    编写JSON格式配置内容(内容不可超过1 KB),并校验格式通过后,单击

步骤4:部署边缘主机

  1. 节点管理 > 主机管理页面,找到您的主机,单击操作栏中的主机部署

  2. 主机部署成功后,可以查看设备连接状态和运行状态。

步骤5:调试数据交互

如果设备上线成功,则可以使用阿里云物联网平台在线调试功能调试驱动和设备,该功能页面还可以实时查看设备上报的数据信息,也可以触发对设备服务的调用请求。

  1. 登录物联网平台控制台

  2. 左侧导航栏单击监控运维 > 在线调试,在在线调试页面,选择调试产品和调试设备。

  3. 选择调试设备待调功能和服务,进行调试,并查看设备实时运行日志。

    在线调试上报属性

步骤6:(可选)本地替换驱动

如果在驱动调试过程中发现问题,需要修改驱动代码重新生成新的驱动进行调试,这时只需要在本地替换修改编译后的驱动即可。

  1. 找到驱动的位置。可以通过fctl命令进行查找,具体字段解释查看调试信息。

    cd /linkedge/gateway/build/bin/
    ./fctl show
  2. 根据CodePath找到驱动所在位置路径,完成替换。

  3. 根据Process PID得到驱动进程ID,使用kill -9 Pid命令重新启动驱动。

    kill -9 Pid #Pid为驱动进程ID,即通过fctl命令查看得到的Process PID
  4. 替换驱动并完成驱动调试后,可参见本文上方步骤2:上传并发布驱动,将驱动发布到AIoT开放平台

至此,您已完成驱动的调试与发布过程。