概述
(时间有限,我就不解释代码的各个函数了,直接上手怎么操作,使用代码,代码在文末)
运行环境:AiThinker_IDE(Eclipse c/c++)
串口助手:AiThinker Serial Tool V1.2.3
烧录工具:ESPFlashDownloadTool_v3.6.3
一、设计目标
1.esp8266通过mqtt协议接入onenet平台
2.对传感器数据进行上传并在平台显示
3.对接收的命令进行分析
二、平台创建产品和设备
1.打开onenet官方网站OneNET - 中国移动物联网开放平台 (10086.cn)登陆注册
2.打开控制台选择多协议接入
3.点击添加产品,协议选择MQTT,其他任意
4.点击添加设备,鉴权信息自行设置
三、硬件代码
1.根据自己的实际开发板准备相关硬件(TTL转USB等)
2. 使用官方的SDK:ESP8266_NONOS_SDK-2.2.1
3.官方SDK中有mqtt例程代码,将其复制到根目录下
4.打开sep_mqtt_proj/include/mqtt_config.h修改以下参数
#define MQTT_HOST "183.230.40.39" // MQTT服务端域名,无需更改
#define MQTT_PORT 6002 // 网络连接端口号,无需更改
#define MQTT_CLIENT_ID "904206359" // 更改为自己设备的"Device_ID"
#define MQTT_USER "491119" // 更改为设备ID
#define MQTT_PASS "******" // 更改为你自己设置的设备鉴权信息
#define STA_SSID "Redmi" // WIFI名称
#define STA_PASS "11111111" // WIFI密码
5.*注意
user_main中函数mqttConnectedCb 为mqtt连接成功时 订阅一个主题,发布一个数据点,根据自己的实际需求进行修改
void mqttConnectedCb(uint32_t *args)
{
MQTT_Client* client = (MQTT_Client*)args; // 获取mqttClient指针
INFO("MQTT: Connectedrn");
MQTT_Subscribe(client, "thingspanel.telemetry4444", 0); // 订阅主题"thingspanel.telemetry",QoS=0
Humi_pubMQTTmsg(16,client);//上传数据点
}
6.*上传数据节点格式
这一部分是最应该注意的,一定要去文档查看onenet的官方对mqtt协议的报文格式设定,代码里我已经写好的处理的函数
下面是对数据格式处理的函数
void pubMQTTmsg(uint32_t data,MQTT_Client* client){
os_sprintf(tmp,"{"data":%d}",data);
uint16_t streamLen= strlen(tmp);
d[0]='x03';
d[1] = (streamLen >> 8);
d[2] = (streamLen & 0xFF);
os_sprintf(msg,"%c%c%c%s",d[0],d[1],d[2],tmp);
MQTT_Publish(client, "$dp", (uint8_t*)msg, streamLen+3, 0, 0);
}
四、编译烧录
1.打开烧录软件,选择8266,选择生成的bin文件,分别烧录到对应地址
2.复位开发板查看结果
打开onenet控制台,点击设备详情中的数据流可以看到数据点已经上传成功 !
使用平台进行命令的下发
查看串口调试助手中的输出日志,可以看到命令接收成功!
五、项目源码
源代码已经上传到百度网盘,如有错误欢迎各位指出,如果有问题也欢迎各位留言。
链接:https://pan.baidu.com/s/1PJgNgn2LG7cupx3-YucWDg
提取码:p2vu
最后
以上就是机智电话为你收集整理的8266与onenet平台进行数据交互(基于MQTT协议)(附源码)的全部内容,希望文章能够帮你解决8266与onenet平台进行数据交互(基于MQTT协议)(附源码)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复