Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Ogni strumento utile per ricercare colonnine di ricarica e/o programmare viaggi col PC o con lo SmartPhone.
Regole del forum
Parlare di un solo e singolo argomento per discussione, nella sezione più corretta e con un titolo chiaro e descrittivo, evitando i fuori tema | Evitare di citare tutto il testo di un precedente messaggio, ma lasciare solo il minimo indispensabile usando questo sistema | Utilizzare le unità di misura corrette, in particolare i kW per la potenza e i kWh per l'energia, di cui è spiegata la differenza qui | Leggere il regolamento completo che è visibile qui
Avatar utente
andbad
Messaggi: 2029
Iscritto il: 23/03/2018, 11:57
Località: Massa (MS)
Veicolo: Nissan Leaf 30kWh

Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Messaggioda andbad » 16/09/2020, 13:55

E' già qualche tempo che lavoro con Home Assistant, un HUB software per la domotica che permette di integrare in un unico sistema più device smart eterogenei per marca, funzionamento e tipo di collegamento. Non mi dilungo ulteriormente e passo al topic: esiste una comodissima integrazione per la Leaf:
https://www.home-assistant.io/integrations/nissan_leaf/

In pratica si abilita da file di configurazione:

Codice: Seleziona tutto

nissan_leaf:
  username: "email@email.tua"
  password: "la_tua_password"
  region: "NE"
  update_interval:
    hours: 1
  update_interval_charging:
    minutes: 15
  update_interval_climate:
    minutes: 5


Si riavvia Home Assistant e si possono da subito usare le varie entità, aggiungendole ai vari pannelli. Senza smanettarci troppo adesso ho questo:

ha-leaf.png
ha-leaf.png (33.44 KiB) Visto 734 volte


Posso vedere il SOC, il range stimato, vedere lo storico della ricarica, avviare la carica, avviare o stoppare il condizionatore.
Ma questo è niente: avendo questi dati (e quando avrò Prism) si possono fare cose molto interessanti, ad esempio programmare la carica fino all'80%, interromperla se si accende un elettrodomestico, avviare il condizionatore quando si sta uscendo di casa e tutto quello che la fantasia può immaginare.

Sono esaltato. 8-)

By(t)e

P.S.: qui trovate altre integrazioni dedicate alle auto: https://www.home-assistant.io/integrations/#car


eVe: electric vehicle eVe
Leaf 30kWh 2016 powered by Power Cruise Control


robertocr
Messaggi: 336
Iscritto il: 31/08/2019, 13:17
Località: Ferrara

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Messaggioda robertocr » 16/09/2020, 15:59

Home assistant e' molto carino ma si basa su un server rasberry..

avendo gia' un serverino linux in funzione, ho preferito usare openhab.org che si appoggia su qualsiasi server o pc

Per le auto per adesso Tesla e Volvo pero' basta chiedere nel forum e secondo me qualcuno che si sbatte per fare il "bindings" lo si trova sempre

Avatar utente
andbad
Messaggi: 2029
Iscritto il: 23/03/2018, 11:57
Località: Massa (MS)
Veicolo: Nissan Leaf 30kWh

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Messaggioda andbad » 16/09/2020, 17:18

Mica vero. Io lo faccio girare su Ubuntu, sulla stessa macchina che mi fa da NAS e altre mille cose.

By(t)e
eVe: electric vehicle eVe
Leaf 30kWh 2016 powered by Power Cruise Control

romeop
Messaggi: 41
Iscritto il: 15/07/2020, 17:13
Località: Verona

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Messaggioda romeop » 16/09/2020, 17:21

Bello, appena mi arriva la Zoe provo a sviluppare qualcosa
Zoe Intens R135 in arrivo :ugeek:

robertocr
Messaggi: 336
Iscritto il: 31/08/2019, 13:17
Località: Ferrara

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Messaggioda robertocr » 16/09/2020, 17:24

andbad ha scritto:Mica vero. Io lo faccio girare su Ubuntu, sulla stessa macchina che mi fa da NAS e altre mille cose.

By(t)e


ah allora ho sbagliato a leggere la documentazione dove fanno riferimento al rasberry


