Re: příjem NTP ESP8266/32

Petr Zapadlo zapik na email.cz
Neděle Červenec 24 05:34:30 CEST 2022


Zdravím, odpovím tak nějak hromadně všem v jedné zprávě.

Ne, read návratový kod neošetřuje - dobrý nápad - read by mělo vrátit 
počet byte paketu - zkusím kontrolovat, to by mohlo pomoci na nějaké 
fake pakety.

Interní čas počítám a synchro dělám jednou za 12 hodin a při startu, 
nejede mi tam nic kritického abych musel implementovat časový fázový 
závěs (jestli se rybičkám rozsvítí o vteřinu dřív anebo později je jedno 
:-)).

Jako časový server používám  české pooly NTP serverů:

String ntp_hosts[NUM_NTP] 
={"0.cz.pool.ntp.org","1.cz.pool.ntp.org","2.cz.pool.ntp.org"};

Prakticky to znamená, že každé čtení jde proti jinému NTP serveru.

Celé jsou to zkoušel ve vlaku LEO Express do Prahy - Leoš má dost blbou 
wifi, takže o výpadky tam není nouze, stejně tak o latenci paketů jdoucí 
až >15s,  měl jsem upravenou synchronizaci aby to šlo co pár vteřin a 
ani jednou to nezablblo. Říkal jsem si, že blbější situace už nenastane 
:-) (A nastala)

Díky

Petr




Dne 23. 07. 22 v 22:02 spam na nagano.cz napsal(a):
> Má read ošetřený návratový kód?
> L.
>
> Sent from MailDroid <https://goo.gl/ODgwBb>
>
> -----Original Message-----
> From: Petr Zapadlo <zapik na email.cz>
> To: HW-news <hw-list na list.hw.cz>
> Sent: so, 23 čvc 2022 21:28
> Subject: příjem NTP ESP8266/32
>
> Zdravím,
>
> na většině projektů, kde je  třeba   čas, tak ho synchronizuji z NTP.
> Občas (třeba  jednou za půl roku) se stane, že ESP získá špatný čas.
> Pokusil jsem se to eliminovat  - načítám čas 3x a porovnávám - použiji
> dvě hodnoty, které mají minimální rozestup. (pokud se nesejdou, tak to
> ignoruji a zkouším znova)
>
> Situace se zlepšila, přesto občas k problému dojde. Zdá se, že četnost
> nějak závisí i na kvalitě internetové linky.  U mě doma se to prakticky
> neděje (Metronet, DSL, modem Terminator) , ale u známé se to děje
> poměrně často (měsíčně) (O2, DSL, modem ZTE), u syna tak jednou za půl
> roku (kabelovka Vodafone).
>
> Vypadá to, že za nějakých podmínek projde UDP stackem v ESP i paket,
> který není v pořádku - asi má i vadný checksum, ale vzhledem k četnosti
> to nejsem schopen nijak ověřit.  Případně projde nesmyslný paket (ale to
> by měl eliminovat požadavek na 2 stejné hodnoty).
>
> Jak se divám do struktury NTP paketu, tak tam už žádný kontrolní
> mechanizmus není. (dívám se dobře?)
>
> Základní kus kodu je vzat z mnohokrát opakovaného příkladu:
>
> Poslání paketu:
>
>   memset(packetBuffer, 0, NTP_PACKET_SIZE);
>    // Initialize values needed to form NTP request
>    // (see URL above for details on the packets)
>    packetBuffer[0] = 0b11100011;   // LI, Version, Mode
>    packetBuffer[1] = 0;     // Stratum, or type of clock
>    packetBuffer[2] = 6;     // Polling Interval
>    packetBuffer[3] = 0xEC;  // Peer Clock Precision
>    // 8 bytes of zero for Root Delay & Root Dispersion
>    packetBuffer[12]  = 49;
>    packetBuffer[13]  = 0x4E;
>    packetBuffer[14]  = 49;
>    packetBuffer[15]  = 52;
>
>    // all NTP fields have been given values, now
>    // you can send a packet requesting a timestamp:
>    _ntp_udp.beginPacket(timeServerIP, 123); //NTP requests are to port 
> 123
>    _ntp_udp.write(packetBuffer, NTP_PACKET_SIZE);
>    _ntp_udp.endPacket();
>
>
> Příjem paketu:
>
> _ntp_udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into
> the buffer
>
>      //the timestamp starts at byte 40 of the received packet and is
> four bytes,
>      // or two words, long. First, esxtract the two words:
>
>      unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
>      unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);
>
>
> Jak zvýšit spolehlivost a eliminovat blbý čas?
>
>
> Díky
>
> Petr
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
> Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
> http://list.hw.cz/mailman/listinfo/hw-list 
> <http://list.hw.cz/mailman/listinfo/hw-list>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220724/dd5b7803/attachment.htm>


Další informace o konferenci Hw-list