Нужна помощь в подключении SparkFun ESP8266 к URL - PullRequest
1 голос
/ 27 марта 2019

Я пытался получить фрагмент кода, который отправляет текстовое сообщение на телефон при посещении сайта апплета IFTTT , я следовал этому учебнику относительно само текстовое сообщение и это для щита 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 Ответ

1 голос
/ 30 марта 2019

Во-первых, для функции 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());
}
...