Package Eventi Naturali

HassioHelp

Package Eventi Naturali

Introduzione

L’idea di creare un package su gli eventi naturali, mi è saltata in mente quando ho iniziato a vedere i primi componenti creati da Malte Franken(exxamalte) per Hass. Dall’altra parte dell’oceano, hanno realizzato diverse integrazioni relative ad eventi “catastrofici”, anche perchè, ci sono molte istituzioni che pubblicano svariati dati. Allora pian piano ho iniziato a cercare qualcosa di simile in Italia. Beh, non ho trovato molte informazioni a riguardo, così ho raccolto quelle che per ora sembrano funzionare e mi stanno dando diverse soddisfazioni.

Sintesi

Il package invia notifiche e immagini (dove previsto) per gli eventi che si attivano.

Sono inclusi (attualmente) 2 tipi di allerta e 4 tipologie di notifiche.

  1. Allerte
    1. Meteo (temporali, gelo, caldo estremo…)
    2. Geologiche (allagamenti, incendi, terremoti)
  2. Notifiche
    1. Caduti fulmini
    2. Criticità meteo
    3. Criticità meteo-idro
    4. Terremoti

I componenti utilizzati sono:

  1. Burze.dzis.net (Burze) HACS compatibile 
  2. Dipartimento Protezione Civile (DPC) HACS compatibile
  3. Istituto Nazionale di Geofisica e Vulcanologia (INGV) non ancora integrato in hass, ma si spera presto. :0)
  4. MeteoAlarm integrato
  5. World Wide Lightning Location Network (WWLLN) integrato

Informazioni

A Cosa servono questi componenti.

  • Burze, è un sensore che riguarda le allerte meteo, ma è valido solo per la Polonia. La parte relativa ai fulmini (storms_nearby – temporale nelle vicinanze) è però
    utilizzabile in tutta Europa. Il servizio si avvale di un’ottima fonte, Blitzortung.org. Questo sensore, ci avverte, entro un raggio impostato, quanti fulmini sono caduti negli ultimi minuti, e ci segnala la direzione di quello caduto più vicino alla zona indicata (di solito casa).
  • DPC è un semplice binary sensor che ci avverte della pubblicazione di nuovi Bollettini di criticità nazionale di allerta  Meteo-Idro rilasciati dalla Protezione Civile. Sono allerte, leggermente diverse da quelle classiche per il meteo. Infatti, sono più indicate per i danni che possono causare le condizioni avverse del tempo, che per le previsioni del tempo in se. L’idea di realizzare questo componente, anche se non sono un programmatore, mi è venuta leggendo una nota (“…non rappresentano le allerte ufficiali emanate dal Servizio Nazionale di Protezione Civile”)  sul sito di MeteoAlarm. Ringrazio, anche se non lo conosco personalmente, Giovanni Pirrotta, che ha realizzato un programma per estrarre i dati shape della Protezione Civile, renderli utilizzabile in maniera semplificata, tramite il sito Protezione Civile POP. Vorrei precisare, che per poter estrarre i dati dal sito di Pirrotta, ed averli in Hass, basta crearsi dei binary sensor con platform: rest. (Vedi esempio a fine articolo).
  • INGV è un componete, che spero di vedere presto ultimato, per l’avviso di terremoti (ovviamente già avvenuti :0)) dall’australiano Malte Franken(exxamalte) molto noto per i suoi lavori di estrazione dati in formato GeoRSS e GeoJson. Io e Gianpi, abbiamo un po’ adattato quello che è già pronto da sei mesi sulla repository dell’autore.
  • MeteoAlarm è un sito (utlimamente un po…”ballerino”) che pubblica gli eventi critici relativi alle condizioni climatiche e non solo. La fonte da cui provengono i dati, sono principalmente quelli dell’Aeronautica Militare, e precisamente dal sito meteoam. Ci sono allerte per 12 eventi differenti (Neve/Ghiaccio, Temporali, Nebbia, Temperature massime estreme, Temperature minime estreme, Eventi Costieri, Incendi bischivi, Valanghe, Pioggia, Alluvione e Pioggia/Alluvione). Questo componente (v.1.05) è già presente ed integrato in Hass, ma da luglio, l’autore rolfberkenbosch ha realizzato la versione 1.0.6, che permette di avere un paio di attributi in più, che restituiscono valori numerici in base al tipo di evento e al livello di allerta. Personalmente l’ho provato, ed è stato molto più facile fare i template, per adesso accontentiamoci di quello integrato e con dei template non proprio “leggeri”. Prometto, di aggiornare il package, non appena, gli sviluppatori di Hass, si decideranno di aggiornare la libreria.
  • WWLLN è un altro componente che permette di geo-localizzare i fulmini caduti, e data la mole di dati che esso genera, è consigliabile impostare una finestra temporale(Window) ridotta, per la registrazione dei dati. Questo componente, a differenza di Burze,  geo-localizza i fulmini su mappa, ed utilizza più fonti per la raccolta dati. L’University of Washington le ha raccolte in un singolo sito. Ho preferito inserire anche questo componente, perchè mi da l’idea di quanti fulmini sono caduti nell’arco di tempo impostato.

Requisiti

Installazioni

  1. Installare il componente HACS  Guida.
  2. Installare da HACS, i Custom Component Burze e DPC
  3. Installare da HACS, le seguinti Cards per lovelace
    1. Lovelace Card Tools (manuale)
    2. Auto Entities (manuale)
    3. Lovelace Card Mod (store)
    4. Fold Entity Row (store)
    5. Text Divider Row (store)

N.B. Per l’istallazione manuale delle cards, bisogna copiare il link dalla repository dell’autore su github, andare in HACS nel menu SETTINGS (in alto a destra) ed incollare nella parte CUSTOM REPOSITORIES nella riga ADD CUSTOM REPOSITORY, scegliendo, Plugin, come categoria nel menù a tendina (Category). Probabilmente, può capitare che la card auto-entities non funzioni sullo smartphone, provate a cambiare il resource del plugin Cards Tools in type: js. Il resources: alla fine dovrebbe così presentarsi:

Dopo aver installato tutto l’occorrente iniziamo a procurarci i dati.

Burze. Per poter utilizzare questo sensore, occorre registrarsi al sito Burze.dzis.net, ed una volta iscritti, andare nella sezione  API (colonna a sinistra) e prelevare la chiave API. Si vedrà:

La tua chiave di accesso API: b123456789417cc77abc00ff123gg0h12345e25l Numero di richieste per metodi che restituiscono dati per 1 minuto (limite): 0 (10)

MeteoAlarm. Andare sul sito di MeteoAlarm, scegliere la propria regione cliccando sulla cartina e prendere il nome esatto della propria regione.   (come selezionato in blu qui sotto).


Preparare il file /config/secrets.yaml per i dati sensibili. Non obbligatorio ma fortemente consigliato. Volendo possiamo mettere tutti i dati nel file secret. Ma ricordo che ogni dato legato al file secret, se modificato, occorre un riavvio di Hass.

Attenzione. Riguardo il numero ISTAT, poichè ha un formato alfanumerico, va messo tra apici!

Volendo, può anche essere inserito senza apici, ma senza gli zeri iniziali!! (Così vanno tutti bene… istat: 58091,  istat: ‘58091’,  istat: ‘058091’ Questo è errato istat: 058091)

Prima di installare il package, riavviare Hassio per rendere effettivi i componenti.

Scompattate il file zip (link ed istruzioni in allegati) in una cartella a piacere sul PC, poi copiate ed incollate singolarmente le varie cartelle in quella principale di Hass. (in Hassio è /config).

Configurazione

Per la configurazione, abbiamo messo tutto all’inizio del package, dove andranno inseriti i propri parametri.

Ogni riga è composta da tre parti:

  1. da una descrizione SERVIZIO Notify:
  2. da un anchor (richiamo) &notify
  3. dal parametro da utilizzare notify.telegram

L’importante è scrivere dopo gli anchors yaml (&nome_anchor) seguito da uno spazio.

Questo sistema, ovvero di scrivere qualsiasi cosa all’interno di package.node_anchors non compromette il resto della configurazione. Per adesso funziona, evitandoci così, di andare a cercare le varie opzioni da modificare lungo il codice o sostituire i dati con gli strumenti degli editor.

Alcuni esempi per non sbagliare…

Per la riga  SERVIZIO Notify: &notify notify.telegram l’elemento da modificare è l’ultima parte quella in rosso, e andremo a mettere il nostro servizio di notifica, che può essere notify.caio o notify.telegram o notify.family etc,  basta che sia sempre dello stesso dominio notify! Per avere notifiche multiple si può usare notify group.

