探究ESP32S【第四天】——初试mqtt(2)

博主在搬好subscriber.py后遇到代码未对齐问题,运行程序报EHOSTUNREACH错误,修改server地址后又出现数组越界问题,还对sock为空存疑。之后将端口从8000改成1883,分享了相关帖子和本地服务器mosquitto链接,打算后续再尝试。

搬好subscriber.py之后就出现问题:

原来是没对齐,okok,你厉害。

from umqtt import MQTTClient
import time
import led

SERVER = '183.53.18.170'
CLIENT_ID = 'ZIMO'
TOPIC = b'mrjiale'


def serve_start():
	led2_on()

def serve_stop():
	led2_off()

def mqtt_callback(topic, msg):
	global TOPIC
	print('topic: {}'.format(topic))
	print('msg: {}'.format(msg))
  if msg == b"start":
    serve_start()
  if msg == b"stop":
    serve_stop()


def mqtt_connect():
  client = MQTTClient(CLIENT_ID, SERVER)
  client.set_callback(mqtt_callback)
  client.connect()
  client.subscribe(TOPIC)

  while True:
    client.check_msg()
    time.sleep(1)

 

然而,运行之后报出一个EHOSTUNREACH的问题:

然后我改了下server的地址

虽然EHOSTUNREACH不报了,然而,接着又出现了另一个问题,index out of range直接数组越界!what?

 

所以这个sock应该是啥?为啥打印出来会为空的呢?

总之成功了。。。-_-|||

把端口8000改成了1883

看看这个帖子,挺详细的,但是需要翻一下:

https://forum.pycom.io/topic/211/simple-mqtt-tutorial/34?lang=zh-CN&page=1

这是本地服务器mosquitto:https://pallavichaurasia94.wordpress.com/2014/10/14/mosquitto-in-debian/

明天再试试看吧~

<think>好的,用户现在的问题是关于在ESP32-S3中使用MQTT5时,如何配置CMakeLists.txt以包含mqtt_client.h所需的依赖模块。我需要结合之前的对话和用户提供的站内引用来给出准确的回答。首先,用户之前的问题是关于MQTT5在CMakeLists中的依赖模块,我之前的回答已经列出了必要的组件,比如mqtt、esp-tls等。现在用户再次询问,可能是在确认或者需要更详细的信息,特别是关于mqtt_client.h的具体依赖。用户提供的站内引用中,引用[1]提到了一个开源SDK的CMake配置,用户只需要添加子目录并链接库。引用[2]显示了一个CMakeLists中的COMPONENT_REQUIRES包含多个组件,如esp32-camera、nvs_flash等。这可能提示用户希望了解类似的结构,但需要针对MQTT5进行调整。 我需要确保回答中包含mqtt_client.h所需的模块,这可能包括mqtt组件,因为该头文件属于mqtt库。此外,之前的回答提到的esp-tls、esp_event、tcp_transport等仍然是基础依赖。用户可能还需要网络相关的组件,如wifi_provisioning和nvs_flash,特别是如果项目使用WiFi连接的话。另外,需要验证ESP-IDF的版本是否支持MQTT5,这在之前的回答中提到过,用户可能需要注意这一点。同时,确保代码中包含正确的头文件,比如#include"mqtt_client.h",而不仅仅是esp_mqtt.h,可能之前有误,需要修正。 用户可能还关心如何将这些依赖正确写入CMakeLists.txt,特别是如何设置REQUIRES部分。需要提供具体的示例,比如idf_component_register中的配置,并引用之前的回答和站内例子来支持。 最后,生成的相关问题需要与当前主题相关,比如SSL配置、消息长度、共享订阅等,这些都是MQTT5的常见问题,可以引导用户进一步探索。</think>### ESP32-S3中使用MQTT5的CMakeLists依赖配置 在ESP32-S3项目中引入`mqtt_client.h`并实现MQTT5协议时,CMakeLists需包含以下关键依赖模块: #### 核心依赖模块 1. **MQTT协议栈** ```cmake set(requires mqtt) # 提供MQTT5协议实现及mqtt_client.h头文件[^1] ``` 2. **网络传输层** ```cmake set(requires ${requires} tcp_transport) # TCP/UDP基础传输能力 set(requires ${requires} esp-tls) # TLS加密支持 ``` 3. **事件系统** ```cmake set(requires ${requires} esp_event) # 事件循环管理[^2] ``` #### 网络连接扩展 ```cmake if (USE_WIFI) set(requires ${requires} wifi_provisioning wpa_supplicant) endif() set(requires ${requires} nvs_flash) # 存储网络凭证 ``` #### 完整CMake配置示例 ```cmake # 组件声明 idf_component_register( SRC_DIRS "src" INCLUDE_DIRS "include" REQUIRES mqtt esp-tls esp_event tcp_transport nvs_flash ) ``` #### 代码验证要点 1. 在代码中正确包含头文件: ```c #include "mqtt_client.h" // MQTT5核心接口[^1] ``` 2. 确认ESP-IDF版本满足: $$ \text{IDF版本} \geq v4.4 $$ ### 依赖关系拓扑 $$ \begin{array}{ccc} \text{mqtt} & \rightarrow & \text{esp-tls} \\ \downarrow & & \downarrow \\ \text{tcp\_transport} & \leftarrow & \text{esp\_event} \\ \end{array} $$
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值