# huaweicloud-iot-edge-sdk-c **Repository Path**: huaweicloud/huaweicloud-iot-edge-sdk-c ## Basic Information - **Project Name**: huaweicloud-iot-edge-sdk-c - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: sync-from-huawei - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-21 - **Last Updated**: 2025-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 华为云IoTEdge ModuleSDK-C [![许可证](https://img.shields.io/badge/许可证-Apache%202.0-blue.svg)](LICENSE) ModuleSDK是开发边缘运行应用(插件)所必须的工具包,提供数据处理、协议转换、IT子系统接入等功能,开发完成后,通过选择打包方式来决定是容器化部署还是进程化部署。 相关业务场景介绍和使用教程可以参考华为云官方文档: https://support.huaweicloud.com/iotedge/index.html ## 目录 - [功能特性](#功能特性) - [快速入门](#快速入门) - [环境准备](#环境准备) - [依赖管理](#依赖管理) - [安装部署](#安装部署) - [模拟测试](#模拟测试) ## 功能特性 - **就近接入** 通过MQTTS协议接入IoT边缘节点,默认支持对接到IoTDA云端服务。 - **应用部署管理** 通过集成Module SDK用户可自主开发集成应用,实现私有协议驱动、设备数据处理应用、IT子系统对接应用 - **依赖管理** 通过CMake内置第三方依赖管理 - **边缘安全** 边缘节点和云端通过证书进行认证。提供一机一密的设备安全认证机制,防止设备非法接入。基于TLS加密协议,提供安全的传输通道。 ## 快速入门 ### 环境准备 - **构建工具**: ```bash # Ubuntu/Debian系统 sudo apt-get install -y gcc g++ make cmake libarchive zstd automake autoconf libtool git zlib zlib-devel # CentOS/RHEL 7+系统 sudo yum install -y gcc gcc-c++ make cmake libarchive zstd automake autoconf libtool git zlib zlib-devel ### 依赖管理 CMake自动管理的第三方依赖(自动下载并构建): | 库名称 | 版本 | 许可证 | 源代码地址 | |---------------|-----------|-----------------------|---------------------------------| | APR | 1.7.0 | Apache-2.0 | https://apr.apache.org/ | | APR-util | 1.6.1 | Apache-2.0 | https://apr.apache.org/ | | c-ares | 1.15.0 | MIT + BSD-4-Clause | https://c-ares.org/ | | cJSON | 1.7.11 | MIT | https://github.com/DaveGamble/cJSON | | CUnit | 2.1-3 | LGPL-2.1 | http://cunit.sourceforge.net/ | | cURL | 7.71.0 | curl License | https://curl.se/ | | expat | 2.2.9 | MIT | https://libexpat.github.io/ | | OpenSSL | 1.1.1g | OpenSSL License | https://www.openssl.org/ | | Eclipse Paho | 1.3.0 | EPL-1.0/EDL-1.0 | https://eclipse.org/paho/ | | zlog | 1.2.14 | LGPL-2.1 | https://github.com/HardySimpson/zlog | ### 安装部署 1. 克隆代码库: ```bash git clone https://github.com/huaweicloud/huaweicloud-iot-edge-sdk-c.git 或 git clone https://codehub-g.huawei.com/IoT/Edge/huaweicloud-iot-edge-sdk-c.git cd iotedge-module-sdk 2. 手动构建: ```bash # 创建构建目录 mkdir build && cd build # 配置项目 cmake ../ # 编译 make 3. 使用脚本构建: ```bash # 默认构建(编译依赖项和SDK后打包) ./build.sh # 运行单元测试(需CUnit支持) ./build.sh test 4. 输出产物: ```bash ls dist/ # 示例输出:ModuleSDK-C-2025.0409.0950.23-x86_64.tar.gz 5. 清理构建产物: ```bash sh build.sh clean ### 模拟测试 模拟测试框架通过HTTP API验证SDK业务逻辑,mock暂时只支持测试如下功能: - 属性设置/获取操作 - 数据点上报 - 模块配置查询 - 标准消息处理 - 设备命令执行 #### 部署流程 1. 构建模拟程序 ```bash cd code/mock mkdir build cd build cmake ../ make 2. 打包为Docker镜像: ```bash # 从项目根目录执行 cd huaweicloud-iot-edge-sdk-c # 构建Docker镜像(可自定义镜像名称/标签) docker build -t open_c_sdk_mock:1.0 -f code/mock/Dockerfile . #### 支持的操作 | HTTP API接口 | 方法 | 功能描述 | 示例请求体 | |-----------------------------------------------|--------|-----------------------------------------------|-----------------------------------------------------------------------------| | `/m2h/set/send_req` | POST | 发送属性设置请求 | `{"device_id":"device1", "service_id":"service1", "properties_raw_json":"{\"key\":\"value\"}"}` | | `/m2h/set/fetch_rsp` | POST | 获取属性设置响应 | `request_id=12345` | | `/m2h/get/send_req` | POST | 发送属性获取请求 | `{"device_id":"device1", "service_id":"service1", "properties":["prop1", "prop2"]}` | | `/m2h/get/fetch_rsp` | POST | 获取属性查询响应 | `request_id=12345` | | `/point/report` | POST | 上报数据点 | `{"points":{"temperature":25}, "metadata":{"timestamp":1620000000}}` | | `/point/get_info/{module_id}` | GET | 获取模块数据点配置 | 路径参数:`module123` | | `/standard/send_msg/{output_name}` | POST | 发送标准消息 | `{"message":"Hello World"}` | | `/standard/fetch_msg/{input_name}` | GET | 获取标准消息 | 路径参数:`input1` | | `/standard/set_cb/{input_name}` | PUT | 注册消息回调 | (无需请求体) | | `/commands/send` | POST | 执行设备命令 | `{"device_id":"device1", "command_name":"reboot", "paras":"{\"delay\":5}"}` | 1. 测试属性操作 ```bash # 发送设置请求 curl -X POST http://localhost:12341/m2h/set/send_req \ -H "Content-Type: application/json" \ -d '{"device_id":"device1", "service_id":"service1", "properties_raw_json":"{\"status\":\"on\"}"}' # 响应将返回request_id: "123456789" # 获取响应 curl -X POST http://localhost:12341/m2h/set/fetch_rsp \ -H "Content-Type: text/plain" \ -d "123456789" 2. 测试命令执行 ```bash curl -X POST http://localhost:12341/commands/send \ -H "Content-Type: application/json" \ -d '{"device_id":"sensor-01", "command_name":"calibrate", "paras":"{\"target\":25.5}"}'