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.