我知道,我的问题可能非常简单,但我已经三天都无法弄清楚这些东西了。
我需要通过ESP8266模块从我的Arduino nano向MQTT服务器发送一些请求。我找到了这个任务的好库 - PubSubClient.h。以下是如何执行此操作的示例:
#include <Ethernet.h>
#include <PubSubClient.h>
// Update these with values suitable for your network.
byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(172, 16, 0, 100);
IPAddress server(172, 16, 0, 2);
void callback(char* topic, byte* payload, unsigned int length) {
// handle message arrived
}
EthernetClient ethClient;
PubSubClient client(server, 1883, callback, ethClient);
但我不使用以太网屏蔽。我使用连接到数字端口的ESP8266并使用wifi创建SoftwareSerial端口来传输数据:
SoftwareSerial espSerial(8,7);
我不能同时使用SoftwareSerial端口和PubSubClient。 当我这样尝试时: PubSubClient客户端(服务器,1883,0,espSerial); 我收到错误:
no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, int, SoftwareSerial&)'
我一直试图在互联网上找到解决方案,但我没有成功。请帮我解决这个问题。我应该做些什么? 我为我糟糕的英语道歉
答案 0 :(得分:2)
pubsubclient不支持softwareSerial库。您可以使用WiFiEsp库在SoftwareSerial上使用ESP8266和PubSubClient库。
答案 1 :(得分:1)
虽然PubSubClient库列出了它支持的硬件website,但对ESP8266的引用意味着该库实际上在ESP8266上运行,而不是在通过串口连接到ESP8266的Arduino上运行。
正如@zipzit所提到的,你可以一起取消Arduino,只需使用ESP8266,具体取决于你拥有的版本,它可能有几乎与Arduino一样多的引脚。
否则您只需通过串行链路将主题和值发送到ESP8266,然后使用Lua和MQTT library固件中的内置NodeMCU发送MQTT消息。