<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>