Cosa arriva in Home Assistant
Un dispositivo per ogni auto, col nome che le hai dato nell'app, e questi sensori:
- Livello carburante, o Livello batteria sulle elettriche: compare quello che l'auto comunica.
- Autonomia, quando l'auto la dà.
- Contachilometri, utile per i promemoria del tagliando.
- Batteria 12 V: la tensione della batteria dell'auto.
- Temperatura refrigerante del motore.
- Codici errore: quanti sono, e i codici stessi (per esempio P0420) nell'attributo
codes. - Ultimo viaggio: la distanza, con durata, velocità media e massima e consumo come attributi.
- Viaggio in corso e Adattatore collegato, acceso o spento.
- Carburante in litri, Velocità e Giri motore, se l'auto li comunica. Velocità e giri sono spenti di base.
Ci sono anche due eventi per le automazioni: drivepulse_trip_start quando parte un viaggio e drivepulse_trip_end quando finisce, con il riepilogo.
Quando l'auto non dà un valore, il sensore è Non disponibile, mai un numero inventato. Il contachilometri, l'autonomia e i codici tengono l'ultimo valore fra un viaggio e l'altro.
Cosa esce dal telefono: solo questi numeri, e solo verso l'indirizzo del tuo Home Assistant, se accendi tu l'invio. Niente posizione GPS, niente numero di telaio, niente indirizzi. L'app legge soltanto: non scrive niente nell'auto.
Installazione in 3 passi
- Scarica l'integrazione. In Home Assistant apri HACS, cerca DrivePulse, scegli Scarica e riavvia Home Assistant. DrivePulse è nell'elenco predefinito di HACS: non serve aggiungere repository. Sulle versioni di Home Assistant che hanno il catalogo integrato la trovi lì con lo stesso nome, oppure col pulsante che apre il tuo Home Assistant.
- Aggiungila. Impostazioni > Dispositivi e servizi > Aggiungi integrazione > DrivePulse, poi Invia. Home Assistant mostra l'indirizzo del webhook: copialo. Lo ritrovi quando vuoi in Configura.
- Incollala nell'app. In DrivePulse apri Impostazioni > Invia a Home Assistant, accendi Invia i dati, incolla l'indirizzo in Indirizzo del webhook e tocca Prova invio. Poi guida: il dispositivo compare col primo messaggio del primo viaggio.
Nessun YAML da scrivere. Se avevi incollato il blocco YAML della pagina di aiuto dell'app, toglilo da configuration.yaml prima di aggiungere l'integrazione, altrimenti i sensori sono doppi.
Fuori casa. In viaggio il telefono è sulla rete mobile, e l'indirizzo di casa (homeassistant.local) risponde solo in Wi-Fi o con una VPN. L'inizio del viaggio, davanti a casa, e la fine, quando il telefono torna in Wi-Fi, di solito arrivano: l'app li riprova per dieci minuti. Per ricevere tutto anche per strada usa una VPN come Tailscale, oppure l'indirizzo HTTPS del tuo Home Assistant (Nabu Casa o un tuo dominio) e spegni Solo rete locale in Configura.
L'id nell'indirizzo del webhook è il segreto: chi lo conosce può mandare dati al tuo Home Assistant. Non pubblicarlo.
Cinque automazioni pronte
Per incollarne una: Impostazioni > Automazioni e scene > Crea automazione > Crea nuova automazione, poi il menu ⋮ > Modifica in YAML, incolla e Salva.
Negli esempi l'auto si chiama «La mia auto», quindi i sensori sono sensor.la_mia_auto_…. Metti il nome della tua come lo vedi in Home Assistant: per un'auto chiamata Golf, sensor.golf_trouble_codes. notify.notify si può cambiare con il servizio del tuo telefono, per esempio notify.mobile_app_iphone_di_marco.
1. Carburante basso
A fine viaggio, se nel serbatoio resta meno del 20 %. Sulle elettriche usa hv_soc_pct al posto di fuel_level_pct.
alias: "DrivePulse: carburante basso"
description: "A fine viaggio, se nel serbatoio resta meno del 20 %."
triggers:
- trigger: event
event_type: drivepulse_trip_end
conditions:
- condition: template
value_template: >
{{ trigger.event.data.fuel_level_pct is number
and trigger.event.data.fuel_level_pct < 20 }}
actions:
- action: notify.notify
data:
title: "Carburante basso"
message: >
{{ trigger.event.data.vehicle }}: resta il
{{ trigger.event.data.fuel_level_pct | round(0) | int }} % nel serbatoio.
2. Codice errore nuovo
Quando la centralina segnala un codice che prima non c'era. Lo stesso codice non ti avvisa due volte.
alias: "DrivePulse: codice errore nuovo"
description: "Quando la centralina segnala un codice che prima non c'era."
triggers:
- trigger: state
entity_id: sensor.la_mia_auto_trouble_codes
conditions:
- condition: template
value_template: >
{% set prima = trigger.from_state.attributes.codes | default([])
if trigger.from_state is not none else none %}
{% set dopo = trigger.to_state.attributes.codes | default([]) %}
{{ prima is not none
and trigger.from_state.state not in ['unknown', 'unavailable']
and dopo | reject('in', prima) | list | count > 0 }}
actions:
- action: notify.notify
data:
title: "Codice errore nuovo"
message: >
{% set prima = trigger.from_state.attributes.codes | default([]) %}
{{ trigger.to_state.attributes.codes | reject('in', prima) | join(', ') }}:
apri DrivePulse per sapere cosa vuol dire e se puoi guidare.
3. Batteria 12 V bassa
Sotto 12 V per più di un minuto, così il calo dell'avviamento non conta. La lettura dalla presa OBD di solito è 0,2-0,4 V più bassa di quella del multimetro.
alias: "DrivePulse: batteria 12 V bassa"
description: "Tensione sotto 12 V per più di un minuto (lo spunto dell'avviamento non conta)."
triggers:
- trigger: numeric_state
entity_id: sensor.la_mia_auto_12_v_battery
below: 12
for: "00:01:00"
actions:
- action: notify.notify
data:
title: "Batteria 12 V bassa"
message: >
{{ states('sensor.la_mia_auto_12_v_battery') | replace('.', ',') }} V.
A motore spento vuol dire batteria poco carica, a motore acceso che
l'alternatore non carica. Fai il test della batteria in DrivePulse.
4. Fine viaggio con riepilogo
Distanza, durata, velocità media e consumo del viaggio appena finito.
alias: "DrivePulse: riepilogo a fine viaggio"
description: "Distanza, durata, media e consumo del viaggio appena finito."
triggers:
- trigger: event
event_type: drivepulse_trip_end
conditions:
- condition: template
value_template: >
{{ trigger.event.data.trip is defined
and trigger.event.data.trip.distance_km is number }}
actions:
- action: notify.notify
data:
title: "{{ trigger.event.data.vehicle }}: viaggio finito"
message: >
{% set v = trigger.event.data.trip %}
{{ '%.1f' | format(v.distance_km) | replace('.', ',') }} km
{%- if v.duration_min is number %} in {{ v.duration_min | round(0) | int }} min{% endif %}
{%- if v.avg_speed_kmh is number %}, media {{ v.avg_speed_kmh | round(0) | int }} km/h{% endif %}
{%- if v.avg_consumption_l_100km is number %}, {{ '%.1f' | format(v.avg_consumption_l_100km) | replace('.', ',') }} l/100 km{% endif %}.
5. Promemoria revisione
Prima crea l'aiutante con la data: Impostazioni > Dispositivi e servizi > Aiutanti > Crea aiutante > Data e/o ora, nome Revisione auto, solo data, e scrivi la data della prossima revisione. L'automazione ti avvisa a ogni arrivo nei 30 giorni prima, con il contachilometri.
alias: "DrivePulse: promemoria revisione"
description: "A ogni arrivo, nei 30 giorni prima della scadenza scritta nell'aiutante Revisione auto."
triggers:
- trigger: event
event_type: drivepulse_trip_end
conditions:
- condition: template
value_template: >
{% set ts = state_attr('input_datetime.revisione_auto', 'timestamp') %}
{% set giorni = ((ts - as_timestamp(today_at())) / 86400) | round(0) | int
if ts is number else -1 %}
{{ 1 <= giorni <= 30 }}
actions:
- action: notify.notify
data:
title: "Revisione in arrivo"
message: >
{% set ts = state_attr('input_datetime.revisione_auto', 'timestamp') %}
{% set giorni = ((ts - as_timestamp(today_at())) / 86400) | round(0) | int %}
{{ trigger.event.data.vehicle }}: la revisione scade
fra {{ giorni }} {{ 'giorno' if giorni == 1 else 'giorni' }}.
{%- if trigger.event.data.odometer_km is number %}
Contachilometri: {{ '{:,}'.format(trigger.event.data.odometer_km | round(0) | int) | replace(',', '.') }} km.{% endif %}
Una scheda per il cruscotto
Nel cruscotto: matita > Aggiungi scheda > Manuale, incolla e salva. Mostra viaggio in corso, carburante, batteria 12 V, codici, contachilometri, l'ultimo viaggio e la batteria degli ultimi sette giorni.
type: vertical-stack
cards:
- type: tile
entity: binary_sensor.la_mia_auto_trip_in_progress
name: In viaggio
- type: grid
columns: 2
square: false
cards:
- type: tile
entity: sensor.la_mia_auto_fuel_level
name: Carburante
- type: tile
entity: sensor.la_mia_auto_12_v_battery
name: Batteria 12 V
- type: tile
entity: sensor.la_mia_auto_trouble_codes
name: Codici errore
- type: tile
entity: sensor.la_mia_auto_odometer
name: Contachilometri
- type: entities
title: Ultimo viaggio
entities:
- entity: sensor.la_mia_auto_last_trip
name: Distanza
- type: attribute
entity: sensor.la_mia_auto_last_trip
attribute: duration_min
name: Durata
suffix: min
- type: attribute
entity: sensor.la_mia_auto_last_trip
attribute: avg_consumption_l_100km
name: Consumo medio
suffix: l/100 km
- type: attribute
entity: sensor.la_mia_auto_trouble_codes
attribute: codes
name: Codici
- type: history-graph
title: Batteria 12 V, ultimi 7 giorni
hours_to_show: 168
entities:
- entity: sensor.la_mia_auto_12_v_battery
Cosa serve
Un iPhone con DrivePulse, Home Assistant e un adattatore OBD2 ELM327 Bluetooth a basso consumo (BLE) o Wi-Fi, nella presa diagnostica dell'auto. Con iPhone funzionano per esempio il Veepeak OBDCheck BLE e il Vgate iCar Pro 2S: l'elenco è nella pagina Quali adattatori funzionano.
L'invio a Home Assistant è spento finché non lo accendi tu. DrivePulse si prova per 15 viaggi o 7 giorni, il primo dei due. Poi gli invii automatici ripartono con lo sblocco, un acquisto unico, senza abbonamento e senza account. Prova invio funziona sempre.
Il codice dell'integrazione è aperto, con licenza MIT: github.com/davideguida0093/drivepulse-home-assistant.
Domande frequenti
I dati passano da un vostro server?
No. L'app li manda direttamente all'indirizzo che incolli, cioè al tuo Home Assistant. Non serve un account.
Posso mandarli a un altro server?
Sì: l'app manda un webhook a qualunque indirizzo che lo accetti, con un token facoltativo. L'integrazione DrivePulse serve solo a trasformarli in sensori di Home Assistant senza scrivere YAML.
Più auto?
Sì: ogni auto è un dispositivo, fino a 20 per indirizzo. Se rinomini un'auto nell'app ne compare una nuova; quella vecchia si cancella da Dispositivi e servizi.
Ogni quanto arrivano i valori?
All'inizio e alla fine di ogni viaggio. Se accendi anche i valori in tempo reale, arriva un messaggio a ogni intervallo, di base ogni 10 secondi, solo con l'adattatore collegato.