TapHome

Shelly Gas

Packet Parser → HTTP
Inviato da
Ultimo aggiornamento: 03. 2026
Shelly Gas

Lo Shelly Gas (modello SHGS-1) è un rilevatore di gas Wi-Fi alimentato dalla rete disponibile in due varianti — CNG (gas naturale / metano) e LPG (propano / butano). Entrambe le varianti utilizzano la stessa API e lo stesso template TapHome. Il dispositivo si collega direttamente a una presa di corrente e monitora continuamente la concentrazione di gas, attivando un allarme sonoro e luminoso quando le soglie vengono superate.

TapHome comunica con il dispositivo tramite HTTP sulla rete locale — non è necessaria alcuna connessione cloud. Il template interroga l’endpoint /status per lo stato dell’allarme e la concentrazione di gas, e fornisce controlli per silenziare l’allarme e avviare un autotest del sensore.

È disponibile anche una variante MQTT di questo template (Shelly GAS MQTT). Utilizza il template MQTT se il dispositivo è configurato per comunicare tramite un broker MQTT invece di HTTP.

Configurazione

Lo Shelly Gas si connette tramite Wi-Fi. Durante l’importazione del template TapHome, inserisci l’indirizzo IP del dispositivo (segnaposto predefinito 192.168.0.1).

Entrambe le varianti CNG e LPG si configurano in modo identico — il sensore fisico è diverso, ma l’API e il template sono gli stessi.

Capacità del dispositivo

Monitoraggio allarme gas

Il template espone un selettore multi-valore che legge lo stato attuale dell’allarme dalla risposta /status (gas_sensor.alarm_state). Il dispositivo riporta uno dei seguenti stati:

StatoSignificato
No alarmFunzionamento normale — nessun gas rilevato
Mild gas leakConcentrazione di gas >= 1800 ppm
Heavy gas leakConcentrazione di gas >= 3000 ppm
Self TestAutodiagnostica del sensore in corso
Alarm state is unknownStato non riconosciuto (fallback)

Le soglie di allarme sono fisse a livello di dispositivo e non possono essere modificate tramite TapHome o l’API.

Concentrazione di gas

Un dispositivo sensore legge la concentrazione di gas attuale in parti per milione (ppm) dalla risposta /status (concentration.ppm). Il valore si aggiorna ogni 15 secondi. Durante il riscaldamento del sensore dopo l’accensione, la lettura potrebbe non essere valida.

Silenziamento allarme attivo

Un dispositivo pulsante invia una richiesta GET /mute per silenziare il cicalino dell’allarme senza cancellare lo stato dell’allarme. Lo stato dell’allarme rimane attivo fino a quando la concentrazione di gas non scende al di sotto della soglia.

Diagnostica di servizio

Il template espone 9 attributi di servizio per il monitoraggio del dispositivo:

  • Informazioni dispositivo — hostname, indirizzo MAC, ora del dispositivo, tempo di attività, utilizzo RAM
  • Connettività — cloud abilitato/connesso, MQTT connesso, aggiornamento firmware disponibile
Azioni di servizio

Sono disponibili due azioni di servizio:

  • Imposta volume — regola il volume del cicalino dell’allarme (1 = più basso, 11 = più alto) tramite /settings?set_volume={value}
  • Autotest — avvia un’autodiagnostica del sensore (~30 secondi) tramite /self_test
Capacità aggiuntive

Lo Shelly Gas espone anche lo stato operativo del sensore (normal / warmup / fault), l’avanzamento dell’autotest, il flag di validità della concentrazione, la potenza del segnale WiFi e il controllo del manipolatore valvola esterno (11–13V, uscita jack 500mA) nella sua risposta /status. Un endpoint di riattivazione (/unmute) è disponibile per riabilitare il cicalino dell’allarme dopo il silenziamento. Queste capacità possono essere aggiunte in un futuro aggiornamento del template.

Risoluzione dei problemi

Il dispositivo non risponde
  1. Verifica che lo Shelly sia connesso al Wi-Fi e abbia un indirizzo IP valido
  2. Prova a usare l’hostname mDNS (shellygas-AABBCCDDEE.local) invece dell’indirizzo IP — l’IP potrebbe essere cambiato dopo un rinnovo DHCP
  3. Apri http://{device-ip}/shelly nel browser — se risponde con il tipo dispositivo SHGS-1, il dispositivo è raggiungibile
  4. Verifica che TapHome CCU e Shelly siano sulla stessa rete / VLAN
La concentrazione di gas mostra sempre zero
  1. Conferma che il sensore non è in modalità riscaldamento — dopo l’accensione, il sensore necessita di tempo per stabilizzarsi prima di fornire letture valide
  2. Controlla concentration.is_valid nella risposta /status — se false, il sensore si sta ancora riscaldando
  3. Assicurati che il dispositivo sia posizionato correttamente (variante CNG vicino al soffitto, variante LPG vicino al pavimento — il gas sale o scende a seconda della densità)
L’allarme non si attiva
  1. Le soglie di allarme sono fisse: lieve >= 1800 ppm, grave >= 3000 ppm — concentrazioni basse al di sotto di questi livelli non attivano l’allarme
  2. Esegui un autotest da TapHome (azione di servizio) per verificare la funzionalità del sensore e del cicalino
  3. Controlla il campo gas_sensor.sensor_state in /status — se riporta fault, il sensore potrebbe necessitare di sostituzione

