Re: příjem NTP ESP8266/32

Miroslav Mraz mrazik na volny.cz
Neděle Červenec 24 08:47:49 CEST 2022


Tohle zřejmě někdo převzal přímo z arduina - 
https://www.arduino.cc/reference/en/libraries/ntpclient/. Je to napsané 
celé blbě. Autor zřejmě netuší, že existuje něco jako stdint.h, zcela 
zbytečně používá u členských dat this-> (vy to tam už nemáte) - zřejmě 
je zvyklý na python nebo javascript. Z přijatého paketu jen převezme 
počet sekund od nějakého data. Nebudu zkoumat, jestli to má být rok 1900 
(jak tam píše) nebo spíš 1970 (unix timestamp), podstatné je, že spoustu 
informací z toho paketu prostě zahodí. Chtělo by to paket podrobně 
prozkoumat a pokud v něm budou blbosti, tak ho prostě ignorovat.

Mrazík

On 24. 07. 22 5:34, Petr Zapadlo wrote:
> 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
> 


Další informace o konferenci Hw-list