Pagina 1 di 2

Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 16/09/2020, 13:55
da andbad
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 3219 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

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 16/09/2020, 15:59
da robertocr
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

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 16/09/2020, 17:18
da andbad
Mica vero. Io lo faccio girare su Ubuntu, sulla stessa macchina che mi fa da NAS e altre mille cose.

By(t)e

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 16/09/2020, 17:21
da romeop
Bello, appena mi arriva la Zoe provo a sviluppare qualcosa

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 16/09/2020, 17:24
da robertocr
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

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 18/09/2020, 13:02
da andbad
Piccolo aggiornamento:
ha2.png
ha2.png (51.68 KiB) Visto 3173 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

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 06/11/2020, 14:14
da andbad
A tempo perso continuo a lavorarci.
Pannello di default:
2.png
2.png (58.34 KiB) Visto 3033 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:
1.png
1.png (49.92 KiB) Visto 3033 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

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 06/11/2020, 14:23
da andbad
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

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 28/01/2021, 14:04
da andbad
UPDATE:
prendendo mano con HA sto migliorando anche questa card.
Questa è la schermata attuale:
1.png
1.png (139.66 KiB) Visto 2469 volte
I pulsanti sotto il grafico del SOC indicano:
- lo stato dell'interruttore a monte dell'EVSE
- se la carica è stata avviata
- se l'aria condizionata è accesa
- se il cavo è collegato
- pulsante che aggiorna lo stato (tramite API Nissan)

L'immagine della Leaf ha una piccola animazione quando in ricarica (fatta al volo, eh...):
leaf.gif
leaf.gif (396.51 KiB) Visto 2469 volte
Cliccando sull'interruttore "Statistiche" si apre questa scheda:
3.png
3.png (36.96 KiB) Visto 2469 volte
"In carica" mostra se e quando è stata in carica nella ultime 24 ore, mentre sotto c'è lo storico delle ricariche delle ultime 24 ore e il totale degli ultimi 12 mesi (il totale annuale è assieme agli altri elettrodomestici in un'altra scheda).

Invece le "Impostazioni" sono queste:
2.png
2.png (23.73 KiB) Visto 2469 volte
La ricarica automatica inzia all'ora indicata e termina a quella indicata, a meno che non siano impostati dei limiti di ricarica: se sopra la % minima non avvia la ricarica, mentre la interrompe se si è sopra quella massima.
Posso poi programmare l'aria condizionata perché parta e si interrompa ad una data ora. Supera i limiti della programmazione standard di Nissan perché se dopo 15 minuti si spegne (se non collegata, altrimenti sono 2 ore) ma l'ora di fine non è ancora arrivata, riavvia la climatizzazione.
C'è un'altra automazione, sotto il cofano virtuale di Home Assistant, che aggiorna lo stato dell'auto quando arrivo a casa, mentre con uno script posso chiedere ad Alexa, tramite comando vocale, di darmi la situazione dell'auto (SOC, stato del cavo, tempi di ricarica, ecc...).

By(t)e

Re: Integrazione hub Home Assistant con Nissan Leaf 30 kWh

Inviato: 21/06/2021, 22:51
da Oiligriv
andbad ha scritto:UPDATE:
prendendo mano con HA sto migliorando anche questa card.
...
By(t)e

Ciao so che il post è particolarmente datato, ma per caso queste schede sono compatibili con la nuova Renault Zoe 2021?
con Hassio mi sono integrato con la mia Zoe, ma vorrei creare delle automazioni per l'aria condizionata.