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:
- Tramite MQTT e dichiarazione in HA
- Tramite Shellies Discovery
- Tramite Shelly Smart Home / ShellyForHass
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.
hacs Home Assistant integrazione mqtt shelly shelly cloud shelly smart home
27 risposte
Complimenti per l’ottima guida scritta.. quale modalità di utilizzo per Shelly consigliate?? Grazie
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.
ok.. grazie mille ..
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
Controlla bene come hai scritto la dichiarazione sotto switch
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
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?
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.
@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).
ciao e grazie delle guide ma sbaglio o non esiste più shelly smart home ? sotto Hacs io trovo solo shellyforhass
Si è vero c’è una discordanza tra i nomi su Hacs ed Integrazioni
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 ?
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
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??
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
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.
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
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
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.
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
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
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.
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
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
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
Questo menù lo trovi solo andando all’indirizzo IP di ogni singolo Shelly
Buongiorno, come integro la protezione Restrict Login in home assistant?