mirror of
https://gitee.com/beecue/fastbee.git
synced 2025-12-20 01:45:55 +08:00
添加智能灯固件代码
This commit is contained in:
78
firmware/esp-idf/wumei-smart-firmware/main/lwip_sntp.c
Normal file
78
firmware/esp-idf/wumei-smart-firmware/main/lwip_sntp.c
Normal file
@@ -0,0 +1,78 @@
|
||||
/******************************************************************************
|
||||
* 作者:kerwincui
|
||||
* 时间:2021-06-08
|
||||
* 邮箱:164770707@qq.com
|
||||
* 源码地址:https://gitee.com/kerwincui/wumei-smart
|
||||
* author: kerwincui
|
||||
* create: 2021-06-08
|
||||
* email:164770707@qq.com
|
||||
* source:https://github.com/kerwincui/wumei-smart
|
||||
******************************************************************************/
|
||||
#include "lwip_sntp.h"
|
||||
|
||||
static const char *TAG = "sntp";
|
||||
|
||||
static void obtain_time(void);
|
||||
|
||||
|
||||
void sntp_start(void)
|
||||
{
|
||||
time_t now;
|
||||
struct tm timeinfo;
|
||||
time(&now);
|
||||
localtime_r(&now, &timeinfo);
|
||||
ESP_LOGI(TAG, "Connecting to WiFi and getting time over NTP.");
|
||||
obtain_time();
|
||||
// 使用当前时间更新'now'变量
|
||||
time(&now);
|
||||
|
||||
char strftime_buf[64];
|
||||
|
||||
// 将时区设置为东部标准时间并打印本地时间
|
||||
setenv("TZ", "EST5EDT,M3.2.0/2,M11.1.0", 1);
|
||||
tzset();
|
||||
localtime_r(&now, &timeinfo);
|
||||
strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
|
||||
ESP_LOGI(TAG, "The current date/time in New York is: %s", strftime_buf);
|
||||
|
||||
// 设置时区为中国标准时间
|
||||
setenv("TZ", "CST-8", 1);
|
||||
tzset();
|
||||
localtime_r(&now, &timeinfo);
|
||||
strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
|
||||
ESP_LOGI(TAG, "The current date/time in Shanghai is: %s", strftime_buf);
|
||||
|
||||
}
|
||||
|
||||
//时间同步通知的回调函数
|
||||
void time_sync_notification_cb(struct timeval *tv)
|
||||
{
|
||||
ESP_LOGI(TAG, "Notification of a time synchronization event");
|
||||
}
|
||||
|
||||
//获取时间
|
||||
static void obtain_time(void)
|
||||
{
|
||||
ESP_LOGI(TAG, "Initializing SNTP");
|
||||
sntp_setoperatingmode(SNTP_OPMODE_POLL);
|
||||
sntp_setservername(0, "ntp1.aliyun.com");
|
||||
sntp_setservername(1, "time2.cloud.tencent.com");
|
||||
sntp_setservername(2, "ntp.ntsc.ac.cn");
|
||||
sntp_setservername(3, "pool.ntp.org");
|
||||
sntp_set_time_sync_notification_cb(time_sync_notification_cb);
|
||||
sntp_init();
|
||||
|
||||
// 等待时间设定
|
||||
time_t now = 0;
|
||||
struct tm timeinfo = { 0 };
|
||||
int retry = 0;
|
||||
const int retry_count = 10;
|
||||
while (sntp_get_sync_status() == SNTP_SYNC_STATUS_RESET && ++retry < retry_count) {
|
||||
ESP_LOGI(TAG, "Waiting for system time to be set... (%d/%d)", retry, retry_count);
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
time(&now);
|
||||
localtime_r(&now, &timeinfo);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user