Avatar utente
andbad
Messaggi: 2029
Iscritto il: 23/03/2018, 11:57
Località: Massa (MS)
Veicolo: Nissan Leaf 30kWh

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Messaggioda andbad » 18/09/2020, 13:02

Piccolo aggiornamento:
ha2.png
ha2.png (51.68 KiB) Visto 688 volte


Ho preso una Shelly Plug S, proverò a metterla sull'IC-CPD per controllarla da remoto e staccare in automatico all'80%.
E' una cosa temporanea, perché pur essendo data a 2,5kW (mentre l'auto assorbe 2,3), comunque non mi fido a lasciarcelo come soluzione definitiva. O lo sostituisco con uno Shelly Plug (che arriva a 3,3kW, ma non ha il controllo di temperatura), oppure metto uno Shelly 1 con un relé esterno. Oppure aspetto di prendermi la WB Prims...
Nel frattempo mi impratichisco con le automazioni. :)

By(t)e
eVe: electric vehicle eVe
Leaf 30kWh 2016 powered by Power Cruise Control

Avatar utente
andbad
Messaggi: 2029
Iscritto il: 23/03/2018, 11:57
Località: Massa (MS)
Veicolo: Nissan Leaf 30kWh

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Messaggioda andbad » 06/11/2020, 14:14

A tempo perso continuo a lavorarci.
Pannello di default:

1.png
1.png (49.92 KiB) Visto 548 volte

In alto abbiamo lo stato della batteria: la barra esterna è il SOC, quella interna sono i chilometri rimanenti. Si colorano di giallo e rosso in base al valore.

Le icone in alto servono a:
- Attivare o disattivare l'interruttore a monte dell'EVSE
- Far dettare ad Alexa il SOC
- Indica se la batteria è in stato di ricarica

La riga sotto invece:
- Indica se l'aria condizionata è attiva
- Indica se il cavo è collegato
- Aggiorna lo stato dell'auto

Ci sono poi i tempi stimati di ricarica alle varie velocità (sono abbastanza precisi), con le icone che rappresentano la spina da utilizzare (vabbè, è solo una sboronata 8-) ).
I due interruttori aprono i pannelli avanzati di impostazioni e statistiche:

2.png
2.png (58.34 KiB) Visto 548 volte


Attiva ricarica automatica: avvia la ricarica quando è sotto il 70%
Limita ricarica a 80%: beh... ;)

Poi abbiamo il consumo in ricarica degli ultimi 14 giorni, lo stato della ricarica delle ultime 24 ore, la potenza assorbita minuto per minuto, il totale del consumo del giorno in corso, del mese e dell'anno ed infine la temperatura dell'interruttore Wifi che controlla lo stato e i consumi a monte dell'EVSE (Shelly PlugS).

By(t)e
eVe: electric vehicle eVe
Leaf 30kWh 2016 powered by Power Cruise Control

Avatar utente
andbad
Messaggi: 2029
Iscritto il: 23/03/2018, 11:57
Località: Massa (MS)
Veicolo: Nissan Leaf 30kWh

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Messaggioda andbad » 06/11/2020, 14:23

Chi volesse cimentarsi, può usare questo package che NON E' plug and play (va personalizzato con i riferimenti al proprio account Nissan Connect, al proprio attuatore, ecc...):

Codice: Seleziona tutto

#Leaf
recorder:
  include:
    entities:
      - sensor.consumo_leaf_giornaliero
      - sensor.consumo_leaf_mensile
      - sensor.consumo_leaf_annuale
      - sensor.potenza_leaf
      - sensor.consumo_leaf
      - sensor.temperatura_shelly_leaf

      - sensor.leafXXXXX_charge
      - binary_sensor.leafXXXXX
      - binary_sensor.leafXXXXX_plug_status

nissan_leaf:
  username: "XXXXXXXXXXX"
  password: "XXXXXXXXXXXXX"
  region: "NE"
  update_interval:
    hours: 2
  update_interval_charging:
    minutes: 5
  update_interval_climate:
    minutes: 5

utility_meter:
  consumo_leaf_giornaliero:
    source: sensor.consumo_leaf
    cycle: daily

  consumo_leaf_mensile:
    source: sensor.consumo_leaf
    cycle: monthly

  consumo_leaf_annuale:
    source: sensor.consumo_leaf
    cycle: yearly

input_boolean:
  leaf_ricarica_80:
    name: Limita ricarica Leaf a 80
    initial: on
    icon: mdi:format-align-top

  leaf_ricarica_atuomatica:
    name: Attiva ricarica automatica
    initial: on
    icon: mdi:format-align-top

  leaf_impostazioni:
    name: Impostazioni
    initial: off

  leaf_statistiche:
    name: Statistiche
    initial: off

binary_sensor:
  - platform: ping
    host: xxx.xxx.xxx.xxx.xxx
    name: leaf Ping
    count: 2
    scan_interval: 60

sensor:
  - platform: mqtt
    name: "Temperatura Shelly leaf"
    state_topic: "shellies/shelly_leaf/temperature"
    availability_topic: "shellies/shelly_leaf/online"
    value_template: "{{ value| round (1) }}"
    unit_of_measurement: "°C"
    payload_available: "true"
    payload_not_available: "false"

  - platform: mqtt
    name: "Potenza leaf"
    state_topic: "shellies/shelly_leaf/relay/0/power"
    unit_of_measurement: "W"
    value_template: "{{ value| round (0) }}"

  - platform: mqtt
    name: "Consumo leaf"
    state_topic: "shellies/shelly_leaf/relay/0/energy"
    unit_of_measurement: 'kWh'
    value_template: "{{ (( value|float )/(60*1000)) | round(2) }}"

  - platform: template
    sensors:
      leaf_tempo_carica_2kw:
        unit_of_measurement: 'ore'
        value_template: >
          {% if states.input_boolean.leaf_ricarica_80.state == "off" %}
          {% set t = (((100-states.sensor.leafXXXXX_charge.state|int)/8.4)|round(2)*3600)|round(0) %}
 
          {% elif states.sensor.leaf1andb_charge.state < '80' %}
          {% set t = (((80-states.sensor.leafXXXXX_charge.state|int)/8.4)|round(2)*3600)|round(0) %}

          {% else %}
          {% set t = 0 %}

          {% endif %}
          {{ '{:02d}:{:02d}'.format((t // 3600) % 24, (t % 3600) // 60) }}

  - platform: template
    sensors:
      leaf_tempo_carica_3kw:
        unit_of_measurement: 'ore'
        value_template: >
          {% if states.input_boolean.leaf_ricarica_80.state == "off" %}
          {% set t = (((100-states.sensor.leafXXXXX_charge.state|int)/13.75)|round(2)*3600)|round(0) %}
 
          {% elif states.sensor.leaf1andb_charge.state < '80' %}
          {% set t = (((80-states.sensor.leafXXXXX_charge.state|int)/13.75)|round(2)*3600)|round(0) %}
 
          {% else %}
          {% set t = 0 %}
 
          {% endif %}
          {{ '{:02d}:{:02d}'.format((t // 3600) % 24, (t % 3600) // 60) }}
 
  - platform: template
    sensors:
      leaf_tempo_carica_6kw:
        unit_of_measurement: 'ore'
        value_template: >
          {% if states.input_boolean.leaf_ricarica_80.state == "off" %}
          {% set t = (((100-states.sensor.leafXXXXX_charge.state|int)/26.66)|round(2)*3600)|round(0) %}
 
          {% elif states.sensor.leaf1andb_charge.state < '80' %}
          {% set t = (((80-states.sensor.leafXXXXX_charge.state|int)/26.66)|round(2)*3600)|round(0) %}
 
          {% else %}
          {% set t = 0 %}
 
          {% endif %}
          {{ '{:02d}:{:02d}'.format((t // 3600) % 24, (t % 3600) // 60) }}
 
  - platform: template
    sensors:
      leaf_tempo_carica_50kw:
        unit_of_measurement: 'ore'
        value_template: >
          {% if states.input_boolean.leaf_ricarica_80.state == "off" %}
          {% set t = (((100-states.sensor.leafXXXXX_charge.state|int)/166.66)|round(2)*3600)|round(0) %}
 
          {% elif states.sensor.leaf1andb_charge.state < '80' %}
          {% set t = (((80-states.sensor.leafXXXXX_charge.state|int)/166.66)|round(2)*3600)|round(0) %}
 
          {% else %}
          {% set t = 0 %}
 
          {% endif %}
          {{ '{:02d}:{:02d}'.format((t // 3600) % 24, (t % 3600) // 60) }}
 
  - platform: template
    sensors:
      leaf_ultimo_aggiornamento:
        friendly_name: 'Leaf Ultimo Aggiornamento'
        value_template: >
          {% set date = as_timestamp(states.sensor.leafXXXXX_charge.attributes.updated_on) | timestamp_custom('%d/%m/%Y') %}
          {% set time = as_timestamp(states.sensor.leafXXXXX_charge.attributes.updated_on) | timestamp_custom('%H:%M:%S') %}
          {{ date }} {{ time }}
 
switch:
  - platform: mqtt
    name: "Interruttore leaf"
    state_topic: "shellies/shelly_leaf/relay/0"
    command_topic: "shellies/shelly_leaf/relay/0/command"
    availability_topic: "shellies/shelly_leaf/online"
    qos: 1
    value_template: "{% if value == 'on' %} on {% else %} off {% endif %}"
    payload_on: "on"
    payload_off: "off"
    payload_available: "true"
    payload_not_available: "false"
    optimistic: false
    retain: false

script:
  carica_leaf:
    alias: Carica Leaf
    sequence:
    - service: notify.alexa_media
      data:
        message: Il livello di carica della Leaf è {{ states.sensor.leafXXXXX_charge.state
          }}%
        data:
          type: tts
        target: media_player.alexa_echo_dotXXXXX
    mode: single
    icon: mdi:car

automation:
  - id: '1600688930559'
    alias: Leaf start
    description: ''
    trigger:
    - platform: time
      at: 00:00
    condition:
    - condition: numeric_state
      entity_id: sensor.leafXXXXX_charge
      below: '70'
    - condition: state
      entity_id: input_boolean.leaf_ricarica_atuomatica
      state: 'on'
    action:
    - service: switch.turn_on
      data: {}
      entity_id: switch.interruttore_leaf
    - service: nissan_leaf.update
      data:
        vin: XXXXXXXXXXXXXXXXX
    mode: single
  - id: '1601322049552'
    alias: leaf stop
    description: ''
    trigger:
    - platform: numeric_state
      above: '80'
      entity_id: sensor.leafXXXXX_charge
    - platform: time
      at: 08:00
    condition:
    - condition: state
      entity_id: input_boolean.leaf_ricarica_80
      state: 'on'
    action:
    - service: switch.turn_off
      data: {}
      entity_id: switch.interruttore_leaf
    mode: single


Questa invece è la scheda da aggiungere a Lovelace:

Codice: Seleziona tutto

  - icon: 'mdi:car'
    path: auto
    title: Auto
    badges: []
    cards:
      - cards:
          - type: 'custom:dual-gauge-card'
            title: Stato
            outer:
              entity: sensor.leafXXXXX_charge
              label: SOC
              unit: '%'
              min: 0
              max: 100
              colors:
                - color: var(--label-badge-green)
                  value: 50
                - color: var(--label-badge-yellow)
                  value: 35
                - color: var(--label-badge-red)
                  value: 25
            inner:
              entity: sensor.leafXXXXX_range
              label: Residui
              unit: km
              min: 0
              max: 200
              colors:
                - color: var(--label-badge-green)
                  value: 100
                - color: var(--label-badge-yellow)
                  value: 70
                - color: var(--label-badge-red)
                  value: 50
          - type: horizontal-stack
            cards:
              - type: button
                tap_action:
                  action: toggle
                entity: switch.interruttore_leaf
                name: Interruttore
                icon: 'hass:car-electric'
                show_name: false
              - type: button
                tap_action:
                  action: toggle
                entity: script.carica_leaf
                icon: 'hass:waveform'
                name: SOC vocale
                show_name: false
              - type: button
                tap_action:
                  action: toggle
                entity: binary_sensor.leafXXXXX_charging_status
                icon: 'hass:battery-charging'
                name: Ricarica
                show_name: false
          - type: horizontal-stack
            cards:
              - type: button
                tap_action:
                  action: toggle
                entity: switch.leafXXXXX_climate_control
                icon: 'hass:air-conditioner'
                show_name: false
                name: A/C
              - type: button
                tap_action:
                  action: toggle
                entity: binary_sensor.leafXXXXX_plug_status
                icon: 'hass:ev-plug-type1'
                name: Cavo
                show_name: false
              - type: button
                tap_action:
                  action: call-service
                  service: nissan_leaf.update
                  service_data:
                    vin: XXXXXXXXXXXXXXXX
                hold_action:
                  action: none
                entity: sensor.leaf_ultimo_aggiornamento
                icon: 'mdi:update'
                name: Aggiorna
                show_name: false
          - type: entities
            entities:
              - entity: sensor.leaf_tempo_carica_2kw
                name: 2kW
                icon: 'hass:power-socket-eu'
              - entity: sensor.leaf_tempo_carica_3kw
                name: 3kW
                icon: 'hass:ev-plug-type1'
              - entity: sensor.leaf_tempo_carica_6kw
                name: 6kW
                icon: 'hass:ev-plug-type1'
              - entity: sensor.leaf_tempo_carica_50kw
                name: 50kW
                icon: 'hass:ev-plug-chademo'
            title: Tempi di ricarica
            show_header_toggle: false
            icon: 'mdi:timer'
          - type: entities
            entities:
              - entity: sensor.leaf_ultimo_aggiornamento
                hold_action:
                  action: none
                icon: 'mdi:update'
                name: Ultimio aggiornamento
              - entity: input_boolean.leaf_impostazioni
                icon: 'hass:cog-outline'
              - entity: input_boolean.leaf_statistiche
                icon: 'hass:poll'
            title: Stato
            show_header_toggle: false
        type: vertical-stack
      - type: conditional
        conditions:
          - entity: input_boolean.leaf_impostazioni
            state: 'on'
        card:
          cards:
            - entities:
                - entity: input_boolean.leaf_ricarica_atuomatica
                - entity: input_boolean.leaf_ricarica_80
                  name: Limita ricarica a 80%
              title: Impostazioni
              type: entities
              show_header_toggle: false
          type: vertical-stack
      - type: conditional
        conditions:
          - entity: input_boolean.leaf_statistiche
            state: 'on'
        card:
          cards:
            - type: 'custom:mini-graph-card'
              name: Consumo Giornaliero
              icon: 'hass:power'
              entities:
                - entity: sensor.consumo_leaf_giornaliero
                  color: blue
              show:
                labels: false
                graph: bar
              hours_to_show: 336
              animate: true
              line_width: 5
              hour24: true
              height: 200
              group_by: date
              aggregate_func: max
            - entities:
                - entity: binary_sensor.leafXXXXX_charging_status
              hours_to_show: 24
              refresh_interval: 1
              title: In carica
              type: history-graph
          type: vertical-stack
      - type: conditional
        conditions:
          - entity: input_boolean.leaf_statistiche
            state: 'on'
        card:
          cards:
            - type: 'custom:mini-graph-card'
              name: Potenza Assorbita
              icon: 'mdi:flash'
              entities:
                - entity: sensor.potenza_leaf
                  color: blue
              show:
                labels: false
              hours_to_show: 24
              points_per_hour: 2
              animate: true
              line_width: 3
              hour24: true
              height: 200
              decimals: 0
              aggregate_func: max
              smoothing: 1
            - entities:
                - entity: sensor.consumo_leaf_giornaliero
                  name: Consumo Giornaliero
                - entity: sensor.consumo_leaf_mensile
                  name: Consumo Mensile
                - entity: sensor.consumo_leaf_annuale
                  name: Consumo Annuale
                - entity: sensor.temperatura_shelly_leaf
                  name: Temperatura Shelly
              type: entities
          type: vertical-stack


By(t)e
eVe: electric vehicle eVe
Leaf 30kWh 2016 powered by Power Cruise Control



Torna a “Strumenti e App”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite