Sorry, I don’t know whether to open a new topic or whether I can write here: I would like to create my own Weather entity by taking data from a local bulletin updated daily. Do you have any idea how to do it?
Online I found these bulletins in xml:
https://meteo.arpa.veneto.it/meteo/bollettini/it/xml/bollettino_utenti.xml
https://wwwold.arpa.veneto.it/previsioni/it/xml/bollettino_widget.xml
the bulletin is different but talks about the same data.
Using a file found in a Facebook group, but dating back 3 years ago, I managed to compile a yaml file with which I obtain different entities, but I don’t know if it is the right way to create a Weather entity. This is my file that I made:
homeassistant:
##############################################################
# #
# BINARY_SENSOR #
# #
##############################################################
# diventa ON quanto c'è nuovo bollettino, serve per visualizzazione su scheda
binary_sensor:
- platform: template
sensors:
arpav_nuovo_bollettino:
entity_id: input_boolean.arpav_nuovo_bollettino
device_class: power
value_template: "{{ is_state('input_boolean.arpav_nuovo_bollettino', 'on') }}"
icon_template: mdi:information-variant
##############################################################
# #
# SENSORI #
# #
##############################################################
sensor:
# seleziona l'ID dell zona per i sensor restful
- platform: template
sensors:
arpav_zona_id:
entity_id: input_select.arpav_zona
icon_template: mdi:target
value_template: >-
{% set zona = states('input_select.arpav_zona') %}
{% if zona == "Dolomiti Nord-Est" %} 0
{% elif zona == "Dolomiti Sud-Ovest" %} 1
{% elif zona == "Belluno e Prealpi orientali" %} 2
{% elif zona == "Prealpi centrali" %} 3
{% elif zona == "Pedemontana orientale" %} 4
{% elif zona == "Treviso e pianura orientale" %} 5
{% elif zona == "Veneziano orientale" %} 6
{% elif zona == "Prealpi occidentali" %} 7
{% elif zona == "Vicenza e pedemontana" %} 8
{% elif zona == "Padova e pianura centrale" %} 9
{% elif zona == "Venezia e laguna" %} 10
{% elif zona == "Delta del Po" %} 11
{% elif zona == "Rovigo e pianura meridionale" %} 12
{% elif zona == "Verona e pedemontana" %} 13
{% elif zona == "Area del Garda" %} 14
{% elif zona == "Litorale nord" %} 15
{% elif zona == "Litorale centrale" %} 16
{% else%} 17
{% endif %}
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: ARPAV Bollettino Aggiornamento
value_template: "{{ value_json.previsioni.data_aggiornamento['@date']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: ARPAV Bollettino Emissione
value_template: "{{ value_json.previsioni.data_emissione['@date']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_zona
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int]['@name'] }}"
scan_interval: 600
# Test per file https://wwwold.arpa.veneto.it/previsioni/it/xml/bollettino_widget.xml
# - platform: rest
# resource: https://wwwold.arpa.veneto.it/previsioni/it/xml/bollettino_widget.xml
# name: arpav_vidget
# value_template: "{{ value_json.bulletin.meteograms.meteogram[states('sensor.arpav_zona_id')|int].days.day[0].sky['@img'] }}"
# scan_interval: 600
# Prima Mezza Giornata
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_simbolo0
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[0].previsione[0]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_data0
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[0]['@data'] | default('Valore non disponibile') }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_cielo0
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[0].previsione[1]['@value'] | default('Valore non disponibile') }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_temperatura0
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[0].previsione[2]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_precipitazioni0
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[0].previsione[3]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_probabilita0
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[0].previsione[4]['@value']}}"
scan_interval: 600
# Seconda Mezza Giornata
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_simbolo1
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[1].previsione[0]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_data1
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[1]['@data'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_cielo1
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[1].previsione[1]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_temperatura1
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[1].previsione[2]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_precipitazioni1
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[1].previsione[3]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_probabilita1
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[1].previsione[4]['@value']}}"
scan_interval: 600
# terza Mezza Giornata
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_simbolo2
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[2].previsione[0]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_data2
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[2]['@data'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_cielo2
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[2].previsione[1]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_temperatura2
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[2].previsione[2]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_precipitazioni2
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[2].previsione[3]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_probabilita2
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[2].previsione[4]['@value']}}"
scan_interval: 600
# quarta Mezza Giornata
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_simbolo3
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[3].previsione[0]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_data3
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[3]['@data'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_cielo3
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[3].previsione[1]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_temperatura3
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[3].previsione[2]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_precipitazioni3
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[3].previsione[3]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_probabilita3
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[3].previsione[4]['@value']}}"
scan_interval: 600
# quinta Mezza Giornata
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_simbolo4
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[4].previsione[0]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_data4
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[4]['@data'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_cielo4
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[4].previsione[1]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_temperatura4
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[4].previsione[2]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_precipitazioni4
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[4].previsione[3]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_probabilita4
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[4].previsione[4]['@value']}}"
scan_interval: 600
# quarta Giornata
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_simbolo5
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[5].previsione[0]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_data5
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[5]['@data'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_cielo5
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[5].previsione[1]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_temperatura5
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[5].previsione[2]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_precipitazioni5
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[5].previsione[3]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_probabilita5
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[5].previsione[2]['@value']}}"
scan_interval: 600
# quinta Giornata
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_simbolo6
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[6].previsione[0]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_data6
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[6]['@data'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_cielo6
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[6].previsione[1]['@value'] }}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_precipitazioni6
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[6].previsione[3]['@value']}}"
scan_interval: 600
- platform: rest
resource: https://www.arpa.veneto.it/previsioni/it/xml/bollettino_utenti.xml
name: arpav_probabilita6
value_template: "{{ value_json.previsioni.meteogrammi.meteogramma[states('sensor.arpav_zona_id')|int].scadenza[6].previsione[2]['@value']}}"
scan_interval: 600
##############################################################
# #
# INPUT #
# #
##############################################################
# memorizza ultimo aggiornamento bollettino
input_text:
arpav_data_ultimo_aggiornamento:
name: ARPAV Data Ultimo Aggiornamento
# Diventa ON quando viene emesso un nuovo bollettino o un nuovo aggiornamento
input_boolean:
arpav_nuovo_bollettino:
name: ARPAV Nuovo Bollettino
# Selettore Zone presenti nel bollettino. Cambiare initial con la zona preferita
# altrimenti prende la prima della lista
input_select:
arpav_zona:
name: ARPAV Zona
options:
- "Dolomiti Nord-Est"
- "Dolomiti Sud-Ovest"
- "Belluno e Prealpi orientali"
- "Prealpi centrali"
- "Pedemontana orientale"
- "Treviso e pianura orientale"
- "Veneziano orientale"
- "Prealpi occidentali"
- "Vicenza e pedemontana"
- "Padova e pianura centrale"
- "Venezia e laguna"
- "Delta del Po"
- "Rovigo e pianura meridionale"
- "Verona e pedemontana"
- "Area del Garda"
- "Litorale nord"
- "Litorale centrale"
- "Litorale sud"
icon: mdi:target
initial: "Padova e pianura centrale"
##############################################################
# #
# SCRIPT #
# #
##############################################################
script:
bollettino_popup:
sequence:
- service: input_boolean.turn_off
data:
entity_id: input_boolean.arpav_nuovo_bollettino
- service: browser_mod.popup
data:
# deviceID: this
deviceID:
- 287fb5ea-a9efbc29
- 10a2bdb2-a819d0cf
- beca2af9_00864dab
title: Bollettino Meteo ARPAV
large: true
card:
type: markdown
style: |
table, th, td {
border: 1px solid black;
}
content: >-
**Bollettino {{ states('sensor.arpav_zona') }}**
**Emesso il {{ states('sensor.arpav_bollettino_emissione') }}{% if states('sensor.arpav_bollettino_aggiornamento') != 'unknown' %} e aggiornato il {{ states('sensor.arpav_bollettino_aggiornamento') }}**{%else%}**{%endif%}
<table style="width: 1000px" class="center" align="center" border="1" cellspacing="0" cellpadding="0>
<colgroup>
<col span="1" style="width: 150px">
<col span="1" style="width: 200px">
<col span="1" style="width: 150px">
<col span="1" style="width: 300px">
<col span="1" style="width: 100px">
<col span="1" style="width: 100px">
</colgroup>
<thead>
<tr style="height:300px">
<th>Data</th>
<th>Prev.</th>
<th>Temp.</th>
<th>Precip.</th>
<th>%</th>
<th></th>
</tr>
</thead>
<tbody>
<tr style="height:300px">
<td align="left">{{states('sensor.arpav_data0')[0:6]}}</td>
<td align="center">{{states('sensor.arpav_cielo0')}}</td>
<td align="center">{{states('sensor.arpav_temperatura0')}}</td>
<td align="center">{{states('sensor.arpav_precipitazioni0')}}</td>
<td align="center">{{states('sensor.arpav_probabilita0')}}</td>
<td align="center"><img src="{{states('sensor.arpav_simbolo0')}}" height="40" ></td>
</tr>
<tr style="height:300px">
<td align="left">{{states('sensor.arpav_data1')[0:6]}}</td>
<td align="center">{{states('sensor.arpav_cielo1')}}</td>
<td align="center">{{states('sensor.arpav_temperatura1')}}</td>
<td align="center">{{states('sensor.arpav_precipitazioni1')}}</td>
<td align="center">{{states('sensor.arpav_probabilita1')}}</td>
<td align="center"><img src="{{states('sensor.arpav_simbolo1')}}" height="40" ></td>
</tr>
<tr style="height:300px">
<td align="left">{{states('sensor.arpav_data2')[0:6]}}</td>
<td align="center">{{states('sensor.arpav_cielo2')}}</td>
<td align="center">{{states('sensor.arpav_temperatura2')}}</td>
<td align="center">{{states('sensor.arpav_precipitazioni2')}}</td>
<td align="center">{{states('sensor.arpav_probabilita2')}}</td>
<td align="center"><img src="{{states('sensor.arpav_simbolo2')}}" height="40" ></td>
</tr>
</table>
##############################################################
# #
# AUTOMAZIONI #
# #
##############################################################
automation:
# Mette ON input_boolean.arpav_nuovo_bollettino quando cambia la data rispetto
# all'ultimo aggiornamento contenuta in input_text.arpav_data_ultimo_aggiornamento
- id: '1575837712577'
mode: single
alias: Aggiornamento bollettino ARPAV
trigger:
- platform: template
value_template: "{{ states('sensor.arpav_bollettino_aggiornamento') != states('input_text.arpav_data_ultimo_aggiornamento') }}"
condition: []
action:
- data: {}
entity_id: input_boolean.arpav_nuovo_bollettino
service: input_boolean.turn_on
- data_template:
value: "{{states('sensor.arpav_bollettino_aggiornamento')}}"
entity_id: input_text.arpav_data_ultimo_aggiornamento
service: input_text.set_value
# Aggiorna i sensori sensor.arpav_xxxx dopo ogni cambio di stato del selettore input_select.arpav_zona
# e mette ON input_boolean.arpav_nuovo_bollettino
- id: '1575837712578'
mode: single
alias: aggiorna sensori ARPAV
trigger:
platform: state
entity_id: input_select.arpav_zona
action:
- service: homeassistant.update_entity
entity_id:
- sensor.arpav_zona
- sensor.arpav_data0
- sensor.arpav_simbolo0
- sensor.arpav_cielo0
- sensor.arpav_temperatura0
- sensor.arpav_precipitazioni0
- sensor.arpav_probabilita0
- sensor.arpav_data1
- sensor.arpav_simbolo1
- sensor.arpav_cielo1
- sensor.arpav_temperatura1
- sensor.arpav_precipitazioni1
- sensor.arpav_probabilita1
- sensor.arpav_data2
- sensor.arpav_simbolo2
- sensor.arpav_cielo2
- sensor.arpav_temperatura2
- sensor.arpav_precipitazioni2
- sensor.arpav_probabilita2
- data: {}
entity_id: input_boolean.arpav_nuovo_bollettino
service: input_boolean.turn_on
I bring the image to confirm that the file works, it creates all the entities of the bulletin, but how could I create a single forecast entity.
If anyone would like to help me I would be grateful.