User manual
3.2 | Zegar internetowy
Ten projekt wykorzystuje wiedzę zdobytą w poprzednich rozdziałach, aby
spowodować, że NanoESP będzie samodzielnie pobierał informacje ze strony
internetowej. Konkretnie program pobiera aktualną godzinę ze specjalnie
utworzonej w tym celu strony i przedstawia realizowany przez bibliotekę
wewnętrzny zegar pozwalający na podawanie dokładnego czasu. Czas podawany
jest na szeregowym monitorze. Do budowy potrzebna jest tylko karta.
Program
Podczas gdy poprzedni program musiał być w większości obsługiwany ręcznie,
ten pracuje w znacznym stopniu autonomicznie. Całkowicie samodzielnie kontroler
łączy się ze stroną internetową:
http://chronic.herokuapp.com/
Poprzez URL można ustawić różne systemy i strefy czasowe. Aktualny,
obowiązujący zimą w Niemczaech czas jest sprawdzany przez URL
http://chronic.herokuapp.com/utc/in-one-hour
. Dlatego w wywołaniu wyjaśnionej później funkcji
getTime() jako drugi parametr pojawia się utc/in-one-hour. Wychodząc od UTC
(uniwersalny czas koordynowany), latem należałyby zmienić wywołanie na utc/in-
two-hours. Korzystając z tego samego systemu można poruszać się także po
wszystkich pozostałych strefach czasowych.
Ustalony czas przekazywany jest do Time-Library Michaela Margolisa (źródło:
http://www.pjrc.com/teensy/td_libs_Time.html). Ze względów praktycznych kopia
używanej przeze mnie wersji Time-Library znajduje się w folderze szkicu. Musi
ona zostać skopiowana do folderu libraries Twojego szkicownika. W tle cały czas
obliczany jest nowy czas i podawany co sekundę w terminalu. Można w prosty
sposób zaprogramować budzik lub inną sterowaną czasem aplikację. Aby
sprawdzanie czasu mogło funkcjonować, wykorzystywana jest nowa funkcja:
001
boolean getTime(String Host, String Subpage)
002
{
003
boolean success = true;
004
int xyear, xmonth, xday, xhour, xminute, xsecond; //lokal
variables
005
006
success &= sendCom("AT+CIPSTART=\"TCP\",\"" + Host +
"\",80", "OK");
007
String getRequest = "GET " + Subpage + " HTTP/1.1\r\nHost:" +
Host + "\r\n";
008
success &= sendCom("AT+CIPSEND=" +
String(getRequest.length() + 2), ">");