uint32_t ICACHE_FLASH_ATTR NTP_SetTimeZone(PACKET_CMD *cmd) { REQUEST req; int timezone; CMD_Request(&req, cmd); if (CMD_GetArgc(&req) != 1) { return 0; } CMD_PopArgs(&req, (uint8_t*)&timezone); if ((timezone > 13) || (timezone < -11)) { return -1; } if (timezone != sntp_get_timezone()) { sntp_stop(); if (true == sntp_set_timezone(timezone)) { sntp_init(); } } return 0; }
void ICACHE_FLASH_ATTR rtc_timezone(uint8_t timezone) { sntp_stop(); // if (true == sntp_set_timezone(sysCfg.timezone)) sntp_set_timezone(timezone); sntp_init(); myrtc = sntp_get_current_timestamp(); }
void ICACHE_FLASH_ATTR rtc_init(uint8_t timezone) { sntp_setservername(0, NTP_SERVER1); sntp_setservername(1, NTP_SERVER2); // sntp_setservername(2, NTP_SERVER3); sntp_stop(); // if (true == sntp_set_timezone(sysCfg.timezone)) sntp_set_timezone(timezone); sntp_init(); myrtc = 0; }
void configTime(int timezone, int daylightOffset_sec, const char* server1, const char* server2, const char* server3) { sntp_stop(); setServer(0, server1); setServer(1, server2); setServer(2, server3); sntp_set_timezone(timezone/3600); sntp_set_daylight(daylightOffset_sec); sntp_init(); }
void ntp_setup(void) { tv_t tv; tz_t tz; time_t sec; if(!network_init) return; if(ntp_init == 0) { ip_addr_t *addr = (ip_addr_t *)os_zalloc(sizeof(ip_addr_t)); ipaddr_aton("192.168.200.1", addr); sntp_setserver(1,addr); ipaddr_aton("192.168.200.240", addr); sntp_setserver(2,addr); sntp_init(); os_free(addr); ntp_init = 1; DEBUG_PRINTF("NTP:1\n"); } if(ntp_init == 1) { // they hard coded it to +8 hours from GMT sec = sntp_get_current_timestamp(); if(sec > 10) { ntp_init = 2; } } if(ntp_init == 2) { sntp_stop(); DEBUG_PRINTF("NTP:2\n"); // they return GMT + 8 sec = sec - (8UL * 3600UL); // we are GMT - 4 sec = sec - (4UL * 3600UL); tv.tv_sec = sec; tv.tv_usec = 0; tz.tz_minuteswest = 0; settimeofday(&tv, &tz); DEBUG_PRINTF("SEC:%ld\n",sec); DEBUG_PRINTF("TIME:%s\n", ctime(&sec)); ntp_init = 3; } }
void WEAK_ATTR configTime(int timezone, int daylightOffset_sec, const char* server1, const char* server2, const char* server3) { sntp_stop(); setServer(0, server1); setServer(1, server2); setServer(2, server3); s_timezone_sec = timezone; s_daylightOffset_sec = daylightOffset_sec; sntp_set_timezone(timezone/3600); sntp_init(); }
void ICACHE_FLASH_ATTR do_reset1() { os_printf("Closing down services, reset in 2 more seconds\n"); set_all_relays_off(); os_timer_disarm(&reset_timer); os_timer_setfn(&reset_timer, (os_timer_func_t *)do_reset0, (void *)0); os_timer_arm(&reset_timer, 2000, 1); espconn_mdns_close(); sntp_stop(); wifi_station_disconnect(); }
void ICACHE_FLASH_ATTR at_exeCmdNTP(uint8_t id) { uint8 buffer[255] = {0}; sntp_stop(); int i; uint32 tm = 0; int ntp_servers_len = sizeof(ntp_servers) / sizeof(ntp_servers[0]); for (i = 0; i < 3; i++) { if (i >= ntp_servers_len) break; sntp_setservername(i, ntp_servers[i]); } sntp_set_timezone(NTP_OFFSET); sntp_init(); os_sprintf(buffer, "NTP init\r\n"); at_port_print(buffer); at_response_ok(); }
void ntp_setup(void) { tv_t tv; tz_t tz; time_t sec; struct ip_info getinfo; // Wait until we have an IP address before we set the time if(!network_init) return; if(ntp_init == 0) { ip_addr_t *addr = (ip_addr_t *)safecalloc(sizeof(ip_addr_t),1); // form pool.ntp.org ipaddr_aton("206.108.0.131", addr); sntp_setserver(1,addr); ipaddr_aton("167.114.204.238", addr); sntp_setserver(2,addr); #if 0 // Alternate time setting if the local router does NTP if(wifi_get_ip_info(0, &getinfo)) { printf("NTP:0 GW: %s\n", ipv4_2str(getinfo.gw.addr)); printf("NTP:0 IP: %s\n", ipv4_2str(getinfo.ip.addr)); sntp_setserver(1, & getinfo.gw); sntp_setserver(2, & getinfo.ip); } else { printf("NTP:0 failed to get GW address\n"); return; } #endif if( sntp_set_timezone(0) ) { printf("NTP: set_timeone OK\n"); sntp_init(); safefree(addr); ntp_init = 1; printf("NTP:1\n"); } else { printf("NTP: set_timeone Failed\n"); } } if(ntp_init == 1) { // they hard coded it to +8 hours from GMT if( (sec = sntp_get_current_timestamp()) > 10 ) { sntp_stop(); ntp_init = 2; } } if(ntp_init == 2) { time_t s; tm_t *p; printf("NTP:2\n"); // they return GMT + 8 // sec = sec - (8UL * 3600UL); tv.tv_sec = sec; printf("ntp_init: %s\n", asctime(gmtime(&sec))); printf("ntp_init: %s\n", ctime_gm(&sec)); tv.tv_usec = 0; tz.tz_minuteswest = 300; tz.tz_dsttime = 0; settimeofday(&tv, &tz); printf("SEC:%ld\n",sec); printf("TIME:%s\n", ctime(&sec)); printf("Zone: %d\n", (int) sntp_get_timezone()); ntp_init = 3; set_dst(tv.tv_sec); print_dst_gmt(); print_dst(); p = gmtime(&tv.tv_sec); mktime(p); printf("Localtime: %s\n", asctime(p)); } }