Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
237 changes: 174 additions & 63 deletions examples/advancedExample/advancedExample.ino
Original file line number Diff line number Diff line change
@@ -1,81 +1,125 @@
#include <Arduino.h>

//#include "WifiConfig.h"
#define USE_ETHERNET false /* false: WiFi or true: lwIP_Etherner */
#define USE_STATIC false /* false: DHCP or true: STATIC */

#include <ESPNtpClient.h>

#ifdef ESP32
#include <WiFi.h>
#include <WiFi.h>

#undef USE_ETHERNET
#define USE_ETHERNET false
#else
#include <ESP8266WiFi.h>
#endif
#include <ESP8266WiFi.h>

#if (USE_ETHERNET)
#include <SPI.h>
#include <ENC28J60lwIP.h>

#define ETH_SS_PIN 4
ENC28J60lwIP eth(ETH_SS_PIN);
#endif
#endif //ESP32

#ifndef WIFI_CONFIG_H
#define YOUR_WIFI_SSID "YOUR_WIFI_SSID"
#define YOUR_WIFI_PASSWD "YOUR_WIFI_PASSWD"
#define YOUR_WIFI_SSID "YOUR_WIFI_SSID"
#define YOUR_WIFI_PASSWD "YOUR_WIFI_PASSWD"

// YOUR_ROUTER_SETTINGS
#if (USE_STATIC)
IPAddress apIP(192, 168, 1, 10);
IPAddress gwIP(192, 168, 1, 1);
IPAddress snIP(255, 255, 255, 0);
IPAddress dnIP1(192, 168, 1, 1);
IPAddress dnIP2( 8, 8, 8, 8);
#endif
#endif // !WIFI_CONFIG_H

#ifdef ESP32
#define ONBOARDLED 5 // Built in LED on some ESP-32 boards
#define ONBOARDLED 5 // Built in LED on some ESP-32 boards
#else
#define ONBOARDLED 2 // Built in LED on ESP-12/ESP-07
#define ONBOARDLED 2 // Built in LED on ESP-12/ESP-07
#endif

#define SHOW_TIME_PERIOD 1000
#define NTP_TIMEOUT 5000

const PROGMEM char* ntpServer = "pool.ntp.org";
bool wifiFirstConnected = false;
bool conFirstConnected = false;
bool conLastStatus = false;

boolean syncEventTriggered = false; // True if a time even has been triggered
NTPEvent_t ntpEvent; // Last triggered event
double offset;
double timedelay;

