设备接入驱动编码完成后,需进行驱动的调试。调试阶段包括:编译打包、上传驱动、搭建环境、创建物模型、创建设备、部署驱动、查看调试信息、调试数据交互和本地替换更新驱动。
前提条件
在开始操作本章内容前,请您确保已根据基于Ubuntu 16.04搭建标准版环境内容完成边缘实例的创建,为C语言SDK开发的设备驱动准备运行环境。
一、编译打包
驱动打包相关要求,请参见本文下方驱动打包注意事项。
二、上传并发布驱动
更多操作详情及参数说明,请参见驱动发布。
三、分配驱动和设备到边缘实例
部署驱动依赖边缘实例,即您在前提条件中完成的环境搭建操作。
四、部署边缘实例
五、调试数据交互
如果设备上线成功,则可以使用阿里云物联网平台在线调试功能调试驱动和设备,该功能页面还可以实时查看设备上报的数据信息,也可以触发对设备服务的调用请求。
六、(可选)本地替换驱动
如果在驱动调试过程中发现问题,需要修改驱动代码重新生成新的驱动进行调试,这时只需要在本地替换修改编译后的驱动即可。
至此,您已完成驱动的调试与发布过程。
驱动依赖注意事项
设备接入驱动根据协议和业务场景的不同,可能会涉及第三方库依赖。Link IoT Edge针对开发设备接入驱动所用不同开发语言,分别制定了第三方库依赖规则。
- 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 . 第三方库名
驱动打包注意事项
基于Link IoT Edge提供的SDK开发驱动并完成调试后,需将产物打包为.zip包,并确保驱动Binary或index源文件在.zip包第一级目录。
每个版本SDK开发的驱动在打包时,有不同的打包规则。
- 基于C SDK开发的驱动
对于C语言开发的驱动,驱动包中包含驱动程序和驱动依赖的动态库。如果驱动程序包含依赖库,则需要将依赖库放置指定的位置,即在驱动程序当前路径下的lib文件夹下。具体操作步骤如下:
- 规定驱动程序需命名为main。
- 在main当前路径下创建lib文件夹。
- 将main依赖的动态库全部拷贝到lib文件夹下。
- 使用zip命令对当前路径下的main和lib进行压缩处理生成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。