TapHome

Shelly Gas MQTT

Packet Parser → MQTT
Inviato da
Ultimo aggiornamento: 08. 2026

Questo dispositivo supporta mDNS

Invece di un indirizzo IP, puoi raggiungere il dispositivo a:

shellygas-{MAC}.local

Sostituisci {MAC} con l'indirizzo MAC del dispositivo (maiuscolo, senza due punti).

TapHome supporta mDNS — usare un hostname è più affidabile di un IP statico.

Shelly Gas MQTT

Lo Shelly Gas (modello SHGS-1) è un rilevatore Wi-Fi di gas combustibile alimentato dalla rete. Si collega direttamente a una presa di corrente, misura la concentrazione di gas in modo continuo e attiva il proprio allarme sonoro e luminoso quando la concentrazione supera una soglia. È venduto come due prodotti distinti — Shelly Gas CNG per il gas naturale compresso (metano) e Shelly Gas LPG per il gas di petrolio liquefatto (propano / butano). Entrambi condividono lo stesso firmware e gli stessi topic MQTT, quindi questo unico template funziona con entrambi; cambiano solo l’elemento sensibile e l’altezza di montaggio consigliata.

Questo template si collega a un broker MQTT, non direttamente al dispositivo. Il modulo si iscrive a shellies/# sul broker e filtra i messaggi appartenenti a una specifica unità Shelly Gas in base al suo Device ID. TapHome riceve lo stato dell’allarme e la concentrazione di gas così come il dispositivo li pubblica, e può avviare un autotest del sensore.

È disponibile anche una variante HTTP di questo template (Shelly Gas). Usare questo template MQTT quando nell’impianto è già presente un broker MQTT e si preferiscono gli aggiornamenti push; usare il template HTTP quando il broker non c’è.

Shelly Gas è un dispositivo di sicurezza. L’integrazione TapHome affianca il cicalino e l’allarme LED integrati — non li sostituisce. Cicalino e LED funzionano indipendentemente da MQTT, dal broker e dall’unità di controllo TapHome, e continuano a funzionare anche quando uno di questi non è disponibile.

Hardware

Posizionamento

L’unità si inserisce in una presa di rete — non è prevista alcuna cablatura. L’altezza di montaggio corretta dipende dalla variante di gas, perché i due gas si comportano in modo diverso nell’aria.

VarianteGas rilevatoComportamento nell’ariaPosizionamento consigliato
Shelly Gas CNGGas naturale compresso (metano)Più leggero dell’aria, si accumula al soffitto0,3–1 m sotto il soffitto, in verticale, e a 1,5 m dalla sorgente di gas
Shelly Gas LPGGas di petrolio liquefatto (propano / butano)Più pesante dell’aria, si accumula a livello del pavimento0,3 m dal pavimento, entro 1,5 m dalla sorgente di gas

CNG e LPG sono due prodotti distinti con sensori diversi, non una modalità commutabile. Se la variante non è chiara, controllare le indicazioni sul retro del dispositivo.

Specifiche
ParametroValore
Alimentazione110–230 V ±10%, 50/60 Hz AC
Consumo< 3 W
Sensibilità allarme6% LEL (limite inferiore di esplosività)
Livello sonoro≥ 70 dB
Wi-Fi802.11 b/g/n, 2400–2484 MHz
Portatafino a 50 m all’aperto, fino a 30 m in interni
Temperatura operativada −10 °C a +50 °C
Uscita jack manipolatore valvola11–13 V, 500 mA (accessorio esterno, non controllato da questo template)
Dimensioni89,5 × 89,5 × 38 mm (spina esclusa)
Segnalazione locale

L’anello LED e il cicalino sono la segnalazione propria del dispositivo. TapHome vede solo i due topic descritti in Funzioni del dispositivo, quindi questi segnali portano informazioni che non raggiungono l’unità di controllo.

Anello LEDSignificato
Verde fissoSensore in funzionamento normale
Giallo fissoGuasto del sensore
Rosso lampeggianteAllarme
Rosso / giallo / verde lampeggianti in sequenzaSensore in riscaldamento
Sequenza del cicalinoEvento
Due bip brevi al secondoRiscaldamento avviato dopo l’accensione
Un bip lungo al secondoRiscaldamento terminato
Bip lungo una volta al secondo finché il guasto persisteGuasto del sensore
Tre bip brevi due volte al secondoAutotest in corso
Bip lungo una volta al secondoAutotest completato con successo
Bip lungo una volta al secondo, finché la perdita non cessa o non peggioraPerdita di gas lieve
Cinque secondi di bip con una pausa di un secondo, finché la perdita non cessaPerdita di gas grave

