本文主要描述Link IoT Edge专业版和标准版的边缘实例中,子设备未上线时的定位问题思路及解决方法。
设备接入到网关后称为网关子设备,若子设备显示未激活、离线或禁用等状态时,请根据如下步骤定位并处理问题。
步骤一:确保安装并启动Link IoT Edge时,使用了控制台生成的命令
使用控制台生成的安装命令可以避免由于安装操作错误产生的异常。
详细的安装方法,请参见环境搭建中,安装并启动Link IoT Edge部分的内容。
步骤二:确保所有服务都处于已激活(active)状态
在Shell中多次执行如下命令,查看所有的服务是否都处于稳定的active状态。
- 若您使用的是Link IoT Edge专业版,则先进入您自己容器所在的目录,再执行如下命令。
- 若您使用的是Link IoT Edge标准版,则可以直接在您的Shell中执行如下命令。
/linkedge/gateway/build/script/iot_gateway_status.sh
- 如果所有服务都处于已激活(active)状态,系统显示如下。
- 如果有服务处于未激活(inactive)状态,则以系统管理员权限执行如下命令,重新启动Link IoT Edge。
sudo /linkedge/gateway/build/script/iot_gateway_start.sh
再次执行/linkedge/gateway/build/script/iot_gateway_status.sh命令,查看服务是否都处于active状态,若仍有服务处于inactive状态,则按如下步骤操作:
- 查看userlog及该服务的日志。
- userlog路径:/linkedge/run/logger/userlog
- 其他服务:/linkedge/run/logger路径下以该服务名称命名的目录中。
- 手动启动该服务,查看服务打印出的日志。
- 查看userlog及该服务的日志。
ifconfig lo
sudo ifconfig lo up
以上方法仍不能处理问题时,请根据日志打印内容排除其他未知原因。
步骤三:确保网关在线
在物联网平台控制台查看网关是否在线。若网关是离线状态,则使用如下命令对网关离线原因进行诊断。
cd /linkedge/gateway/build/bin/ && ./lectl diagnose
正常情况下,各项内容都显示为OK,如下图所示。
可能出现的异常以及解决方法如下:
- 可能异常:获取不到网关设备证书。
解决方法:使用
cd /linkedge/gateway/build/bin/ && ./lectl config set -g $your_productkey $your_devicename $your_devicesecret
导入设备证书信息。 - 可能异常:网络异常。
解决方法:关闭本地防火墙限制、HTTP代理、iptables限制。
- 可能异常:网关设备证书错误。
解决方法:使用
./lectl config set -g
导入设备证书信息。
步骤四:边缘实例部署成功后,确保驱动正常运行
cd /linkedge/gateway/build/bin && ./lectl fc show
正常情况下系统显示如下。
其中,FunctionName为驱动名称,StartTime为驱动进程启动时间。
- 如果驱动的启动时间一直在变化,说明驱动在不断退出和被拉起,此时请分析驱动模块日志,解决导致驱动退出的问题。
- 如果驱动进程一直未被拉起,请确保:
- 驱动已按要求打包成.zip文件。说明 驱动Binary或index源文件需要在打包的.zip文件第一级目录下。
- C版驱动main文件有可执行权限。
- Link IoT Edge运行环境已安装unzip工具。
- 驱动已按要求打包成.zip文件。
步骤五:确保驱动与子设备通讯正常
查看驱动和子设备交互的打印信息。
可能出现的异常以及解决方法如下:
- 可能异常:控制台上边缘实例中的驱动配置错误。
解决方法:在控制台上实例详情页面设备与驱动页签下,修改驱动配置并重新部署边缘实例。
- 可能异常:通信链路异常。
解决方法:排除物理连接断开、防火墙限制等问题。
步骤六:确保子设备注册上线时配置的设备证书信息正确
cd /linkedge/gateway/build/bin && ./lectl config get -d
其中,Used表示设备证书已被使用,即已有设备使用此证书注册上线;Unused表示设备证书未被使用,请仔细校对未上线设备的证书信息,确保该设备使用了正确的设备证书。
附录
- log目录 Link IoT Edge各模块日志在/linkedge/run/logger目录下,如图所示。说明
- 驱动日志在fc-base/目录下有独立的目录,目录名称即驱动名称。例如,Light目录下为Light驱动的日志。
- userlog目录下的错误日志多为操作流程错误、配置错误等相关日志,一般不会自动修复,请重点关注。
- userlog分析
- dimu(网关设备管理单元)模块
[CloudOffline][Succeeded]: Device cloud ID: [%s] 设备下线成功。设备cloud ID的格式是:productkey_devicenname [CloudOffline][Failed]: Device cloud ID: [%s] 设备下线失败 [LocalOffline][Failed]: Device local ID: [], Cloud ID is illegal: %s 设备本地下线失败,使用了错误的cloud ID [LocalOffline][Failed]: Device local ID: [], can not find specified Cloud ID: %s 设备本地下线失败,没有指明cloud ID [LocalOffline][Succeeded]: Device cloud ID: [%s] 设备本地下线成功 [Authorization][Failed]: Unable to authorize device %s with Product Key %s : error code: %d. 注册设备失败,error code表示错误码 [LocalOnline][Succeeded]: Device cloud ID: [%s] 设备本地上线成功 [CloudOnline][Failed]: Device cloud ID: [%s], is a local device 设备云端上线失败,设备是一个本地设备 [CloudOnline][Succeeded]: Device cloud ID: [%s] 设备云端上线成功 [CloudOnline][Failed]: Device cloud ID: [%s] 设备云端上线失败
- cloud-proxy(云代理)模块
[gateway_connect_cloud]gateway online! productkey=%s, devicename=%s 网关上线后,会打印这个内容 [gateway_connect_cloud]gateway offline! productkey=%s, devicename=%s 网络连接断开,网关离线
- dimu(网关设备管理单元)模块