项目简介
本项目是基于C语言的EnOS设备开发SDK,旨在帮助开发者实现设备与EnOS云平台的连接和数据交互。借助该SDK,开发者能便捷完成设备接入、数据上报、命令接收等功能,同时支持直接连接到EnOS云、双向认证和动态激活,还具备子设备管理能力。
项目的主要特性和功能
- 多平台支持:可在Ubuntu、MacOS、Windows等不同平台进行开发和编译。
- 功能丰富:支持直接连接EnOS云、双向认证、动态激活和子设备管理等功能。
- 便捷的交互:能通过MQTT连接与EnOS云进行数据交互,包括上报测量点数据、接收云平台命令等。
- 示例代码齐全:提供了建立连接、设备标签、设备属性、上报测量点、上报事件、接收命令、透传设备信息等多种示例代码。
安装使用步骤
编译SDK
- 确保安装所有依赖项,在Ubuntu系统中可使用以下命令:
shell sudo apt-get update sudo apt-get install -y build-essential make git gcc
- 将最新版本的SDK复制到本地机器。
构建SDK
使用以下命令构建SDK:
shell
cd enos-device-sdk-c
make menuconfig # 通过kconf自定义所需功能
make reconfig # 选择Ubuntu的配置
make
也可以使用以下命令选择其他预构建环境:
shell
make reconfig
快速开始
- 连接到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】