All’accensione il dispositivo esegue un autotest che dura circa tre minuti. Durante l’autotest l’anello LED passa da verde → arancione → rosso e la lettura del gas non è valida.

Configurazione

Abilitare MQTT sul dispositivo
  1. Aprire l’interfaccia web del dispositivo in un browser.
  2. Andare su Internet and SecurityAdvanced - Developer Settings.
  3. Spuntare Enable action execution via MQTT.
  4. Compilare il campo Server secondo la formula {indirizzo IP del broker MQTT}:{porta} — per esempio 192.168.1.10:1883.
  5. Premere SAVE. Il dispositivo si riconnette e inizia a pubblicare sul broker.

Sul firmware Gen1 l’abilitazione di MQTT disattiva la connessione a Shelly Cloud — le due cose non possono coesistere. I dispositivi Gen1 inoltre non supportano MQTT su TLS, quindi il broker deve accettare MQTT in chiaro sulla porta 1883. Mantenere perciò il broker su una rete locale attendibile.

Leggere il Device ID

Nell’interfaccia web andare su SettingsDevice InfoDevice ID. Il valore necessario è la prima stringa di caratteri, non quello tra parentesi. È uno Shelly-ID di sei o più caratteri, per esempio 35FA58. Lo stesso identificativo compare nella rete Wi-Fi che il dispositivo crea in modalità access point (ShellyGas-35FA58) e forma il prefisso dei topic MQTT shellies/shellygas-35FA58/.

Configurazione del template

Il template richiede tre parametri di importazione:

Parametro di importazionePredefinitoValore da inserire
Mqtt Broker IP address192.168.0.1Indirizzo IP del broker MQTT — non quello dello Shelly Gas
Mqtt Broker port1883Porta su cui il broker è in ascolto
Device IDLo Shelly-ID letto sopra, es. 35FA58

Il parametro di importazione Device ID popola la variabile deviceID a livello di modulo, che costruisce il prefisso di ogni topic usato dal modulo. Il modulo si iscrive a shellies/# e i suoi script listener filtrano i messaggi in arrivo in base a quel prefisso.

Per impostazione predefinita il dispositivo pubblica un aggiornamento ogni 30 secondi. Impostando il parametro del dispositivo mqtt_update_period a 0 passa alla segnalazione solo in caso di variazione.

Funzioni del dispositivo

Allarme gas

Allarme gas è un selettore multi-valore alimentato da shellies/shellygas-<deviceID>/sensor/gas. Riporta il livello di allarme che il dispositivo ha già ricavato dalla concentrazione misurata.

Valore TapHomePayload MQTTSignificato
Nessun allarmenoneConcentrazione sotto 1800 ppm
Perdita gas lievemildConcentrazione da 1800 ppm
Perdita gas graveheavyConcentrazione da 3000 ppm
AutotesttestPubblicato dopo un autotest riuscito
Stato allarme sconosciutounknown o qualsiasi altro payloadIl dispositivo non è in grado di indicare il livello di allarme

Entrambe le soglie sono fisse nel firmware del dispositivo e non possono essere modificate.

Concentrazione gas

Concentrazione gas legge il valore grezzo da shellies/shellygas-<deviceID>/sensor/concentration in parti per milione, intervallo 0–65535 ppm. È la stessa misura fisica dell’Allarme gas, prima che il firmware applichi le sue soglie.

Usare Allarme gas per la logica di allarme e Concentrazione gas per andamenti, grafici e soglie di preallarme personalizzate sotto 1800 ppm. Una regola non dovrebbe ricavare un proprio livello di allarme dal valore in ppm aspettandosi che coincida con quello del dispositivo — cicalino e LED seguono le soglie fisse del firmware.

Il dispositivo pubblica -1 sul topic della concentrazione ogni volta che la lettura non è valida — durante i circa tre minuti di riscaldamento dopo l’accensione e in caso di guasto del sensore. Il template memorizza quel -1 così com’è; non è un codice di errore TapHome.

Autotest

Il modulo mette a disposizione l’azione di servizio Autotest, che pubblica su shellies/shellygas-<deviceID>/sensor/start_self_test. Durante il test il dispositivo emette tre bip brevi due volte al secondo e, in caso di esito positivo, pubblica test sul topic del gas, che in TapHome compare come valore Autotest dell’Allarme gas.

Limitazioni note

Silenzia allarme attivo non raggiunge il dispositivo

Il template contiene un pulsante Silenzia allarme attivo che, nella revisione attuale del template, non ha alcun effetto. Il pulsante pubblica sul topic letterale shellies/shellygas-<deviceid>/sensor/mute — il segnaposto <deviceid> non viene mai sostituito con il Device ID configurato, quindi il messaggio finisce su un topic a cui nessun dispositivo reale è iscritto. Gli altri tre topic dello stesso template costruiscono correttamente il prefisso dalla variabile deviceID.