I dispositivi Shelly Gen1 supportano solo 2 connessioni HTTP simultanee. Se TapHome e un altro sistema (es. Home Assistant) interrogano lo stesso dispositivo contemporaneamente, la comunicazione potrebbe diventare inaffidabile. Utilizza un intervallo di polling di 10–30 secondi.

Come installare in TapHome

Prerequisiti

  • Dispositivo Shelly installato e acceso
  • Rete Wi-Fi locale (2,4 GHz)
  • TapHome CCU sulla stessa rete

Passaggio 1 — Collegare Shelly al Wi-Fi

Opzione A — App Shelly (consigliata):

  1. Scarica l’app Shelly (iOS / Android)
  2. Tocca +Add Device e segui la procedura guidata di associazione Bluetooth
  3. Inserisci le credenziali Wi-Fi quando richiesto

Opzione B — Modalità AP (senza app):

  1. Al primo avvio il dispositivo crea un hotspot: ShellyXXX-AABBCCDDEE
  2. Collega il tuo telefono/PC a questo hotspot
  3. Apri http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Inserisci SSID e password → Save

Shelly supporta solo reti a 2,4 GHz. Le reti a 5 GHz non appariranno nella scansione.

Passaggio 2 — Trovare l’indirizzo IP

Dopo la connessione al Wi-Fi, trova l’indirizzo IP assegnato tramite uno di questi metodi:

  • App Shelly: Dettaglio dispositivo → Device info → Indirizzo IP
  • Interfaccia web Shelly: Connettiti all’AP del dispositivo prima della configurazione Wi-Fi — l’IP viene mostrato dopo il salvataggio
  • Tabella DHCP del router: Cerca un hostname come shelly1pm-AABBCCDDEE
  • mDNS: Esegui il ping di shelly<model>-<mac>.local (es. shelly1pm-AABBCCDDEE.local) dalla stessa rete

Assegna un IP statico (prenotazione DHCP) nel tuo router per il dispositivo Shelly per evitare che l’indirizzo cambi dopo un riavvio del router.

Passaggio 3 — Configurazione in TapHome

  1. In TapHome, aggiungi un nuovo modulo Packet Parser (HTTP)
  2. IP Address: inserisci l’IP dal passaggio 2 (es. 192.168.1.50)
  3. Port: 80 (predefinito, nessuna modifica necessaria)
  4. Importa il template — TapHome interrogherà periodicamente /status per leggere lo stato del dispositivo

L’autenticazione HTTP è disabilitata per impostazione predefinita sui dispositivi Shelly. Se hai abilitato la protezione con accesso, TapHome attualmente non supporta HTTP Basic Auth — mantieni l’autenticazione disabilitata per l’integrazione con TapHome.

Dispositivi disponibili

Shelly Gas Modulo
Azioni di servizio
Imposta volume
Autotest
Variabili personalizzate
deviceID (string) = 10521CF2BA9BIndirizzo IP del dispositivo Shelly Gas nella rete locale

Shelly GAS

Lettura (modulo)
VAR response := SENDHTTPREQUEST("/status");
IF response.IsSuccess
 status := response.Content;
END
Azioni di servizio
Set Volume [1 to 11]
Parametri: Volume [1 to 11] (1–11 Volume)
sendhttprequest("/settings?set_volume="+Volume);
Self test
sendhttprequest("/self_test");
Allarme gas Interruttore multivalore Solo lettura

Stato allarme gas — Nessun allarme, Perdita gas lieve (>= 1800 ppm), Perdita gas grave (>= 3000 ppm), Autotest, Sconosciuto

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

Allarme gas

Lettura stato interruttore
var state := parsejson(parsejson(status,"gas_sensor"),"alarm_state");
switch(state, "none", return(0),
"mild", return(1),
"heavy", return(2),
"test", return(4),
return(3));
Scrittura stato interruttore
#return(2);

# 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
Concentrazione gas Variabile Solo lettura

Lettura attuale della concentrazione di gas in parti per milione (ppm)

numeric Unità: ppm

Concentrazione gas

Lettura
var v := sendhttprequest("/status");
var content := v.Content;
return(todouble(parsejson(content,"concentration.ppm")));
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)
parsejson(status, "concentration")
Silenzia allarme attivo Pulsante

Silenzia il cicalino dell'allarme senza cancellare lo stato di allarme

action push button

Silenzia allarme attivo

Scrittura stato pulsante
sendhttprequest("/mute");
Connessione: Packet Parser → HTTP
Possibili miglioramenti (7)
  • Self-test state — Self-test progress: not_completed | completed | running | pending — available in /status
  • Sensor state — Sensor operational state: normal | warmup | fault — available in /status
  • Concentration validity — Whether gas reading is valid (false during warmup) — available in /status
  • Valve state — External valve state: opened | closed | not_connected | failure | closing | opening | checking
  • Valve control — Open/close external valve manipulator (11–13V, 500mA jack output)
  • Unmute alarm — Re-enables alarm buzzer after muting
  • WiFi Signal Strength — WiFi RSSI in dBm, available in /status response

Fonti