MQTT.fx客户端的安装及开始
下载:
- 官网:http://mqttfx.org
最新版本,但是需要安装许可证,只能免费试用三个月 - 百度网盘:
只有1.7的版本,无需许可证(推荐)Windows版(64位) https://pan.baidu.com/s/13v0ROf1dOzu2tXqmw3iBMg 提取码:r9f7
Windows版(32位) https://pan.baidu.com/s/1kqbh3_43SYR7of0PZw9SGA 提取码:kf9t
苹果电脑mac os https://pan.baidu.com/s/1nfE6_sSbyq5USNphlpKqwA 提取码:pa6v
- 官网:http://mqttfx.org
- 安装:
一直下一步就好。注意安装位置,安装完成后桌面上不会出现图标,需要到安装位置的文件夹下双击.exe文件打开
- 配置第一个工程:
- 订阅第一个主题:
使用ESP8266连接MQTT.fx客户端
- ESP8266的Arduino开发环境里有多个MQTT库,使用的库为主流的PubSubClient库
库的获取:
注意选择 作者名为Nick O’Leary的库
- 官网地址:https://pubsubclient.knolleary.net/
- GitHub:https://github.com/knolleary/pubsubclient/
- 百度网盘下载: https://pan.baidu.com/s/12MHGbdfiOdwOGip5RMSSEQ 提取码: sizy
- ArduinoIDE中自带的库管理器安装
- 库的安装教程:为Arduino IDE安装添加库 – 太极创客 (taichi-maker.com)
ESP8266程序:
/* # 程序目的:实现ESP8266连接MQTT服务器端()然也物理网 # 创建时间:2022-12-24 # 函数: ## wifi对象:WiFi.SSID();WiFi.localIP(); WiFi.macAddress(); WiFi.mode(WIFI_STA); ## mqttClient对象:mqttClient.setServer(网站, 端口号); mqttClient.connected(); mqttClient.loop(); mqttClient.connect(订阅者的ID.c_str()); mqttClient.state(); # 程序思路:串口初始化->连接wifi->设置MQTT服务器和端口号->连接MQTT服务器(自建函数)->loop函数中检查是否连接->保持客户端心跳 */ #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <ESP8266WiFiMulti.h> ESP8266WiFiMulti My_WifiMulti; //wifi连接对象 WiFiClient My_wifiClient; //Wifi对象 只有在建立mqttClient对象参数时候有用 PubSubClient mqttClient(My_wifiClient); //建立订阅者 const char* mqttServerSite = "test.ranye-iot.net"; //连接的服务器 注意:不能用string类型 //函数声明 int WiFi_Connect(); void My_connectMQTTServer(); void setup() { Serial.begin(9600); //设置ESP8266工作模式为无线终端模式 WiFi.mode(WIFI_STA); //wifi连接 WiFi_Connect(); //设置MQTT服务器和端口号 mqttClient.setServer(mqttServerSite, 1883); //连接MQTT服务器 My_connectMQTTServer(); } void loop() { if (mqttClient.connected()) //监测是否处于连接状态 { mqttClient.loop(); //为了保持客户端心跳 } else { My_connectMQTTServer(); } } /* 客户端连接服务器端函数 注意:需要提前建立mqttClient对象 */ void My_connectMQTTServer() { // 根据ESP8266的MAC地址生成客户端ID(避免与其它ESP8266的客户端ID重名) String clientID="ESP8266-" + WiFi.macAddress();//获取ESP8266的MAC地址 //连接MQTT服务器 if(mqttClient.connect(clientID.c_str()))//注意:这里的String.c_str是对字符串的处理 { Serial.println("MQTT Server Connected."); Serial.print("Server Address: "); Serial.println(mqttServerSite); Serial.print("ClientId:"); Serial.println(clientID); Serial.print("Client State:"); Serial.println(mqttClient.state()); } else { Serial.print("MQTT Server Connect Failed. Client State:"); Serial.println(mqttClient.state()); delay(3000); } } /* wifi连接函数 需引 ESP8266WiFiMulti.h 库 并建立ESP8266WiFiMulti对象 */ int WiFi_Connect() { My_WifiMulti.addAP("TPLINK2.4G", "@@@@@@@@"); // Wifi1 My_WifiMulti.addAP("username2", "password"); // Wifi2 My_WifiMulti.addAP("username3", "password"); // Wifi3 int i = 0; Serial.print("\n-------------Connected Time:-------------\n"); while (My_WifiMulti.run() != WL_CONNECTED) { i += 1; Serial.print(i); Serial.println("->"); delay(1000); if (i > 15) { Serial.print("\n-------------WIFI connected failed!-------------\n"); return 0;