Chyba synchronizace času u ESP8266-1 *vyřešeno*

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
hafca
Příspěvky: 4723
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

Chyba synchronizace času u ESP8266-1 *vyřešeno*

#1 Příspěvek od hafca »

Upoutal mě WiFi termostat a chtěl jsem to použít k ovládání kotle. Jenže to chodilo asi jen autorovi. Kompilace projde v pořádku, nahrání do ESP taky OK, na telefonu se naloguji, mohu tam měnit hodnoty, ale to je všechno. Čas neběží.
V sérivém monitoru vidím opakující se chybu a nevím co s tím. Zkoušel jsem různé knihovny, ale marně. Zkusil jsem i AI, ale ta mě do toho jen zamotala.
Mohl by mě někdo poradit, kde by mohla být chyba?

Kód: Vybrat vše

*wm:AutoConnect: SUCCESS 
*wm:STA IP Address: 192.168.0.154
192.168.0.154
HTTP server started
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
3 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1  
4 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
5 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
6 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1  
Time Sync error: Got NTP time: 15:22:35 30/11/2025
error
0
0
0:0:0
 
error
0
0
0:0:0
 
error
0
0
0:0:0
Naposledy upravil(a) hafca dne 04 pro 2025, 13:48, celkem upraveno 1 x.
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
samec
Příspěvky: 6671
Registrován: 19 pro 2017, 00:00

#2 Příspěvek od samec »

Úžasné, keď robíš niečo a netušíš čo. :lol:

Zrejme sa to ESP pripája nejako??? na nejaký server???, alebo modul???, lebo ESP samé o sebe časostroj nemá. Nuž ale to už si vykonzultuj s autorom kódu, keď si lenivý sa naučiť programovať.
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#3 Příspěvek od Valdano »

Když chcete používat nějaký cizí projekt, který jste sám nenapsal tak je potřeba, abyste měl aspoň trochu přehled o tom jak co funguje, jinak se může stát, že vůbec nedokážete najít případný problém.

ESP nemá vlastní RTC čip, který by byl zálohovaný baterií tak jako to má běžně PC. Takže k tomu, aby v ESP fungoval čas musíte po každém zapnutí provést synchronizaci času. Pak teprve po úspěšném provedení synchronizace bude čas v ESP běžet, ale jen do vypnutí. Po zapnutí bude zase potřeba provést synchronizaci času. Synchronizace času se provádí prostřednictvím NTP serveru.

V programu thermostat.ino, který je na tom vámi odkazovaném webu jako příklad, se provádí synchronizace času vždy jednou po zapnutí ve funkci setup().

Problém je v tom, že v tom zdrojáku je definován odkaz na již nefunkční NTP server viz tento řádek

NTP.begin("fr.pool.ntp.org", 1, true);

Nahraďte ho odkazem na funkčním NTP server ntp.nic.cz viz níže.

NTP.begin("ntp.nic.cz", 1, true);

K provedení synchronizace musí být v době zapnutí toho ESP v rámci Wifi sítě, ke které se to ESP připojuje samozřejmě dostupný Internet, aby se ESP mohlo připojit na ten NTP server.

Další problém bude v tom, že ve zdrojáku thermostat.ino se ESP nepřipojuje na jinou Wifi s dostupným Internetem, ale sama vytváří vlastní izolovaný AP bod což znamená, že bude bez připojení k Internetu tj. i výše zmíněný funkční NTP server bude nedostupný.

Ve zdrojáku thermostat.ino jsou dvě varianty funkce connexion(). První, která je zakomentovaná /* */ je určena k připojení k existující Wifi síti tj. ta co obsahuje WiFi.begin(ssid, password);

Druhá varianta funkce connexion(), která je v tom zdrojáku skutečně použitá vytváří vlastní izolovaný AP bod viz wifiManager.setAPCallback.

Takže kromě té již výše uvedené úpravy v odkazu na NTP server musíte ještě navíc zakomentovat tu druhou variantu funkce connexion() a odkomentovat tu první s tím, že musíte v horní části zdrojáku nadefinovat ssid a password (tj. heslo)

const char* ssid = "??????";
const char* password = "??????";


pro přípojení k vaší lokální Wifi, ke které se bude ESP připojovat a která by měla mít dostupné připojení na Internet, aby se ESP mohlo připojit k tomu NTP serveru.

Pokud se chcete synchronizaci času přes Internet vyhnout tak si můžete k tomu ESP dokoupit třeba tento modul s RTC čipem a do programu si k tomu doplnit i obsluhu. Inspirovat se můžete podle tohoto návodu, který je k Arduinu tj. pro ESP si to budete muset upravit třeba podle tohoto návodu. Pak bude stačit osadit ten modul baterií, čas v modulu jednou nastavit a pak už se o čas nemusíte řadu let starat, protože chod času v době vypnutí udrží ta baterie.

Tu synchronizaci vůči NTP serveru si můžete v programu pozměnit na povel tak, aby jste mohl čas srovnat když se bude RTC čas po nějaké době už dost rozcházet s platným časem třeba za rok a nebo si namísto té synchronizace vůči NTP dodělejte do toho webového rozhraní ESP, přes které k tomu přistupujete, možnost ručního nastavení času. S ručním nastavením času byste se obešel bez Internetu i bez RTC, ale mělo by to tu nevýhodu, že byste v takovém případě musel po každém zapnutí ESP čas znovu ručně nastavit jinak by čas v ESP neběžel.
Uživatelský avatar
hafca
Příspěvky: 4723
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#4 Příspěvek od hafca »

