ESP32 s displejem, Telegram Botem a upozorněním z ČHMÚ
- April 02 2023
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 2052x Přečteno
Viděl jsem desku ESP32 s velkým 3.5" displejem a dostal jsem nápad. Vytvořit hodiny. Nicmoc říkáte si. Ony to ale nejsou ledajaké hodiny.
Kromě funkce hodin zobrazují teplotu a vlhkost, výstrahy z ČHMÚ ale také zprávy z telegramu! Prostě napíšu speciálnímu účtu na telegram a on zobrazí jakoukoliv zprávu na tomto displeji.
Ve spolupráci s laskakit (hardware) jsem vytvořil víceúčelové hodiny.
ESPD35
ESPD35 je deska kombinující mikrokontrolér ESP32 s velkým 3.5" TFT displejem. Kromě toho je možné jednoduše připojit vlastní čidla skrze uŠup konektor (kompatibilní se SparkFun Qwiic a Adafruit STEMMA).
Díky tomu je možné připojit spoustu dalších I2C čidel. K tomu je možné připojit i microSD kartu a využít tak mnohem větší paměť například pro obrázky nebo ikony (k meteostanici) a v neposlední řadě je 2x13 velký konektor, kam je možné připojit další komponenty.
Na 3.5" velkém displeji s rozlišením 480x320px je umístěna i doteková vrstva a tak ESP32 může zjisti případná gesta a pohyby.
Nechybí ani konektor na akumulátor - že deska není moc úsporná? Displej i celá deska sem může přepnout do úsporného režimu a její odběr mnohonásobně klesne.
Telegram Bot
Telegram je aplikace pro zasílání zpráv, která spojuje lidi prostřednictvím distribuované sítě datových center po celém světě. K vašim zprávám máte přístup ze všech telefonů, tabletů a počítačů najednou.
Navíc podporuje i vytvoření robota - takového prostředníka ke kterému můžete přistupovat z nejrůznějších zařízení, třeba z ESP32 díky knihovně https://github.com/cotestatnt/AsyncTelegram
Jak vytvořit Telegram Bot
Nejprve si nainstalujete aplikaci Telegram na váš telefon
https://play.google.com/store/apps/details?id=org.telegram.messenger&hl=cs&gl=US
Po vytvoření a oveření vašeho účtu najděte profil BotFather
a začnete konverzaci
napíšete /newbot a BotFather se začne vyptávat na podrobnosti
Pojmenujete a je hotovo. V poslední zprávě od BotFather najdete i token, který si uložíte. Ten potřebujete pro komunikaci mezi ESP32 (vaší deskou) a Telegram.
Formát tokenu je: "cislo:cislaApismena"
TMEP.cz
O TMEP.cz jsem tu psal už několikrát (až je to trapný, kolikrát tuto skvělou službu zminil, ale lepší opravdu neznám).
Jedná se o vizualizaci vašich dat - například z meteostanic. To ale není všechno. Kromě vizualizace a appky do telefonu umí tmep ještě něco navíc. Exportovat vaše data do json souboru a navíc k nim přidat i výstrahy z ČHMÚ - a to potřebuju k tomuto projektu.
V nastavení čidla musíte mít vybranou oblast na kterou chcete upozornit.
wiki: https://wiki.tmep.cz/doku.php?id=portal:export_posledniho_mereni&s[]=chmi
Nastavení čidla -> Základní údaje
Tady najdete data k exportu
Tento JSON upravíme do podoby:
https://tmep.cz/vystup-json.php?id=xxxx&export_key=yyyyy&chmi=1
Poté dostaneme i výstrahy z CHMÚ - pokud nějaké jsou.
Pokud zatím žádné čidlo a data nemáte, můžete váš kód otestovat na testovacím JSON. Ten náhodně zapisuje hodnoty jako teplota, tlak, tak i výstrahy.
https://tmep.cz/vystup-json.php?test=1
Jak si vytvořit zařízení pro měření teploty a ukládání na tmep jsem psal například zde
https://chiptron.cz/articles.php?article_id=318
Firmware
Kód pro ESP32 i dodatečnými soubory (jako jsou fonty), jsem uložil na githubu laskakit.
https://github.com/LaskaKit/ESPD-35/tree/main/SW/ESPD35_Clock_TelegramBot_CHMUalerts
Co je nutné vyplnit:
const char *ssid = "xxx";
const char *password = "yyy";
const char* token = "zzz";
const char* json_url = "www";
V případě, že nechcete používat český NTP server, změňte ještě tento řádek
NTPClient timeClient(ntpUDP, "0.cz.pool.ntp.org", 7200, 60000);
Jak kód funguje
ESP32 se připojí na NTP server a vyčte aktuální čas
ESP32 se připojí na TMEP.cz a vyčte JSON a dekóduje údaje teplotu, vlhkost a výstrahy z ČHMU.
ESP32 se připojí na Telegram server a kontroluje příchozí zprávy
České znaky s diakritikou (telegram nebo výstraha) jsou automaticky změněny za znaky bez diakritiky.
Zprávy z Telegramu se smazají pomocí zprávy /clear. Pokud napíšte /info, pak se pošle RSSI do telegramu, ale nezobrazí se na displeji.
Pokud nepřijde žádná zpráva z telegramu ani výstraha z ČHMÚ, pak je vzhled displeje tento
Pokud přijde zpráva z telegramu nebo výstraha, pak tento
Barva zprávy výstrahy se automaticky mění s barvou varování od ČHMÚ.
Závěr
Díky vývojové desce ESPD35 můžete zobrazit na displeji cokoliv, stejně tak můžete připojit další čidla. Díky TMEP.cz zase získáte různé data ať už z měření nebo výstrah a díky Telegram Bot můžete vzdáleně monitorovat váš dům, byt aj.
Github ESPD35: https://github.com/LaskaKit/ESPD-35
Tmep.cz https://tmep.cz/