需要帮助以将SparkFun ESP8266连接到URL

时间:2019-03-27 14:27:55

标签: arduino wifi esp8266

我一直在尝试获取一段代码,用于在访问IFTTT小应用程序站点时将文本消息发送到电话,我一直在关注this tutorial关于文本消息本身以及this one代表WiFi防护罩,可以连接到网页和HTTP请求。

基本上,我的问题是它可以连接到任何类似google.com的“简单”网站,但不能连接“较长/复杂”的链接。我想知道您是否会知道我将如何解决该问题并使它正常工作。我尝试仅使用加号将“简单”链接和所需链接的其余部分组合在一起,但这也不起作用。

#include <SoftwareSerial.h> // Include software serial library, ESP8266 library dependency
#include <SparkFunESP8266WiFi.h> // Include the ESP8266 AT library

void setup() {
  Serial.begin(9600);
String url = "/trigger/ESP/with/key/dwSukgpyQsyampQMkXXXX";
Serial.print (url);
  // put your setup code here, to run once:
if (esp8266.begin()) // Initialize the ESP8266 and check it's return status
    Serial.println("ESP8266 ready to go!"); // Communication and setup successful
else
    Serial.println("Unable to communicate with the ESP8266 :(");

int retVal;
retVal = esp8266.connect("network", "networkpassword");
if (retVal < 0)
{
    Serial.print(F("Error connecting: "));
    Serial.println(retVal);
}

IPAddress myIP = esp8266.localIP(); // Get the ESP8266's local IP
Serial.print(F("My IP is: ")); Serial.println(myIP);

ESP8266Client client; // Create a client object

retVal = client.connect("maker.ifttt.com" + url, 80); // Connect to sparkfun (HTTP port)
if (retVal > 0)
    Serial.println("Successfully connected!");

client.print("GET / HTTP/1.1\nHost: maker.ifttt.com" + url + "\nConnection: close\n\n");

while (client.available()) // While there's data available
    Serial.write(client.read()); // Read it and print to serial
}

void loop() {
  // put your main code here, to run repeatedly:

}

谢谢,非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

首先, connect 函数需要连接服务器(名称)。在您的情况下:maker.ifttt.com。 .com之后的所有内容都会使连接失败(因为它不是正确的服务器名)。

第二:此功能需要一个IP地址(例如54.175.81.255)或一个字符数组。您无法串联。

建立连接后,您可以使用 print 功能向该网站的特定部分发送和接收数据。 另外,在此函数中无法连接。 幸运的是,有一个String类,我们可以轻松地将其连接起来。

因此,在创建客户端对象(ESP8266Client client;)之后,可能是以下代码:

String url;
char host[] = "maker.ifttt.com";

retVal = client.connect(host, 80);
if (retVal > 0) {
  Serial.println("Successfully connected!");
}

url = "GET / HTTP/1.1\r\nHost: ";
url += host;  
url += "/trigger/ESP/with/key/dwSukgpyQsyampQMkXXXX";           
url += "\nConnection: close\n\n";
client.print(url);


while (client.connected() && !client.available());
while (client.available()) {
  Serial.write(client.read());
}