mirror of https://github.com/ropg/ezTime
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.8 KiB
96 lines
2.8 KiB
/*
|
|
* Note: to use an ethernet shield, You must also set #define EZTIME_ETHERNET in $sketch_dir/libraries/ezTime/src/ezTime.h
|
|
*
|
|
* Also note that all ezTime examples can be used with an Ethernet shield if you just replace the beginning of the sketch
|
|
* with the beginning of this one.
|
|
*/
|
|
|
|
#include <ezTime.h>
|
|
|
|
#include <Ethernet.h>
|
|
|
|
// Enter a MAC address for your controller below. (Or use address below, just make sure it's unique on your network)
|
|
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
|
|
#define MAC_ADDRESS { 0xBA, 0xDB, 0xAD, 0xC0, 0xFF, 0xEE }
|
|
|
|
void setup() {
|
|
|
|
// Open serial communications and wait for port to open:
|
|
Serial.begin(115200);
|
|
while (!Serial) { ; } // wait for serial port to connect. Needed for native USB port only
|
|
Serial.println();
|
|
|
|
// You can use Ethernet.init(pin) to configure the CS pin
|
|
//Ethernet.init(10); // Most Arduino shields (default if unspecified)
|
|
//Ethernet.init(5); // MKR ETH shield
|
|
//Ethernet.init(0); // Teensy 2.0
|
|
//Ethernet.init(20); // Teensy++ 2.0
|
|
//Ethernet.init(15); // ESP8266 with Adafruit Featherwing Ethernet
|
|
//Ethernet.init(33); // ESP32 with Adafruit Featherwing Ethernet
|
|
|
|
Serial.print(F("Ethernet connection ... "));
|
|
byte mac [] = MAC_ADDRESS;
|
|
if (Ethernet.begin(mac) == 0) {
|
|
Serial.println(F("failed. (Reset to retry.)"));
|
|
while (true) { ; }; // Hang
|
|
} else {
|
|
Serial.print(F("got DHCP IP: "));
|
|
Serial.println(Ethernet.localIP());
|
|
}
|
|
// give the Ethernet shield a second to initialize:
|
|
delay(1000);
|
|
|
|
// OK, we're online... So the part above here is what you swap in before the waitForSync() in the other examples...
|
|
|
|
|
|
// Wait for ezTime to get its time synchronized
|
|
waitForSync();
|
|
|
|
Serial.println();
|
|
Serial.println("UTC: " + UTC.dateTime());
|
|
|
|
Timezone myTZ;
|
|
|
|
// Provide official timezone names
|
|
// https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
myTZ.setLocation(F("Pacific/Auckland"));
|
|
Serial.print(F("New Zealand: "));
|
|
Serial.println(myTZ.dateTime());
|
|
|
|
// Wait a little bit to not trigger DDoS protection on server
|
|
// See https://github.com/ropg/ezTime#timezonedropnl
|
|
delay(5000);
|
|
|
|
// Or country codes for countries that do not span multiple timezones
|
|
myTZ.setLocation(F("de"));
|
|
Serial.print(F("Germany: "));
|
|
Serial.println(myTZ.dateTime());
|
|
|
|
// Same as above
|
|
delay(5000);
|
|
|
|
// See if local time can be obtained (does not work in countries that span multiple timezones)
|
|
Serial.print(F("Local (GeoIP): "));
|
|
if (myTZ.setLocation()) {
|
|
Serial.println(myTZ.dateTime());
|
|
} else {
|
|
Serial.println(errorString());
|
|
}
|
|
|
|
Serial.println();
|
|
Serial.println(F("Now ezTime will show an NTP sync every 60 seconds"));
|
|
|
|
// Set NTP polling interval to 60 seconds. Way too often, but good for demonstration purposes.
|
|
setInterval(60);
|
|
|
|
// Make ezTime show us what it is doing
|
|
setDebug(INFO);
|
|
|
|
}
|
|
|
|
void loop() {
|
|
|
|
events();
|
|
|
|
}
|