TencentCloud / tencentcloud-iot-sdk-embedded-c

SDK for connecting to Tencent Cloud IoT from a device using embedded C.
https://cloud.tencent.com/product/iothub
Other
149 stars 71 forks source link

ESP8266 Qcloud 移植MQTT完成,但是有其他疑问. #13

Closed nickfox-taterli closed 5 years ago

nickfox-taterli commented 5 years ago

https://github.com/nickfox-taterli/esp8266_qcloud

MQTT例子完全OK,稳定,跑了2天了.但是shadow'例子各种出问题.

日志如下:

INF|1970-01-01 00:00:21|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:22|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:24|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:24|main.c|on_temperature_actuate_callback(178): actuate callback jsonString={"temperatureDesire":10}|dataLen=24 INF|1970-01-01 00:00:24|main.c|on_temperature_actuate_callback(181): modify desire temperature to: INF|1970-01-01 00:00:25|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:26|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:27|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:28|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:30|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:31|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:32|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:33|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:34|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:36|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:36|main.c|on_request_handler(115): Method=GET|Ack=ACK_TIMEOUT INF|1970-01-01 00:00:36|main.c|on_request_handler(116): received jsonString={"payload":{"metadata":{"temperatureDesire":{"timestamp":1554183524446}},"state":{"temperatureDesire":10},"timestamp":1554183524446,"version":39},"timestamp":1554183524446,"typ INF|1970-01-01 00:00:37|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:38|main.c|mqtt_loop(383): Wait for Shadow Get Result INF|1970-01-01 00:00:39|main.c|mqtt_loop(383): Wait for Shadow Get Result

spikelin commented 5 years ago

这是因为MQTT接收消息buffer不够大导致的,影子下行消息会带很多meta信息,而C-SDK里面默认的接收buffer只有512字节,所以导致收包失败。可以在qcloud_iot_export.h里面把QCLOUD_IOT_MQTT_RX_BUF_LEN根据自身应用需要设置为大一点的值,比如2048,就可以解决该问题