云服务器内容精选
-
安装节点 在安装前请检查机器网络是否正常,是否能够连接到公网。 在安装之前请检查机器时间是否和北京时间一致,如果偏差过大会导致安装失败。 选择支持架构和安装目录之后,按照图中框选地方获取。 图4 获取安装命令 鸿蒙操作系统下默认未安装wget以及openssl,因此需要将安装命令拆解为以下几步执行。如图为安装命令的拆分图解 图5 命令拆解 其中第①步为下载安装包,第②步为安装包完整性校验(可以跳过),第③步为执行安装命令。 根据步骤二的说明获取安装包的下载命令并通过浏览器下载。 安装包下载链接:https://ioe-installer-cn-north-4.obs.cn-north-4.myhuaweicloud.com:443/edgeRuntime-2022.1222.1216.38-openharmony.tar.gz/1671689782293/edgeRuntime-2022.1222.1216.38-openharmony.tar.gz?AccessKeyId=VGC*****CE&Expires=1673949121&Signature=pwx******3D 浏览器下载: 图6 浏览器下载安装包 在windows上通过hdc_std工具,将下载的安装包上传到鸿蒙设备的/data/zh下并查看,上传的目录建议在/data/目录或者子目录下。 图7 上传文件到鸿蒙设备 图8 登录鸿蒙设备控制台 图9 确定文件成功上传 注意执行命令:mount -oremount,rw / , 该命令必须执行,修改鸿蒙文件系统的可读写权限,以防安装失败。 图10 解压安装包 在/data/zh下执行解压命令。至此安装包已经解压在/data/zh。并不一定必须在/data/zh目录下,仅仅因为上传到这个目录下。实际执行时,安装上传的实际目录进行操作。 上述几步执行完成后就可以进行最后的安装操作。 因为前面步骤可能会耗费一些时间,所以此时需要确认安装命令是否过期,避免本次安装以为验证码过期而安装失败,安装命令的有效时间为30min。 如果是公网安装,可以提前测试网络是否正常,ping www.baidu.com. 命令拆分步骤中的第三步标识了安装命令的获取,安装命令示例: INSTALL_IOTEDGE_BIN_DIR=/data/zh/IoTEdge sh edge_install.sh 100.94.60.201 8943 795632095371472896 sys_edge_daemon 02******1a cloud false lite DEFAULT && cd – 执行安装命令: 图11 执行安装命令 安装成功: 图12 安装成功 查看节点状态以及应用状态 图13 节点状态 图14 应用状态 部署$edge_omagent测试功能 $edge_omagent部署时根据架构选择对应的版本,此处部署$edge_omagent的最新的arm64版本。 图15 部署$edge_omagent应用 图16 指标采集
-
安装专业版节点 在“节点管理”的节点列表选择您需要安装的节点,单击右侧“安装”,获得提示。 图5 安装 选择支持架构和安装目录,然后单击复制安装命令,使用SSH工具以root用户登录边缘节点服务器后台系统,执行安装命令。 图6 提示 安装命令的选择需要与购买的ecs的架构保持一致。 图7 执行安装 图8 安装命令执行成功 单击“我知道了”,等待边缘节点的状态变为“在线”,表示该节点已安装并连接成功。 您可以单击“节点名称”,查看该节点详细信息,关于节点详情描述可参见节点概览。
-
安装专业版节点 使用root用户登录边缘节点服务器后台系统,使用SFTP工具或移动存储设备,将边缘节点的安装工具和配置文件的执行命令复制到节点的目录下。 图4 复制到节点目录中 解压installer安装包 例:sudo tar -zxvf edge-installer_1.0.9_x86_64.tar.gz -C /opt 其中edge-installer_1.0.9_x86_64.tar.gz为安装包文件名,请以下载的实际文件名为准。 图5 解压安装包 解压配置文件到/opt/IEF/Cert 例:sudo mkdir -p /opt/IEF/Cert; sudo tar -zxvf node_name.tar.gz -C /opt/IEF/Cert 其中node_name.tar.gz为配置文件名,请以下载的实际文件名为准。 图6 解压配置文件 执行安装命令,当最后一行提示“install_success”时,即代表安装成功,稍后可在“边缘节点”页查看节点状态。 cd /opt/edge-installer; sudo ./installer -op=install 图7 执行安装命令 如果安装过程异常或失败,请参见边缘节点纳管失败如何处理。 安装完IEF相关程序后,边缘节点会显示未安装状态,需等待10分钟左右,IEF相关配置初始化完成,才会拉起边缘节点相关应用,使边缘节点在线。
-
使用场景 场景挑战 设备采集的数据信息量庞大但只需部分有效数据。部署在节点下的设备需要在本地判断情况以及时进行控制。 设备使用的协议不能接入边缘计算。 节点下的IT子系统众多,接入时不便于管理,配置繁琐。子系统采集的数据需要传输到用户的北向应用。 解决方案 通过开发集成ModuleSDK的应用,您可以: 使用ModuleSDK提供的AppClient开发OT应用对需要上传到云端的信息进行过滤上传。OT应用可以在本地对设备进行命令的下发。 使用ModuleSDK提供的DriverClient开发驱动应用进行协议转换。 使用ModuleSDK提供的ItClient开发IT应用实现子系统与云端配置的自动同步,也可以实现云端对子系统的配置管理。云端可以通过IT应用实现对子系统数据的采集。
-
简介 为解决用户自定义处理设备数据以及自定义协议设备快速接入IOT平台的诉求,IoT边缘提供ModuleSDK,用户可通过集成SDK让设备以及设备数据快速上云。IoT边缘平台应用功能有自定义处理设备数据(即数据处理),自定义协议设备快速接入(即协议解析),IT子系统接入(即IT应用),并且支持容器化部署和安装包部署的方式。 集成ModuleSDK开发的应用被称为插件应用,其最终将被通过云部署到边缘节点。 集成ModuleSDK的应用分为: OT应用:数据处理类型的应用,实现了总线回调接口,IoT边缘云服务为OT应用提供总线对接能力、设备反向控制(命令)能力。 驱动应用:协议转换类型的应用,可将使用自定义协议的设备接入边缘计算。 IT应用:实现工业子系统接入的应用,实现了对子系统配置同步、反向调用接口、以及数据采集能力。 集成了SDK的应用称为插件,华为云商店提供了插件上架功能。您可以将开发的集成了SDK的应用上传到华为云商店来获取收益,也可以在华为云商店下载使用第三方插件。
-
镜像包打包 上传打包的项目。 将jar文件上传到联网的linux机器上,如目录(/home/monitor)中 安装docker。 请确认使用的系统已经安装docker(docker版本需要高于17.06,推荐18.06),安装参照docker 安装教程 制作镜像。 搜索基础镜像,基础镜像需要集成jre。 docker search jre8 选择合适的镜像(镜像需要集成了jre且版本不低于8) NAME DESCRIPTION STARS OFFICIAL AUTOMATED livingobjects/jre8 Jre8 image 4 [OK] livingobjects/jre8镜像是docker hub第三方提供的镜像,非IoT团队发布,且IoT团队未提供任何官方镜像。该镜像在此仅做示例,IoT团队对该镜像的安全性不作保证。强烈建议用户自己封装镜像! 拉取镜像 docker pull livingobjects/jre8 编写dockerfile制作镜像 dockerfile内容参照如下(具体可参考编写高效的Dockerfile ) #Version 1.0.0 FROM livingobjects/jre8 #基础镜像来源 RUN mkdir -p /opt/iot/edge/monitor / && chmod -R 777 /opt/ #授权 COPY monitor /opt/iot/edge/monitor #复制文件到指定目录,此dockerfile文件位置:/home,jar包位置:/home/monitor USER root #用户名 EXPOSE 8080 CMD ["java", "-jar", "/opt/iot/edge/monitor/monitor-app.jar", "run"] #运行命令 构建镜像 docker build -t edge_monitor:1.0.0 /home --no-cache 查看打包完成的镜像 docker images REPOSITORY TAG IMAGE ID CREATED SIZE edge_monitor 1.0.0 93f9d964bcea 12 seconds ago 243MB 镜像上传。 上传镜像 开通 容器镜像服务 SWR 镜像上传需要使用SWR镜像容器服务,开通及使用请参照容器 镜像服务 SWR_用户指南 获取SWR登录指令 请参照使用容器引擎客户端上传镜像第四节。 tag镜像 使用tag命令将镜像重命名以确定上传位置和组织,获取上传位置和组织前缀请参考pull/push命令 docker tag edge_monitor:1.0.0 swr.cn-north-4.myhuaweicloud.com/hw_swr/edge_monitor:1.0.0 上传镜像 docker push swr.cn-north-4.myhuaweicloud.com/hw_swr/edge_monitor:1.0.0 查看上传结果 上传镜像后请在SWR将镜像设置为公开。
-
镜像包打包 构建需要打包的项目 构建项目,此处示例,构建好的文件存放在目录 /home/ModuleSDK-Demo 下 安装docker 请确认您使用的系统已经安装Docker(Docker版本需要高于17.06,推荐18.06),安装方法可参照docker 安装教程。 制作镜像 搜索基础镜像。 docker search dotnet 根据您的工程配置,选择合适的镜像。 镜像需要集成与您的工程配置兼容的.Net运行环境,下文使用的.Net版本仅作演示。 拉取镜像。 docker pull mcr.microsoft.com/dotnet/runtime:2.1 mcr.microsoft.com/dotnet/runtime:2.1 镜像是微软提供的镜像,非IoT团队发布,且IoT团队未提供任何官方镜像。该镜像在此仅做示例,IoT团队对该镜像的安全性不作保证,强烈建议用户自己封装镜像! 编写 Dockerfile 制作镜像。 创建 Dockerfile,内容示例如下(具体可参考编写高效的Dockerfile )。 下面提供了ModuleSDK-Demo镜像构建样例,仅作示例展示,请按需修改。 # 基础镜像来源 FROM mcr.microsoft.com/dotnet/runtime:2.1 # 指定工作目录 WORKDIR /app # 复制工程二进制文件和相关文件(即项目构建发布的产物) COPY ModuleSDK-Demo/ /app ENTRYPOINT ["dotnet", "ModuleSDK-Demo.dll"] 构建镜像 docker build -t modulesdk-demo:1.0.0 -f Dockerfile . 查看打包完成的镜像 docker images 可以看到modulesdk-demo这个镜像已经制作完成。 REPOSITORY TAG IMAGE ID CREATED SIZE modulesdk-demo 1.0.0 85ed3c3dc738 8 minutes ago 182MB 上述步骤演示的是直接复制已编译好的工程文件来构建镜像,您也可以采取在构建镜像时编译的方式,具体可参照.Net 官方文档的指引。 镜像上传 上传镜像 镜像上传需要使用镜像容器服务(SWR),首先需要开通容器镜像服务(SWR)。开通及使用请参照容器镜像服务(SWR)。 获取 SWR 登录指令 获取登录指令请参照获取指令。 访问密钥即AK/SK(Access Key ID/Secret Access Key),获取的AK/SK将用于登录。 登录 SWR 仓库 docker login -u [区域项目名]@[AK] -p [登录密钥] [镜像仓库地址] 可以直接从控制台获取登录命令,如下图。 镜像仓库地址 = swr.区域项目名称.myhuaweicloud.com 例如,华北-北京一对应的镜像仓库地址为:swr.cn-north-1.myhuaweicloud.com 修改镜像所属组织 修改镜像的组织名,以便推送到个人组织内。 docker tag [OPTIONS] [镜像名:版本号] [镜像仓库地址/所属组织/镜像名:版本号] 例如: docker tag modulesdk-demo:1.0.0 swr.cn-north-4.myhuaweicloud.com/iotedge/modulesdk-demo:1.0.0 上传镜像 docker push [镜像仓库地址/所属组织/镜像名:版本号] 例如: docker push swr.cn-north-4.myhuaweicloud.com/iotedge/modulesdk-demo:1.0.0 在我的镜像查看上传结果 上传镜像后请在 SWR 将镜像设置为公开。 查看镜像详情: 编辑镜像: 设置为公开: 这一步很重要,关系到后面能否正常部署应用。
-
镜像包打包 上传需要打包的项目。将项目上传到网络能访问到的Linux机器上,放到目录下(比如 /home/MyCApp)。 安装docker。 请确认使用的系统已经安装docker(docker版本需要高于17.06,推荐18.06),安装方法可参照docker 安装教程。 制作镜像。 搜索基础镜像。 对基础镜像没有要求,可自行选择合适的基础镜像,以下选用带cmake的镜像作为示例 docker search cmake 选择合适的镜像(镜像需要集成了cmake且版本不低于3.9.5) NAME DESCRIPTION STARS OFFICIAL AUTOMATED lycantropos/cmake CMake Docker image 3 [OK] 拉取镜像 lycantropos/cmake镜像是docker hub第三方提供的镜像,非IoT团队发布,且IoT团队未提供任何官方镜像。该镜像在此仅做示例,IoT团队对该镜像的安全性不作保证。强烈建议用户自己封装镜像! docker pull lycantropos/cmake 添加启动脚本start.sh,放到项目文件下(和main.c在一个目录下)。 function log(){ echo `date "+%Y-%m-%d %T"`: $1 } log "[INFO] start execute process." # 这里的路径取决于项目保存的位置 cd /opt/iot/edge/MyCApp ./MyCApp MyCApp为可执行文件,生成步骤可参考生成可执行文件 编写 Dockerfile 制作镜像 创建 Dockerfile,命名为 myapp-dockerfile 内容参照如下(具体可参考编写高效的Dockerfile )。 下面提供myapp-dockerfile 样例,请根据具体需要修改。 注意myapp-dockerfile需要和项目放到一个目录下。 #Version 1.0.0 # 基础镜像来源 # 如果不采用在镜像中编译源文件的方式,可以任意选择基础镜像 FROM lycantropos/cmake # 创建镜像文件目录,并且授权 RUN mkdir -p /opt/iot/edge/MyCApp/conf && chmod -R 777 /opt ENV docker_path=/opt/iot/edge/MyCApp ENV LD_LIBRARY_PATH=${docker_path}:$LD_LIBRARY_PATH WORKDIR ${docker_path} # 复制工程或文件到指定目录 COPY MyCApp/MyCApp $docker_path # 将依赖库和配置文件放到对应目录下,确保编译的时候不会出错 COPY MyCApp/lib /usr/lib COPY MyCApp/conf $docker_path/conf COPY MyCApp/start.sh $docker_path # 指定容器将要监听的端口 USER root EXPOSE 8082 ENTRYPOINT ["/bin/bash", "/opt/iot/edge/MyCApp/start.sh"] 构建镜像 docker build -f ./myapp-dockerfile -t my_app_docker:v1.0.0 ./ 查看打包完成的镜像 docker images 可以看到my_app_docker这个镜像已经制作完成。 REPOSITORY TAG IMAGE ID CREATED SIZE my_app_docker v1.0.0 983b4e5aa72a 10 minutes ago 1.51GB 镜像上传 以上步骤可以通过体验馆熟悉流程。 上传镜像 镜像上传需要使用镜像容器服务(SWR),首先需要开通容器镜像服务(SWR)。开通及使用请参照容器镜像服务(SWR)。 获取 SWR 登录指令 获取登录指令请参照获取指令。 访问密钥即AK/SK(Access Key ID/Secret Access Key),获取的密钥和AK将用于登录。 登录 SWR 仓库 docker login -u [区域项目名]@[AK] -p [登录密钥] [镜像仓库地址] 可以直接从控制台获取登录命令,如下图。 镜像仓库地址 = swr.区域项目名称.myhuaweicloud.com 例如,华北-北京一对应的镜像仓库地址为:swr.cn-north-1.myhuaweicloud.com 修改镜像所属组织 修改镜像的组织名,以便推送到个人组织内。 docker tag [OPTIONS] [镜像名:版本号] [镜像仓库地址/所属组织/镜像名:版本号] 例如, docker tag my_app_docker:v1.0.0 swr.cn-north-4.myhuaweicloud.com/iotedge/my_app_docker:v1.0.0 上传镜像 docker push [镜像仓库地址/所属组织/镜像名:版本号] 例如, docker push swr.cn-north-4.myhuaweicloud.com/iotedge/my_app_docker:v1.0.0 在我的镜像查看上传结果 上传镜像后请在 SWR 将镜像设置为公开。 步骤一: 步骤二: 步骤三: 这一步很重要,关系到后面能否正常部署应用。
-
上传镜像 镜像上传需要使用SWR镜像容器服务,开通及使用请参照容器镜像服务 SWR_用户指南。 上传镜像 访问 SWR容器镜像 服务,在左侧导航栏选择“总览”,然后单击右上方“创建组织”。 创建名称为hw_swr的组织 获取SWR登录指令 访问SWR容器镜像服务,在左侧导航栏选择“总览”,然后单击右上角“登录指令”。 复制登录指令到您推送镜像的本地机器上执行 tag镜像 使用tag命令将镜像重命名以确定上传位置和组织,获取上传位置和组织前缀请参考pull/push命令 docker tag edge_monitor:1.0.0 swr.cn-north-4.myhuaweicloud.com/hw_swr/edge_monitor:1.0.0 上传镜像 docker push swr.cn-north-4.myhuaweicloud.com/hw_swr/edge_monitor:1.0.0 查看上传结果 上传镜像后请在SWR将镜像设置为公开。 父主题: 前提条件
-
开发插件 根据您的需要开发插件,提供了一个Demo工程来协助您更快地了解SDK。 下载Demo Demo下载地址:使用ModulSDK开发插件Demo。 SDK下载地址:ModuleSDK_Java。 导入ModuleSDK依赖包 选择项目名右键单击Open Project Structure,选择Libraries后,单击中间框上方“+”号,选择下载好的ModuleSDK,添加到工程模块。 该Demo包含三个模块: erp-integration:此模块主要演示It集成服务。 modbus-driver:此模块主要演示协议转换。 monitor-app:此模块主要演示数据处理。 以其中的数据处理样例即monitor-app模块为例演示如何开发一个插件并远程部署到边缘上进行数据处理。 如果您有兴趣,可以参考开发指南-插件侧开发,该文档详细讲述了实践的架构和业务。 父主题: 前提条件
-
设备接入调测 本章节以MQTT.fx为例,介绍以MQTT原生协议接入IoT边缘节点,通过边缘节点上报设备属性至 物联网平台 。MQTT.fx是目前主流的MQTT客户端,可以快速验证是否可以与物联网平台服务交互发布或订阅消息。 访问这里,填写添加边缘设备后生成的设备ID和设备密钥,生成连接信息(ClientId、Username、Password)。 打开MQTT.fx软件,单击设置图标。 参考截图中配置鉴权参数,然后单击截图中“Apply”。 Broker Address:填写边缘节点服务器公网IP地址 Broker Port:填写边缘节点提供给南向MQTT(S)设备接入的端口,即7883 Client ID:设备ClientId,参考1获取 User Name:即设备ID,参考1获取 Password:加密后的设备密钥,参考1获取 在设备对接边缘节点场景中,需要在设备侧集成相应证书(证书文件),用于设备校验边缘节点的身份。 单击“Connect”,设备鉴权成功后,在IoT边缘控制台和物联网平台可以看到设备处于在线状态。如果模拟器右侧的红灯变成绿灯,说明与物联网平台的连接成功。 IoTEdge云服务上边缘节点显示子设备在线: 物联网平台显示边缘节点、子设备在线: 通过MQTT.fx模拟设备上报属性,并在物联网平台查看设备上报数据。 在Publish页签,填写设备属性上报Topic,及JSON消息体,单击“Publish”完成上报。 Topic:$oc/devices/iot_edge_test_0219/sys/properties/report 其中,iot_edge_test_0219为设备ID,请替换为实际值。 消息体: { "services" : [{ "service_id" : "sensor", "properties" : { "temp" : 25, "humi" : 11 }, "event_time" : "20210212T121212Z" } ] } 在物联网平台查看设备上报数据。 通过MQTT.fx订阅命令下发Topic,并在物联网平台下发控制命令,查看设备是否收到平台下发的命令。 在Subscribe页签,填写命令下发Topic,并单击“Subscribe”完成订阅。 Topic:$oc/devices/iot_edge_test_0219/sys/commands/# 其中,iot_edge_test_0219为设备ID,请替换为实际值。 在物联网平台执行命令下发。 进入设备详情页,选择“命令”页签,单击同步命令下发区域的“命令下发”,设置参数并单击“确定”完成命令下发。 选择命令:sensor: control_light light:ON 在MQTT.fx客户端查看,平台下发命令接收成功。
-
应用管理概述 应用管理是IoT边缘提供的边缘应用管理能力,通过将系统预置的应用或用户自定义的应用部署到边缘节点,可在边侧进行协议解析、数据处理、本地子系统集成等能力拓展。当前IoT边缘支持容器化部署和安装包部署的方式,您可以制作镜像上传到容器镜像服务(SWR),也可以选择上传安装包到 对象存储服务 (OBS)。系统预置的应用如表1所示。 表1 系统预置应用 应用名称 应用类型 说明 $edge_hub 系统必选 边缘节点上的处理中心,负责设备和通信管理。 $edge_agent 系统必选 在边缘节点上管理边缘应用,包括部署、升级、运行监控。 $edge_access 系统可选 扩展边缘节点的协议接入能力,当前支持Modbus,OPC-UA协议接入。不推荐使用,推荐使用OT数采(以基于IoT边缘实现OT数采(OPCUA协议)为例,可开发自定义驱动应用)。 $edge_rule 系统可选 负责边缘设备数据的计算和处理,需与数据清洗配合使用。 $edge_apigw 系统可选 边缘节点的API网关,负责为边缘应用提供路由转发,正反向代理等能力,需与路由管理配合使用。 $industry_dc_bsi 系统可选 负责采集MES、ERP等子系统数据,对接到异构系统。系工业子系统数采应用,若想部署该应用,需购买工业子系统数采集成/采集服务。 $edge_omagent 系统可选 负责边缘节点远程监控和运维,提供日志上报、远程ssh、指标上报、文件上传下载能力。 $edge_keepalive 系统可选 边缘节点主备切换模块,保证节点的高可用。 $ot_dc_opcua 系统可选 边缘扩展协议接入。 $ot_dc_yk 系统可选 负责边缘OT数采。 $edge_push 系统可选 提供外部推送能力。 $edge_schedule 系统可选 边缘定时调度模块。 $edge_npu_plugin 系统可选 边缘管理NPU设备分配挂载应用。 父主题: 应用管理
-
安装包部署 软件部署配置 部署方式选择安装包部署,"安装包地址"为{桶名/对象名}。如桶名为:“Demo”,对象名为:“ModuleSDK-Demo.zip”, 则安装包为obs://Demo/ModuleSDK-Demo.zip。 容器规格与高级配置请根据您的需要进行配置。 运行配置 输入端点、输出端点与demo中代码定义的端点一一对应,由于本例演示的是数采模块,因此不对端点进行配置。 部署配置请根据您的需要进行选择。 输入输出端点是非必需配置的,当有数据流转时需要配置,如OT应用(数据处理)。 驱动类应用和IT应用一般不需要配置。 配置确认 建议直接单击“立即发布”,方便后面直接部署应用的时候,能够获取到最新版本。
-
edge.h的接口函数介绍 所有接口函数定义的数据结构均呈现在edge_struct.h头文件中。 1. 初始化 接口描述: int edge_init(const char* workdir) 接口功能: 初始化sdk的工作环境,加载证书、读取配置等 表13 参数说明 参数名称 类型 参数描述 示例 workdir workdir 初始化文件所在目录,conf目录所在的目录,conf是存放证书文件以及日志配置的目录 conf在/code/api_test/workdir目录下,就填写/code/api_test/workdir 2. 注册回调接口 接口描述: int edge_set_callbacks(ST_MODULE_CBS* module_cbs, ST_DEVICE_CBS* device_cbs) 接口功能: 注册回调接口,登录、子设备添加、删除、设备消息、设备命令等都是异步通知的,故需要注册对应的处理函数。 表14 参数说明 参数名称 类型 参数描述 module_cbs ST_MODULE_CBS 模块回调函数结构体 device_cbs ST_DEVICE_CBS 设备回调函数结构体 表15 ST_MODULE_CBS模块相关的回调函数说明 参数名称 类型 参数描述 pfn_shadow_cb FN_SHADOW_ARRIVED* 模块影子回调函数类型,模块的配置可以使该接口接收 pfn_command_cb FN_COMMAND_ARRIVED* 发送到模块的命令的接收函数声明, pfn_connected FN_SDK_CONNECTED SDK连接到边缘hub的回调函数声明 pfn_disconnected FN_SDK_DISCONNECTED SDK和边缘hub断链的回调函数声明 表16 ST_DEVICE_CBS子设备相关的回调函数 参数名称 类型 参数描述 pfn_device_message_cb FN_MESSAGE_ARRIVED* 子设备消息回调 pfn_device_command_cb FN_COMMAND_ARRIVED* 子设备命令回调 pfn_device_event_cb FN_DEVICE_EVENT_ARRIVED* 子设备事件回调 pfn_sub_device_add_cb FN_SUB_DEVICE_ADD_ARRIVED* 子设备添加通知回调 pfn_sub_device_deleted_cb FN_SUB_DEVICE_DELETED_ARRIVED* 子设备删除通知回调 pfn_on_start_scan_cb FN_START_SCAN_ARRIVED* 收到子设备扫描通知回调 pfn_device_properties_set_cb FN_DEVICE_PROPERTIES_SET_ARRIVED* 收到子设备属性设置通知回调 pfn_device_properties_get_cb FN_DEVICE_PROPERTIES_GET_ARRIVED* 收到子设备属性获取通知回调 pfn_device_shadow_cb FN_DEVICE_SHADOW_ARRIVED* 收到子设备影子
-
edge.h回调函数说明 模块影子数据回调 函数描述: typedef EDGE_RETCODE (FN_SHADOW_ARRIVED)(const char* shadow, unsigned int shadow_len); 函数功能: 当下发模块配置时,通过此函数通知到用户,用户应用的配置也通过此函数通知。 表2 参数说明 参数名称 类型 参数描述 示例 shadow char* 模块影子数据(json字符串),第三方应用下发用户的配置数据 { “config”:”test” } shadow_len unsigned int 影子数据的长度 - 命令下发回调 函数描述: typedef EDGE_RETCODE (FN_COMMAND_ARRIVED)(const char* command_name, const char* device_id, const char* service_id, const char* request_id, const char* body, unsigned int body_len); 函数功能: 此函数声明用户命令下发通知,设备命令下发即使用此函数声明。 表3 参数说明 参数名称 类型 参数描述 command_name char* 设备命令名称,在设备关联的产品模型中定义。 device_id char* 命令对应的目标设备ID,命令下发对应的最终目标设备 service_id char* 设备的服务ID,在设备关联的产品模型中定义 request_id char* {request_id}用于唯一标识这次请求,响应该命令时需要带上。 body char* json字符串,设备命令的执行参数,具体字段在设备关联的产品模型中定义 body_len unsigned int - 消息下发回调 函数描述: typedef EDGE_RETCODE (FN_MESSAGE_ARRIVED)(const char* message_id, const char* message_name, const char* device_id, const char* body, unsigned int body_len); 函数功能: 此函数声明用于消息下发通知,平台使用此接口承接平台下发给设备的自定义格式的数据。 表4 参数说明 参数名称 类型 参数描述 message_id char* 消息名称 message_name char* 消息的唯一标识 device_id char* 命令对应的目标设备ID,命令下发对应的最终目标设备 body char* 消息内容。 body_len unsigned int 消息长度 事件下发回调 函数描述: typedef EDGE_RETCODE (FN_DEVICE_EVENT_ARRIVED)(const char* device_id, const char* body, unsigned int body_len); 函数功能: 此函数声明用于事件下发通知,平台使用此接口承接平台下发给设备的自定义格式的数据。 表5 参数说明 参数名称 类型 参数描述 示例 device_id char* 命令对应的目标设备ID,命令下发对应的最终目标设备 - body char* 事件内容。 { "object_device_id":"deviceId", "services":[ { "service_id":"serviceTest", "event_id":"eventTest", "event_type":"eventTypeTest", "event_time":"time", "paras":{ "test":"test" } } ] } body_len unsigned int 消息长度 - 子设备添加回调 函数描述: typedef EDGE_RETCODE (FN_SUB_DEVICE_ADD_ARRIVED)(const char* addSubDeviceInfo, unsigned int body_len); 函数功能: 此函数声明用于通知子设备添加,使用此接口承接平台添加成功子设备的通知。 表6 参数说明 参数名称 类型 参数描述 示例 addSubDeviceInfo char* 添加成功的子设备信息,具体格式见示例 {"devices": [{"parent_device_id":"c6b39067b03421a48", "node_id": "subdevice11", "device_id":"2bb77-063ad2f5a6cc", "name": "subDevice11", "description": null, "product_id":"c6b3b34663d3ea42f6", "fw_version": null, "sw_version": null, "status": "ONLINE" }],"version":1} body_len unsigned int 长度 - 子设备删除回调 函数描述: typedef EDGE_RETCODE (FN_SUB_DEVICE_DELETED_ARRIVED)(const char* deleteSubDeviceInfo, unsigned int body_len); 函数功能: 此函数声明用于通知子设备删除,使用此接口承接平台删除成功子设备的通知。 表7 参数说明 参数名称 类型 参数描述 示例 deleteSubDeviceInfo char* 删除成功的子设备信息,具体格式见示例 {"devices": [{"parent_device_id":"c6b39067b03421a48", "node_id": "subdevice11", "device_id":"2bb77-063ad2f5a6cc", "name": "subDevice11", "description": null, "product_id":"c6b3b34663d3ea42f6", "fw_version": null, "sw_version": null, "status": "ONLINE" }],"version":1} body_len unsigned int 长度 - 子设备扫描回调 函数描述: typedef EDGE_RETCODE (FN_START_SCAN_ARRIVED)(const char* protocol, const char* channel, const char* parentDeviceId,const char* scan_setting, unsigned int body_len); 函数功能: 此函数声明用于通知网关扫描子设备。 表8 参数说明 参数名称 类型 参数描述 protocol char* 协议 channel char* 通道信息 parentDeviceId char* 父设备ID scan_setting char* 扫描设备 body_len unsigned int 配置长度 子设备属性设置回调 函数描述: typedef EDGE_RETCODE (FN_DEVICE_PROPERTIES_SET_ARRIVED)(ST_PROPERTY_SET* sub_device_property_set); 函数功能: 此函数声明用于接收平台对子设备的属性设置。 表9 参数说明 参数名称 类型 参数描述 示例 sub_device_property_set ST_PROPERTY_SET* 属性设置 参见edge.h 子设备属性获取回调 函数描述: typedef EDGE_RETCODE (FN_DEVICE_PROPERTIES_GET_ARRIVED)(ST_PROPERTY_GET* sub_device_property_get); 函数功能: 此函数声明用于接收平台获取子设备的属性。 表10 参数说明 参数名称 类型 参数描述 示例 sub_device_property_get ST_PROPERTY_GET* 属性设置 参见edge.h 子设备影子回调 函数描述: typedef EDGE_RETCODE (FN_DEVICE_SHADOW_ARRIVED)(ST_DEVICE_SHADOW* sub_device_shadow); 函数功能: 此函数声明用于接收平台设置子设备的影子。 表11 参数说明 参数名称 类型 参数描述 示例 sub_device_property_get ST_DEVICE_SHADOW* 属性设置 参见edge.h 自定义topic 消息通知 回调 函数描述: typedef EDGE_RETCODE (FN_CUSTOMIZED_MESSAGE_ARRIVED)(const char* topic, const char* payload, unsigned int len); 函数功能: 此函数声明用于接收平台设置子设备的影子。 表12 参数说明 参数名称 类型 参数描述 topic char* 自定义topic payload char* 消息内容 len unsigned int 消息长度