Integrazione Wallbox Prism in Home Assistant (Parte 1)

davide Progetti

Wallbox Prism in Home Assistant

In questa guida vedremo come integrare la wallbox Prism in Home Assistant.

In famiglia abbiamo recentemente acquistato un’auto elettrica e ci siamo quindi messi alla ricerca di una wallbox per la ricarica domestica. Dopo alcune ricerche online, ho scelto la wallbox Prism Solar di Silla Industries in quanto, oltre ad offrire la possibilità di ricaricare solamente con l’energia prodotta dal nostro impianto fotovoltaico, regola automaticamente la corrente di ricarica evitando di far scattare il contatore di casa. Inoltre è possibile avere accesso ai dati in tempo reale sulla potenza importata o immessa in rete grazie alle misurazioni effettuate da Prism tramite la pinza amperometrica posta presso la linea in ingresso dal contatore.

Altre wallbox offrono le stesse funzioni, ma ciò che mi ha fatto propendere per questo prodotto è stata la possibilità di comunicare con la Prism tramite protocollo MQTT, in modo tale da poter controllare la ricarica anche senza dover utilizzare esclusivamente l’interfaccia web fornita dal produttore.

Prerequisiti

Nel seguito di questa guida darò per scontato che abbiate già installato Home Assistant (potete trovare un sacco di guide online, quella ufficiale si può trovare qui [io ad esempio ho installato il sistema operativo di Home Assistant in una virtual machine]).
Sarà poi necessario installare l’integrazione MQTT di Home Assistant (qui la guida apposita). Per utilizzare questa integrazione deve essere già presente un broker MQTT (per crearne uno fare riferimento a questa guida).

Impostazione wallbox Prism per la connessione al broker MQTT

Prima di poter integrare la wallbox Prism in Home Assistant è necessario attivare la connessione MQTT tramite l’interfaccia web fornita dal produttore. Per fare questo è sufficiente seguire le istruzioni all’interno del manuale MQTT della wallbox Prism. Dopo aver inserito l’indirizzo IP della wallbox Prism in un Browser, sarà sufficiente andare nella relativa sezione delle impostazioni ed inserire i dati necessari come mostrato nell’immagine in basso (nel mio caso il base topic è solamente “/prism” differentemente da quanto mostrato nell’immagine).

Wallbox Prism in Home Assistant impostazioni MQTT

Configurazione dei sensori per importare i dati della wallbox Prism in Home Assistant

Per prima cosa dobbiamo configurare dei sensori in home assistant che rilevino i dati inviati tramite MQTT dalla wallbox e li registrino sul server. Per fare questo dobbiamo aggiungere nella sottosezione sensor della sezione mqtt del file “configuration.yaml” di Home Assistant (se non sapete di cosa sto parlando potete leggere questa guida) il codice necessario per dichiarare i sensori. Il risultato sarà il seguente:

mqtt:
  sensor:
    ##################################################################################
    #          WALLBOX PRISM                                                         #
    ##################################################################################

    - state_topic: "prism/hello"
      name: "Prism Hello"
    - state_topic: "prism/1/state"
      name: "Prism Stato"
      value_template: >
        {% set map = {
        '1': 'Unplugged',
        '2': 'Waiting',
        '3': 'Charging',
        '4': 'Pause'
        } %}
        {{ map[value] if value in map else 'Error' }}
    - state_topic: "prism/1/amp"
      name: "Prism Corrente"
      unit_of_measurement: "mA"
    - state_topic: "prism/1/wh"
      name: "Prism Energia Erogata Sessione"
      unit_of_measurement: "Wh"
    - state_topic: "prism/1/pilot"
      name: "Prism Corrente Pilotata dall'Auto"
      unit_of_measurement: "A"
    - state_topic: "prism/1/user_amp"
      name: "Prism Corrente Impostata dell'Utente"
      unit_of_measurement: "A"
    - state_topic: "prism/1/volt"
      name: "Prism Tensione Attuale"
      unit_of_measurement: "V"
    - state_topic: "prism/1/w"
      name: "Prism Potenza"
      unit_of_measurement: "W"
    - state_topic: "prism/1/wh_total"
      name: "Prism Energia Totale"
      unit_of_measurement: "Wh"
    - state_topic: "prism/1/session_time"
      name: "Prism Durata Sessione"
      value_template: "{{ value | int | timestamp_custom('%H:%M:%S', 0) }}"
    - state_topic: "prism/1/error"
      name: "Prism Error"
    - state_topic: "prism/1/mode"
      name: "Prism Mode"
      value_template: >
        {% set map = {
          '1': 'solar',
          '2': 'normal',
          '3': 'pause',
          '7': 'autolimit'
        } %}
        {{ map[value] if value in map else 'error'}}
    - state_topic: "prism/1/input/touch"
      name: "Prism Touch"
      expire_after: 10
    - state_topic: "prism/energy_data/power_grid"
      name: "Prism Potenza Importata"
      unit_of_measurement: "W"
      expire_after: 5

Dopodichè inserire il codice seguente nella sezione sensor (diversa dalla sezione in cui è stato inserito il codice sopra [se non è presente createla]) del file “configuration.yaml” il codice seguente:


    #Sensore custom per capire se la wallbox ha fermato la ricarica in automatico per limitare la corrente
  - platform: template
    sensors:
      prism_autolimit:
        friendly_name: 'Autolimit'
        value_template: >-
          {% if is_state('sensor.prism_mode', 'autolimit') %}
            Attivo
          {% else %}
            Non Attivo
          {% endif %}

    #Sensore per rilevare gli input sul tasto touch della wallbox
  - platform: mqtt
    state_topic: "prism/1/input/touch"
    name: "Prism Touch"

Dopo aver inserito il codice nel file di configurazione, sarà sufficiente riavviare Home Assistant tramite il comando in Impostazioni>Controlli del Server>Gestione del Server. Dopo il riavvio sarà possibile trovare i sensori e consultarne i dati in Impostazioni>Integrazioni>Entità.

Creazione aiutanti per impostazione modalità e corrente di ricarica

Per poter impostare la modalità della wallbox e la corrente di ricarica è necessario innanzitutto creare degli aiutanti dalle impostazioni di home assistant. Per prima cosa bisogna premere sul tasto Aggiungi Aiutante in Impostazioni>Aiutanti.

Dopodiché selezionare “Commutatore” come tipologia di input per le tre modalità della wallbox ed invece “Numero” come tipologia di input per la corrente di ricarica. Sarà quindi necessario creare 3 aiutanti di tipo Commutatore ed 1 di tipo numero. Nell’immagine seguente i parametri che ho utilizzato io per la loro configurazione:

Creazione delle automazioni per impostare la modalità della Wallbox Prism in Home Assistant

Abbiamo ora tutti gli elementi necessari per scrivere le prime automazioni per il controllo della Prism da Home Assistant (se non sai che cosa sono le automazioni di Home Assistant puoi leggere questa guida). Per prima cosa dobbiamo creare un’automazione in modo tale che all’interno di Home Assistant solo una modalità resti attiva. Per fare questo bisognerà aggiungere il seguente codice all’interno del file “automations.yaml“:

#Solo una modalità di funzionamento può essere attiva
- alias: Prism Mode set
  trigger:
    platform: state
    entity_id: input_boolean.prism_solar_mode, input_boolean.prism_pause_mode, input_boolean.prism_normal_mode
    to: 'on'
  action:
  - service: input_boolean.turn_off
    data_template:
      entity_id: '{% set booleans = [ ''input_boolean.prism_solar_mode'', ''input_boolean.prism_pause_mode'',
        ''input_boolean.prism_normal_mode''] | reject(''equalto'', trigger.entity_id)
        %} {{ booleans | list | join('', '') }}'


#Se solo una modalità è attiva e viene spenta attiva la modalità pausa
- alias: Prism Mode reduntant
  trigger:
    platform: state
    entity_id: input_boolean.prism_solar_mode, input_boolean.prism_pause_mode, input_boolean.prism_normal_mode
    to: 'off'

  condition:
    - condition: state
      entity_id: input_boolean.prism_solar_mode, input_boolean.prism_pause_mode, input_boolean.prism_normal_mode
      state: "off"

  action:
  - service: input_boolean.turn_on
    data_template:
      entity_id: input_boolean.prism_pause_mode

Possiamo quindi scrivere le automazioni per impostare la modalità della Prism tramite MQTT quando uno dei relativi input di Home Assistant viene attivato. Il codice è il seguente:

- alias: Set Wallbox Mode Solar
  trigger:
  - platform: state
    entity_id: input_boolean.prism_solar_mode
    to: 'on'
  action:
  - service: mqtt.publish
    data:
      topic: prism/1/command/set_mode
      retain: true
      payload: '1'
  mode: single

- alias: Set Wallbox Mode Normal
  trigger:
  - platform: state
    entity_id: input_boolean.prism_normal_mode
    to: 'on'
  action:
  - service: mqtt.publish
    data:
      topic: prism/1/command/set_mode
      retain: true
      payload: '2'
  mode: single

- alias: Set Wallbox Mode Pause
  trigger:
  - platform: state
    entity_id: input_boolean.prism_pause_mode
    to: 'on'
  action:
  - service: mqtt.publish
    data:
      topic: prism/1/command/set_mode
      retain: true
      payload: '3'
  mode: single

Infine scriviamo le automazioni per aggiornare la modalità attiva mostrata in Home Assistant quando viene cambiata nella Prism in altri modi. Il codice è il seguente:

- alias: Update Wallbox Mode Solar
  description: ''
  trigger:
  - platform: mqtt
    topic: prism/1/mode
    payload: '1'
  condition: []
  action:
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.prism_solar_mode
  mode: single
  
- alias: Upadate Wallbox Mode Normal
  description: ''
  trigger:
  - platform: mqtt
    topic: prism/1/mode
    payload: '2'
  condition: []
  action:
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.prism_normal_mode
  mode: single


- alias: Update Wallbox Mode Pause
  description: ''
  trigger:
  - platform: mqtt
    topic: prism/1/mode
    payload: '3'
  condition: []
  action:
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.prism_pause_mode
  mode: single

Creazione delle automazioni per impostare la corrente di ricarica della Wallbox Prism in Home Assistant

Per concludere dobbiamo scrivere le automazioni per impostare la corrente di ricarica da Home Assitant:

- alias: Set Wallbox Max Current
  description: ''
  trigger:
  - platform: state
    entity_id: input_number.prism_max_current_set
  condition: []
  action:
  - service: mqtt.publish
    data:
      topic: prism/1/command/set_current_user
      retain: true
      payload: '{{ states("input_number.prism_max_current_set") }}'
  mode: single

Infine, come per la modalità, scriviamo un’automazione per aggiornare la corrente impostata in home assistant quando viene modificata tramite l’interfaccia web del produttore:

- alias: Update Wallbox Max Current
  description: ''
  trigger:
  - platform: mqtt
    topic: prism/1/user_amp
  condition: []
  action:
  - service: input_number.set_value
    target: 
      entity_id: input_number.prism_max_current_set
    data:
      value: "{{ trigger.payload }}"
      
  mode: single

Conclusione

In questa guida abbiamo visto come configurare Home Assistant per poter ricevere dati sulla ricarica (ed anche sull’energia importata/esportata in rete) e per poter comandare la wallbox Prism. Il prossimo passo sarà quello di creare una plancia personalizzata per poter utilizzare l’interfaccia grafica di Home Assistant per il controllo della Prism. Questo sarà l’argomento della prossima guida.

Se questa guida ti è piaciuta segui il mio blog sui canali social (clicca sulle icone in fondo alla pagina) per essere informato su tutti i nuovi articoli che scriverò.