collapse

* Posts Recentes

Rust para micro-controladores – Uma série muito promissora... por blabla
[Hoje às 10:00]


BOLT – Aumento de performance C/C++ e Rust, GCC e LLVM com o hardware existente por blabla
[14 de Janeiro de 2022, 09:17]


Fita de LEDs RGB por dropes
[11 de Janeiro de 2022, 20:09]


OpAmp Rail2Rail, 30V ... e mais umas coisinhas por SerraCabo
[10 de Janeiro de 2022, 05:00]


How I Moved This 19000 lbs Machine por dropes
[08 de Janeiro de 2022, 20:41]


Projeto - Curso Engenharia Eletrotécnica por blabla
[08 de Janeiro de 2022, 10:59]


How I learned to love build systems por blabla
[07 de Janeiro de 2022, 12:22]


Circuito/esquema para Cob LED 5050 e input 230VAC? por jm_araujo
[06 de Janeiro de 2022, 11:11]


Repelente de Gatos por filjoa
[06 de Janeiro de 2022, 00:45]


Excelentes otimizações de performance LLVM 14 e em Rust. por blabla
[05 de Janeiro de 2022, 14:23]

Autor Tópico: Ajuda atualizar hora NTP Verão/Inverno  (Lida 1099 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline dennis_boy

  • Mini Robot
  • *
  • Mensagens: 24
Ajuda atualizar hora NTP Verão/Inverno
« em: 18 de Janeiro de 2020, 19:02 »
Boa noite recente estou com um projecto onde tenho um menu onde actualizo a hora do DS3231 pelo wifi.
Deparo que precisava nesta altura retirar uma hora.
se vou calcular pelo DS pode estar atrasado ou adiantado, minha ideia era pegar no tempo que vem da net
e calcular onde está e retirar a hora ou manter.

Eu tenho este código la:
Código: [Seleccione]
    wifi.send(mux_id, (const uint8_t*)buf, 48);
   
   uint32_t len = wifi.recv(mux_id, buffer, sizeof(buffer), 2000);
    if (len > 0) {
      unsigned long highWord = word(buffer[40], buffer[41]);
      unsigned long lowWord = word(buffer[42], buffer[43]);
 
      unsigned long secsSince1900 = highWord << 16 | lowWord;
      unsigned long epoch = secsSince1900 - 2208988800UL;

      clock.setDateTime(epoch);

Abraços.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.806
  • NERD!
Re: Ajuda atualizar hora NTP Verão/Inverno
« Responder #1 em: 18 de Janeiro de 2020, 19:18 »

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 443
Re: Ajuda atualizar hora NTP Verão/Inverno
« Responder #2 em: 19 de Janeiro de 2020, 01:31 »
Como volta não volta vem à baila a noticia que a europa (ou talvez apenas Portugal) vai deixar de mudar a hora, no relógio ntp que fiz com um esp8266 acabei por meter um switch físico. Numa posição é hora de verão, na outra de inverno...
Na verdade isto é ser um bocado preguiçoso, porque se se tem conectividade à Net para usar NTP também se pode fazer batota e abrir uma ligação http para o servidor qq (google.com por exemplo, e extrair o tempo atual dos headers), por exemplo

Código: [Seleccione]
$ curl -s --head http://google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Sun, 19 Jan 2020 01:27:39 GMT
Expires: Tue, 18 Feb 2020 01:27:39 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

Como só nos interessa a data,

Código: [Seleccione]
$ curl -s --head http://google.com | grep "^Date" | cut -d: -f2- | sed -e 's/^ //'
Sun, 19 Jan 2020 01:29:15 GMT
Stupid men are often capable of things the clever wouldn't dare to contemplate.