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