From 3286790428f46cd9bc416b6032ff97bd02f95cf3 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Mon, 1 Oct 2018 21:23:13 -0400 Subject: [PATCH] WiFi: improve WiFiClient(Basic) examples WiFiClient no longer depends on now-defunct data.sparkfun.com service, but uses a TCP "quote of the day" service instead. fixes #4088 --- .../examples/WiFiClient/WiFiClient.ino | 56 +++++++------------ .../WiFiClientBasic/WiFiClientBasic.ino | 25 +++++---- 2 files changed, 36 insertions(+), 45 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino b/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino index c0e3ee6d73..d3cc2fe7ad 100644 --- a/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino +++ b/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino @@ -1,9 +1,6 @@ /* - This sketch sends data via HTTP GET requests to data.sparkfun.com service. - - You need to get streamId and privateKey at data.sparkfun.com and paste them - below. Or just customize this script to talk to other HTTP servers. - + This sketch establishes a TCP connection to a "quote of the day" service. + It sends a "hello" message, and then prints received data. */ #include @@ -11,9 +8,8 @@ const char* ssid = "your-ssid"; const char* password = "your-password"; -const char* host = "data.sparkfun.com"; -const char* streamId = "...................."; -const char* privateKey = "...................."; +const char* host = "djxmmx.net"; +const uint16_t port = 17; void setup() { Serial.begin(115200); @@ -43,54 +39,44 @@ void setup() { Serial.println(WiFi.localIP()); } -int value = 0; - void loop() { - delay(5000); - ++value; - Serial.print("connecting to "); - Serial.println(host); + Serial.print(host); + Serial.print(':'); + Serial.println(port); // Use WiFiClient class to create TCP connections WiFiClient client; - const int httpPort = 80; - if (!client.connect(host, httpPort)) { + if (!client.connect(host, port)) { Serial.println("connection failed"); + delay(5000); return; } - // We now create a URI for the request - String url = "/input/"; - url += streamId; - url += "?private_key="; - url += privateKey; - url += "&value="; - url += value; - - Serial.print("Requesting URL: "); - Serial.println(url); - - // This will send the request to the server - client.print(String("GET ") + url + " HTTP/1.1\r\n" + - "Host: " + host + "\r\n" + - "Connection: close\r\n\r\n"); + // This will send a string to the server + Serial.println("sending data to server"); + client.println("hello from ESP8266"); unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); + delay(60000); return; } } // Read all the lines of the reply from server and print them to Serial - while (client.available() || client.connected()) { - String line = client.readStringUntil('\r'); - Serial.print(line); + Serial.println("receiving from remote server"); + while (client.available()) { + char ch = static_cast(client.read()); + Serial.print(ch); } + // Close the connection Serial.println(); Serial.println("closing connection"); -} + client.stop(); + delay(300000); // execute once every 5 minutes, don't flood remote service +} diff --git a/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino b/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino index f2a8012ce4..508b069095 100644 --- a/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino +++ b/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino @@ -1,11 +1,18 @@ /* - This sketch sends a message to a TCP server - + This sketch sends a string to a TCP server, and prints a one-line response. + You must run a TCP server in your local network. + For example, on Linux you can use this command: nc -v -l 3000 */ #include #include +const char* ssid = "your-ssid"; +const char* password = "your-password"; + +const char* host = "192.168.1.1"; +const uint16_t port = 3000; + ESP8266WiFiMulti WiFiMulti; void setup() { @@ -14,7 +21,7 @@ void setup() { // We start by connecting to a WiFi network WiFi.mode(WIFI_STA); - WiFiMulti.addAP("SSID", "passpasspass"); + WiFiMulti.addAP(ssid, password); Serial.println(); Serial.println(); @@ -35,13 +42,10 @@ void setup() { void loop() { - const uint16_t port = 80; - const char * host = "192.168.1.1"; // ip or dns - - - Serial.print("connecting to "); - Serial.println(host); + Serial.print(host); + Serial.print(':'); + Serial.println(port); // Use WiFiClient class to create TCP connections WiFiClient client; @@ -54,9 +58,10 @@ void loop() { } // This will send the request to the server - client.println("Send this data to server"); + client.println("hello from ESP8266"); //read back one line from server + Serial.println("receiving from remote server"); String line = client.readStringUntil('\r'); Serial.println(line);