<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>ZdravĂm, odpovĂm tak nÄ›jak hromadnÄ› všem v jednĂ© zprávÄ›.</p>
<p>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.</p>
<p>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 :-)).</p>
<p>Jako ÄŤasovĂ˝ server pouĹľĂvám českĂ© pooly NTP serverĹŻ:</p>
<p>String ntp_hosts[NUM_NTP]
={"0.cz.pool.ntp.org","1.cz.pool.ntp.org","2.cz.pool.ntp.org"};<br>
</p>
<p>Prakticky to znamená, že každé čtenà jde proti jinému NTP
serveru.</p>
<p>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)</p>
<p>DĂky</p>
<p>Petr<br>
</p>
<p><br>
</p>
<p> Â Â Â Â Â Â <br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">Dne 23. 07. 22 v 22:02 <a class="moz-txt-link-abbreviated" href="mailto:spam@nagano.cz">spam@nagano.cz</a>
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:f1c7d302-530e-472d-8dd0-dd4aa4f2bbaa.maildroid@localhost">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div>Má read ošetřený návratový kód?<br>
L.<br>
<br>
<font color="#888888"><font color="#888888">Sent from </font><font
color="#888888"><a href="https://goo.gl/ODgwBb"
moz-do-not-send="true">MailDroid</a></font></font><br>
<br>
-----Original Message-----<br>
From: Petr Zapadlo <a class="moz-txt-link-rfc2396E" href="mailto:zapik@email.cz"><zapik@email.cz></a><br>
To: HW-news <a class="moz-txt-link-rfc2396E" href="mailto:hw-list@list.hw.cz"><hw-list@list.hw.cz></a><br>
Sent: so, 23 ÄŤvc 2022 21:28<br>
Subject: pĹ™Ăjem NTP ESP8266/32<br>
<br>
</div>
ZdravĂm,
<br>
<br>
na většině projektů, kde je třeba  čas, tak ho synchronizuji z
NTP. <br>
ObÄŤas (tĹ™eba jednou za pĹŻl roku) se stane, Ĺľe ESP zĂská špatnĂ˝
čas. <br>
Pokusil jsem se to eliminovat - naÄŤĂtám ÄŤas 3x a porovnávám -
pouĹľiji <br>
dvě hodnoty, které majà minimálnà rozestup. (pokud se nesejdou,
tak to <br>
ignoruji a zkoušĂm znova)
<br>
<br>
Situace se zlepšila, přesto občas k problému dojde. Zdá se, že
ÄŤetnost <br>
nějak závisà i na kvalitě internetové linky. U mě doma se to
prakticky <br>
neděje (Metronet, DSL, modem Terminator) , ale u známé se to děje
<br>
pomÄ›rnÄ› ÄŤasto (mÄ›sĂÄŤnÄ›) (O2, DSL, modem ZTE), u syna tak jednou za
pĹŻl <br>
roku (kabelovka Vodafone).
<br>
<br>
Vypadá to, Ĺľe za nÄ›jakĂ˝ch podmĂnek projde UDP stackem v ESP i
paket, <br>
který nenà v pořádku - asi má i vadný checksum, ale vzhledem k
ÄŤetnosti <br>
to nejsem schopen nijak ověřit. PĹ™ĂpadnÄ› projde nesmyslnĂ˝ paket
(ale to <br>
by měl eliminovat požadavek na 2 stejné hodnoty).
<br>
<br>
Jak se divám do struktury NTP paketu, tak tam už žádný kontrolnà <br>
mechanizmus nenĂ. (dĂvám se dobĹ™e?)
<br>
<br>
ZákladnĂ kus kodu je vzat z mnohokrát opakovanĂ©ho pĹ™Ăkladu:
<br>
<br>
Poslánà paketu:
<br>
<br>
  memset(packetBuffer, 0, NTP_PACKET_SIZE);
<br>
  // Initialize values needed to form NTP request
<br>
  // (see URL above for details on the packets)
<br>
  packetBuffer[0] = 0b11100011;  // LI, Version, Mode
<br>
  packetBuffer[1] = 0;    // Stratum, or type of clock
<br>
  packetBuffer[2] = 6;    // Polling Interval
<br>
  packetBuffer[3] = 0xEC; // Peer Clock Precision
<br>
  // 8 bytes of zero for Root Delay & Root Dispersion
<br>
  packetBuffer[12] = 49;
<br>
  packetBuffer[13] = 0x4E;
<br>
  packetBuffer[14] = 49;
<br>
  packetBuffer[15] = 52;
<br>
<br>
  // all NTP fields have been given values, now
<br>
  // you can send a packet requesting a timestamp:
<br>
  _ntp_udp.beginPacket(timeServerIP, 123); //NTP requests are to
port 123
<br>
  _ntp_udp.write(packetBuffer, NTP_PACKET_SIZE);
<br>
  _ntp_udp.endPacket();
<br>
<br>
<br>
PĹ™Ăjem paketu:
<br>
<br>
_ntp_udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet
into <br>
the buffer
<br>
<br>
    //the timestamp starts at byte 40 of the received packet and
is <br>
four bytes,
<br>
    // or two words, long. First, esxtract the two words:
<br>
<br>
    unsigned long highWord = word(packetBuffer[40],
packetBuffer[41]);
<br>
    unsigned long lowWord = word(packetBuffer[42],
packetBuffer[43]);
<br>
<br>
<br>
Jak zvýšit spolehlivost a eliminovat blbý čas?
<br>
<br>
<br>
DĂky
<br>
<br>
Petr
<br>
<br>
<br>
_______________________________________________
<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz"
moz-do-not-send="true">www.HW.cz</a>
<br>
<a href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
<br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list"
moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
</body>
</html>