Shelly in Home Assistant: mille modi per farlo !!

Shelly in Home Assistant: mille modi per farlo !!

.

Argomento: Shelly

Livello: Novizio (Novizio,Esperto, Pro)

Difficoltà: Bassa (Bassa, Media, Alta)

Aggiornamento: 13.02.2020 Aggiornato l’integrazione tramite ShellyForHass

In questo breve articolo faremo il punto della situazione per quanto riguarda l’integrazione dei dispositivi Shelly in Home Assistant.

Esistono, al momento, 3 modi differenti per integrare gli shelly in Home Assistant:

I primi due avranno bisogno dell’abilitazione del protocollo MQTT dall’app shelly, in questo modo però si disabiliterà il Cloud, l’altro invece non disabiliterà il Cloud e per comunicare in locale con Home Assistant utilizza il protocollo CoAP e REST.

Integrazione Tramite MQTT e dichiarazione in HA

Per l”integrazione MQTT è necessario abilitare il protocollo di comunicazione dall’app. Shelly andando al menù Imposta Protocollo MQTT che si trova nel menù Internet e Sicurezza, poi avremmo bisogno, per la dichiarazione in HA, del topic o ID che si trova nel menù Informazioni Dispositivo sotto il menù Settaggi. Nell’esempio è N9A633.

Di seguito alcuni esempi.

Shelly 1

light:
 - platform: mqtt
   name: "Luce Studio"
   state_topic: "shellies/shelly1-XXXXXX/relay/0"
   command_topic: "shellies/shelly1-XXXXXX/relay/0/command"
   qos: 0
   payload_on: "on"
   payload_off: "off"
   retain: false

Shelly 2.5

MODALITÀ RELE’

light:
- platform: mqtt
name: "uscita_uno"
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: "uscita_due"
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_uno"
state_topic: "shellies/shellyswitch25-XXXXXX/relay/0/power"
qos: 0
unit_of_measurement: "W"
- platform: mqtt
name: "Potenza Totale uscita_uno"
state_topic: "shellies/shellyswitch25-XXXXXX/relay/0/energy"
qos: 0
unit_of_measurement: "W"
- platform: mqtt
name: "Potenza Istantanea uscita_due"
state_topic: "shellies/shellyswitch25-XXXXXX/relay/1/power"
qos: 0
unit_of_measurement: "W"
- platform: mqtt
name: "Potenza Totale uscita_due"
state_topic: "shellies/shellyswitch25-XXXXXX/relay/1/energy"
qos: 0
unit_of_measurement: "W"
- platform: mqtt
name: "Temperatura shelly2.5"
state_topic: "shellies/shellyswitch25-XXXXXX/temperature"
qos: 0
unit_of_measurement: "°C"
- platform: mqtt
name: "Sovratemperatura shelly2.5"
state_topic: "shellies/shellyswitch25-XXXXXX/overtemperature"
qos: 0

MODALITÀ ROLLER SHOTTERS

cover:
- platform: mqtt
name: Tapparella Cameretta
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 1PM

switch:
 - platform: mqtt
   name: "Plug condizionatori"
   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 Dimmer

light:
 - platform: mqtt
   schema: template
   name: prova dimmer
   command_topic: "shellies/shellydimmer-<deviceid>/light/0/set"
   state_topic: "shellies/shellydimmer-<deviceid>/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

Integrazione Tramite Shellies Discovery

Questo secondo sistema necessita anch’esso dell’abilitazione di MQTT dall’app come il precedente (Integrazione Tramite MQTT e dichiarazione in HA), in aggiunta dovremmo aggiungere una dichiarazione in HA per abilitare gli script in pyton. Aggiungiamo quindi la seguente riga nel file configuration.yaml sempre se già dichiarata.

python_script:

Successivamente dal menù di HACS in HA (vedi HACS guida all’installazione), nel sottomenù Python Script digitiamo:

Shellies Discovery

installiamolo ed aggiungiamo la seguente automazione:

automation:
  - id: shellies_announce
    alias: 'Shellies Announce'
    trigger:
      - platform: homeassistant
        event: start
    action:
      service: mqtt.publish
      data:
        topic: shellies/command
        payload: announce

  - id: 'shellies_discovery'
    alias: 'Shellies Discovery'
    trigger:
      - platform: mqtt
        topic: shellies/announce
    action:
      service: python_script.shellies_discovery
      data_template:
        id: '{{ trigger.payload_json.id }}'
        mac: '{{ trigger.payload_json.mac }}'
        fw_ver: '{{ trigger.payload_json.fw_ver }}'

In Hacs troverete maggiori informazioni per personalizzare le varie entità.
Dopo il riavviate di Home Assistant troverete nel menù Integrazioni tutti i vostri dispositivi Shelly integrati automaticamente.

Integrazione Tramite Shelly Smart Home / ShellyForHass

Quest’ultimo metodo di integrazione ci permette di mantenere il Cloud proprietario utile, ad esempio, con gli Shelly EM per memorizzare i grafici dei consumi.

Sempre con Hacs (vedi HACS guida all’installazione) dal menù Integrations cerchiamo ed installiamo

ShellyForHass.

Ora avete due scelte possibili o l’integrazione diretta dal Cloud (in questo modo i nomi e il dominio dei dispositivi verrà determinato da ciò che avete scelto dall’app Shelly) o manualmente tramite dichiarazione. Vediamo i due casi.

Tramite CLOUD:
Nel file configuration.yaml aggiungete:

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

La key ed il server lo troverete a questo indirizzo https://my.shelly.cloud/?#user_settings dopo esservi loggati, sotto il menu’ GET KEY. Riavviate Home Assistant per consolidare le modifiche.

Procedete successivamente dal menù Impostazioni-Integrazioni aggiungendo  Shelly Smart Home tra le vostre integrazioni

Per finire vi verrà chiesto la password di Shelly Cloud

Manualmente Tramite Dichiarazione:
Nel file configuration.yaml di Home Assistant aggiungete:

shelly:
discovery: true
power_decimals: 2
devices:
- id: 0XXX4C
light_switch: true
name: Luce Bagno
- id: BXXX36
name: Shelly EM
- id: 0XXXDB
name: Tapparella Matrimoniale

Come Id dovrete scrivere il codice identificativo che trovate nel Menù Informazioni Dispositivo visto in precedenza. Si potrà modificare il dominio di ogni singolo dispositivo.

Anche per questo metodo, dopo il riavvio di Home Assistant, basterà recarsi nel menù Impostazioni, Integrazioni per aggiungere Shelly Smart Home tra le proprie integrazioni, come visto in precedenza.

 