ESP se připojí na WiFi a já jí vidím v telefonu. V té ESP jsou uložené 3 webové stránky na které se bez problému dostanu přes 192.168.4.1. Na výpisu z serial monitoru co jsem sem dal je vidět, že si čas načte. Takže není potřeba nic dalšího. Nefunguje jen ta synchronizace.
Přílohy
2 printscreeny.jpg
2 printscreeny.jpg
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#5 Příspěvek od asdf »

Koukal jsem do kódu a přijde mi, že ty hlášky "Time Sync error" a "Got NTP time" se nemůžou vypsat obě. Nedělal jsi tam nějaké změny?
Uživatelský avatar
hafca
Příspěvky: 4723
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#6 Příspěvek od hafca »

Ne, je to původní. Mám ještě jednu upravenou verzi, kde je čidlo teploty BMP280 a je to stejné.
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#7 Příspěvek od asdf »

Já tam našel tenhle kód:

Kód: Vybrat vše

  if (error) {
    Serial.print("Time Sync error: ");
    if (error == noResponse)
      Serial.println("NTP server not reachable");
    else if (error == invalidAddress)
      Serial.println("Invalid NTP server address");
    }
  else {
    Serial.print("Got NTP time: ");
    Serial.println(NTP.getTimeDateString(NTP.getLastNTPSync()));
  }
Máš ho tam taky tak? Přece nemůže udělat obojí, ne?
Uživatelský avatar
hafca
Příspěvky: 4723
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#8 Příspěvek od hafca »

Mám tam tohle

Kód: Vybrat vše

 
  NTP.begin("fr.pool.ntp.org", 1, true);
  NTP.setInterval(60);

  NTP.onNTPSyncEvent([](NTPSyncEvent_t error) {
  if (error) {
    Serial.print("Time Sync error: ");
    if (error == noResponse)
      Serial.println("NTP server not reachable");
    else if (error == invalidAddress)
      Serial.println("Invalid NTP server address");
    }
  else {
    Serial.print("Got NTP time: ");
    Serial.println(NTP.getTimeDateString(NTP.getLastNTPSync()));
  }
});
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#9 Příspěvek od asdf »

Hmm, to je ono. Je to divné. Tak se to možná volá dvakrát. Jednou s chybou, podruhé bez chyby.
Uživatelský avatar
hafca
Příspěvky: 4723
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#10 Příspěvek od hafca »

Na konci toho výpisu se volá refresh_planning, ale jestli je to tím jsem nezjistil.

Kód: Vybrat vše

void refresh_planning(){
   int c=0;
  for(int j=1;j<=7;j++){
    Serial.print(j);
    Serial.print(" ");
  for(int i=1;i<=24;i++){
   c++;
   planning[j-1][i-1]=prog[c-1];
   Serial.print( planning[j-1][i-1]);
   Serial.print(" ");
  }
  Serial.println(" ");
}

Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
pocitujlasku
Příspěvky: 2764
Registrován: 12 pro 2005, 00:00
Bydliště: SR, Poprad

#11 Příspěvek od pocitujlasku »

kedze v arduino IDE nema zapnuty timestamp, tak predpokladam, ze prvykrat ntp sa deje v case, ked este nie je na wifi a potom po 60 sekundach (ako ma nastaveny interval). alebo sa ta kniznica pokusa pri prvom zlyhani o dalsi pokus o niekolko sekund a ten uz je ok.
chcelo by to vyhodit tie 2 if a nechat si vypisat konkretny error.
No vidis, a tak si sa bal
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#12 Příspěvek od asdf »

A zavolat tohle jde? (třeba z PC-čka): "http://"+ip+"/control?cmd=GPIO,2,0"
Uživatelský avatar
hafca
Příspěvky: 4723
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#13 Příspěvek od hafca »

Tady je výpis bez těch if

Kód: Vybrat vše

*wm:AutoConnect: SUCCESS 
*wm:STA IP Address: 192.168.0.154
192.168.0.154
HTTP server started
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
3 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1  
4 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
5 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
6 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  
7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1  
Got NTP time: 00:00:00 01/01/1970
Got NTP time: 13:14:44 01/12/2025
error
0
0
0:0:0
 
error
0
0
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#14 Příspěvek od asdf »

Podle mě ta hláška error nejspíš znamená, že mu nejde zavolat tohle URL:
asdf píše:A zavolat tohle jde? (třeba z PC-čka): "http://"+ip+"/control?cmd=GPIO,2,0"
Tím chce asi vypnout/zapnout kotel. Jde ti to URL zavolat z PC?
Uživatelský avatar
hafca
Příspěvky: 4723
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#15 Příspěvek od hafca »

Nejde, hlásí to chybu. V tom druhém ESP bude asi špatný program. Nedokážu v něm uložit heslo a SSID. Autor tam dal odkaz, který už nefunguje a tak zkouším co se dá.
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“