Nella riga MEDIA PLAYER Alexa (così come altri media_player tipo Google), basta aggiungere le entità dei vostri media player (media_player.studio, media_player.echo_dot_di_caio)

Corretto.

MEDIA PLAYER Google: &media_player_google media_player.red, media_player.sala, media_player.ingresso
MAGNITUDO minimo: &magnitude 3
API KEY Burze: &burze_api_key b123456789417cc77abc00ff123gg0h12345e25l (non errato, ma è fortemente consigliato utilizzare !secret)

Sbagliato.

RAGGIO TERREMOTO km: &radius_quake ‘500’ (è un numero intero non va tra apici)
RAGGIO ZONA GeoAlert metri: &radius_geoalert1000000 (il parametro 1000000 e anchor non sono separati da uno spazio)
LATITUDINE per le zone:

&latitude !secret latitude_home (l’anchor, in questo caso non deve andare a capo)
SERVIZIO Notify: &notify telegram_bot_send_message (non è un servizio notify.)
SERVIZIO Notify: &notify notify.allarme, notify.casa, notify.geronimo (non va bene, va inserito un servizio solo.)
REGIONE MeteoAlaram: &province Emilia Romagna (La regione secondo Meteoalarm va scritta come è sul sito, ovvero, Emilia & Romagna)

Impostazioni

Chiarito il concetto di come scrivere i parametri, vediamo a cosa servono e come impostarli.

SCRIPT centro notifiche è lo script per smistare i messaggi testo e audio. (chi utilizza centro notifiche può eliminare tutti gli script nel package ed impostare script.my_notify)

SERVIZIO Notify è il servizio che utilizzate per le notifiche di testo e se usate Telegram, è valido anche per l’invio di immagini con url o file.

MEDIA PLAYER Google e MEDIA PLAYER Alexa sono i campi dove vanno inserite le vostre entità media player. (se non si posseggono, basta lasciare due apici, singoli ''o doppi  "", senza spazi)

Filtri

RAGGIO ZONA MeteoAlert metri e RAGGIO ZONA GeoAlert metri sono campi numerici e non vanno tra apici. Rappresentano l’area entro la quale, al verificarsi di un evento meteo (es. WWLLN) o geologico (es. INGV), con coordinate geografiche,  verrà registrata l’entità in Hass (es. geo_location.m_2_4_svizzera_svizzera)

RAGGIO TERREMOTO km è un campo numerico e non va messo tra apici. La distanza in chilometri attorno alle coordinate di casa in cui sono inclusi gli eventi sismici.

MAGNITUDO minimo è un campo di tipo float, non necessita di apici. Rappresenta il magnitudo entro il quale il sistema deve registrare l’entità. (Come impostazione minima è consigliabile 3.0 o 3.5 – si può scrivere anche 3 al posto di 3.0)

RAGGIO BURZE Km è un valore numerico e non va tra apici. Rappresenta il raggio entro il quale, se si verifica l’evento, si attiva il sensore.

RAGGIO WWLLN km anche questo campo è numerico e non va tra apici. Rappresenta il raggio massimo entro il quale verranno create le entità.

WWLLN finestra minuti è un valore numerico non va tra apici. Rappresenta il lasso di tempo per cui creare le entità in Hass. (di default è 10 minuti, io l’ho impostato per le ultime 6 ore)

Note.

Nelle automazioni troverete:

  1. Title. Il titolo dell’evento che andrà in automatico nei messaggi di testo o nella didascalia delle foto.
  2. Message. Il messaggio di testo che verrà inviato. Se è presente un’immagine, il messaggio verrà incorporato nella foto come didascalia.
  3. Message_tts. Messaggio solo per la parte audio. Se omesso o vuoto, non verrà riprodotto alcun messaggio.
  4. File. Ho inserito delle immagini (per lo più stickers telegram) nella cartella config/www/hassiohelp/pkg_natural_events inerenti ai sensori attivi.
  5. Url. Principalmente utilizzato per l’invio dell’immagine con epicentro del terremoto. Ricordo che sotto a magnitudo 3.0 non verranno inviate immagini, in quanto INGV non le pubblica.
  6. Notify e media_player e script, sono gli alias YAML (esempio *notify) dove verranno inseriti i parametri già configurati con gli anchor yaml.
  7. Wait template. Serve, nel caso di un invio multiplo instantaneo, per evitare la perdita del messaggio.
  8. Input boolean per la condizione di invio immagini (per adesso solo per Burze e MeteoAlarm).
  9. Data. Opzioni che riguardano il centro notifiche, non influisce se non avete il package Centro Notifiche.

