【前言】
mqtt在互联网方面是提供非常好的解决联网方案,他的轻量级的协议,以及可以实现一对多,多对多等优秀的解决方案,相经TCP要简单得多。这一篇将分享如何实现mqtt的数据交互。
【工程创建】
1、打开ModusToolbox创建一个基于CY8CKIT-062S2-AI的mqtt工程。
【上网配置】
1、配置wifi,我们需要把我们的路由器名称和密码写入wifi_config.h中
- /* SSID of the Wi-Fi Access Point to which the MQTT client connects. */
- #define WIFI_SSID "MY_WIFI_SSID"
- /* Passkey of the above mentioned Wi-Fi SSID. */
- #define WIFI_PASSWORD "MY_WIFI_PASSWORD"
2、mqtt的连接服务器IP与端口号:
在mqtt_client_config.h中
- #define MQTT_BROKER_ADDRESS "test.mosquitto.org"
- #define MQTT_PORT 1883
我为了试验方便,在我的本地电脑端创建了一个emqtt服务端,我们就可以把本地的ip填好就行了。
配置好这些参数据,编译下载到开发板。
打开串口终端看到我成功的连接上路由器,并连接上了我们的emqtt的服务器:
- Successfully connected to Wi-Fi network 'HUAWEI-H10R9U'.
- IPv4 Address Assigned: 192.168.3.126
- MQTT library initialization successful.
- 'psoc6-mqtt-client19157' connecting to MQTT broker '192.168.3.180'...
- MQTT connection successful.
- MQTT client subscribed to the topic 'ledstatus' successfully.
- Press the user button (SW2) to publish "TURN ON"/"TURN OFF" on the topic 'ledstatus'...
再打一个mqtt调试工具。然后通过服务器上,成功看到了连接成功:
【测试】
我们使用mqttx订阅一个ledstatus的主题,按下开发板上的SW2按键,可以看到调试助手接收到了消息:
我们在MQTTx上发布ledstatus的TURN ON与TURN OFF,就可以实现远程关闭或开启开发板上的LED灯。
【总结】
CY8CKIT-062S2-AI提供了MQTT的示例,我们可以在他的工程上非常轻松的实现MQTT的订阅与发布,同时也可以远程接收到开发板的工作状态。
|