WiFi开发|ESP8266模组SDK开发之SNTP协议

article/2025/8/21 22:36:20

ESP8266模组SDK开发之SNTP协议

1. NTP和SNTP

NTP 是网络时间协议(Network Time Protocol),是用来同步网络设备(如计算机、手机)的时间的协议

SNTP由NTP改编而来(简单网络时间协议,Simple Network Time Protocol)大大简化了NTP协议,同时也能保证时间达到一定的精确度。在实际应用中,SNTP协议主要被用来同步因特网上计算机的时间

SNTP协议采用客户端/服务器的工作方式,可以采用单播(点对点)或者广播(一点对多点)模式操作。SNTP服务器通过接收GPS信号或自带的原子钟作为系统的时间基准。单播模式下,SNTP客户端能够通过定期访问SNTP服务器获得准确的时间信息,用于调整客户端自身所在系统的时间,达到同步时间的目的。广播模式下,SNTP服务器周期性地发送消息给指定的IP广播地址或者IP多播地址。SNTP客户端通过监听这些地址来获得时间信息。

一些NTP服务器:
最常见的NTP服务器:www.pool.ntp.org/zone/cn
其国内地址为:cn.pool.ntp.org
Windows系统上自带的两个:time.windows.com 和 time.nist.gov
Mac OS上自带的两个:time.apple.com 和 time.asia.apple.com

在这里插入图片描述

2. SNTP接口说明

  • 设置SNTP服务器:通过IP地址设置SNTP服务器,最多支持设置3个
函数原型:void sntp_setserver(unsigned char idx, ip_addr_t *addr)
参    数:idx 服务器编号,最多⽀持3个(0~2);0号为主服务器,12号为备用服务器addr 服务器IP地址;需自行确保传入的是合法SNTP服务器地址
返 回 值:无
  • 设置SNTP服务器:通过域名设置SNTP服务器,最多支持设置3个
函数原型:void sntp_setservername(unsigned char idx, char *server)
参    数:idx 服务器编号,最多⽀持3个(0~2);0号为主服务器,12号为备用服务器server 服务器域名;需自行确保传入的是合法SNTP服务器域名
返 回 值:无
  • 初始化和关闭SNTP
void sntp_init(void)
void sntp_stop(void)
  • 查询当前距离基准时间(1970.01.01 00:00:00 GMT+8)的时间戳,单位为秒
函数原型:uint32 sntp_get_current_timestamp()
参    数:无
返 回 值:距离基准时间的时间戳
  • 查询实际时间(GMT+8)
函数原型:char* sntp_get_real_time(long t)
参    数:t 与基准时间相距的时间戳
返 回 值:实际时间

3. SNTP功能实现

SNTP功能开发:在freeRTOS下新建SNTP任务,实现定时5秒串口打印一次网络时间

任务流程如下示:
在这里插入图片描述

实验步骤如下:

–> 在ESP8266_RTOS_SDK目录下新建sntp文件夹,把station实验中的station目录下所有文件拷贝到该文件夹中

–> 在user目录下新建use_sntp.c文件,并添加如下代码

/*******************httpclient.c***********************************************/
har* SntpServerNames[3] ={
"ntp1.aliyun.com",
"ntp2.aliyun.com",
"ntp3.aliyun.com"
};
//ATaskSntp任务
void ATaskSntp( void *pvParameters ){STATION_STATUS Status;uint32 time;do{Status = wifi_station_get_connect_status();vTaskDelay(100);   }while(Status != STATION_GOT_IP);printf("task is SNTP\n");printf("STATION_GOT_IP!\n");sntp_setservername(0,SntpServerNames[0]);sntp_setservername(1,SntpServerNames[1]);sntp_setservername(2,SntpServerNames[2]);sntp_init();for(;;){time = sntp_get_current_timestamp();if(time){printf("current date:%s\n",sntp_get_real_time(time));}vTaskDelay(500);}vTaskDelete(NULL);
}
//Sntp_init 初始化
void Sntp_init(void){xTaskCreate(ATaskSntp, "Sntp", 512, NULL, 4, NULL);
}

