
Il Shelly Sensor Add-On (commercializzato come Shelly Plus Add-On) è una scheda di espansione galvanicamente isolata che si innesta sul connettore add-on di un dispositivo Shelly Plus, Gen3 o Gen4 compatibile. Estende lo Shelly host con un bus 1-Wire per la temperatura (DS18B20), un ingresso digitale (contatto reed / pulito), un ingresso analogico (0–10 V / 0–100 %) e un voltmetro 0–10 V. L’add-on non è un dispositivo Wi-Fi autonomo — viene letto tramite l’interfaccia HTTP dello Shelly host nella rete locale, quindi TapHome punta all’IP dell’host e non a un IP dedicato dell’add-on.
Il template TapHome espone quattro sensori di temperatura DS18B20 (Component ID 100–103), un contatto reed, un ingresso analogico e un voltmetro. Tutti i valori vengono letti tramite l’API standard Shelly Gen2+ JSON-RPC sulla porta 80 — non è richiesta alcuna connessione cloud.
Collegamento hardware
L’add-on si inserisce sullo Shelly host tramite un connettore seriale proprietario e assorbe 3,3 V DC direttamente dall’host (consumo inferiore a 0,5 W senza sensori). I morsetti accessibili all’utente sono raggruppati in un blocco analogico/digitale e in tre posizioni sensore 1-Wire.
Morsetti analogici e digitali
ANALOG IN— ingresso analogico 0–10 V (accuratezza ±5 %, soglia di segnalazione 1 %)DIGITAL IN— ingresso per contatto pulito / interruttore reed (True: da −15 V a 0,5 V, False: da 2,5 V a 15 V)VREF OUT— tensione di riferimento (max. 1 mA) per alimentare sensori con partitore potenziometricoVREF+R1 OUT— tensione di riferimento con resistenza di pull-up da 10 kΩ, progettata per partitori di tensione con NTC e fotoresistoreGND× 2 — ritorni di massa
Bus 1-Wire
Tre gruppi a tre terminali (VCC, DATA, GND) condividono internamente una linea dati 1-Wire comune. Fino a 5 sonde DS18B20 possono essere collegate in parallelo al bus condiviso; in alternativa un singolo sensore DHT22 può occupare il bus (il DHT22 blocca la scansione OneWire mentre è attivo). L’uscita VCC totale è limitata a 10 mA, sufficiente per cinque sonde DS18B20.
La sezione massima del conduttore su tutti i morsetti è 1 mm² (17 AWG).
Non mescolare un DHT22 con sonde DS18B20 sullo stesso bus. Il DHT22 blocca l’enumerazione OneWire e lo Shelly host non può rieseguire la scansione del bus mentre è collegato.
Configurazione
Il Shelly Sensor Add-On non ha un proprio indirizzo IP. Durante l’import del template TapHome, inserisci nel parametro IpAddress l’indirizzo IP dello Shelly host (il dispositivo Plus / Gen3 / Gen4 su cui è montato l’add-on) — il valore predefinito è 192.168.0.1.
Tutta la comunicazione usa l’API Gen2+ JSON-RPC via HTTP GET sulla porta 80. Una volta per ciclo di polling, il template legge /rpc/Sys.GetStatus e /rpc/SensorAddon.GetPeripherals in variabili di cache interne, dopodiché ogni script di dispositivo interroga il proprio endpoint dedicato (Temperature.GetStatus, Input.GetStatus o Voltmeter.GetStatus).
Dispositivi host compatibili
L’add-on funziona con i seguenti dispositivi Shelly (dalla lista di compatibilità del produttore):
- Shelly Plus: 1, 1PM, 1 UL, 1PM UL, 2PM, 2PM UL, i4, i4DC, 0-10 V Dimmer PM, RGBW PM
- Shelly Gen3: 1, 1PM, 2PM, Shutter, i4, DALI Dimmer, Dimmer 0/1-10 V PM, EM
- Shelly Gen4: 1, 1PM, 2PM
Il firmware dello Shelly host deve esporre il servizio SensorAddon — le versioni Plus più vecchie potrebbero non averlo. Aggiorna l’host all’ultimo firmware se il menu dell’add-on è assente nell’interfaccia web.
Abilitare le periferiche Add-on
L’add-on si configura una tantum nell’interfaccia web dello Shelly host — TapHome non lo configura. Completa i passaggi seguenti prima di importare il template:
- Innesta la scheda add-on sul connettore add-on dello Shelly host e alimenta l’host.
- Apri l’interfaccia web dell’host su
http://{host-ip}/ed effettua l’accesso. - Vai in Settings → Add-on e registra l’add-on (in background viene chiamato
Sys.SetConfigcondevice.addon_type = "sensor"). Riavvia l’host se richiesto. - Apri Settings → Components → Peripherals e clicca sul pulsante +.
- Scegli il tipo di periferica — Temperature (DS18B20), Digital Input, Analog Input o Voltmeter.
- Per DS18B20 clicca Rescan, spunta ogni sonda rilevata e scegli Add and reboot. La prima sonda riceve il Component ID
100, la seconda101e così via. - Per Digital Input imposta Mode su Switch o Button (il template legge
stateda questo Component). - Per Analog Input e Voltmeter le impostazioni predefinite vanno bene — rilevanti sono solo nome e soglia delta.
Il template TapHome fissa i Component ID 100–103 per DS18B20 e ID 100 per contatto reed, ingresso analogico e voltmetro. Quando aggiungi periferiche nell’interfaccia web Shelly, verifica che gli ID assegnati corrispondano a questa numerazione — se elimini e ri-aggiungi una periferica, Shelly assegna il successivo ID libero, che può superare 103 e il dispositivo TapHome smetterà silenziosamente di ricevere dati.
Prima di rimuovere una periferica, annota il suo Component ID. Se sostituisci una sonda DS18B20, preferisci l’azione Edit → Update address nell’interfaccia web — in questo modo il Component ID rimane invariato.
Sull’host Shelly la HTTP Digest Authentication deve essere disabilitata — TapHome non invia richieste autenticate. Lascia il dispositivo senza autenticazione o limita l’accesso a livello di rete.
Funzionalità del dispositivo
Il template raggruppa sette dispositivi sensore di sola lettura sotto un unico modulo HTTP che punta allo Shelly host.
Sonde di temperatura (DS18B20)
Vengono esposte quattro sonde di temperatura DS18B20 OneWire, una per Component ID 100–103:
- Temperature Sensor DS18B20 (100) — legge
/rpc/Temperature.GetStatus?id=100→tC(°C) - Temperature Sensor DS18B20 (101) — legge
/rpc/Temperature.GetStatus?id=101→tC - Temperature Sensor DS18B20 (102) — legge
/rpc/Temperature.GetStatus?id=102→tC - Temperature Sensor DS18B20 (103) — legge
/rpc/Temperature.GetStatus?id=103→tC
Ogni dispositivo dispone di una variabile personalizzata Id configurabile dall’utente (il valore predefinito corrisponde alla posizione). L’intervallo di polling è di 15 secondi per sonda. L’interfaccia web Shelly consente la regolazione fine della soglia delta (0,1–5 °C) e dell’offset (±50 °C) di ogni sonda per la calibrazione.
Contatto reed (ingresso digitale)
Reed Contact (100) legge /rpc/Input.GetStatus?id=100 → state (boolean). Nell’interfaccia Shelly l’ingresso deve essere configurato come Switch o Button (non Analog o Count). Intervallo di polling: 2,5 secondi. Il valore predefinito della variabile Id è 100.
Ingresso analogico
Analog Input (100) legge /rpc/Input.GetStatus?id=100 → percent, dividendolo per 100 in modo che il valore sia normalizzato alla frazione 0,0–1,0 attesa da TapHome per gli ingressi analogici. L’ingresso deve essere configurato come Analog nell’interfaccia Shelly. Accuratezza ±5 %, soglia di segnalazione 1 %. Intervallo di polling: 2,5 secondi.
Nota che il contatto reed e l’ingresso analogico condividono il Component ID 100 — l’hardware Shelly dispone di un solo ingresso digitale e di un solo ingresso analogico sull’add-on, e la modalità attiva è determinata dal type dell’ingresso nell’interfaccia web (switch/button vs analog). In TapHome usa il dispositivo Reed Contact oppure l’Analog Input, non entrambi contemporaneamente.
Voltmetro
Voltmeter (100) legge /rpc/Voltmeter.GetStatus?id=100 → voltage (V). L’intervallo è 0–10 V con accuratezza ±5 % e soglia di segnalazione 0,1 V. È modellato come PacketParserVariable con capacità sensor — la tensione grezza viene esposta come valore scalare, non come tipo voltmetro dedicato. Intervallo di polling: 15 secondi.
Funzionalità aggiuntive
Il Shelly Sensor Add-On supporta nativamente anche un sensore di temperatura e umidità DHT22 (una singola sonda che crea sull’host i Component accoppiati temperature:100 e humidity:100). Il template TapHome collega la temperatura su tutti e quattro i dispositivi DS18B20 ma imposta lo script dell’umidità a NaN — l’umidità DHT22 non è quindi esposta. Gli utenti che necessitano dell’umidità possono estendere il template con uno script di lettura separato su /rpc/Humidity.GetStatus?id=100.
Esistono due ulteriori funzionalità a livello hardware/firmware ma fuori dallo scope di questo template: un quinto slot DS18B20 (il bus Shelly supporta fino a cinque sonde; il template interroga solo gli ID 100–103) e la modalità contatore di impulsi dell’ingresso digitale (counts.total, counts.by_minute, freq), che richiede di configurare l’ingresso come type=count nell’interfaccia Shelly. Entrambe potranno essere aggiunte in un futuro aggiornamento del template.
Risoluzione dei problemi
L’host Shelly non risponde
- Verifica che lo Shelly host sia connesso al Wi-Fi e abbia un IP valido.
- Prova a usare l’hostname mDNS dell’host (es.
shellyplus1pm-AABBCCDDEE.local) al posto dell’IP — l’IP potrebbe essere cambiato dopo un rinnovo DHCP. L’add-on eredita l’hostname dell’host, non ne ha uno proprio. - Apri nel browser
http://{host-ip}/rpc/Shelly.GetDeviceInfo— se risponde con JSON, l’host è raggiungibile. - Verifica che il CCU TapHome e lo Shelly host siano sulla stessa rete / VLAN.
- Assicurati che la HTTP Digest Authentication sia disabilitata nell’interfaccia web Shelly.
I sensori non mostrano dati
- Apri l’interfaccia web Shelly → Components → Peripherals. Conferma che la periferica sia elencata con esattamente il Component ID atteso dal template (
temperature:100–103,input:100,voltmeter:100). Se l’ID è sopra103o spostato, rinumera le periferiche eliminandole e ri-aggiungendole nell’ordine corretto, oppure modifica il template per adattarlo ai tuoi ID. - Per DS18B20: clicca Rescan nella riga della periferica DS18B20 — l’indirizzo del bus dovrebbe risolversi. Se mostra N/A, controlla il cablaggio VCC/DATA/GND e la resistenza di pull-up da 10 kΩ su
DATA(alcune schede DS18B20 generiche la omettono; lo Shelly la fornisce internamente). - Interroga l’endpoint direttamente:
GET http://{host-ip}/rpc/Temperature.GetStatus?id=100. La risposta deve contenere un valoretCnon nullo. - Riavvia lo Shelly host dopo aver aggiunto o rimosso periferiche. I Component potrebbero non apparire fino al riavvio.
L’ingresso analogico legge zero
- Conferma che il
typedell’ingresso nell’interfaccia Shelly sia impostato suanalog(nonswitch,buttonocount). Il template leggepercent, popolato solo in modalità analog. - Controlla il cablaggio — una sorgente 0–10 V deve essere tra
ANALOG INeGND. Per sensori con partitore potenziometrico (NTC, fotoresistore) usaVREF+R1 OUT(con pull-up integrato da 10 kΩ) invece diVREF OUT. - Ricorda che TapHome riceve il valore come frazione 0,0–1,0 (il template divide
percentper 100).
Manca l’umidità DHT22
È una limitazione intenzionale del template — lo script readhumidity è fissato a NaN su ogni slot di dispositivo DS18B20. L’hardware dell’add-on supporta DHT22, ma per esporre l’umidità in TapHome devi estendere il template con un dispositivo dedicato che legga /rpc/Humidity.GetStatus?id=100 → rh. DS18B20 e DHT22 non possono coesistere sullo stesso bus — rimuovi le sonde DS18B20 se passi a DHT22.
La quinta sonda DS18B20 non è visibile
Il template interroga solo gli ID 100–103. Una quinta sonda registrata nell’interfaccia web Shelly come temperature:104 esiste sull’host ma non viene letta da TapHome. Sposta la sonda di interesse in uno degli slot 100–103 (elimina e ri-aggiungi in ordine) oppure estendi il template con un quinto dispositivo che punta a id=104.