ESP实现MQTT协议同通讯,超好用版库

  将原有的mqtt库二次封装了一下;变得简洁好用

   (BUG已修复,更新日期:2024-05-20)

目录

第一部分:库的安装

第一步:安装库文件

第二步:下载BigHomewrokMqtt库

第三步:使用arduino IDE添加zip库

第四步:将BigHomewrokMqtt导入项目中

第二部分:库函数说明

setUp_func函数:初始化内置函数

loop_func函数:循环内置函数

Publish函数:发布消息函数

Subscribe函数:订阅消息函数

第三部分:示例


第一部分:库的安装

第一步:安装库文件

  • ESP8266WiFi
  • PubSubClient

第二步:下载BigHomewrokMqtt库

链接:https://pan.baidu.com/s/13kEWACxfpVbglJCJfKmMmQ?pwd=7iow 
提取码:7iow

第三步:使用arduino IDE添加zip库

第四步:将BigHomewrokMqtt导入项目中

#include "BigHomewrokMqtt_ycsAndlyf.h"

char* ssid = "天怀后援团";
char* password = "buct721721";
char* mqtt_server = "192.168.31.84";
String ID = "ycs_ESP";
void setup(){
  Serial.begin(115200);
  setUp_func(ssid,password,mqtt_server,callback,ID);
  Publish("ycs_ESP_connect","1");
  pinMode(0, INPUT);
}
void callback(char* topic, byte* payload, unsigned int length){

}
void loop(){
  loop_func(ID);
  if(!digitalRead(0)){
    Publish("ycs_ESP_test","678");
    while (!digitalRead(0));
  }
}

第二部分:库函数说明

 注意:该库内置print,若初始化串口后,会自动打印必要信息

void setUp_func(char* ssid, char* password, char* mqtt_server,void (*callback)(char*, byte*, unsigned int), String clientId);
void loop_func(String clientId);
void Publish(char *topic,char *msg);
void Subscribe(char *topic);

setUp_func函数:初始化内置函数

      该函数应加在项目文件setup函数中

  •  ssid:WIFI名称
  • passwrod:WIFI密码
  • mqtt_server:服务器地址
  • callbanck:订阅功能回调函数
  • clientId:该板子的ID(可在服务器端查看)

loop_func函数:循环内置函数

        该函数应加在项目文件setup函数中

  • clientId:该板子的ID(可在服务器端查看)

Publish函数:发布消息函数

  • topic:发布消息的主题
  • msg:发布消息的内容

Subscribe函数:订阅消息函数

  • topic:订阅消息的主题

第三部分:示例

#include "BigHomewrokMqtt.h"

char* ssid = "天怀后援团";
char* password = "buct721721";
char* mqtt_server = "192.168.31.84";
String ID = "ycs_ESP";
void setup(){
  Serial.begin(115200);
  setUp_func(ssid,password,mqtt_server,callback,ID);
  Publish("ycs_ESP_connect","1");// 注意若不传入char型指针,应为双引号
  Subscribe("outTopic");
  pinMode(0, INPUT);
}
void callback(char* topic, byte* payload, unsigned int length){
  Serial.print(topic);
  Serial.print(":");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }//payload是具体的消息,比如Hello World;length是消息长度;payload是个字符串,因此这里将字符串的每个字符依次打印出来
  Serial.println();
}
void loop(){
  loop_func(ID);
  if(!digitalRead(0)){
    Publish("ycs_ESP_test","678");
    while (!digitalRead(0));
  }
}

原创不易,感谢支持!

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值