ESP8266 - SNTP 인터페이스를 사용하여 시간 확보

2332 단어 ESP8266STNP
ESP8266 의 공식 문서에서 언급된 SNTP 인터페이스에는 다음과 같은 함수가 있습니다.
sntp_setserver 기능: IP 주소를 통해 SNTP 서버를 설정하여 최대 3개의 SNTP 서버를 설정할 수 있습니다.함수 정의:void sntp_setserver(unsigned char idx, ip_addr_t*addr) 매개 변수: unsigned char idx: SNTP 서버 번호, 최대 3개 SNTP 서버(0~2) 보유;0번은 주 서버이고 1번과 2번은 예비 서버입니다.ip_addr_t*addr:IP 주소;사용자는 합법적인 SNTP 서버가 전송되었는지 스스로 확인해야 합니다.복귀: sntp_ 없음setservername 기능: 도메인 이름을 통해 SNTP 서버를 설정합니다. 모두 최대 3개의 SNTP 서버를 설정할 수 있습니다.함수 정의:void sntp_setservername(unsignedcharidx,char*server) 매개 변수: unsignedcharidx: SNTP 서버 번호, 최대 ⽀는 3개의 SNTP 서버(0~2)를 보유합니다.0번은 주 서버이고 1번과 2번은 예비 서버입니다.char*server: 도메인 이름;사용자는 합법적인 SNTP 서버가 전송되었는지 스스로 확인해야 합니다.복귀: sntp_ 없음init 기능: SNTP 초기화 함수 정의:void sntp_init(void) 매개 변수: 반환 없음: sntp_ 없음stop 기능: SNTP 닫기 함수 정의:void sntp_stop(void) 매개 변수: 반환 없음: sntp_ 없음get_current_timestamp 기능: 현재 거리 기준 시간 조회(1970.01.01 00:00:00 GMT + 8) 시간 스탬프, 단위: 초 함수 정의: uint32 sntp_get_current_timestamp () 매개 변수: 반환 없음: 데이텀 시간 거리 스탬프 sntp_get_real_time 기능: 조회 실제 시간(GMT + 8) 함수 정의:char* sntp_get_real_time(long t) 매개 변수:long t - 기준 시간과 떨어진 시간 스탬프 반환: 실제 시간
ESP8266에서 STNP를 사용하는 것도 매우 간단합니다. 위 코드:
os_timer_t sntp_read_timer;
void ICACHE_FLASH_ATTR
sntp_read_timer_callback(void *arg)
{
	uint32_t time = sntp_get_current_timestamp();
	os_printf("time:%d\r
",time); os_printf("date:%s\r
",sntp_get_real_time(time));// time sntp_get_real_time } void ICACHE_FLASH_ATTR my_sntp_init(void) { sntp_setservername(0,"0.cn.pool.ntp.org"); sntp_setservername(1,"1.cn.pool.ntp.org"); sntp_setservername(2,"2.cn.pool.ntp.org"); sntp_init(); os_timer_disarm(&sntp_read_timer); os_timer_setfn(&sntp_read_timer, sntp_read_timer_callback , NULL); os_timer_arm(&sntp_read_timer,5000,1);// 5s }

my_sntp_init 함수는 먼저 STNP 서버 3개를 설정하고 sntp_ 호출init 함수 초기화, 마지막으로 타이머를 설정합니다. 5초마다 SNTP 인터페이스에서 시간을 가져와 인쇄합니다. 인쇄 효과는 다음과 같습니다.
……
time:1461851702 date:Thu Apr 28 13:55:02 2016 time:1461851707 date:Thu Apr 28 13:55:07 2016 time:1461851712 date:Thu Apr 28 13:55:12 2016 time:1461851717 date:Thu Apr 28 13:55:17 2016 time:1461851722 date:Thu Apr 28 13:55:22 2016 ……
또한 다음 사항에 유의해야 합니다.
1. ESP8266은 네트워킹해야 합니다.
2. sntp 초기화는 일정한 시간이 있기 때문에 첫 인쇄 시 "please start sntp first!"가 나타날 수 있습니다.경고, sntp 초기화가 완료되면 정상입니다.

좋은 웹페이지 즐겨찾기