Dashboard pro topení, scrapování Tecomatu v Node.js, wifi teploměr na ESP8266 a jiné

23. 01. 2022 | 400 slov

V domku máme podlahové topení řízené přes krabičku Tecomat, která podle teploty v místnosti a nastavené cílové teploty otevírá a zavírá hlavice a tím pouští teplou vodu do každé místnosti zvlášť.

Šikovný pán nám naklikal webové rozhraní:

Do kuchyně jsem si pořídil tablet, který je neustále ON a na kterém máme toto rozhraní zobrazené, ale nedalo mi to a chtěl jsem si vyrobit dashboard, kde půjde vidět půdorys domu a teplota v každé místnosti. Tecomat bude mít asi nějaké TecoAPI, už od roku …. 2018.

Problém č. 1: Api není povolené

Šikovný pán nám TecoAPI nepovolil, resp. nevytvořil žádného uživatele. Není problém, připojí se vzdáleně. Je totiž z druhé strany republiky.

Problém č. 2: Nemáme veřejnou IP

Dokud nám v obci neaktivují optiku, tak používáme LTE internet a k tomu nemáme statickou IP. Nevadí, udělám SSH tunel přes RaspberryPI namířený na Tecomat a to přes službu pitunnel.com což je moje oblíbená služba (a dost unikátní, i když pomalá).

Problém č. 3: UDP

Šikovný pán tvrdí, že potřebuje UDP, což pitunnel neumí. Kašlu na to, nejsem síťař abych dělal takové caviky.

Řešení

1. Scrapnu to

Konečně využití pro Raspberry! Ačkoli tady na blogu neustále píšu o tom, co se dá z Raspberry udělat, reálně to prostě nepoužívám.

Takže s pomocí Node.js a package Puppeteer spouštím headless Chromium, které se přihlásí do webového rozhraní a po přihlášení vyčte teploty z HTML. A třeba i takové informace, jako jestli se zrovna topí nebo ne (porovnává to CSS background image …)

Následně s pomocí cron Python skriptu uploadnu výsledný JSON na webserver (tím pádem se budu moci na teploty podívat odkudkoli, bez veřejné IP a bez zpřístupnění Raspberry zvenku).

2. A co garáž?

Tam topení nemáme a tím pádem ani senzor. Bastlířský eshop jsem ukončil k 1.2.2022 a zbylo mi pár součástek - vyrobil jsem si teplotní senzor s pomocí NodeMCU a teplotního modulu. NodeMCU je takový výkonější Arduino-kompatibilní kontroler, má Wifi a je pro něj dostupná webserverovská knihovna.

3. Frontend

Na webserveru jsem si napsal aplikaci ve Vue3, která periodicky stahuje JSON s teplotami a zobrazuje je v SVG půdorysu domu, který jsem si pracně vyrobil. Barva každé místnosti se změní podle toho, jaká je v ní teplota. Zobrazuje se i venkovní teplota a pokud se v místnosti topí, zobrazí se emoji teploměr.

Zdroje

Zdrojové kódy najdete na GitHubu. Některé kódy jsem převzal z mého předchozího projektu, meteostanice kterou rovněž najdete na GitHubu.