ESP32学习笔记(10)——接入OneNet平台
OneNET是中国移动打造的物联网开放平台,支持多种协议接入,比如MQTT、HTTP、CAP等,可实现智能硬件的快速接入,并且有许多开箱即用的功能,比如设备管理、数据存储、场景联动、OTA等,简化了物联网项目开发工作,根据平台指引把设备接入就行,无需开发复杂服务器后台,对学习和实际项目都有很大用处。中间是OneNet平台提供的服务,大家看到OneNet平台提供很多功能,如果我们要投入人力开发并落地
OneNET是中国移动打造的物联网开放平台,支持多种协议接入,比如MQTT、HTTP、CAP等,可实现智能硬件的快速接入,并且有许多开箱即用的功能,比如设备管理、数据存储、场景联动、OTA等,简化了物联网项目开发工作,根据平台指引把设备接入就行,无需开发复杂服务器后台,对学习和实际项目都有很大用处。
下面图是我截取自官网的,我们看一下这个图,可以认为是一个完整的物联网项目框图,分为三个部分:
左边是终端设备,比如ESP32S3,通过协议接入到OneNet平台。
中间是OneNet平台提供的服务,大家看到OneNet平台提供很多功能,如果我们要投入人力开发并落地的话,是要不少的工作量。
第三部分最右边这些是我们大项目应用的数据,比如智慧城市、智慧交通等,都通过API取自观念平台。现在我们注重设备端开发。

MQTT协议接入首先使用connect报文发起连接,connect报文有三个内容需要填充,分别是client ID、username和password。
client ID两种方式,方式一要填的内容比较多,一般针对蜂窝网设备接入。
我们选方式2,只填一个device name

password是经过key计算的token,算法比较复杂,这里不作过多介绍,其算法在官方提供的SDK包中有。实际应用中可以直接用官方提供的Token生成工具生成。
连接ONENET平台示例代码:
esp_err_t wifi_mqtt_init(void)
{
// WiFi
fast_wifi_init();
static char token[256];
dev_token_generate(token, SIG_METHOD_SHA256, 2074859482, OneNET_PRODUCT_ID, OneNET_DEVICE_ID, OneNET_PRODUCT_KEY);
ESP_LOGI(TAG, "onemqtt token=%s", token);
// MQTT
esp_mqtt_client_config_t mqtt_cfg = {
.broker.address.uri = broker_uri,
.broker.address.port = 1883,
// 可选:.credentials.username / .password / .client_id 等
.credentials = {
.username = OneNET_PRODUCT_ID,
.client_id = OneNET_DEVICE_ID, // 可选,建议加
},
.credentials.authentication = { // ← 关键:密码在这里
.password = "version=2018-10-31&res=products%2FODN1dfWSV9%2Fdevices%2FESP32S301&et=2074859482&method=sha256&sign=5gLcxCLfP4Ry2uGu7OLUXRyhWfU8lDsyt2k0z1V0aFY%3D",
},
};
mqtt_client = esp_mqtt_client_init(&mqtt_cfg);
if (mqtt_client == NULL) {
ESP_LOGE(TAG, "MQTT 初始化失败");
return ESP_FAIL;
}
// 注册 MQTT 事件回调
ESP_ERROR_CHECK(esp_mqtt_client_register_event(mqtt_client,
ESP_EVENT_ANY_ID,
mqtt_event_handler,
NULL));
// 启动 MQTT 客户端(开始连接 Broker)
ESP_ERROR_CHECK(esp_mqtt_client_start(mqtt_client));
ESP_LOGI(TAG, "WiFi + MQTT 初始化完成");
return ESP_OK;
}
初次连接时,连接失败,报错bad username or password
最后发现是跟的教程的博主的token算法出错了,用官方提供的token生成工具生成token后成功连入。
PC端也遇到类似问题,这次原因是client.id没有设置成device_name
PC端成功连接后有数据没成功上报地问题,经查找发现是上报数据中有的没在平台设置,被平台拒绝了。
更多推荐



所有评论(0)