Scopi della guida:
Concetti affrontati:
|
Componenti software utilizzate:
Prerequisiti:
Dispositivi fisici utilizzati:
|
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:![]() |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 1.2 |
Abstract
Meteorologisk institutt (Met.no) è un servizio metereologico gratuito il quale, quando integrato presso Home Assistant, permette di dotarsi di entità di tipo “Weather” contenenti le condizioni meteo attuali nonché (di base) le previsioni del tempo su base giornaliera.
In realtà, tale servizio (ma anche altri, analoghi) consente di estrarre anche previsioni metereologiche orarie. Per farlo è necessario evocare un servizio esplicito il quale, indicando l’entità principale di tipo Weather, consenta di estrarre un payload contenente le informazioni relative alle 24 ore seguenti, suddivise per ora.
In questa guida vedremo come estrarre le informazioni e come dotarsi di sensori template il quali provvedano a loro volta ad estrarre informazioni specifiche da tale interrogazione.
Si parte
- Servizio meteo
- Interrogare l’entità
- Definire un sensore
- Trigger
- Action
- Sensor
- Conclusioni
Servizio meteo
Assumiamo che il servizio meteo configurato sia il già citato Met.no, quello che di default si trova configurato sull’HUB. Tale servizio genera un’entità chiamata weather.forecast_casa (o .forecast_home, in base alla ligua impostata), la quale contiene le condizioni meteo attuali e quelle relative ai giorni seguenti. Laddove ovviamente non sia configurato, la cosa va fatta presso “Impostazioni” > “Dispositivi e servizi“.
N.b. Le indicazioni della presente guida si applicano sostanzialmente a tutte le entità weather.* generate dalle più disparate integrazioni di questo tipo, purché supportino il servizio che tra poco andremo a descrivere. |
Interrogare l’entità
Assumedo che l’entità si chiami effettivamente weather.forecast_casa, (basta verificarlo nella lista delle entità), recarsi presso il motore servizi (“Strumenti per gli sviluppatori” > “Azioni“) e inserire il seguente codice:
action: weather.get_forecasts
data:
type: hourly
target:
entity_id: weather.forecast_home
response_variable: hourly
cliccando su “CHIAMA SERVIZIO“, il responso dovrebbe essere una lista come segue:
weather.forecast_casa: forecast: - condition: partlycloudy datetime: "1980-01-01T00:00:00+00:00" wind_bearing: 34.4 cloud_coverage: 25.8 temperature: 9.4 wind_speed: 10.8 precipitation: 0 humidity: 93 - condition: partlycloudy datetime: "1980-01-01T01:00:00+00:00" wind_bearing: 1.2 cloud_coverage: 0.1 temperature: 10.4 wind_speed: 20.4 precipitation: 0 humidity: 61 - condition: partlycloudy datetime: "1980-01-01T02:00:00+00:00" wind_bearing: 3.9 cloud_coverage: 0.1 temperature: 10.6 wind_speed: 22.8 precipitation: 0 humidity: 59 . . . #eccetera, per 24 entry
Questo è il payload di cui parlavamo all’inzio della guida.
Se tale payload è disponibile, allora è possibile estrarre le informazioni in modo da canalizzarle in un sensore ad hoc.

Definire un sensore
Se le informazioni sono disponibili è dunque possibile estrarle e trattarle all’interno di un sensore.
Ipotizziamo per esempio di desiderare un sensore che contenga la velocità del vento stimata a +12 ore; questo magari per innescare delle automazioni che avvisino l’utente di chiudere le tende da esterno (o farlo automaticamente, in caso siano domotizzate e integrate all’HUB).
Ci serve dunque un sensore template, il quale, una volta all’ora, si aggiorni automaticamente evocando il servizio di cui sopra.
Definiamolo modificando la configurazione YAML dell’HUB con il seguente codice:
template:
- trigger:
- platform: time_pattern
hours: /1
- platform: homeassistant
event: start
action:
- action: weather.get_forecasts
data:
type: hourly
target:
entity_id: weather.forecast_casa
response_variable: hourly
sensor:
- name: "velocità vento 12h"
unit_of_measurement: "m/s"
state: "{{ hourly['weather.forecast_casa'].forecast[11].wind_speed|float(default=0) }}"
una volta riavviato l’HUB, il sensore sensor.velocita_vento_12h verrà generato.
Analizziamo ora in dettaglio il codice che lo definisce.
Trigger
Il trigger è il seguente:
- platform: time_pattern
hours: /1
- platform: homeassistant
event: start
il quale si innesca una volta all’ora, ciclicamente, oppure all’avvio di Home Assistant.
N.b. Attenzione: l’innesco temporale una volta all’ora sottostà a determinati aspetti, da conoscere. Alla luce di tali aspetti, una volta definito il sensore esso viene aggiornato automaticamente per la prima volta solo al primo cambio di ora. |
Action
L’action è presto spiegata: non fa altro che evocare il servizio weather.get_forecasts associandolo all’entità weather.home:
- action: weather.get_forecasts
data:
type: hourly
target:
entity_id: weather.forecast_casa
response_variable: hourly
Sensor
Infine, vediamo com’è definito il sensore:
- name: "outdoor 12h wind speed"
unit_of_measurement: "m/s"
state: "{{ hourly['weather.forecast_casa'].forecast[11].wind_speed|float(default=0) }}"
la chiave sta nella parte evidenziata, la quale va ad attingere dall’array che arriva come payload dall’interrogazione del servizio (vedi sopra).
Dato che ci interessa la previsione a +12 ore, indichiamo innanzitutto 11 come subset dell’array da estrarre (la numerazione parte da 0, ecco perché 11 e non 12).
La struttura dei dati è la seguente:
hourly - forecast [X] - attributo
dato che ci interessa “wind_speed” (ovvero la velocità del vento), usiamo:
hourly['weather.forecast_casa'].forecast[11].wind_speed
che formattiamo come float con un default a 0:
hourly['weather.forecast_casa'].forecast[11].wind_speed|float(default=0)
e voilà, la magia è fatta.
Conclusioni
Il limite, come sempre, è la fantasia.
A partire dagli attributi presenti nel payload, è possibile definire più sensori liberamente ultilizzabili su Home Assistant per automazioni e script; si raccomanda di non ridurre il periodo di aggiornamento sotto l’ora, in quanto può innescare il ban da parte di Met.no per eccessive richieste da parte della vostra istanza, oltre a essere inutile (i dati, comunque, si aggiornano una volta all’ora).
⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui. |
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa. |