–> 在include目录下新建user_sntp.h文件,并添加声明

void ATaskSntp(void *pvParameters);
void Sntp_init(void);

–> 在user_main.c文件中的user_init()函数下添加如下代码

#define SSID "Hotspot"	//ESP8266要加入的无线网
#define PASSWORD "88888888"
void ICACHE_FLASH_ATTR
user_init(void){printf("SDK version:%s\n", system_get_sdk_version());Led_init();wifi_set_opmode(STATION_MODE);struct station_config *config = (struct station_config *)\zalloc(sizeof(struct station_config));sprintf(config->ssid,SSID);sprintf(config->password,PASSWORD);wifi_station_set_config(config);free(config);wifi_station_set_auto_connect(TRUE);    Sntp_init();xTaskCreate(ATaskLed, "LED", 256, NULL, 2, NULL);
}

–> 在ESP8266编译器中编译完成,烧写bin文件到ESP8266,打开串口助手,每5秒输出一次实时时间

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Qjmr5SnM.shtml

相关文章

ESP8266学习笔记(11)——SNTP接口使用

一、SNTP简介 简单网络时间协议(Simple Network Time Protocol),由 NTP 改编而来,主要用来同步因特网中的计算机时钟 二、SNTP接口 SNTP 接口位于 ESP8266_NONOS_SDK/include/sntp.h。 三、初始化SNTP 设置三个时间服务器…

ESP32 SNTP配置

SNTP,Simple Network Time Protocol(简单网络时间协议),用来同步时钟。 百度百科:SNTP SNTP协议采用客户端/服务器的工作方式,可以采用单播(点对点)或者广播(一点对多点&…

通过sntp同步系统时间

通过sntp同步系统时间 小型物联网设备,很少有接口提供给用户进行数据交互,那么我们设备的系统时间只能够通过获取网络时间后,再更新到本地。那么,就少不了使用sntp协议。 ntp协议:NTP(Network Time Protocol&#xff…

2012系统sntp服务器,如何设置SNTP服务器,实现同步PLC时钟

在过程/生产自动化系统构架和运行时,有时需要实现对时间的精确控制,即系统中所有子系统(包括设备等)的时间必须保持同步。 作为自动化系统组成部分的 以Windows 7操作系统为例,将PC机配置为SNTP服务器端的操作步骤: [注意]操作前前…

ESP32学习笔记(41)——SNTP接口使用

一、SNTP简介 简单网络时间协议(Simple Network Time Protocol),由 NTP 改编而来,主要用来同步因特网中的计算机时钟。 SNTP 协议是用来同步本地的时间到 unix 时间戳。通常嵌入式设备上电,连接 AP(access point)&…

物联网专题27:SNTP

什么是SNTP(Simple Network Time Protocol)?简单时钟控制协议,主要用来同步因特网中的计算机时钟。 SNTP,使用的默认端口号是 UDP123。 ESP8266中,SNTP相关的API: 1 设置SNTP服务器&#xff08…

ESP8266-----SNTP获取网络时间

目录 前言 user_init IP定时的回调函数 初始化SNTP SNTP定时回调函数 前言 介绍了8266如何获取网络时间 user_init 首先将8266设置为sta模式 void ICACHE_FLASH_ATTR user_init(void) {uart_init(115200,115200); // 初始化串口波特率os_delay_us(10000); // 等待串口…

微软 sntp服务器地址,电脑sntp服务器地址

电脑sntp服务器地址 内容精选 换一换 当创建文件系统后,您需要使用云服务器来挂载该文件系统,以实现多个云服务器共享使用文件系统的目的。本章节以Windows 2012版本操作系统为例进行NFS文件系统挂载,其他版本请参考以下主要步骤根据实际界面…

ESP32 SNTP设置

SNTP,Simple Network Time Protocol(简单网络时间协议),用来同步时钟。 百度百科:[SNTP](https://baike.baidu.com/item/sntp/4749147?fraladdin) SNTP协议采用客户端/服务器的工作方式,可以采用单播&…

sntp服务器位置,sntp的服务器地址

sntp的服务器地址 内容精选 换一换 介绍常见的安全组配置示例。如下示例中,出方向默认全通,仅介绍入方向规则配置方法。不同安全组内的云耀云服务器内网互通仅允许特定 IP 地址远程连接云耀云服务器SSH远程连接Linux云耀云服务器RDP远程连接Windows云服务器公网ping云耀云服务…

sntp 校时问题

1、背景 由于项目中的数据对时间比较敏感,目前常常出现校时问题,导致时间偏差,出现曲线数据丢失和曲线数据重复等问题。 因此对sntp源码进行深入分析。 要了解SNTP,首先需要了解NTP协议。SNTP是NTP的子集,简化了NTP…

ESP8266_SNTP(Simple Network Time Protocol)

1、SNTP 简单网络时间协议 SNTP协议采用客户端/服务器的工作方式,以UDP方式通信,SNTP服务器通过接收GPS信号或自带的原子钟作为系统的时间基准。 网络中存在很多台SNTP服务器,客户端会选择几台SNTP服务器使用。如果一台SNTP服务器在工作过程…

WIFI学习六(SNTP)

简介 SNPT(Simple Network Time Protocal简单网络时间协议)用于跨广域网或局域网时间同步的协议,具有较高的精确度(几十毫秒)。SNTP是NTP协议的简化版 SNTP的工作方式 SNTP协议采用客户端/服务器的工作方式&#xff0…

SNTP简介

要了解SNTP,首先需要了解NTP协议。SNTP是NTP的子集,简化了NTP的许多算法和步骤,得到了效率,但时间的精度不如NTP,可是对于民用时间来说足够了,大概最多差距几秒的样子。 NTP(Network Time Proto…

SNTP原理讲解 客户端 C语言实现

1.定义 SNTP(Simple Network Time Protocal简单网络时间协议),用于跨广域网或局域网同步时间的协议,具有较高的精确度(几十毫秒) 这里给出SNTP的详细定义和解释,以及基于C语言的SNTP客户端实现代码:SNTP c…

使用SNTP协议获取时间

要了解SNTP,首先需要了解NTP协议。SNTP是NTP的子集,简化了NTP的许多算法和步骤,得到了效率,但时间的精度不如NTP,可是对于民用时间来说足够了,大概最多差距几秒的样子。 NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服…

sntp协议简介

SNTP(Simple Network Time Protocal简单网络时间协议),用于跨广域网或局域网同步时间的协议,具有较高的精确度(几十毫秒)。SNTP是NTP协议的简化版,两者分别在RFC1305和RFC2030介绍。 SNTP工作方式 SNTP采用客户端/服务…

关于马尔可夫过程的一些学习笔记

①马尔可夫性质:已知“现在”的情况下,“未来”与“过去”彼此独立(N1仅与N有关,与N以前的所有都无关) ②马尔可夫过程:具有马尔可夫性质的随机过程 ③马尔可夫链:马尔可夫过程的原始模型&…

来聊聊马尔可夫过程

相信你对马尔科夫这个词一定不陌生,因为在人工智能机器学习领域,这个词是避不开的,如马尔可夫链(Markov chain),马尔科夫随机场(Markov random field),马尔可夫过程(Markov process),隐马尔可夫…

【算法学习】马尔可夫过程及经典例题讲解(含代码实现)

公众号关注 52DATA ,获得更多数据分析知识,感谢支持—> 文章目录 马尔可夫过程1. 马尔可夫性2. 马尔可夫链2.1 转移概率矩阵(随机矩阵)2.2 状态概率2.3 平稳分布 3.一个很经典的例题帮助理解马尔科夫预测方法1.求状态转移概率2.运用状态概…