socket.onmessage没有接收到服务器消息_通过MQTT消息远程开关灯

通过MQTT消息远程开关灯

5c7d2b3b7ccfed64a2b1b25473a1b36c.png

在读这篇文章之前,请先阅读前一篇关于NodeMcu的安装和配置的文章,在进行本篇文章之前,请先通过项目-》加载库-》管理库安装本篇文章需要用到的两个库。

ArduinoJson

这个库主要用于处理字符串和json格式之间的转换,因为我们后期可能希望我们单片机可以和网页或者其他平台通讯,因此我们采用了json格式来做数据交换。

PubSubClient

主要用于处理和MQTT服务器之间的通讯,订阅,发布消息等等。

安装好上面的库之后,按照前面文章所述配置好开发板,然后通过数据线联通好开发板。下面我们就要开始上代码了。

首先导入刚才的库。

#include

#include

#include

然后配置wifi参数,MQTT服务器的一些参数。

int pinLED = D2;

const char* ssid = "akinggw";//连接的路由器的名字

const char* password = "akinggw12";//连接的路由器的密码

const char* mqtt_server = "mq.tongxinmao.com";//服务器的地址

const int port=18830;//服务器端口号

WiFiClient espClient;

PubSubClient client(espClient);

连接wifi的代码:

void setup_wifi() {//自动连WIFI接入网络

delay(10);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.println("connectiong...");

}

Serial.println("connectied.");

}

连接Mqtt服务器的代码:

void reconnect() {//等待,直到连接上服务器

while (!client.connected()) {//如果没有连接上

if (client.connect("biloba")+random(999999999)) {//接入时的用户名,尽量取一个很不常用的用户名

Serial.println("mqtt server connected.");

client.subscribe("AKINGLED");//接收外来的数据时的intopic

Serial.println("message LED subscribe success.");

} else {

Serial.println("connect mqtt server failed, rc=");//连接失败

Serial.println(client.state());//重新连接

Serial.println(" try again connect mqtt server in 5 seconds");//延时5秒后重新连接

delay(5000);

}

}

}

下面我们就开始打开串口,配置LED为输出状态,连接wifi。

void setup() {//初始化程序,只运行一遍

pinMode(BUILTIN_LED, OUTPUT); // initialize onboard LED as output

Serial.begin(9600);//设置串口波特率(与烧写用波特率不是一个概念)

setup_wifi();//自动连WIFI接入网络

client.setServer(mqtt_server, port);//端口号

client.setCallback(callback); //用于接收服务器接收的数据

}

代码还是非常简单的,详细的代码请访问我的Gitee进行下载:

https://gitee.com/akinggw/MIVMS

29c0ff7b8a11f08a77025545ff0d4426.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值