本文基于esp8266_nonos_sdk_v2.0.0_16_08_10中示例项目的esp_mqtt_proj,从这个示例起我们就脱离的at指令模块,开始真正自己实现功能。
此示例项目用到了一个协议:mqtt,刚开始都不知道这是一个通讯协议,查阅了一下资料发现这个协议是一个适合物联网方面的协议,而且在android推送上使用广泛。它不同于http的请求应答模式,而是采用了订阅者和发布者的模式。
本人现在也只是刚刚了解此协议,本贴的目标时可以成功使用示例中的项目,感兴趣的同学可以看一看聂永的博客:mqtt
此项目用到了一个esp8266的mqtt类库(mqtt client library for esp8266)
测试采用了一个开源的mqtt实现mosquitto,可以直接在ubuntu上使用apt-get命令安装,如下:
sudo apt-get install mosquitto
然后在mqtt_config.h中更改一些配置
//服务器ip
#define mqtt_host “192.168.1.103”
//服务器端口,默认1883
#define mqtt_port 1883
//需要连接的无线网ssid
#define sta_ssid “tp-link_801a”
//无线网密码
#define sta_pass “123456789”
配置完以后就可以烧录进模块了。
不过注意,此项目中使用
#define info( format, 。。. ) os_printf( format, ## __va_args__ )
这个宏来输出调试信息,os_printf函数默认输出使用uart0,在at模块中进行了额外的配置,使log在uart1输出。
void mqttconnectedcb(uint32_t *args)
{
mqtt_client* client = (mqtt_client*)args;
info(“mqtt: connected\r\n”);
mqtt_subscribe(client, “/mqtt/topic/0”, 0);
mqtt_subscribe(client, “/mqtt/topic/1”, 1);
mqtt_subscribe(client, “/mqtt/topic/2”, 2);
mqtt_publish(client, “/mqtt/topic/0”, “hello0”, 6, 0, 0);
mqtt_publish(client, “/mqtt/topic/1”, “hello1”, 6, 1, 0);
mqtt_publish(client, “/mqtt/topic/2”, “hello2”, 6, 2, 0);
}
在此函数中订阅了三个主题,分别是“/mqtt/topic/0” “/mqtt/topic/1” “/mqtt/topic/2” ,然后自己发送消息。
我们也可以在mosquitto的客户端工具,对这三个主题进行订阅。
接下来我们进行演示
首先启动mosquitto服务器
mosquitto -v#输出1486897303: mosquitto version 1.4.10 (build date thu, 25 aug 2016 15:32:03 +0100) starting1486897303: using default config.1486897303: opening ipv4 listen socket on port 1883.1486897303: opening ipv6 listen socket on port 1883.
如果提示端口被占用,需要杀掉占用该端口的进程。
启动一个mosquitto客户端订阅主题
mosquitto_sub -t /mqtt/topic/0
启动esp8266,uart0输出调试信息:
load 。。.
mqtt_initconnection
mqtt_initclient
wifi_init
connected with tp-link_801a, channel 1
dhcp client start.。。
ip:192.168.1.104,mask:255.255.255.0,gw:192.168.1.1
tcp: connect to ip 192.168.1.103:1883
mqtt: connected to broker 192.168.1.103:1883
。。.。。.。。.。。.。。.。。.。。.。
这时我们可以看到刚才订阅主题的窗口输出:
mosquitto_sub -t /mqtt/topic/0
中国移动“5G+”计划推进5G发展,年底5G基站建设达35万个
BP2306CJ+BP2525B晶丰明源PWM/模拟调光 APFC BUCK 驱动芯片
软通动力“信创医共体解决方案”通过鲲鹏技术认证并获鲲鹏应用创新大赛第三名
一种可视化智能充电机的设计
超声波传感器的种类、优点及具体应用
esp8266 sdk mqtt固件有哪些
思特奇:全面助力运营商数字化转型和价值提升
电涡流式传感器的结构原理
基于西门子PLC的5大通信方式的解析
【科普】干货!带你从0了解移动机器人(一)—— 什么是移动机器人
慧拓智慧矿山建设领域快速发展 实现矿山本质安全化
无线充电好用吗方便吗?双十二无线充电宝分享
Imagination 新款 PowerVR Series8XE GPU 提供最佳的单位面积性能
暴雨预警解决方案最新(新一轮强降雨来袭)
大功率数字电源芯片有哪些?
自动驾驶汽车标准化方面中国处于领先地位
日本能源巨头公司NEC Crop旗下美国电池子公司因疫情倒闭
10GBase-T合规性和恶劣环境的影响
粮食谷物玉米赤霉烯酮分析仪的用途有哪些
oltus-XFi定制电源完整性解决方案加速EM-IR分析