Integrazione dati sulla qualità dell’aria di Tado in Home Assistant
![](https://i0.wp.com/www.netpic.it/wp-content/uploads/2023/04/HAtado-1.jpg?fit=1000%2C506&ssl=1)
Chi utilizza il sistema di termostati intelligenti della Tado che ben si integrano in Home Assistant con integrazione nativa, si sarà chiesto come recuperare i dati della qualità dell’aria che compaiono nel cloud Tado, sotto la scheda “Benessere ambientale” e poterli visualizzare in Home Assistant:
Cloud TADO:
Ora per poter integrare questi dati sono necessari alcuni elementi:
- user/pass dell’account al cloud Tado
- la posizione lat/long della propria abitazione
- l’ID della propria Home (casa)
- Home Assistant installato con l’integrazione Tado
PASSO 1
Nel mio caso ad esempio utilizzerò: tadouser@dominio.com/ABC123
Per effettuare il test delle credenziali utilizzare la seguente sintassi via browser
La chiamata alle API Deve restituire i valori del proprio account ed in particolare l’home ID in questa forma:
“homes”:[{“id”:048111,”name”:”Via dei passeri 20″}]
Nel mio caso l’HOME ID ottenuta è 048111
PASSO 2
Accedere a https://www.latlong.net/ per ottenere la posizione della propria casa
Nel mio caso (ad esempio):
45.172550 LAT
7.161710 LONG
PASSO 3
Utilizzare l’HOME ID per effettuare la chiamata via browser e ottenere i dati sulla qualità dell’aria, secondo questa sintassi:
https://acme.tado.com/v1/homes/<HOME ID>/airComfort?latitude=45.172550 &longitude=7.161710 &username=tadouser@dominio.com&password=ABC123
Nel mio caso, ad esempio:
A questo punto dobbiamo ottenere una mezza pagina di righe con valori relativi ai nostri dati Tado, ad esempio:
{“roomMessages”: [{“roomId”: 7, “message”: “Questa stanza \u00e8 comoda e confortevole. Amerai stare in casa oggi.”, “visual”: “success”, “link”: null}, {“roomId”: 1, “message”: “Comincia a far freddo qui. Imposta la modalit\u00e0 Heat a una temperatura di circa 21\u00b0 per un po’ di tepore e comfort.”, “visual”: null, “link”: {“text”: “Avvia modalit\u00e0 Heat”, “type”: “internal”, “url”: “tado://zones/1”}}, {“roomId”: 2, “message”: “Hai caldo? Assicurati di bere molta acqua e di rimanere idratato.”, “visual”: “water_glass”, “link”: null}, {“roomId”: 4, “message”: “Non fa troppo freddo qui per essere…..
A questo punto siamo pronti per inserire il codice nel nostro file di configurazione configuration.yaml
- platform: rest
# API call to get air quality
# Result goes into outdoorQuality attribute in JSON format
name: TadoAir
verify_ssl: true
scan_interval: 1800
resource: https://acme.tado.com/v1/homes/0481111/airComfort?latitude=45.072550&longitude=7.561710&username=tadouser@dominio.com/&password=ABC123 # inserire i parametri del nostro account Tado
headers:
User-Agent: Home Assistant
Content-Type: application/json
method: GET
json_attributes:
- roomMessages
- outdoorQuality
value_template: 'Tado airComfort'
# Enumerate JSON to populate various template sensors
- platform: template
sensors:
air_quality:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["aqi"]["level"] | capitalize }}'
friendly_name: "Air Quality"
icon_template: mdi:air-filter
unique_id: "air_quality"
# Pollen sensors
air_pollen_level:
value_template: >
{% if states('sensor.tadoair.attributes["outdoorQuality"]["pollens"]["dominant"]["level"]') == 'unknown' %}
None.
{% else %}
{{states('sensor.tadoair.attributes["outdoorQuality"]["pollens"]["dominant"]["level"]')}}
{% endif %}
friendly_name: "Pollen Level"
icon_template: mdi:flower
unique_id: "pollen_level"
air_pollen_level_grass:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollens"]["types"][0]["forecast"][0]["level"] | capitalize }}.'
friendly_name: "Grass Pollen"
icon_template: mdi:flower
unique_id: "grass_pollen_level"
air_pollen_level_grass_tomorrow:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollens"]["types"][0]["forecast"][1]["level"] | capitalize }}.'
friendly_name: "Grass Pollen Tomo."
icon_template: mdi:flower
unique_id: "grass_pollen_level_tomorrow"
air_pollen_level_weed:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollens"]["types"][1]["forecast"][0]["level"] | capitalize }}.'
friendly_name: "Plant Pollen"
icon_template: mdi:sprout
unique_id: "plant_pollen_level"
air_pollen_level_weed_tomorrow:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollens"]["types"][1]["forecast"][1]["level"] | capitalize }}.'
friendly_name: "Plant Pollen Tomo."
icon_template: mdi:sprout
unique_id: "plant_pollen_level_tomorrow"
air_pollen_level_tree:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollens"]["types"][2]["forecast"][0]["level"] | capitalize }}.'
friendly_name: "Tree Pollen "
icon_template: mdi:tree
unique_id: "tree_pollen_level"
air_pollen_level_tree_tomorrow:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollens"]["types"][2]["forecast"][1]["level"] | capitalize }}.'
friendly_name: "Tree Pollen Tomo."
icon_template: mdi:tree
unique_id: "tree_pollen_level_tomorrow"
air_pollution_level_pm10:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][0]["level"] | capitalize }}: {{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][0]["concentration"]["value"]}}μg/m³'
friendly_name: "PM 10"
icon_template: mdi:tree
unique_id: "pollution_pm10"
air_pollution_level_pm25:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][1]["level"] | capitalize }}: {{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][1]["concentration"]["value"]}}μg/m³'
friendly_name: "PM 2.5"
icon_template: mdi:tree
unique_id: "pollution_pm25"
air_pollution_level_ozone:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][2]["level"] | capitalize }}: {{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][2]"concentration"]"value"]}}ppb'
friendly_name: "Ozone"
icon_template: mdi:tree
unique_id: "pollution_ozone"
air_pollution_level_sulphur:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][3]["level"] | capitalize }}: {{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][3]["concentration"]["value"]}}ppb'
friendly_name: "Sulphur Dioxide"
icon_template: mdi:tree
unique_id: "pollution_sulphur"
air_pollution_level_carbon:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][4]["level"] | capitalize }}: {{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][4]["concentration"]["value"]}}ppb'
friendly_name: "Carbon Monoxide"
icon_template: mdi:tree
unique_id: "pollution_carbon"
air_pollution_level_nitrogen:
value_template: '{{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][5]["level"] | capitalize }}: {{ states.sensor.tadoair.attributes["outdoorQuality"]["pollutants"][5]["concentration"]["value"]}}ppb'
friendly_name: "Nitrogen Dioxide"
icon_template: mdi:tree
unique_id: "pollution_nitrogen"
Prima di riavviare controllare al correttezza del codice, nel menu “Strumenti per sviluppatori” e poi “Verifica configurazione”.
PASSO 4
Dopo aver riavviato HA è possibile creare una card, magari su una plancia dedicata, in cui inserire le entità che saranno diventate disponibili. Come esempio vi propongo il mio codice:
Per visualizzare i dati delle qualità dell’aria:
type: entities
entities:
- entity: sensor.tadoair
- entity: sensor.air_quality
name: Qualità dell'aria
- entity: sensor.air_pollution_level_carbon
name: Monossido di carbonio
- entity: sensor.air_pollution_level_pm25
name: Polveri sottili (pm2.5)
- entity: sensor.air_pollution_level_pm10
name: Polveri sottili (pm10)
- entity: sensor.air_pollution_level_ozone
name: Ozono
- entity: sensor.air_pollution_level_nitrogen
name: Biossido di Azoto
- entity: sensor.air_pollution_level_sulphur
name: Biossido di zolfo
state_color: true
title: 'Parametri dell''aria esterna '
Per visualizzare i dati dello stato dei pollini:
type: entities
entities:
- entity: sensor.air_pollen_level
name: Livello pollini
- entity: sensor.air_pollen_level_grass
name: Graminacee
- entity: sensor.air_pollen_level_grass_tomorrow
name: Graminacee (domani)
- entity: sensor.air_pollen_level_weed
name: Piante erbacee (Artemisia, Ambrosia, Parietaria)
- entity: sensor.air_pollen_level_weed_tomorrow
name: Piante erbacee (domani)
- entity: sensor.air_pollen_level_tree
name: Piante arboree (Frassino, Betulla, Cipresso, Ulivo, Platano)
- entity: sensor.air_pollen_level_tree_tomorrow
name: Piante arboree (domani)
state_color: true
title: Previsione Pollini
Otterremo delle viste di questo tipo:
Ovviamente diventa poi facile creare avvisi e automazioni in base ai valori indicati di qualità dell’aria e stato di inquinamento da pollini.
Liberamente tratto da: