Shelly in Home Assistant: mille modi per farlo !!

HassioHelp

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.

 

15 risposte

  1. Avatar Gregorio ha detto:

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

    • Enrico 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. Avatar Gregorio ha detto:

    ok.. grazie mille ..

  3. Avatar 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. Avatar 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. Avatar 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 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.

    • Avatar 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. Avatar massimiliano ha detto:

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

  7. Avatar 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. Avatar 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. Avatar 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. Avatar 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

Lascia un commento

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