La creatività è mettere in connessione le cose… (Steve Jobs)

Ad aprile di quest’anno ho iniziato ad usare i Feed con Hass, e dato che mi interessava avere una citazione al giorno presa da internet, senza creare ulteriori template con frasi aggiunte ad hoc e riprodotte in maniera random, per alleggerire il sistema, ho pensato di condividere questa soluzione.
Si ma, cosa sono i Feed? Sono informazioni aggiornate di continuo, formattate secondo uno specifico standard(es. XML), che permettono all’utente, attraverso vari strumenti, di estrapolare da questo flusso (feed) di dati, il contenuto desiderato. Chi distribuisce i feed, li rende disponibili tramite iscrizioni, dove, il distributore, di frequente, aggrega gli aggiornamenti.
Vediamo come poter inserire i Feed in Hassio, grazie allo strumento feedparse(custom component), e visualizzare i dati in lovelace con l’ausilio dei plugin list-card e lovelace-home-feed-card(custom card), o inviare le notifiche sul proprio smartphone tramite il sensore del componente, su Telegram, Pushover ed altri notificatori, e perchè no, al risveglio, farci dire da Alexa/google la citazione del giorno da wikiquote, l’ultima notizia ANSA, o inserire l’informazione ottenuta, nel proprio almanacco su Hassio.
Questo componente personalizzato, si differenzia da quello ufficiale, per l’aggiunta del sensore, il quale ci permette di avere un maggiore controllo dei feeds.
Il risultato finale, può essere più o meno questo.
Tutto dipende da quali attributi si scelgono dal sensore feedparser per visualizzare i dati nella scheda.
Per installare l’occorrente, basta andare sullo store di HACS e cercare fra le integrazioni feedparser e tra i plugin list-card e home-feed-card.
Non dimentichiamoci di richiamare i plugin nelle risorse di lovelace, sempre con il percorso giusto, suggerito all’atto dell’installazione, dall’auore:
1 2 3 4 5 |
resources: - url: /community_plugin/list-card/list-card.js type: js - url: /community_plugin/lovelace-home-feed-card/lovelace-home-feed-card.js type: js |
Per chi utilizza lovelace in modalità Interfaccia Utente (cossìdetta UI o modalità grafica) basta selezionare dal menu in alto destra (i tre puntini verticali) Configurare l’interfaccia utente e poi scegliere dallo stesso menu, Editor di configurazione grezzo. Si aprirà l’intera configurazione di Lovelace, ed in cima basta agiungere la parte di codice del resources.
In fine, ecco un mini package da copiare ed inserire in un file yaml, ad esempio feed.yaml. (Per il plugin lovelace-home-feed-card installare dalla versione Beta release (0.3.4b1) in poi. Per vederla, si deve scegliere l’opzione “Visualizza beta” nelle impostazioni di questa card in HACS.)
NOTA. Faccio presente che per le notifiche utilizzo uno script a parte, vedi Centro notifiche, quindi modificate il codice secondo le vostre impostazioni ed esigenze.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
homeassistant: customize: ######################################################################## ## CUSTOMIZE NODE ANCHORS ######################################################################## package.node_anchors: customize: &customize package: 'Feed' author: 'Caio - www.hassiohelp.eu' version: '1.0' expose: &expose <<: *customize haaska_hidden: false homebridge_hidden: false ################################################ ## Automation ################################################ automation.nuovo_articolo_hassiohelp: <<: *customize friendly_name: "Notifica Articolo hassioHelp" ################################################ ## Sensor ############################################### sensor.wikiquote: <<: *customize friendly_name: "Citazioni" sensor.articoli_hassiohelp: <<: *customize friendly_name: "Articoli HassioHelp" sensor.news_ansa: <<: *customize friendly_name: "Ansa" feedreader: urls: - https://hassiohelp.eu/feed/ - https://www.ansa.it/sito/ansait_rss.xml - https://it.wikiquote.org/w/api.php?action=featuredfeed&feed=qotd scan_interval: minutes: 30 max_entries: 20 sensor: - platform: feedparser name: Articoli HassioHelp feed_url: 'https://hassiohelp.eu/feed/' date_format: '%d/%m/%Y' inclusions: - title - link - published - platform: feedparser name: News Ansa feed_url: 'https://www.ansa.it/sito/ansait_rss.xml' date_format: '%d/%m/%Y' inclusions: - title - link - published - platform: feedparser name: Wikiquote #show_topn: 1 feed_url: 'https://it.wikiquote.org/w/api.php?action=featuredfeed&feed=qotd' date_format: '%Y-%m-%d' inclusions: - title - summary - published automation: - alias: Nuovo articolo HassioHelp initial_state: true trigger: platform: event event_type: feedreader condition: - condition: template value_template: "{{ trigger.event.data.feed_url == 'https://hassiohelp.eu/feed/' }}" action: - service: script.my_notify # data: # mute: 1 data_template: title: 'Nuovo Articolo Hassio Help' message: > Nuovo Articolo su Hassio Help. {{trigger.event.data.title}} link: > {{trigger.event.data.link}} # Esempio di trigger per Wikiquote - alias: wikiquote initial_state: true trigger: platform: event event_type: feedreader condition: - condition: template value_template: "{{ trigger.event.data.feed_url == 'https://it.wikiquote.org/w/api.php?action=featuredfeed&feed=qotd' }}" action: - service: script.my_notify data: mute: 1 data_template: title: > {{trigger.event.data.title}} message: > {{trigger.event.data.summary|striptags}} link: > {{trigger.event.data.link}} |
Riavviare Hass, per rendere effettive le impostazioni del componente feedparse e configurare la parte lovelace, come ad esempio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
title: News path: news icon: mdi:newspaper cards: - type: vertical-stack cards: # Esempio con markdown # - type: markdown # content: >- # Citazione del Giorno {{state_attr('sensor.wikiquote', 'entries')[-1].published}} # ___ # _{{state_attr('sensor.wikiquote', 'entries')[-1].summary|striptags}}_ - type: custom:home-feed-card title: "\U0001F5E3 Citazione del Giorno" show_empty: false entities: - entity: sensor.wikiquote multiple_items: true list_attribute: entries remove_repeats: true max_items: 1 content_template: >- {{title}} {{summary}} - type: custom:list-card feed_attribute: entries entity: sensor.articoli_hassiohelp title: "\U0001F4F0 Articoli HassioHelp" row_limit: 20 columns: - title: 'Titolo' add_link: link field: title - title: Data field: published style: - white-space: nowrap - type: custom:list-card feed_attribute: entries entity: sensor.news_ansa title: "\U0001F4F0 News ANSA" row_limit: 20 columns: - title: 'Titolo' add_link: link field: title - title: Data field: published style: - white-space: nowrap |
Da notare, l’uso del filtro jinja striptags, con il quale, si eliminano tutti i tags HTML presenti nel caso di wikiquote.
Per l’icona nel titolo, potete fare riferimento alle icone in formato UNICODE per python fileformat.info o unicode.org
Tutto qui.
Altro esempio, farsi dire la citazione o una notizia ad un certo orario.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
automation: - id: Buongiorno info HUB alias: Buongiorno info initial_state: true trigger: - platform: time at: '07:45:00' condition: - condition: time weekday: - mon - tue - wed - thu - fri action: - service: script.my_notify data: #call_saluto: 1 #call_informare: 1 alexa_type: "tts" data_template: message: >- Sono le {{states('sensor.time')}}, ed è {{states('sensor.dark_sky_summary')}}. La temperatura esterna è di {{states('sensor.dark_sky_apparent_temperature')|round(0) }} gradi, mentre la temperatura interna è di {{states('sensor.temperatura_media') |round(0) }} gradi. *Previsioni.* {{ states.sensor.dark_sky_hourly_summary.state }}. *Citazione. * {{state_attr('sensor.wikiquote', 'entries')[-1].summary|striptags}}. |
Esempio automazione per le notifiche Ansa, con Telegram.
Se nella configurazione di telegram_bot, si usa parse_mode: markdown
(che è di default) va bene il seguente codice, altrimenti rimuovere i filtri “|replace”. Oppure più semplicemente
[Ansa News]({{trigger.event.data.link}})
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
- alias: Notifiche Ansa initial_state: true trigger: platform: event event_type: feedreader condition: - condition: template value_template: "{{ trigger.event.data.feed_url == 'https://www.ansa.it/sito/ansait_rss.xml' }}" action: - service: notify.telegram data_template: title: >- {{trigger.event.data.title}} message: >- {{trigger.event.data.link|replace("_", "\_")|replace("*", "\*")|replace("[", "\[")|replace("`", "`")}} |
Buon feed a tutti :0) e ringrazio gadgetchnnel per aver apportato modifiche alla sua card, in modo da visualizzare i feed di wikiquote con un ordine discendente in base al tempo.
6 risposte
Ciao, come dite bene la creatività è mettere in connessione le cose.
Beh vi segnalo che da qualche settimana il feed RSS di hassiohelp non funziona 🙂
Potete sistemarlo?
Grazie
Ciao. Si, ha smesso di funzionare esattamente due secondi dopo che ho pubblicato l’articolo ?. Nicolò ha cambiato server, prima di Natale dovrebbe sistemarlo… Siamo tutti nelle sue mani??
Purtroppo l’errore sui feed di hassiohelp è sicuramente nel tema del sito, e/o qualche plugin che interferisce, e non sarà ripristinato presto… Dobbiamo attendere dopo le feste. Mi dispiace.
Caio.
Ciao.. Scrivo qui e non sul gruppo Telegram.. Automazione Buongiorno Info Hub, anche se la temperatura esterna è di -1, la notifica manda sempre 0..
Si. C’è un errore nel template… INT.
Ti invito a provare in Dev tools, senza usare filtri, o inserendo come filtro “|float” o se preferisci “|round(0)”
Finalmente…. sono tornati a funzionare i fedds ;0)