基于Domoticz智能家居系统(十四)用ESP8266做MQTT客户端实验

用ESP8266做MQTT客户端

本文主要是以ESP8266对接Domoticz服务器,做MQTT的简单客户端连接验证实验,以便后面作为MQTT和nRF24的无线网关。
IDE使用Arduino。

一些前期的准备

首先,准备ESP8266模块,并安装Arduino IDE:

  1. ESP8266模块可以在某宝上购买,选择这个模块的原因是,它自带了usb转串口芯片,本文中将会使用Arduino通过USB转串口的方式来直接烧录固件ROM;另外这个模块把引脚都引出来做成双排针接口,方便实验。某宝上大概有两类USB转串口芯片的ESP8266,一类是CH340芯片的,一类是CP2102芯片的,在价格上后者贵几块钱,性能上不知道有什么差别,笔者用的是后者;
  2. 下载并安装Arduino IDE,之所以选择Arduino,是因为后面我们需要使用基于Arduino的许多库例如MySensors进行开发。本文对该软件的只做个大概的介绍说明:
    下载地址:https://www.arduino.cc/en/Main/Software?setlang=cn
    笔者使用的是当前最新稳定版 ARDUINO 1.8.8
    电脑操作系统为win7。

安装很简单,不赘述。
在安装过程中它可能会装一些驱动程序。
关于安装设置这个软件,可以参考:Arduino环境下开发NodeMCU(ESP8266)

安装完成后,运行,界面如下:
在这里插入图片描述

下面我们需要对它进行一些基本设置,以支持ESP8266模块开发板。

第一步 设置ESP8266开发板的BSP的搜索引擎链接

在菜单栏找 “文件”=>“首选项”=》“设置”选项卡,在那个“附加开发板管理器网址”那里填入:

http://wechat.doit.am/package_esp8266com_index.json

或者

http://arduino.esp8266.com/stable/package_esp8266com_index.json

第一个链接只能支持到 2.0.0版,第二个链接可以支持到2.5.0版,笔者选用2.5.0版本。

如图所示:
在这里插入图片描述
然后,点“好”。

第二步 下载安装ESP8266开发板支持包

“工具”=》“开发板:Arduion/Genuino Uno”=》“开发板管理器”,如图:
在这里插入图片描述
在这里插入图片描述
可以看到“正在下载平台索引”,等它下载完,正常情况下是会顺利下载完成的,如图所示:

如果这一步出错,会显示:
在这里插入图片描述
如果尝试几次出错的话,那么错误的原因是这个地址在你的网络中被墙了,需要设置番羽墻代理(怎么越墙请自行搜索。可以用ssr代理),在菜单栏找 “文件”=>“首选项”=》“网络”选项卡:
在这里插入图片描述
选“人工代理设置”,选中“SOCKS”,
主机名填入你的代理服务器IP地址,端口号填入代理服务器指定的代理端口号。

本人使用的是ssr,在ssr上设置好代理功能,在电脑本机上。于是,可以设置如下:
在这里插入图片描述
然后再回到“工具”=》“开发板:Arduion/Genuino Uno”=》“开发板管理器”,可以看到能正常下载了。

下载完成后,在搜索栏搜ESP8266:
在这里插入图片描述

可以看到搜到了这个开发板,目前这个BSD最新版本是2.5.0。
点版号后面的“安装”,显示正在安装…。
可以看到,它下载相关的代码了,但是速度相当的慢,这没有办法,这要看你的网络连接这个esp8266.

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在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”的主题,然后发送一条消息到该主题。您应该能够在串行监视器中看到该消息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值