mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
* Disable WiFi at boot by default * +define WIFI_IS_OFF_AT_BOOT * remove now useless example * mv enableWiFiAtBootTime() to core_esp8266_features.h * sync with master * per @earlephilhower review: a file was missing * doc * WiFi persistence is now false by default * fix doc * ditto * doc: remove sphinx warnings (fix links and formatting) * fix link name * fix doc * legacy: restore persistence * undeprecate preinit() * move force modem up to when mode has changed (per @mcspr review) * do not wake up from sleep when mode if OFF * fix doc per review
96 lines
2.2 KiB
C++
96 lines
2.2 KiB
C++
/*
|
|
This sketch establishes a TCP connection to a "quote of the day" service.
|
|
It sends a "hello" message, and then prints received data.
|
|
*/
|
|
|
|
#include <SPI.h>
|
|
#include <W5500lwIP.h>
|
|
//or #include <W5100lwIP.h>
|
|
//or #include <ENC28J60lwIP.h>
|
|
|
|
#include <WiFiClient.h> // WiFiClient (-> TCPClient)
|
|
|
|
const char* host = "djxmmx.net";
|
|
const uint16_t port = 17;
|
|
|
|
using TCPClient = WiFiClient;
|
|
|
|
#define CSPIN 16 // wemos/lolin/nodemcu D0
|
|
Wiznet5500lwIP eth(CSPIN);
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
|
|
SPI.begin();
|
|
SPI.setClockDivider(SPI_CLOCK_DIV4); // 4 MHz?
|
|
SPI.setBitOrder(MSBFIRST);
|
|
SPI.setDataMode(SPI_MODE0);
|
|
eth.setDefault(); // use ethernet for default route
|
|
if (!eth.begin()) {
|
|
Serial.println("ethernet hardware not found ... sleeping");
|
|
while (1) {
|
|
delay(1000);
|
|
}
|
|
} else {
|
|
Serial.print("connecting ethernet");
|
|
while (!eth.connected()) {
|
|
Serial.print(".");
|
|
delay(1000);
|
|
}
|
|
}
|
|
Serial.println();
|
|
Serial.print("ethernet IP address: ");
|
|
Serial.println(eth.localIP());
|
|
}
|
|
|
|
void loop() {
|
|
static bool wait = false;
|
|
|
|
Serial.print("connecting to ");
|
|
Serial.print(host);
|
|
Serial.print(':');
|
|
Serial.println(port);
|
|
|
|
TCPClient client;
|
|
if (!client.connect(host, port)) {
|
|
Serial.println("connection failed");
|
|
delay(5000);
|
|
return;
|
|
}
|
|
|
|
// This will send a string to the server
|
|
Serial.println("sending data to server");
|
|
if (client.connected()) {
|
|
client.println("hello from ESP8266");
|
|
}
|
|
|
|
// wait for data to be available
|
|
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
|
|
Serial.println("receiving from remote server");
|
|
// not testing 'client.connected()' since we do not need to send data here
|
|
while (client.available()) {
|
|
char ch = static_cast<char>(client.read());
|
|
Serial.print(ch);
|
|
}
|
|
|
|
// Close the connection
|
|
Serial.println();
|
|
Serial.println("closing connection");
|
|
client.stop();
|
|
|
|
if (wait) {
|
|
delay(300000); // execute once every 5 minutes, don't flood remote service
|
|
}
|
|
wait = true;
|
|
}
|