Skocz do zawartości

tempus2.gum.gov.pl, nieprawidłowy czas


Pomocna odpowiedź

Napisano (edytowany)

Cześć, używa ktoś tego serwera do aktualizacji czasu?

Używam go w moim projekcie z ekranem HMI na esp32s3. 

Jakieś 2-3 tygodnie temu ekran zaczął pokazywać czas o godzinę większy. Tak jakby pobrany czas był już letni, czyli dzisiaj już pokazuje właściwy czas.

Ktoś ma podobne objawy?

Edytowano przez SOYER

Ja używam i wszystko jest OK.

Zauważ, że serwer (nawet ten umieszczony w Polsce) dostarcza czas UTC. Przejście na czas lokalny i ewentualne uwzględnienie czasu letniego jest po stronie aplikacji użytkownika.

No tak, rozumiem to. Tylko mnie zastanawia dlaczego od ok 2 tygodni(a wcześniej było dobrze), zmieniła się pobierana godzina. 

Dziwne.

47 minut temu, SOYER napisał:

dlaczego od ok 2 tygodni(a wcześniej było dobrze), zmieniła się pobierana godzina. 

A nie jest to przypadkiem kwestia błędnego działania aplikacji (tak jakby nie wiedziała kiedy się zmienia czas na letni w Polsce)? Bo to chyba jest zgodne z amerykańskim czasem letnim...

 

  • Lubię! 2

Być może nie do końca wiem co się dzieje w tych bibliotekach, ale ja nie implementowałem żadnej automatycznej zmiany czasu  w kodzie. 

Myślałem, że tak jak napisał kolega, z tempusa pobieramy czas utc i sami go dostosowujemy do lokalnego. Jeśli nic nie zmieniałem w tym „dostosowaniu” to znaczy, że zmienił się czas na tempusie…

2 godziny temu, SOYER napisał:

to znaczy, że zmienił się czas na tempusie…

Tam się nie ma prawa nic zmienić - to nie jest lokalny serwer czasu dla jednej wioski. A w UTC nie ma żadnej zmiany czasu na letni/zimowy.

Używam tego tak(biblioteka ESP32Time.h):

void timeConfig(){
  USBSerial.println("TIME config...");
  USBSerial.println("..............");
  configTime(3600, 3600, "tempus2.gum.gov.pl");
  delay(100);
  sntp_sync_status_t syncStatus;
  syncStatus = sntp_get_sync_status();
    while (syncStatus != SNTP_SYNC_STATUS_COMPLETED) {
        syncStatus = sntp_get_sync_status();
        delay(100); // Adjust the delay time as per your requirements
    }
  tim = rtc.getTime();
  USBSerial.println(tim);
  USBSerial.println("..............");
}

Potem w timerze lvgl po prostu:

void my_time(lv_timer_t * ti){  
  LV_UNUSED(ti);
  if (lv_scr_act()==objects.main){
   tim = rtc.getTime();
   lv_label_set_text(objects.lbl_0_time, tim.c_str());
  }
}

Czyli mam podglądnąć co siedzi w libsie esp32Time.h?

7 minut temu, _LM_ napisał:

https://chatgpt.com/share/67e95375-e730-8003-90bc-41879f4f77e6

Twoją ulubioną metodą

Tylko nie wiem czemu w linku niema podpowiedzi w pastaci kodu. 

 

To nigdy nie była moja ulubiona metoda, nie używam, kiedyś testowałem, ale  nauczyłem się, że trzeba wiedzieć o co pytać, a ja tego nie wiem.

Co do jego odpowiedzi, skoro konwertuje na lokalną strefę, to dlaczego uważa, że mamy tutaj USA?

🙂

46 minut temu, SOYER napisał:
configTime(3600, 3600, "tempus2.gum.gov.pl");

Linijka ta ustala strefę czasową na UTC+1  oraz wartość poprawki na czas letni (1h).

Natomiast określenie momentu, kiedy ta zmiana zachodzi musisz mieć w innym miejscu.

 

2 godziny temu, _LM_ napisał:

Może mu trzeba podpowiedzieć gdzie mniej więcej mieszkasz, ja bym tak zrobił. 

Nie widzę takiej opcji dla tego libsa.

1 godzinę temu, jand napisał:

Natomiast określenie momentu, kiedy ta zmiana zachodzi musisz mieć w innym miejscu.

 

Nie mam. 

  • Nie zgadzam się! 1
(edytowany)
3 godziny temu, SOYER napisał:
configTime(3600, 3600, "tempus2.gum.gov.pl");

Chodzi Ci @_LM_o podanie strefy czasowej? 

Czyż nie to ustawia się w powyższej linijce?

Jeśli mam takie ustawienia, to dlaczego libs uznał, że mieszkam w US i zmienił mi czas na letni 2 tygodnie temu?

Edytowano przez SOYER

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...