Rovnaká téma, ale iný mikrokontrolér. ESP8266 je medzi užívateľmi Arduina obľúbený vďaka možnosti programovať ho priamo cez IDE. Na spojenie s NTP serverom nájdete veľa príkladov, ale opäť sa už nik nenamáha s prevodom času do letného a zimného času (prípadne to urobí zle s pomocou bulharskej konštanty). Konverziu času ľahko urobíte pomocou dvoch knižníc.
A použije sa to takto. Tu sú len úryvky podstatného kódu, zvyšok nájdete na serveri GitHub a v popise článku.
Kód: Vybrať všetko
#include <TimeLib.h>
#include <Timezone.h>
...
//Central European Time (Frankfurt, Paris)
TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120}; //Central European Summer Time
TimeChangeRule CET = {"CET", Last, Sun, Oct, 3, 60}; //Central European Standard Time
Timezone CE(CEST, CET);
...
// now convert NTP time into everyday time:
Serial.print("Unix time = ");
// Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
const unsigned long seventyYears = 2208988800UL;
// subtract seventy years:
unsigned long epoch = secsSince1900 - seventyYears;
// print Unix time:
Serial.println(epoch);
TimeChangeRule *tcr;
time_t utc;
utc = epoch;
printTime(utc, "UTC", "Universal Coordinated Time");
printTime(CE.toLocal(utc, &tcr), tcr -> abbrev, "Bratislava");
Popis
http://www.arduinoslovakia.eu/blog/2017 ... -letny-cas
Zdroják
https://github.com/RoboUlbricht/arduino ... ntp_client