Tiny Tiny RSS + Home Assistant Lovelace RSS Feed Parser Plugin + Telegram

Instalace Home Assistant na ESXi server (HA) umožňuje nekomplikovaně rozšiřovat domácí automatizaci o nové vychytávky a funkce. V dnešním blogu budeme psát o integraci RSS čtečky do Home Assistant instalace s příkladem pro použití. Díky Tiny Tiny RSS se v Home Assistant vyhneme komplikovanému skriptování, zejména u pokročilého / vicenásobného použití RSS protokolu, s potřebou dodatečně filtrovat parsovaný text. Bonusem je efektivita použití hotového materiálu pro Home Assistant notifikace, pomocí Telegram bota.

K čemu kombinace Tiny Tiny RSS + Home Assistant + Telegram? Můžete místo sjíždění email newsleteru číst pouze vybrané věci :) Hodí se zejména pokud musíte sledovat hlášení kritických hardware / software chyb, aktualizace, apgrejdy a další nahodilosti. Pomocí této vychytávky můžete samozřejmě sledovat bitcoin, počasí, dopravu, burzu, oblíbené blogy, twitter a další nespočet všeho. Na jediném míste, v okně chatu, bez nutnosti přihlašovat se do dvaceti rozhraní. Bez prohrabávání se kupou mailů.

Díky virtualizaci (ESXi) spustíme pro Tiny Tiny RSS čistou instalaci Debianu s Apache2 serverem, PHP 7.3 a MariaDB databázy. Pokud máte VMware (ESXi) okoukané, nahazujete Debian 10 Buster z uložené zálohy (čisté instalace). Kde již máte vše kolem LAPM (Apache2, MariaDB, PHP 7.3) i SSH server nainstalované, aktualizované a spuštěné. Tudíž na spuštěném serveru změníme pouze host name a IP adresu. A máme hotovo :)

Malá poznámka k databáze pro Tiny Tiny RSS. Když ze zvyku či z jiné pohnutky automaticky preferujete MySQL / MariaDB pak TTRRS (Tiny Tiny RSS) je původně „psaná“ na PostgreSQL. To ničemu nevadí. Pokud ale chcete používat vychytávku v podobě pluginu af_psql_trgm (označí podobné artikly jako prečtené), bez PosgreSQL se neobejdete.

Tento TTRSS plugin používá PostgreSQL syntax a náramně se hodí v případě masivního používáte RSS zdrojů. Ty mohou publikovat stejné téma s časovým odstupem několika hodin či dne = neodfiltrujete přečtené = obdržíte opakovaně notifikaci s podobným / stejným obsahem (ze všech zdrojů). Když to považujete za výhodu prima. Pokud ne, neinstalujte MariaDB :)

Čistá instalace + Docker instalace Tiny Tiny RSS

Čistá instalaca (Tiny Tiny RSS) od píky je dokonale popsána na webu vultr, docker instalace přímo na git hub webu ttrss. Triviální přidání RSS zdrojů do rozhraní čtečky popisovat nebudeme. Instalaci pluginu do HA je kapitola sama pro sebe a vydala by na další článek.

Filtrujeme feed v Tiny Tiny RSS a Publikujeme

Máme tedy funkční čtečku s registrovanými odběry. Využijeme unikátní funkci Publikovat. Bežná čtečka naparsuje zadaný RSS / Atom Feed, obsah (či náhled obsahu zobrazí) s názvem a odkazem. Tiny Tiny RSS umí něco navíc. Generuje vlastní RSS feed. Bez nutnosti nastavování, má každá vytvořená kategorie v čtečce (třeba Novinky ve které máte 10 zdrojů) vlastní URL. Pomocí takto vygeneroavné URL vidíte v další čtečce (pomocí které se přihlásite k odběru k Tiny Tiny RSS) agregovaný obsah ze všech deseti zdrojů. Možnost filtrovat a filtrovaný obsah publikovat do zvláštní kategorie (s vlastní feed URL) dotahuje věc k dokonalosti.

RSS Feed konfigurace filtrování

Přejdeme do konfigurace, kde v menu Filtry vytvoříme pravidla pro filtrování. Čtečka umí několik variant filtrů. Filtrovaný článek dle klíčových slov v názvu či v těle zprávy označí jako přečtený, zmaže, archivuje, označí hvězdičkou nebo publikuje. Nastavení filtru:

Vygenerovaný feed složky (kategorie) Publikované

Home Assistant konfigurace plugin feedparser

Nezapomenou instalovat plugin :) Neplést si feedparser plugin s integrací (pluginem) feed či feedreader. V Home Assistant konfiguračním souboru configuration.yaml případne sensor.yaml (dle toho kam zapisujete konfiguraci) zapíšeme URL Tiny Tiny RSS feedu:

  - platform: feedparser
    name: Feed 0day
    feed_url: 'http://192.168.8.1/tiny/public.php?op=rss&id=-2&key=rgz2845fcd1abcde8f'
    scan_interval: '01:00:00'
    date_format: '%a, %b %d %I:%M %p'
    inclusions:
      - title
      - link

Zároveň vytvoříme šablonu pro automatizaci. Konkrétně pro odeslání notifikace na Telegram. Konkrétně v případě změny stavu sledovaného feedu. Toto nám ušetří testování filtrů a jejích funkčnosti v Home Assistant. Template zapíšeme pod feedparser konfiguraci:

  - platform: template
    sensors:
      feed_zranitelnost_template:
        friendly_name: 'Můj Feed 0day'
        value_template: >
          {{ states.sensor.feed_0day.attributes.entries[0].title }}
          {{ states.sensor.feed_0day.attributes.entries[0].link }}

Následuje poslední konfigurace v souboru automations.yaml případne. Automatizace – Notifikace na Telegram (předpokládá se, že v Home Assistant máte funkční nastavení pro Telegram API).

- id: 'generuje automaticky GUI rozhraní'
  alias: Notify if 0day in Feed
  description: ''
  trigger:
  - platform: state
    entity_id: sensor.feed_0day
    attribute: entries
  condition: []
  action:
  - service: telegram_bot.send_message
    data:
      title: '{{ states.sensor.feed_0day.attributes.entries[0].title }}'
      message: '{{ states.sensor.feed_0day.attributes.entries[0].link }}'
      target:
      - 9370745172
      - 4835851521
  mode: single

A notifikce můžou nastoupit :)