27 risposte

  1. Gregorio ha detto:

    Complimenti per l’ottima guida scritta.. quale modalità di utilizzo per Shelly consigliate?? Grazie

    • Enrico ha detto:

      Se il cloud non ti serve meglio mqtt e dichiarazione in HA. Devo dire però che il metodo cloud+HA è comodo ma se hai bisogno di personalizzare le entità comunque devi scrivere alcune righe di codice e a questo punto meglio la soluzione precedente.

  2. Gregorio ha detto:

    ok.. grazie mille ..

  3. Stefano Pirazzi ha detto:

    Ho integrato Shelly1pm tramite mqtt e sono riuscito a far leggere tutti i sensori, ma lo switch non funziona, non legge lo stato acceso, anche se lo è e se provo a portarlo su on con la sidebar, torna ln off, ma fisicamente rimane comunque in on, allo stato iniziale

  4. Maurizio ha detto:

    Salve, ho usato la funzione Shelly smart home, ho integrato 5 shelly 1 e 3 chelly 1 PM,
    però HASS.io me ne trova solo 3, io ho ripetuto più volte la tua funzione,
    shelly:
    discovery: true
    power_decimals: 8
    devices:
    – id: xxxxxx
    light_switch: true
    name: Luce Bagno
    – id: xxxxxx
    light_switch: true
    name: Luce Cameretta
    ecc.ecc.
    Ho notato anche che le uniche 3 che mi fa vedere su hass.io mi crea gli stessi problemi di Stefano Pirazzi cioè (“ma lo switch non funziona, non legge lo stato acceso, anche se lo è e se provo a portarlo su on con la sidebar, torna ln off, ma fisicamente rimane comunque in on, allo stato iniziale”)Grazie

  5. Steno ha detto:

    Ciao a tutti. Volevo fare una nota riguardo alle reti mesh (avendola a casa). Ho notato che queste reti per funzionare correttamente hanno bisogno che i dispositivi che le utilizzano (pc smartphone tablet etc) implementano i protocolli 802.11k, 802.11r e 802.11v. Questi protocolli infatti permettono il roaming all interno di una rete wifi. Chiedendo ai tecnici della shelly non mi hanno saputo dare risposta a riguardo al che do per scontato che non li abbiano inseriti. Il problema che si puo avere e’ che, per esempio, riavviando il wifi di casa lo shelly si colleghi al primo access point mesh disponibile che puo non coincidere con il piu vicino. Questo provoca un segnale debole con conseguenti problemi e/o disconnessioni. Tale “piccolo” fastidio puo comunque essere evitato col firmware tasmota che, dagli ultimi aggiornamenti, permette di abilitare il roaming. Avete info sul tema?

    • Mauro Cimino ha detto:

      Ciao provo Risponderti per la mia esperienza personale, per quel che so la mesh funziona in ogni caso ed i dispositivi non hanno bisogno dei protocolli che citi tu. In ogni caso parlando di shelly difficilmente hai un cambio di ricevitore visto che non vanno camminando per casa come un cellulare. Personalmente ho avuto modo di usare gli shelly all’Interno delle resti mesh e non ho mai avuto problemi.

    • hicks ha detto:

      @Steno: confermo che in effetti anche dalla mia esperienza il roaming non viene gestito dai dispositivi shelly che ho avuto modo di provare (Shelly 2.5, ShellyPM, Shelly 1, Shelly EM). E’ vero che si tratta di installazioni solitamente “fisse”, tuttavia si verifica che se momentaneamente un AP va giù per qualsiasi motivo, il dispositivo si aggancia ad un AP alternativo più lontano (e sin qui tutto bene), ma vi resta inchiodato anche quando torna disponibile l’AP più vicino, che arriva con segnale notevolmente superiore, Per ora ho ovviato inibendo su alcuni AP l’accesso agli shelly più lontani (bloccandone il relativo MAC).

  6. massimiliano ha detto:

    ciao e grazie delle guide ma sbaglio o non esiste più shelly smart home ? sotto Hacs io trovo solo shellyforhass

  7. Leonardo ha detto:

    ciao,
    ho provato a collegare uno shelly EM col metodo mqtt.
    Dai log sembra tutto ok :
    1582125301: New connection from 172.30.32.1 on port 1883.
    [INFO] found homeassistant on local database
    1582125302: New client connected from 172.30.32.1 as auto-85C76655-E531-AE4D-FEE5-C15B61C8BCCB (p2, c1, k60, u’homeassistant’).
    1582125322: New connection from 192.168.1.13 on port 1883.
    [INFO] found device on Home Assistant
    1582125323: New client connected from 192.168.1.13 as shellyem-B9E2A4 (p2, c1, k60, u’device’).

    Se apro integrazioni->mosquito è vuoto
    Se vado in strumenti per sviluppatori-> stati vedo tutte le entità con stato unknow, es:
    sensor.potenza_ch1 unknown unit_of_measurement: “W” friendly_name: “Potenza CH1”

    sullo shelly em ho clean session si, retain no, qos 0, keep alive 60

    idee ?

  8. leonardo ha detto:

    Aggiungo un test.
    se con mttq explorer interrogo mosquito sul server di home assistant mi risponde con tutti i valori corretti.
    Uso il plugins di hassio.
    Quindi sembra che mosquito riceva i valori ma non popoli i dati su HA

  9. Andrea ha detto:

    Ho notato che il valore dei dati giornalieri e quelli mensili variano in base a quante volte riavvio home assistant.. Questo perchè al riavvio la lettura dei KWh consumati totale non è istantanea ma compare dopo 2/3 minuti (penso che questo lag sia dato dal fatto che il valore viene prelevato dallo shelly o non so da dove) e, con la scusa che all’inizio il valore mi rimane a zero e poi tutto d’un tratto si riporta ai Kwh giusti, (Kwh totali) il sensore lo conta come un consumo aggiuntivo e lo somma al valore dei dati giornalieri. Esempio se il KWh totali consumati sono 200Kwh e quelli giornalieri sono a 5Kwh, se riavvio home assistant mi trovo ad avere i KWh totali a 0 e quelli giornalieri a 5… poi quando tornano fuori quelli totali mi trovo ad avere 200Kwh totali e 205Kwh giornalieri.
    C’è modo per non perdere il valore su home assistant ma ad ogni riavvio mi tenga salvata l’ultima lettura totale??

  10. Mauro ha detto:

    Buongiorno a tutti, premetto che sono un neofita.
    Ho appena installato Home Assistant senza Hassio, ho integrato in HA il protocollo MQTT ed ho inserito uno Shelly 1 in configuration.yaml come switch, come indicato nell’esempio Shelly1PM. Dopo il riavvio di HA, dalla pagina di HA “Strumenti per sviluppatori –> MQTT”, in “Ascoltare un argomento”, ho inserito il topic shellies/shelly1pm-XXXXXX/relay/0 (con al posto di shelly1pm-XXXXXX il topic personalizzato impostato all’interno dello Shelly) e ogni 30 secondi arriva giustamente il messaggio pubblicato dallo Shelly1.

    Nella pagina “Strumenti per sviluppatori –> STATI”, il dispositivo non appare come entità.
    Nonostante quanto sopra, non riesco a capire come posso aggiungerlo alla schermata Home.
    Qualcuno potrebbe gentilmente darmi qualche dritta?

    Grazie a tutti

  11. Andrea ha detto:

    Come deve essere il file di configurazione dei sensori di temperatura H&T? Sono due giorni che cerco di integrarli ad homeassistant ma non ci riesco. Grazie.

  12. Fabio ha detto:

    Buongiorno, ho seguito la guida con Shelly for hass e ho integrato correttamente tutti i sensori shelly. Viorrei chiedervi avendo uno shelly EM come poter mostrare la somma di due valori registrato dallo EM. Esempio: la pinza indica 10 watt, la pinza 2 indica 20 watt, io vorrei poter mostrare la somma di questi valori e quindi Totale 30 watt.
    Grazie

  13. Simone Veronese ha detto:

    Ciao a tutti, ho integrato l’addon di Shelly for Hass e vedo correttamente tutti i miei shelly.
    Un problema che riscontro è che quando accendo uno switch da homeassistant graficamente va su on poi successivamente su off, ma in realtà mi attiva lo switch. Stessa cosa quando devo impostarlo su off. Potete aiutarmi, sono un novizio di home assistant. grazie

  14. Gaetano ha detto:

    Ciao a tutti, complimenti per la guida, ho integrato lo shelly 2.5 in modalità roller tramite MQTT su home assistant e funziona tutto alla perfezione.
    L’unica cosa che non capisco è che al riavvio di home assistant lo stato dello shelly (cover….) è in stato di sconosciuto finché non faccio muovere il motore anche solo di poco. Una volta fatta questa operazione mi riporta il valore corretto (open/closed). La calibrazione non sono riuscito a farla perché credo che il micro del motore interviene prima dello shelly.

  15. davanda ha detto:

    Complimenti come sempre per le ottime guide.
    Volevo chiedere se è possibile controllare, oltre a dispositivi shelly nella stessa rete, anche alcuni shelly collegati su altre reti, in cloud.
    Dall’app ovviamente riesco.

    Grazie

  16. Fabio ha detto:

    Salve, ho installato le Shelly come ShellyForHass e funzionano bene. Unica cosa che non riesco a fare è quella di far apparire, sotto alla riga della tapparella (shelly 2.5), la percentuale di apertura. Posso alzare, abbassare e fermare ma senza avere l’evidenza di dove sia la tapparella. Lo si riesce a vedere solo se clicco sulla voce e a quel punto mi appare il cursore della posizione. Questo mi fa capire che esiste, ovviamente, un sensore di posizione ma come si fa a farlo apparire in dashboard. Ripeto: NON è MQTT

    • Tigers ha detto:

      In una scheda “elementi immagine” puoi usare una cosa del genere:
      – attribute: current_position
      entity: cover.shelly_shsw_25_XXXX
      style:
      left: 26%
      top: 89%
      type: state-label
      che ti mostra un numero da 1 a 100 che rappresenta l’apertura. L’unico problema è che quando è chiusa restituisce un errore, se ti dà fastidio devi filtrarla in modo che sia mostrato solo se aperta.
      Invece per mostrarla in una normale scheda “Entità” puoi usare l’add-on ‘custom:slider-entity-row’ che le mostra sulla riga come uno slider.

  17. Gianmarco ha detto:

    Buonasera, a chi servisse ho collegato una shelly vintage via mqtt con il seguente codice:
    funziona sia on off che controllo luminosità

    light:
    – platform: mqtt
    schema: template
    name: Vintage
    command_topic: “shellies/ShellyVintage-XXXXXX/light/0/set”
    state_topic: “shellies/ShellyVintage-XXXXXX/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

  18. Nik ha detto:

    Buongiorno,
    non riesco a capire perché nonostante ci sia un’unica entità con lo stesso name se vado ad aprirla HA mi restituisce il seguente errore: Questa entità (“sensor.assorbimento_contatore”) non ha un ID univoco, pertanto le sue impostazioni non possono essere gestite dall’Interfaccia Utente. Vedere documentazione per maggiori dettagli.

    grazie

  19. Br1 ha detto:

    Ho una decina di shelly installati in casa ma in nessuno di loro appare la voce ADVANCED – DEVELOPER SETTINGS.

    Che devo fare per averla?

    Grazie

  20. Cristian Moro ha detto:

    Buongiorno, come integro la protezione Restrict Login in home assistant?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Advertisment ad adsense adlogger