老样子,接上一篇的迷你物联网,移植mqtt到esp8266,尝试是否可以正常通信,可以给服务器发信息,可以收到服务器推送的消息。

先把mqtt的example 挪到自己的代码工程里面,protocol的例子都依赖common,所以一并移植过来

esp8266模拟串口通信(ESP8266系列-mqtt接入)(1)

移植过来需要硬编码下路由器的ssid,pass,这个后面整个项目完成了,是用softap来配置的方式,不需要每次设置ssid,和password。目前先测试

connect.c需要先改成自己的路由器ssid和密码

esp8266模拟串口通信(ESP8266系列-mqtt接入)(2)

在主函数里面启动接口,事件循环

esp8266模拟串口通信(ESP8266系列-mqtt接入)(3)

esp8266模拟串口通信(ESP8266系列-mqtt接入)(4)

我这边吧DHt11 温度传感器的采集也搞进来了,待会是直接推送温度,湿度数据到mqtt。

正常情况下example_connect会成功连接家庭的路由器。根据上一篇的文章,我们需要订阅

/device/me/RPC/request,来接受服务器的命令,推送"/device/me/telemetry" 来推送数据。

定义为一个简单的函数

esp8266模拟串口通信(ESP8266系列-mqtt接入)(5)

在DHT11温度传感器的task里面采集到了,就往mqtt borker推送。

esp8266模拟串口通信(ESP8266系列-mqtt接入)(6)

测试下实际效果,这里没用桌面的mqtt工具,直接用mosquitto_pub.exe

esp8266模拟串口通信(ESP8266系列-mqtt接入)(7)

左边发送RPC命令给ESP8266,右边是传感器推送来的数据

esp8266模拟串口通信(ESP8266系列-mqtt接入)(8)

esp8266模拟串口通信(ESP8266系列-mqtt接入)(9)

ESP的log口收到推送的命令。并且周期1秒推送温度,湿度数据上去。

下一步:

把flask 后台部署到本地,看看最后的前端能否收到消息

前端的按钮消息是否可以正常发送给esp模块

,