Nello script troverete:

  1. Invio messaggio testo a condizione che url e file non siano presenti, e che il servizio notify è definito.
  2. Invio di immagini da url e file più eventuale titolo e messaggio come didascalia. (evitando di ricevere due messaggi)
  3. Notifica audio, nell’orario tra le 07:00-23:00 e che il campo(o pseudo-variabile) message_tts non sia vuoto.
  4. Invio dei messaggi tts ai rispetivi media player.

Nello zip troverete le seguenti cartelle:

  • config/packages/natural_events.yaml (File del package)
  • config/custom_components/ingv_centro_nazionale_terremoti_client (Anteprima componente Terremoti)
  • config/www/hassiohelp/pkg_natural_events (Immagini usate nel package)
  • config/lovelace/cards/ (Cards per lovelace)

Si potrebbe dividere il package dalla configurazione, come abbiamo già visto in altri (xiaomi allarm, centro notifiche, controllo carichi) ma obiettivamente, questo package non è nulla di complesso… quindi un file unico va più che bene :0)

Per chi utilizza il centro notifiche, deve sostituire lo script script.natural_events_notifications con il solito script.my_notify, ricordarsi di modificare il wait template dello script , le automazioni, eliminare il superfluo, e fare attenzione al servizio notify (non va inserita l’entità completa ma solo il nome… a breve provvederò anche per l’uso dell’intera entità). L’ultimo aggiornamento l’ho pubblicato su GitHub. Ho inserito Url e File per l’invio di foto con telegram, Ariela e qualche correzione. Per chi è interessato, altre informazioni le può trovare sul sito e sul forum.

Suggerimenti

Riguardo gli avvisi DPC, come accennato in precedenza, per chi NON volesse utilizzare il custom_component, allego un paio di esempi.

Allegati

Lovelace

Personalmente utilizzo lovelace in modalità YAML, per cui le cards si trovano nella cartella lovelace.

Per chi ha la modalità grafica, deve copiare il contenuto della card, poi in UI, nella scheda panoramica, andare  sui tre pallini in alto a destra e scegliere configura l’interfaccia utente, in basso a destra comparirà un’icona a forma di cerchio con il simbolo “+”. Cliccare sull’icona e scegliere manual card. Selezionare tutto nella parte a sinistra e incollare il contenuto precedentemente copiato. Salvare.

Mentre per chi usa la modalità YAML basta inserire - !include cards/card_natural_events.yaml e/o - !include cards/card_natural_events_picture.yaml (in fase di costruzione…) che sono cards più complesse, o se preferite - !include cards/card_natural_events_lite.yaml una card più semplice e leggera :0).

All’interno delle cards più complesse, c’è da sostituire il device tracker per calcolare la distanza tra il dispositivo e il terremoto {{distance(lat, lon, 'device_tracker.oneplus_5t') | round(1)}}.

Per la mappa di Burze, ci sono cinque fattori di zoom

Per la card_natural_events_picture.yaml, realizzata in pochi minuti, ringrazio Enrico per la collaborazione.

 

Packages

Poiché il sito è molto limitato, ho caricato i file su github Package-Natural-Events. (Aggiornato per Home Assistant versione 0.100.2 e successive).

Versione 1.0 per Home Assistant dalla versione 0.98 alla 0.100

Per scaricarlo, basta cliccare su clone or download e salvare il file zip sul pc. Estrarre il contenuto, e copiare la cartella config che si trova in Package-Natural-Events-master nel percorso principale di Hassio, o come detto in precedenza, copiare le cartelle una per una (in HassOs penso sia l’unico modo, poichè non si può accedere alla root).

Spero che sia di vostro gradimento e ovviamente, siete liberi di apportare tutte le modifiche che volete. Mi auguro che la card sia sempre… verde :0). 

Discussione e problematiche vedi spazio sul Forum 

 

10 risposte

  1. Avatar matteo ha detto:

    dove trovo la hui-markdown-card?

    • Caio Sweet Caio Sweet ha detto:

      Non esiste, è la markdown normale messa sotto una card type: entities… per usare le card come entities, va messo hui-cardufficiali-card

  2. Avatar jokerigno ha detto:

    Ciao,

    solo una nota. Dark Sky è necessario perchè il package chiama il sensore dark_sky_daily_summary.

    Se non presente compare un fastidioso ‘unknown’ al centro della card.

    Ciao e GRAZIE !

    • Caio Sweet Caio Sweet ha detto:

      Beh, basta che lo levi e lasci vuoto 😎
      O ne metti un altro che ti piacerebbe vedere li… O ci scrivi un qualcosa di tuo… 😜
      esempio
      elimini la parte da font size=”3″{{states(‘sensor.dark_sky_daily_summary’)}} /font
      oppure ci metti {{states(‘group.natural_events’)}}
      o un altro sensore…

    • Caio Sweet Caio Sweet ha detto:

      ok, ho aggiornato la card… non dovrebbe più uscire nulla se non c’è quel sensore.

  3. Avatar Gianluca ha detto:

    salve, complimenti per le ottime guide e packages,
    avevo intenzione di implementare solo il servizio DPC e creare un’automazione che mi avvisasse in caso di avvisi ,
    ho creato il binary sensor con queste entità:

    – binary_sensor.dpc_idrogeologico_oggi
    – binary_sensor.dpc_idraulico_oggi
    – binary_sensor.dpc_temporali_oggi
    – binary_sensor.dpc_idrogeologico_domani
    – binary_sensor.dpc_idraulico_domani
    – binary_sensor.dpc_temporali_domani

    ho poi creato un’automazione modificando quella da voi postata in questo modo:
    automation:
    – alias: natural_events_protezione_civile_notifications
    initial_state: true
    trigger:
    platform: state
    entity_id:
    – binary_sensor.dpc_idrogeologico_oggi
    – binary_sensor.dpc_idraulico_oggi
    – binary_sensor.dpc_temporali_oggi
    – binary_sensor.dpc_idrogeologico_domani
    – binary_sensor.dpc_idraulico_domani
    – binary_sensor.dpc_temporali_domani
    condition:
    – condition: and
    conditions:
    – condition: or
    conditions:
    – condition: template
    value_template: “{{ trigger.to_state.state == ‘on’ }}”
    – condition: or
    conditions:
    – condition: template
    value_template: “{{ trigger.from_state.state == ‘off’ }}”
    – condition: template
    value_template: “{{ trigger.to_state.attributes.data != trigger.from_state.attributes.data }}”
    – condition: template
    value_template: “{{ trigger.to_state.attributes.allerta != trigger.from_state.attributes.allerta }}”
    – condition: template
    value_template: “{{ trigger.to_state.attributes.info != trigger.from_state.attributes.info }}”
    action:
    – service: notify.gianluca
    data_template:
    title: >-
    Protezione Civile –
    {% if trigger.from_state.state == ‘off’ %}
    {{ trigger.to_state.attributes.friendly_name }}.
    {% else %} AGGIORNAMENTO DPC. {% endif %}
    message: >-
    {% if trigger.from_state.state == ‘off’ %}
    Bollettino Protezione Civile
    {% else %} Aggiornamento bollettino. {% endif %}
    Rischio {{trigger.to_state.attributes.rischio}}. Allerta {{trigger.to_state.attributes.allerta}} {{trigger.to_state.attributes.info}}.
    – service: tts.google_say
    data_template:
    entity_id: media_player.google_home, media_player.google_home_mini
    message: >-
    {{ trigger.to_state.attributes.friendly_name }}. Allerta {{trigger.to_state.attributes.allerta}} {{trigger.to_state.attributes.info}}.
    language: ‘it’
    cache: false

    mi sapreste dire se è corretta? da verifica tramite Convalida configurazione nelle impostazioni di Hassio risulta corretta ma non ho modo di verificare se non arriva un avviso dalla Protezione CIvile…
    grazie

    • Caio Sweet Caio Sweet ha detto:

      Da cellulare non riesco a vedere bene la formattazione, ma mi pare corretta.
      Per vedere se funziona, vai in dev-tools stati, e gli cambi lo stato da off a on e premi su set… Dovrebbe partire la notifica, chiaro, con gli attributi none

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *