Home Guide Integrare lo Shelly ad Home Assistant via MQTT o ShellyForHASS

Integrare lo Shelly ad Home Assistant via MQTT o ShellyForHASS

19979
0

Esistono fondamentalmente 2 modi per integrare uno Shelly (Shelly 1, Shelly 2.5, Shelly Dimmer, Shelly 1PM, Shelly EM, … ) all’interno del nostro Home Assistant.

Il primo consiste nell’ abilitare il protocollo MQTT nelle impostazioni del dispositivo Shelly. Ma molti di voi già sapranno che abilitando MQTT verrà a mancare in automatico la possibilità di comandare lo Shelly via Cloud.

Questo soluzione a molti fa storcere il naso, è per questo è nato un nuovo modo per poter integrare il nostro Shelly ad Home Assistant MANTENENDO il Cloud attivo. Questa magia la fa il componente ShellyForHASS.

Ma andiamo con ordine e mostriamo entrambe le procedure:

INTEGRAZIONE TRAMITE MQTT (CLOUD DISATTIVATO!)

Recarsi nel menu INTERNET E SECURITY -> ADVANCED – DEVELOPER SETTINGS da cui potete attivare il protocollo MQTT con Enable action execution via MQTT.

Nota bene: questo menu non è visualizzabile da app. Dovete entrare nelle impostazioni dello Shelly tramite web, conoscendo il suo indirizzo IP diretto.

impostazioni-avanzate-shellyCompilate i campi richiesti:

Alla voce Username e password inserirete le credenziali riferite al vostro broker mqtt sul Raspberry dove gira Home Assistant.
Alla voce server inserirete l’indirizzo ip del vostro raspberry seguito dalla porta di default dedicata al servizio mqtt (esempio: 192.168.1.5:1883).

Alla voce will topic inserirete il nome del vostro dispositivo Shelly. Lo potete ricavare dal vostro router oppure dalle informazioni del dispositivo sull’app shelly. Lo riconoscerete perchè sarà simile a: shelly1-6de6a1

Salvate ed uscite.

Ora dovrete collegarvi al vostro Raspberry e modificare il file configuration.yaml e aggiungere l’integrazione in base al tipo di Shelly in uso:

Shelly 1:

switch:
  - platform: mqtt
    name: "Nome che volete"
    state_topic: "shellies/shelly1-6de6a1/relay/0"
    command_topic: "shellies/shelly1-6de6a1/relay/0/command"
    qos: 0
    payload_on: "on"
    payload_off: "off"
    optimistic: false
    retain: false

Shelly 1PM:

switch:
  - platform: mqtt
    name: "Nome che volete"
    state_topic: "shellies/shelly1pm-XXXXXX/relay/0"
    command_topic: "shellies/shelly1pm-XXXXXX/relay/0/command"
    qos: 0
    payload_on: "on"
    payload_off: "off"
    retain: false

Shelly 2.5 in modalità relè:

switch:
  - platform: mqtt
    name: "Nome che volete - uscita 1"
    state_topic: "shellies/shellyswitch25-XXXXXX/relay/0"
    command_topic: "shellies/shellyswitch25-XXXXXX/relay/0/command"
    qos: 0
    payload_on: "on"
    payload_off: "off"
    optimistic: false
    retain: false
  - platform: mqtt
    name: "Nome che volete - uscita 2"
    state_topic: "shellies/shellyswitch25-XXXXXX/relay/1"
    command_topic: "shellies/shellyswitch25-XXXXXX/relay/1/command"
    qos: 0
    payload_on: "on"
    payload_off: "off"
    retain: false

sensor:
  - platform: mqtt
    name: "Potenza istantanea uscita 1"
    state_topic: "shellies/shellyswitch25-XXXXXX/relay/0/power"
    qos: 0
    unit_of_measurement: "W"
  - platform: mqtt
    name: "Potenza totale uscita 1"
    state_topic: "shellies/shellyswitch25-XXXXXX/relay/0/energy"
    qos: 0
    unit_of_measurement: "W"
  - platform: mqtt
    name: "Potenza istantanea uscita 2"
    state_topic: "shellies/shellyswitch25-XXXXXX/relay/1/power"
    qos: 0
    unit_of_measurement: "W"
  - platform: mqtt
    name: "Potenza totale uscita 2"
    state_topic: "shellies/shellyswitch25-XXXXXX/relay/1/energy"
    qos: 0
    unit_of_measurement: "W"
  - platform: mqtt
    name: "Temperatura device"
    state_topic: "shellies/shellyswitch25-XXXXXX/temperature"
    qos: 0
    unit_of_measurement: "°C"
  - platform: mqtt
    name: "Sovratemperatura device"
    state_topic: "shellies/shellyswitch25-XXXXXX/overtemperature"
    qos: 0

Shelly 2.5 in modalità Roller Shotters

cover:
  - platform: mqtt
    name: Tapparella
    command_topic: "shellies/shellyswitch25-XXXXXX/roller/0/command"
    position_topic: "shellies/shellyswitch25-XXXXXX/roller/0/pos"
    set_position_topic: "shellies/shellyswitch25-XXXXXX/roller/0/command/pos"
    availability_topic: "shellies/shellyswitch25-XXXXXX/online"
    payload_available: "true"
    payload_not_available: "false"
    qos: 1
    retain: false
    payload_open: "open"
    payload_close: "close"
    payload_stop: "stop"
    position_open: 100
    position_closed: 0

Shelly Dimmer:

light:
  - platform: mqtt
    schema: template
    name: Dimmer salotto
    command_topic: "shellies/shellydimmer-XXXXX/light/0/set"
    state_topic: "shellies/shellydimmer-XXXXX/light/0/status"
    command_on_template: >
      {"turn": "on"
      {%- if brightness is defined -%}
      , "brightness": {{brightness | float | multiply(0.3922) | round(0)}}
      {%- endif -%}
      }
    state_template: '{%- if value_json.ison %}on{% else %}off{% endif %}'
    brightness_template: '{{ value_json.brightness | float | multiply(2.55) | round(0) }}'
    command_off_template: '{"turn":"off"}'
    qos: 0

Shelly EM:

sensor:
  - platform: mqtt
    name: "Potenza Ch1"
    state_topic: "shellies/shellyem-XXXXXX/emeter/0/power"
    unit_of_measurement: "W"
  - platform: mqtt
    name: "Tensione Ch1"
    state_topic: "shellies/shellyem-XXXXXX/emeter/0/voltage"
    unit_of_measurement: "V"
  - platform: mqtt
    name: "Reactive Ch1"
    state_topic: "shellies/shellyem-XXXXXX/emeter/0/reactive_power"
    unit_of_measurement: "PR"

  - platform: mqtt
    name: "Potenza Ch2"
    state_topic: "shellies/shellyem-XXXXXX/emeter/1/power"
    unit_of_measurement: "W"
  - platform: mqtt
    name: "Tensione Ch2"
    state_topic: "shellies/shellyem-XXXXXX/emeter/1/voltage"
    unit_of_measurement: "V"
  - platform: mqtt
    name: "Reactive Ch2"
    state_topic: "shellies/shellyem-XXXXXX/emeter/1/reactive_power"
    unit_of_measurement: "PR"

switch:
  - platform: mqtt
    name: "Switch EM"
    state_topic: "shellies/shellyem-XXXXXX/relay/0"
    command_topic: "shellies/shellyem-XXXXXX/relay/0/command"
    qos: 0
    payload_on: "on"
    payload_off: "off"
    retain: false

salvate e riavviate Home Assistant.

INTEGRAZIONE TRAMITE SHELLYFORHASS (CLOUD MANTENUTO ATTIVO!)

Andiamo a vedere come integrare invece gli Shelly mantenendo anche attivata la funzione di Cloud proprietaria.

Prima di tutto dobbiamo esser certi di aver già installato HACS sul nostro Home Assistant. Se così non fosse ecco lo guida: Come installare HACS su Home Assistant

Quindi in HACS rechiamoci nel menù Integrations, cerchiamo Shellyforhass e clicchiamo Install

Ora potete integrare tutti i vostri Shelly in 2 modi:

INTEGRAZIONE SHELLY TRAMITE CLOUD

Aggiungiamo nel nostro configuration.yaml:

shelly:
  cloud_auth_key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  cloud_server: "shelly-XXXXX.shelly.cloud"

Dove cloud_auth_key e cloud_server li potete recuperare da questo indirizzo: https://my.shelly.cloud/ alla voce Impostazioni Utente

Nota: alla voce cloud_server omettere https://

Torniamo ora in Home Assistant e dal menu ImpostazioniIntegrazioni aggiungiamo Shelly smart home in cui dovrete inserire la vostra password Shelly Cloud

INTEGRAZIONE SHELLY MANUALE

Se volete integrare il tutto manualmente, aprite il configuration.yaml e inserite i vostri Shelly:

shelly:
  discovery: true
  power_decimals: 2
  devices:
  - id: 0XXX4C
    light_switch: true
    name: Luce cameretta
  - id: BXXX36
    name: Shelly EM taverna
  - id: 0XXXDB
    name: Tapparella salotto

l’ id corrisponde al nome univoco dei vostri Shelly, che lo potete recuperare andando a vedere nel menu INFORMAZIONI DISPOSITIVO

Salvate e riavviate Home Assistant.

Ora sempre in Home Assistant andiamo nel menu ImpostazioniIntegrazioni aggiungiamo Shelly smart home in cui dovrete inserire la vostra password Shelly Cloud