Sensor e script per Shelly

Nel corso del tempo abbiamo pubblicato diversi articoli sui dispositivi Shelly che hanno riscosso un buon successo grazie alla semplicità di utilizzo per l’utente finale: questi attuatori controllabili via Wi-Fi non necessitano infatti di operazioni di cambio firmware o saldature di pin per poter essere utilizzati nelle più comuni configurazioni per illuminazione (impianti a interuttori, deviatori, pulsanti), prese elettriche comandate e avvolgibili / tende da sole.
Questo semplice articolo illustra alcuni parametri che possono essere resi disponibili come sensori in HA attraverso MQTT o tramite REST API.
L’elenco delle informazioni che è possibile recuperare è disponibile nel sito web di Shelly (https://shelly-api-docs.shelly.cloud), di seguito elenco solo alcuni sensori interessanti ma è possibile crearne altri.
Sensor, binary_sensor, script basati su MQTT
- Shelly Firmware (indicazione dell’ultimo firmware disponibile)
- Shelly New Firmware (è disponibile un nuovo firmware)
- Shelly Update Firmware (script per l’aggiornamento del firmware di tutti gli Shelly)
- Shelly 2.5 Temperature (temperatura dello Shelly 2.5)
- Shelly 2.5 Overtemperature (avviso di temperatura critica dello Shelly 2.5)
Sensor, binary_sensor basati su REST API
- Shelly RSSI Wi-Fi (RSSI del segnale Wi-Fi di un singolo Shelly)
- Shelly SSID Wi-Fi (SSID dove è collegato lo Shelly)
- Shelly MQTT Connected (indicazione se lo Shelly è collegato via MQTT)
- Shelly Cloud Connected (indicazione se lo Shelly è collegato via Cloud)
- Shelly Uptime (da quanto tempo è operativo lo Shelly)
- Shelly Reboot (reboot di un singolo Shelly) NEW
Indirizzi IP e topic MQTT sono da personalizzare con le info degli Shelly posseduti.
sensor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
- platform: mqtt name: "Shelly New Firmware" state_topic: "shellies/announce" value_template: "{{ value_json.new_fw }}" - platform: mqtt name: "Shelly Firmware Version" state_topic: "shellies/announce" value_template: "{{ value_json.fw_ver }}" - platform: mqtt name: "Shelly 2.5 Temperature" state_topic: "shellies/shellyswitch25-XXXXXX/temperature" device_class: temperature unit_of_measurement: "°C" - platform: rest resource: http://192.168.1.100/status name: Shelly SALA1 RSSI value_template: "{{ value_json['wifi_sta'].rssi }}" device_class: signal_strength unit_of_measurement: "dBm" - platform: rest resource: http://192.168.1.100/status name: Shelly SALA1 SSID value_template: "{{ value_json['wifi_sta'].ssid }}" - platform: rest resource: http://192.168.1.100/status name: Shelly 1 SALA1 Uptime value_template: "{{ value_json['uptime'] }}" |
binary_sensor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
- platform: mqtt name: "Shelly 2.5 Overtemperature" state_topic: "shellies/shellyswitch25-XXXXXX/overtemperature" payload_on: "1" payload_off: "0" device_class: safety - platform: rest resource: http://192.168.1.100/status name: Shelly 1 SALA1 MQTT Connected value_template: "{{ value_json['mqtt'].connected }}" - platform: rest resource: http://192.168.1.100/status name: Shelly 1 SALA1 Cloud connected value_template: "{{ value_json['cloud'].connected }}" |
script
1 2 3 4 5 6 7 |
update_shelly: alias: 'Shelly Update Firmware' sequence: - service: mqtt.publish data: topic: shellies/command payload: update_fw |
SCRIPT per REBOOT
Su pressing dell’instancabile Pippo, aggiungo lo script, in realtà un rest_command e uno script, per effettuare il reboot di un singolo dispositivo Shelly; ovviamente i nomi e l’indirizzo IP sono da personalizzare a piacimento.
1 2 3 4 5 6 7 8 9 |
rest_command: reboot_shelly_xxx: url: 'http://192.168.1.XXX/reboot' script: reboot_shelly_xxx: alias: 'Reboot Shelly xxx' sequence: - service: rest_command.reboot_shelly_xxx |
38 risposte
Ciao , sensori carico e temperatura per shelly rgbw 2 ? 🙂
Andando a vedere qui: https://shelly-api-docs.shelly.cloud/#rgbw2/color/0: current on/off state /color/0/status: a json payload with the entiree device state
in particolare:
RGBW2 in color mode publishes to:
shellies/shellyrgbw2-
shellies/shellyrgbw2-
quindi bisogna solo raccogliere i dati pubblicata dai topic MQTT in particolare in status c’è il parametro power che potrebbe fare al tuo caso
Ciao, come si può integrare con rest uno shelly H&T?
andando a vedere qui cosa mette a disposizione la REST API: https://shelly-api-docs.shelly.cloud/#h-amp-t-status
Ciao, sui miei sensori mi da sconosciuto.
C’è qualcos’altro da configurare o personalizzare?
I sensori sono generici e danno le info di tutti gli shelly o devono essere personalizzati? io ne ho una 10ina
sensor.shelly_firmware_version
sensor.shelly_new_firmware
Quali sensori ti restituiscono sconosciuto? Quelli del firmware, hai riavviato HA?
Dove é presente un indirizzo IP o un topic specifico di un dispositivo vuol dire che il sensore va personalizzato con le informazioni di uno specifico Shelly, altrimenti é generico
Anche a me tutte le info REST danno “unknown” oppure “OFF”.
Sto testando con 4 Shelly 2.5.
controlla se hai l’MQTT abilitato e inserito i nomi/indirizzi IP corretti.
domanda: hai abilitato questo “Restrict the web interface of the Shelly device with “Username” and “Password”?
MQTT abilitato e funzionante.
In effetti ho l’interfaccia web protetta da user e password.
Aggiungendo username e password tutto funziona perfettamente:
– platform: rest
resource: http://192.168.1.100/status
name: ‘Shelly2.5 Living Room Cloud connected’
username: ‘*****’
password: ‘*****’
value_template: ‘{{ value_json[“cloud”].connected }}’
domanda:
per utilizzare l’annuncio del firmware o l’indicazione del firmware se inserisco il codice indicato mi restituisce sconosciuto.
ho provato anche ad inserire:
state_topic: “shellies/shellyswitch25-XXXXXX/announce”
ma resta sempre sconosciuto.
Come procedere?
grazie
MQTT è abilitato e funzionante?
SI
controlla con un MQTT client che ti arrivino messaggi al topic specifico
prova a anche ad iscriverti a questo topic:
– service: mqtt.publish
data:
topic: shellies/command
payload: announce
stesso problema..ho vari shelly integrati in HA tramite mqtt che funzionano correttamente..ho creato i due sensori come da guida ma mi restituisce sempre sconosciuto come valore. suggerimenti?
Se hai l’accesso all’interfaccia web di Shelly protetto da user e password devi inserire user e password anche nel sensore REST
risolto
Dopo aver aggiornato HA alla versione 0.94 ho notato nel log molti warning relativi al parametro “overtemperature” degli Shelly: “No matching payload found for entity: ShellyXXXX overtemperature with state_topic: shellies/shelly1pm-XXXXX/overtemperature”.
Qualche suggerimento?
nessuno in particolare, credo che HA si aspetta di vedere un valore sul topic ma questo non accade perché lo shelly 2.5 non va in overtemperature
ho fatto una piccola modifica al binary_sensor che risolve il problema dei warning 🙂
Ciao.
Non riesco a visualizzare da sensore REST quanto restituito da uno shelly 2.5 in modalità roller per lo stato “last_direction”: “open”
Il risultato dovrebbe essere open oppure close, ma il sensore non mostra nulla.
questo il mio codice:
– platform: rest
resource: http://192.168.1.46/status
name: Shelly2 Position
value_template: “{{ value_json[‘rollers’].last_direction }}”
Grazie
rollers, come dice la documentazione sul sito Shelly è un “array of hashes”, quindi va fatto qualcosa del genere:
relay 0: value_template: “{{ value_json[‘rollers’][0].last_direction }}”
relay 1: value_template: “{{ value_json[‘rollers’][1].last_direction }}”
Grazie.
Ho modificato un pò il codice ma alla fine funziona.
Condivido a chi interessa:
– platform: rest
resource: http://192.168.1.46/status
name: Shelly2 Position
value_template: ‘{{ value_json.rollers[0].last_direction }}’
Per chi non lo sapesse esiste un ottimo script in python che fa il discovery dei sensori Shelly e li integra in automatico su hassio. Funziona per:
Shelly1
Shelly1PM
Shelly2 (relays and roller mode)
Shely2.5 (relays and roller mode)
Shelly4Pro
Shelly Plug
Shelly Plug S
Shelly RGBW2 (color and white mode)
Shelly H&T
Shelly Smoke
Shelly Sense
ShellyEM
Ora io ho più schelli 1 1PM EM e 2.5
Tutti hanno il fw 1.5.2 a parte i 2.5.
Come possono personalizzare ne notizie in base al dispositivo?
Grazie mille
crei dei sensori “rest” o “mqtt” per i vari dispositivi
Ciao e grazie.
Cortesemente, non so come si fa, perché sto imparando il tutto qui da voi.
Mi potresti fare un esempio con due sensori così poi provo ad arrangiarmi?
Grazie
gli esempi li trovi nell’articolo, li devi personalizzare con gli indirizzi IP o i topic MQTT dei tuoi sensori, puoi anche usare il componente Shellies Discovery recuperabile tramite HACS. Se vuoi un aiuto in tempo reale noi siamo molto attivi sul canale Telegram (t.me/HassioHelp), però credo tu debba leggerti un po’ di guide su come funziona Home Assistant
[…] Sensor e script per Shelly troverete altri utili sensori/script relativi ai dispositivi […]
Ciao, tramite i comandi REST, su Home Assistant e lo Shelly H&T come faccio a leggere il valore della temperatura, umidità e batteria?
grazie per l’aiuto!
R
PS: hai dei link dove posso trovare delle guide sui comandi REST e Home Assitant?
1) guarda cosa mette a disposizione shelly per gli H&T e poi crea un sensor REST simile a quelli che ho fatto io: https://shelly-api-docs.shelly.cloud
2) il forum e il sito ufficiale di HA sono la prima fonte di informazione, parti da qui: https://www.home-assistant.io/integrations/rest/
Ciao, sto cercando un comando che mi disattivi il pulsante collegato ad uno shelly. mi sapresti indicare qual’è la riga di comando corretta per impostare “btn_type”: “detached” ? perdonami ma non sono riuscito a trovare nulla di adattabile tra i comandi negli esempi qui sopra.
grazie
prova a consultare il sito shelly (https://shelly-api-docs.shelly.cloud)
state_topic: “shellies/announce”
value_template: “{{ value_json.new_fw }}
Va personalizzato per ogni shelly o rimane così generico per tutti?
Se và personalizzato come? Un esempio se possibile, grazie I tanto.
generico per tutti
Ciao a tutti e grazie per l’ottima guida.
Ho solo un dubbio. Provando con i miei shelly ho notato che questi topic mqtt vengono inviati solo a seguito di una richiesta shellies/command “announce” e di conseguenza finché non invio una richiesta non posso leggere i valori. è cosi o sbaglio io qualcosa?