littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于C语言的EnOS设备开发SDK

项目简介

本项目是基于C语言的EnOS设备开发SDK,旨在帮助开发者实现设备与EnOS云平台的连接和数据交互。借助该SDK,开发者能便捷完成设备接入、数据上报、命令接收等功能,同时支持直接连接到EnOS云、双向认证和动态激活,还具备子设备管理能力。

项目的主要特性和功能

  1. 多平台支持:可在Ubuntu、MacOS、Windows等不同平台进行开发和编译。
  2. 功能丰富:支持直接连接EnOS云、双向认证、动态激活和子设备管理等功能。
  3. 便捷的交互:能通过MQTT连接与EnOS云进行数据交互,包括上报测量点数据、接收云平台命令等。
  4. 示例代码齐全:提供了建立连接、设备标签、设备属性、上报测量点、上报事件、接收命令、透传设备信息等多种示例代码。

安装使用步骤

编译SDK

  1. 确保安装所有依赖项,在Ubuntu系统中可使用以下命令: shell sudo apt-get update sudo apt-get install -y build-essential make git gcc
  2. 将最新版本的SDK复制到本地机器。

构建SDK

使用以下命令构建SDK: shell cd enos-device-sdk-c make menuconfig # 通过kconf自定义所需功能 make reconfig # 选择Ubuntu的配置 make 也可以使用以下命令选择其他预构建环境: shell make reconfig

快速开始

  1. 连接到EnOS云:通过MQTT连接到EnOS云,示例代码如下: ```c / ProductKey, DeviceKey and DeviceSecrect can be obtained in Device Details page in EnOS Console / char g_product_key[IOTX_PRODUCT_KEY_LEN + 1] = "PRODUCT_KEY"; char g_device_key[IOTX_DEVICE_KEY_LEN + 1] = "DEVICE_KEY"; char g_device_secret[IOTX_DEVICE_SECRET_LEN + 1] = "DEVICE_SECRET";

iotx_enos_dev_meta_info_t master_meta_info; memset(&g_user_example_ctx, 0, sizeof(user_example_ctx_t));

memset(&master_meta_info, 0, sizeof(iotx_enos_dev_meta_info_t)); memcpy(master_meta_info.product_key, g_product_key, strlen(g_product_key)); memcpy(master_meta_info.device_key, g_device_key, strlen(g_device_key)); memcpy(master_meta_info.device_secret, g_device_secret, strlen(g_device_secret));

/ BROKER_URL is the URL of EnOS MQTT Broker for Devices, which can be obtained in Environment Information page in EnOS Console / char mqtt_uri[50] = "BROKER_URL"; IOT_Ioctl(IOTX_IOCTL_SET_MQTT_DOMAIN, (void *)mqtt_uri);

int mqtt_port = 11883; IOT_Ioctl(IOTX_IOCTL_SET_MQTT_PORT, (void *)&mqtt_port);

do { g_user_example_ctx.master_devid = IOT_EnOS_Open(IOTX_ENOS_DEV_TYPE_MASTER, &master_meta_info); if (g_user_example_ctx.master_devid >= 0) { break; } EXAMPLE_TRACE("IOT_EnOS_Open failed! retry after %d ms\n", 2000); HAL_SleepMs(2000); } while (1); do { res = IOT_EnOS_Connect(g_user_example_ctx.master_devid); if (res >= 0) { break; } EXAMPLE_TRACE("IOT_EnOS_Connect failed! retry after %d ms\n", 5000); HAL_SleepMs(5000); } while (1); 2. **上报测量点**:示例代码如下:c void user_sample_post_measurepoint(void) { static int cnt = 0; int res = 0; char measurepoint_payload[50] = {0}; / MeasurePoint1 is a measurepoint defined in ThingModel. / HAL_Snprintf(measurepoint_payload, sizeof(measurepoint_payload), "{\"measurepoints\":{\"MeasurePoint1\":%d}}", cnt++); res = IOT_EnOS_Report(EXAMPLE_MASTER_DEVID, ITM_MSG_POST_MEASUREPOINT, (unsigned char *)measurepoint_payload, strlen(measurepoint_payload)); EXAMPLE_TRACE("Post Measurepoint Message ID: %d, payload: %s", res, measurepoint_payload); }

while (1) { IOT_EnOS_Yield(EXAMPLE_YIELD_TIMEOUT_MS);

user_sample_post_measurepoint();

cnt++;

if (auto_quit == 1 && cnt > 3600)
{
    break;
}

} 3. **关闭MQTT连接**:示例代码如下:c IOT_EnOS_Close(g_user_example_ctx.master_devid); ```

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】