Non fare affidamento sul pulsante Silenzia allarme attivo. Il silenziamento di un allarme attivo da TapHome funzionerà solo dopo la correzione del template, in modo che il topic venga costruito dalla variabile deviceID. L’allarme si può sempre silenziare sul dispositivo stesso, con Mute nella sua interfaccia web — e solo mentre un allarme è effettivamente attivo.

Risoluzione dei problemi

In TapHome non arriva alcun valore
  1. Verificare che MQTT sia abilitato sul dispositivo e che il campo Server contenga l’indirizzo del broker nella forma {IP}:{porta}
  2. Controllare che l’endpoint del modulo punti al broker MQTT, non all’indirizzo IP dello Shelly Gas
  3. Confermare che il Device ID corrisponda esattamente a quanto mostrato in SettingsDevice InfoDevice ID — solo la prima stringa, senza il valore tra parentesi
  4. Iscriversi a shellies/# con un client MQTT (per esempio MQTT Explorer) e verificare che arrivino messaggi sotto shellies/shellygas-<vostro-id>/
  5. Se il dispositivo è stato impostato per segnalare solo alle variazioni (mqtt_update_period = 0), eseguire l’azione di servizio Autotest — un test riuscito pubblica sul topic del gas
Concentrazione gas mostra -1

La lettura del sensore non è valida. Il dispositivo si sta ancora riscaldando — circa tre minuti dopo l’accensione — oppure il sensore è guasto. Un guasto si manifesta sul dispositivo con LED giallo fisso e un bip lungo una volta al secondo. Questo template non legge il topic dello stato del sensore, quindi un guasto raggiunge TapHome solo sotto forma di questo -1.

Allarme gas mostra “Stato allarme sconosciuto”

Questo valore è il ramo di fallback del template. Intercetta il payload documentato unknown e qualsiasi payload al di fuori dei quattro valori noti. Controllare l’anello LED sul dispositivo per capire in che stato si trova realmente il sensore.

Il dispositivo è sparito da Shelly Cloud

Comportamento atteso sul firmware Gen1 — abilitare MQTT disattiva la connessione al cloud. Raggiungere l’interfaccia web dalla rete locale, usando l’indirizzo IP del dispositivo o il nome host mDNS shellygas-<MAC>.local.

Come installare in TapHome

Prerequisiti

  • Dispositivo Shelly connesso al Wi-Fi (vedi la guida alla connessione HTTP se non ancora fatto)
  • Broker MQTT attivo sulla rete locale (es. Mosquitto, Home Assistant o il broker integrato di TapHome)
  • TapHome CCU sulla stessa rete del broker

Sui dispositivi Gen1, l’attivazione di MQTT disabilita Shelly Cloud. Entrambi non possono funzionare contemporaneamente. Sui dispositivi Gen2/Plus questa limitazione non si applica.

Passaggio 1 — Abilitare MQTT sul dispositivo Shelly

Dispositivi Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Apri l’interfaccia web Shelly: http://<device-ip>/
  2. Vai su Internet & SecurityAdvanced — MQTT
  3. Abilita MQTT
  4. Imposta MQTT Server: <broker-ip>:<port> (es. 192.168.1.10:1883)
  5. Opzionalmente imposta MQTT User e MQTT Password se il broker richiede l’autenticazione
  6. Clicca su Save — il dispositivo si riavvierà e si connetterà al broker

Dispositivi Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Apri l’interfaccia web Shelly: http://<device-ip>/
  2. Vai su SettingsMQTT
  3. Abilita MQTT
  4. Imposta Server: <broker-ip>:<port> (es. 192.168.1.10:1883)
  5. Il Client ID è precompilato con l’ID del dispositivo (es. shellyplus1pm-AABBCCDDEE) — lascialo così a meno che tu non abbia un motivo specifico per cambiarlo
  6. Clicca su Save e riavvia il dispositivo

Per verificare che MQTT funzioni, usa un client MQTT (es. MQTT Explorer) e sottoscrivi shellies/# (Gen1) o <device-id>/# (Gen2). Dovresti vedere i messaggi di stato dal dispositivo.

Passaggio 2 — Trovare il Device ID / MQTT Client ID

Alcuni template richiedono un parametro Device ID o MQTT Client ID. Questo è l’identificatore univoco utilizzato nei topic MQTT.

  • Gen1: si trova sull’etichetta come indirizzo MAC (es. AABBCCDDEE). Device ID = shelly<model>-<mac>, es. shelly1pm-AABBCCDDEE
  • Gen2/Plus: si trova nell’interfaccia web Shelly sotto SettingsDevice InfoDevice ID, oppure sull’etichetta del dispositivo

Passaggio 3 — Configurazione in TapHome

  1. In TapHome, aggiungi un nuovo modulo Packet Parser (MQTT)
  2. IP Address: inserisci l’IP del broker MQTT (es. 192.168.1.10)
  3. Port: 1883 (predefinito; usa 8883 per TLS)
  4. Device ID / MQTT Client ID: inserisci il valore dal passaggio 2 (se richiesto dal template)
  5. Importa il template — TapHome si sottoscriverà automaticamente ai topic del dispositivo

Dispositivi disponibili

Shelly Gas MQTT Modulo
Azioni di servizio
AutotestAvvia l'autotest del sensore sul dispositivo — il cicalino emette tre bip due volte al secondo e, in caso di esito positivo, l'Allarme gas riporta Autotest.
Variabili personalizzate
deviceID (string)Shelly-ID dell'unità Shelly Gas — la stringa di sei o più caratteri che forma il prefisso dei topic MQTT shellies/shellygas-<deviceID>/ (es. 35FA58). Si legge nell'interfaccia web Shelly in Settings → Device Info → Device ID.
Open the Shelly web interface → Settings → Device Info → Device ID and copy the first string of characters (not the value in brackets). The template asks for it as the 'Device ID' import parameter.

Shelly GAS MQTT

Azioni di servizio
Self test
mqttpublish("shellies/shellygas-"+deviceID+"/sensor/start_self_test","1");
Allarme gas Interruttore multivalore Solo lettura

Livello di allarme riportato dal sensore — Nessun allarme, Perdita gas lieve (da 1800 ppm), Perdita gas grave (da 3000 ppm), Autotest o Stato allarme sconosciuto. Le soglie sono fisse nel firmware del dispositivo e non modificabili.

enum multi-value switch
Valori / Stati: No alarm · Mild gas leak · Heavy gas leak · Self Test · Alarm state is unknown

Allarme gas

Lettura stato interruttore
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Scrittura stato interruttore
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Mu);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Mu, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Mu + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Mu + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Mu, "write"); # use "append" mode to append data to existing file
Listener
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellygas-"+deviceID+"/sensor/gas")
 switch(TOSTRING(RECEIVEDMSG.PAYLOAD),
 "none", Mu := 0,
 "mild",Mu := 1,
 "heavy",Mu := 2,
 "test", Mu := 3,
 Mu := 4);
END
Concentrazione gas Variabile Solo lettura

Concentrazione misurata di gas combustibile in parti per milione, intervallo 0–65535 ppm. Durante il riscaldamento del sensore o in caso di guasto il dispositivo riporta -1.

numeric Unità: ppm

Concentrazione gas

Scrittura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Listener
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellygas-"+deviceID+"/sensor/concentration")
 Va := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
Silenzia allarme attivo Pulsante

Pulsante destinato a silenziare un allarme attualmente attivo. Nella revisione corrente del template non ha alcun effetto — il topic su cui pubblica non viene costruito dal Device ID configurato.

action push button

Silenzia allarme attivo

Scrittura stato pulsante
MQTTPUBLISH("shellies/shellygas-<deviceid>/sensor/mute","1");

# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Bp);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Bp, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Bp + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Bp + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Bp, "write"); # use "append" mode to append data to existing file
Connessione: Packet Parser → MQTT • Hostname: shellygas-{MAC}.local
Possibili miglioramenti (6)
  • Sensor state — unknown | warmup | normal | fault — the template does not read it, so a sensor fault does not surface as its own state in TapHome (only indirectly as -1 on the concentration).
  • Self-test state — not_completed | completed | running | pending — the self-test can be started from TapHome, but its progress is not read back.
  • Unmute alarm — Any payload unmutes an active alarm. Not published by the template.
  • Valve state — unknown | closed | opened | not_connected | failure | closing | opening | checking — state of the optional external valve manipulator (11–13 V, 500 mA jack).
  • Valve control — Accepts the literal payloads 'open' or 'close'. The template does not publish it — this template offers no valve control at all.
  • Connection status — Last Will and Testament topic — true on connect, false on disconnect. Could detect an offline sensor.

Fonti

Hai trovato un problema con questo template?

Dicci cosa non funziona, cosa manca o come dovrebbe comportarsi il template. Il tuo feedback ci aiuta a mantenere il catalogo accurato.

Verificato da TapHome

Vuoi usarlo nel tuo TapHome Core?

Apri questo template nel Customer Portal per applicarlo a una delle tue case, o crea una proposta di modifica e inviala al catalogo.

Apri nel portale