esp8266的Arduino之MQTT客户端、Websocket客户端demo

一、参考连接

https://github.com/tuanpmt/ESP8266MQTTClient

二、食用方法

1、打开arduino,然后点击项目--加载库--添加.zip库,找到你下载的zip包,然后选中即可,这里需要更新为V1.0.4版本,在项目--加载库--管理库中,找到你刚刚安装的库,选择类型--已安装,目前下载安装的是V1.0.5版本,有点问题,需要安装V1.0.4版本的

2、解压刚刚的zip文件,找到examples里面的MQTTClient打开里面.ino文件,然后这里需要进行更改一下,添加wifi连接的部分代码,设置为你自己的Wifi,还有最下面的mqtt服务器的ip和port也要更改,参考代码如下:

//https://github.com/tuanpmt/ESP8266MQTTClient
#include <ESP8266MQTTClient.h>
#include <ESP8266WiFi.h>
MQTTClient mqtt;

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);     //设置esp8266 工作模式
  WiFi.begin("WIFI", "PWD");
  WiFi.setAutoConnect(true);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  //topic, data, data is continuing
  mqtt.onData([](String topic, String data, bool cont) {
    Serial.printf("Data received, topic: %s, data: %s\r\n", topic.c_str(), data.c_str());
    //mqtt.unSubscribe("/qos0");
  });

  mqtt.onSubscribe([](int sub_id) {
    Serial.printf("Subscribe topic id: %d ok\r\n", sub_id);
    mqtt.publish("esp32", "GONEPOO", 0, 0);
  });

  mqtt.onConnect([]() {
    Serial.printf("\r\nMQTT: Connected\r\n");
    Serial.printf("Subscribe id: %d\r\n", mqtt.subscribe("esp32", 0));
    //mqtt.subscribe("esp32", 1);
    //mqtt.subscribe("esp32", 2);
  });

  mqtt.begin("mqtt://175.175.175.175:1883");
  //  mqtt.begin("mqtt://test.mosquitto.org:1883", {.lwtTopic = "hello", .lwtMsg = "offline", .lwtQos = 0, .lwtRetain = 0});
  //  mqtt.begin("mqtt://user:pass@mosquito.org:1883");
  //  mqtt.begin("mqtt://user:pass@mosquito.org:1883#clientId");
}

void loop() {
  mqtt.handle();
}

3、刷入程序后,在工具--串口监视器里面可以看到已经连上了mqtt服务器了,用paho订阅测试一下就好了,paho的下载地址如下http://www.eclipse.org/paho/components/tool/

4、同理,websocket客户端的代码也大同小异,只需要更改一下,刷入即可,需要更改的是下面的websocket的ip和端口号,参考代码如下:

//https://github.com/tuanpmt/ESP8266MQTTClient
#include <ESP8266MQTTClient.h>
#include <ESP8266WiFi.h>
MQTTClient mqtt;

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);     //设置esp8266 工作模式
  WiFi.begin("WIFI", "PWD");
  WiFi.setAutoConnect(true);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  //topic, data, data is continuing
  mqtt.onData([](String topic, String data, bool cont) {
    Serial.printf("Data received, topic: %s, data: %s\r\n", topic.c_str(), data.c_str());
    //mqtt.unSubscribe("/qos0");
  });

  mqtt.onSubscribe([](int sub_id) {
    Serial.printf("Subscribe topic id: %d ok\r\n", sub_id);
    mqtt.publish("esp32", "gaojing", 0, 0);
  });
  mqtt.onConnect([]() {
    Serial.printf("\r\nMQTT: Connected\r\n");
    Serial.printf("Subscribe id: %d\r\n", mqtt.subscribe("esp32", 0));
    //mqtt.subscribe("esp8266", 1);
    //mqtt.subscribe("arduino", 2);
  });

  mqtt.begin("ws://175.175.175.175:9001");
  //mqtt.begin("ws://test.mosquitto.org:8080", {.lwtTopic = "hello", .lwtMsg = "offline", .lwtQos = 0, .lwtRetain = 0});
  //mqtt.begin("ws://user:pass@mosquito.org:8080");
  //mqtt.begin("ws://user:pass@mosquito.org:8080#clientId");
}

void loop() {
  mqtt.handle();
}

三、最后感言

我只是代码的搬运工,感谢那些分享代码的各位大神

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在ESP8266上安装MQTT客户,请按照以下步骤进行操作: 1. 下载并安装Arduino IDE。 2. 在Arduino IDE中安装ESP8266的开发板支持。您可以按照此教程进行操作:https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/ 3. 在Arduino IDE中安装PubSubClient库。您可以通过“工具”菜单中的“库管理器”选项来安装它。 4. 在您的Arduino代码中包含PubSubClient库,并按照以下示例代码进行编写: #include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; const char* mqtt_server = "your_MQTT_SERVER"; WiFiClient espClient; PubSubClient client(espClient); void setup() { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } void reconnect() { while (!client.connected()) { Serial.println("Connecting to MQTT..."); if (client.connect("ESP8266Client")) { Serial.println("Connected to MQTT"); client.subscribe("test/topic"); } else { Serial.print("Failed with state "); Serial.print(client.state()); delay(2000); } } } 5. 将您的WiFi SSID、密码和MQTT服务器信息替换为您自己的信息。 6. 使用Arduino IDE将代码上传到ESP8266。 7. 在MQTT服务器上创建一个名为“test/topic”的主题,然后发送一条消息到该主题。您应该能够在串行监视器中看到该消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值