Do Home Assistant můžeme jako senzor připojit i obsah webové stránky. Můžeme na ní analyzovat html kód a získat tak jen konkrétní část obsahu. Home Assistant díky tomu získá jen údaj, se kterým může dále pracovat a uložit ho. Slouží k tomu integrace scrape. Získání dat z webových stránek jsem zkoušel těmito 2 způsoby.
Podle pořadí HTML prvku
První možností, jak požadovaná data získat, je podle pořadí HTML prvku. Jako příklad si vezmeme stránku ČHMI, který dává veřejně k dispozici informace o hladině spodních vod nebo výšce hladiny a průtoku některých potoků a řek.
- V prohlížeči otevřeme například Detail objektu podzemních vod Zbraslav.
- Zobrazíme si HTML kód stránky (nejčastěji pomocí CTRL + U).
- V kódu najdeme požadovaný údaj. V našem příkladu je to řádek 227, který obsahuje kód <td style=“text-align:center;“>192.57</td>.
- HTML prvek je buňka tabulky <td>, takže v našem YAML kódu zapíšeme select: ‚td‘.
- Nyní spočítáme pořadí značky <td> v kódu. Nebudu tajit, že se to špatně počítá. Dobrý způsob je pokus – omyl. Pořadí elementu v kódu zapíšeme jako index: 27.
- Kód níže uložíme do souboru configuration.yaml a restartujeme Home Assistant.
- Zadaný senzor vidíme jako entitu sensor.podzemni_voda_zbraslav
Obsah souboru configuration.yaml
sensor: - platform: scrape resource: http://hydro.chmi.cz/hpps/hpps_pzv_detail.php?seq=168521 name: podzemni_voda_zbraslav select: 'td' index: 27 unit_of_measurement: 'm n. m.'
Podle názvu HTML prvku včetně vybrání části textu
Druhou možností, kterou jsem zkoušel, je nalezení informací podle id nebo třídy HTML prvku a následné vyříznutí části textu. Ať se nedržíme při zemi, zajímavou integrací by mohl být aktuální počet satelitů ve vesmíru. Žádné okamžitě použitelné číslo jsem nenašel, takže se spokojím s článkem UCS Satellite Database, který vypadá, že je pravidelně aktualizovaný.
- V prohlížeči otevřeme článek UCS Satellite Database.
- Zobrazíme si HTML kód stránky (nejčastěji pomocí CTRL + U).
- V kódu najdeme požadovaný údaj. V našem příkladu je to řádek 1053, který obsahuje kód <p class=“page-subtitle“>In-depth details on the 2,666 satellites …
- HTML prvek odstavec <p> má třídu „page-subtitle“, takže v našem YAML kódu zapíšeme select: „.page-subtitle“.
- Nyní rozdělíme obsah odstavce pomocí mezery na jednotlivá slova a vybereme čtvrté slovo ve větě. V YAML kódu napíšeme value_template: ‚{{ value.split(“ „)[4] }}‘
- Kód níže uložíme do souboru configuration.yaml a restartujeme Home Assistant.
- Zadaný senzor vidíme jako entitu sensor.satellite_count
sensor: - platform: scrape resource: https://www.ucsusa.org/resources/satellite-database name: Satellite_count select: ".page-subtitle" value_template: '{{ value.split(" ")[4] }}'
Pingback: Ohlédnutí za jarem 2020 -