#ifdef ESP32
void onWifiEvent (system_event_id_t event, system_event_info_t info) {
#else
void onWifiEvent (WiFiEvent_t event) {
#endif
Serial.printf ("[WiFi-event] event: %d\n", event);
// weak functions to get connection status, reconnect and IP address of device
#if (USE_ETHERNET)
bool connectionStatus() {
return eth.connected ();
}

bool connectionReconnect() {
return true;
}

IPAddress getDeviceIP() {
return eth.localIP ();
}
#endif //USE_ETHERNET

switch (event) {
#ifdef ESP32
case SYSTEM_EVENT_STA_CONNECTED:
Serial.printf ("Connected to %s. Asking for IP address.\r\n", info.connected.ssid);
break;
case SYSTEM_EVENT_STA_GOT_IP:
Serial.printf ("Got IP: %s\r\n", IPAddress (info.got_ip.ip_info.ip.addr).toString ().c_str ());
Serial.printf ("Connected: %s\r\n", WiFi.status () == WL_CONNECTED ? "yes" : "no");
digitalWrite (ONBOARDLED, LOW); // Turn on LED
wifiFirstConnected = true;
break;
case SYSTEM_EVENT_STA_DISCONNECTED:
Serial.printf ("Disconnected from SSID: %s\n", info.disconnected.ssid);
Serial.printf ("Reason: %d\n", info.disconnected.reason);
digitalWrite (ONBOARDLED, HIGH); // Turn off LED
//NTP.stop(); // NTP sync can be disabled to avoid sync errors
WiFi.reconnect ();
break;
#else
case WIFI_EVENT_STAMODE_CONNECTED:
Serial.printf ("Connected to %s. Asking for IP address.\r\n", WiFi.BSSIDstr().c_str());
break;
case WIFI_EVENT_STAMODE_GOT_IP:
Serial.printf ("Got IP: %s\r\n", WiFi.localIP().toString().c_str ());
Serial.printf ("Connected: %s\r\n", WiFi.status () == WL_CONNECTED ? "yes" : "no");
digitalWrite (ONBOARDLED, LOW); // Turn on LED
wifiFirstConnected = true;
break;
case WIFI_EVENT_STAMODE_DISCONNECTED:
Serial.printf ("Disconnected from SSID: %s\n", WiFi.BSSIDstr ().c_str ());
//Serial.printf ("Reason: %d\n", info.disconnected.reason);
digitalWrite (ONBOARDLED, HIGH); // Turn off LED
//NTP.stop(); // NTP sync can be disabled to avoid sync errors
WiFi.reconnect ();
break;
#endif
default:
break;
}
}
#if (!USE_ETHERNET)
#ifdef ESP32
void onWifiEvent (system_event_id_t event, system_event_info_t info) {
#else
void onWifiEvent (WiFiEvent_t event) {
#endif
Serial.printf ("[WiFi-event] event: %d\n", event);

switch (event) {
#ifdef ESP32
case SYSTEM_EVENT_STA_CONNECTED:
Serial.printf ("Connected to %s. Asking for IP address.\r\n", info.connected.ssid);
break;
case SYSTEM_EVENT_STA_GOT_IP:
Serial.printf ("Got IP: %s\r\n", IPAddress (info.got_ip.ip_info.ip.addr).toString ().c_str ());
Serial.printf ("Connected: %s\r\n", WiFi.status () == WL_CONNECTED ? "yes" : "no");
digitalWrite (ONBOARDLED, LOW); // Turn on LED
conFirstConnected = true;
break;
case SYSTEM_EVENT_STA_DISCONNECTED:
Serial.printf ("Disconnected from SSID: %s\n", info.disconnected.ssid);
Serial.printf ("Reason: %d\n", info.disconnected.reason);
digitalWrite (ONBOARDLED, HIGH); // Turn off LED
//NTP.stop(); // NTP sync can be disabled to avoid sync errors
WiFi.reconnect ();
break;
#else
case WIFI_EVENT_STAMODE_CONNECTED:
Serial.printf ("Connected to %s. Asking for IP address.\r\n", WiFi.BSSIDstr().c_str());
break;
case WIFI_EVENT_STAMODE_GOT_IP:
Serial.printf ("Got IP: %s\r\n", WiFi.localIP().toString().c_str ());
Serial.printf ("Connected: %s\r\n", WiFi.status () == WL_CONNECTED ? "yes" : "no");
digitalWrite (ONBOARDLED, LOW); // Turn on LED
conFirstConnected = true;
break;
case WIFI_EVENT_STAMODE_DISCONNECTED:
Serial.printf ("Disconnected from SSID: %s\n", WiFi.BSSIDstr ().c_str ());
//Serial.printf ("Reason: %d\n", info.disconnected.reason);
digitalWrite (ONBOARDLED, HIGH); // Turn off LED
//NTP.stop(); // NTP sync can be disabled to avoid sync errors
WiFi.reconnect ();
break;
#endif
default:
break;
}
}

#endif //!USE_ETHERNET

void processSyncEvent (NTPEvent_t ntpEvent) {
switch (ntpEvent.event) {
Expand All @@ -92,9 +136,29 @@ void processSyncEvent (NTPEvent_t ntpEvent) {

void setup() {
Serial.begin (115200);
Serial.println ();
WiFi.mode (WIFI_STA);
WiFi.begin (YOUR_WIFI_SSID, YOUR_WIFI_PASSWD);
Serial.println ("\r\n");

#if (USE_ETHERNET)
SPI.begin();

eth.setDefault(); // use ethernet for default route

#if (USE_STATIC)
eth.config(apIP, gwIP, snIP, dnIP1, dnIP2);
#endif

eth.begin();

#else
WiFi.mode (WIFI_STA);

#if (USE_STATIC)
WiFi.config(apIP, gwIP, snIP, dnIP1, dnIP2);
#endif

WiFi.begin (YOUR_WIFI_SSID, YOUR_WIFI_PASSWD);

#endif //USE_ETHERNET

pinMode (ONBOARDLED, OUTPUT); // Onboard LED
digitalWrite (ONBOARDLED, HIGH); // Switch off LED
Expand All @@ -103,15 +167,21 @@ void setup() {
ntpEvent = event;
syncEventTriggered = true;
});
WiFi.onEvent (onWifiEvent);

#if (USE_ETHERNET)
conLastStatus = !eth.connected ();

#else
WiFi.onEvent (onWifiEvent);
#endif
}

void loop() {
static int i = 0;
static int last = 0;

if (wifiFirstConnected) {
wifiFirstConnected = false;
if (conFirstConnected) {
conFirstConnected = false;
NTP.setTimeZone (TZ_Europe_Madrid);
NTP.setInterval (600);
NTP.setNTPTimeout (NTP_TIMEOUT);
Expand All @@ -129,13 +199,54 @@ void loop() {
last = millis ();
Serial.print (i); Serial.print (" ");
Serial.print (NTP.getTimeDateStringUs ()); Serial.print (" ");
Serial.print ("WiFi is ");
Serial.print (WiFi.isConnected () ? "connected" : "not connected"); Serial.print (". ");

#if (USE_ETHERNET)
if(conLastStatus != eth.connected ())
{
conLastStatus = eth.connected ();

if(conLastStatus)
{
Serial.printf ("\r\nGot IP: %s\r\n", eth.localIP().toString().c_str ());

#if (USE_STATIC)
Serial.println ("Ethernet is connected [STATIC]");
#else
Serial.println ("Ethernet is connected [DHCP]");
#endif

digitalWrite (ONBOARDLED, LOW); // Turn on LED
conFirstConnected = true;
}
else
{
#if (USE_STATIC)
Serial.println ("Ethernet is not connected [STATIC]");
#else
Serial.println ("Ethernet is not connected [DHCP]");
#endif

digitalWrite (ONBOARDLED, HIGH); // Turn off LED
}
}

#else
Serial.print ("WiFi is ");
Serial.print (WiFi.isConnected () ? "connected " : "not connected ");

#if (USE_STATIC)
Serial.println ("[STATIC]");
#else
Serial.println ("[DHCP]");
#endif

#endif //USE_ETHERNET

Serial.print ("Uptime: ");
Serial.print (NTP.getUptimeString ()); Serial.print (" since ");
Serial.println (NTP.getTimeDateString (NTP.getFirstSyncUs ()));
Serial.printf ("Free heap: %u\n", ESP.getFreeHeap ());
i++;
}
delay (0);
}
}
74 changes: 67 additions & 7 deletions examples/basicExample/basicExample.ino
Original file line number Diff line number Diff line change
@@ -1,25 +1,85 @@
#include <Arduino.h>

//#include "WifiConfig.h"
#define USE_ETHERNET false /* false: WiFi or true: lwIP_Etherner */
#define USE_STATIC false /* false: DHCP or true: STATIC */

#include <ESPNtpClient.h>

#ifdef ESP32
#include <WiFi.h>
#include <WiFi.h>

#undef USE_ETHERNET
#define USE_ETHERNET false
#else
#include <ESP8266WiFi.h>
#endif
#include <ESP8266WiFi.h>

#if (USE_ETHERNET)
#include <SPI.h>
#include <ENC28J60lwIP.h>

#define ETH_SS_PIN 4
ENC28J60lwIP eth(ETH_SS_PIN);
#endif
#endif //ESP32

#ifndef WIFI_CONFIG_H
#define YOUR_WIFI_SSID "YOUR_WIFI_SSID"
#define YOUR_WIFI_PASSWD "YOUR_WIFI_PASSWD"
#define YOUR_WIFI_SSID "YOUR_WIFI_SSID"
#define YOUR_WIFI_PASSWD "YOUR_WIFI_PASSWD"

// YOUR_ROUTER_SETTINGS
#if (USE_STATIC)
IPAddress apIP(192, 168, 1, 10);
IPAddress gwIP(192, 168, 1, 1);
IPAddress snIP(255, 255, 255, 0);
IPAddress dnIP1(192, 168, 1, 1);
IPAddress dnIP2( 8, 8, 8, 8);
#endif
#endif // !WIFI_CONFIG_H

#define SHOW_TIME_PERIOD 1000

// weak functions to get connection status, reconnect and IP address of device
#if (USE_ETHERNET)
bool connectionStatus() {
return eth.connected ();
}

bool connectionReconnect() {
return true;
}

IPAddress getDeviceIP() {
return eth.localIP ();
}
#endif //USE_ETHERNET

void setup() {
Serial.begin (115200);
Serial.println ();
WiFi.begin (YOUR_WIFI_SSID, YOUR_WIFI_PASSWD);

#if (USE_ETHERNET)
SPI.begin();

eth.setDefault(); // use ethernet for default route

#if (USE_STATIC)
eth.config(apIP, gwIP, snIP, dnIP1, dnIP2);
#endif

eth.begin();

#else
WiFi.mode (WIFI_STA);

#if (USE_STATIC)
WiFi.config(apIP, gwIP, snIP, dnIP1, dnIP2);
#endif

WiFi.begin (YOUR_WIFI_SSID, YOUR_WIFI_PASSWD);

#endif //USE_ETHERNET

NTP.setTimeZone (TZ_Etc_UTC);
NTP.begin ();
}
Expand All @@ -31,4 +91,4 @@ void loop() {
last = millis ();
Serial.println (NTP.getTimeDateStringUs ());
}
}
}
Loading