TapHome

Shelly Gas MQTT

Packet Parser → MQTT
Trimis de
Ultima actualizare: 10. 2026

Acest dispozitiv acceptă mDNS

În loc să folosiți o adresă IP, puteți accesa dispozitivul la:

shellygas-{MAC}.local

Înlocuiți {MAC} cu adresa MAC a dispozitivului dvs. (majuscule, fără două puncte).

TapHome acceptă mDNS — folosirea unui nume de gazdă este mai fiabilă decât un IP static.

Shelly Gas MQTT

Shelly Gas (model SHGS-1) este un detector Wi-Fi de gaz combustibil, alimentat de la rețea. Se conectează direct la o priză de perete, măsoară continuu concentrația gazului și declanșează propria alarmă sonoră și luminoasă atunci când concentrația depășește un prag. Se vinde ca două produse separate — Shelly Gas CNG pentru gaz natural comprimat (metan) și Shelly Gas LPG pentru gaz petrolier lichefiat, GPL (propan / butan). Ambele au același firmware și aceleași topicuri MQTT, așa că acest șablon funcționează cu oricare dintre ele; diferă doar elementul sensibil al senzorului și înălțimea de montare recomandată.

Acest șablon se conectează la un broker MQTT, nu direct la dispozitiv. Modulul se abonează la shellies/# pe broker și filtrează mesajele care aparțin unei unități Shelly Gas după ID-ul dispozitivului (Device ID). TapHome primește starea alarmei și concentrația gazului pe măsură ce dispozitivul le publică și poate porni autotestul senzorului.

Este disponibilă și o variantă HTTP a acestui șablon (Shelly Gas). Folosiți acest șablon MQTT atunci când în instalație rulează deja un broker MQTT și preferați actualizările de tip push; folosiți șablonul HTTP atunci când nu există broker.

Shelly Gas este un dispozitiv de siguranță. Integrarea TapHome completează alarma încorporată (buzzerul și LED-ul), nu o înlocuiește. Buzzerul și LED-ul funcționează independent de MQTT, de broker și de unitatea de control TapHome și continuă să funcționeze și atunci când unul dintre acestea nu este disponibil.

Hardware

Amplasare

Unitatea se conectează la o priză de rețea — nu necesită cablare. Înălțimea corectă de montare depinde de tipul de gaz detectat, deoarece cele două gaze se comportă diferit în aer.

VariantăGaz detectatComportament în aerAmplasare recomandată
Shelly Gas CNGGaz natural comprimat (metan)Mai ușor decât aerul, se acumulează la tavan0,3–1 m sub tavan, vertical, și la 1,5 m de sursa de gaz
Shelly Gas LPGGaz petrolier lichefiat (propan / butan)Mai greu decât aerul, se acumulează la nivelul podelei0,3 m deasupra podelei, la cel mult 1,5 m de sursa de gaz

CNG și GPL sunt două produse separate, cu senzori diferiți, nu un mod comutabil. Dacă varianta nu este clară, verificați marcajele de pe spatele dispozitivului.

Specificații
ParametruValoare
Alimentare110–230 V ±10 %, 50/60 Hz AC
Putere consumată< 3 W
Sensibilitatea alarmei6 % LEL (limita inferioară de explozie)
Nivel sonor≥ 70 dB
Wi-Fi802.11 b/g/n, 2400–2484 MHz
Rază de acțiunepână la 50 m în exterior, până la 30 m în interior
Temperatură de funcționare−10 °C până la +50 °C
Ieșire jack pentru dispozitivul de acționare a robinetului11–13 V, 500 mA (accesoriu extern, nu este comandat de acest șablon)
Dimensiuni89,5 × 89,5 × 38 mm (fără ștecăr)
Semnalizare locală

Inelul LED și buzzerul asigură semnalizarea proprie a dispozitivului. TapHome vede doar cele două topicuri descrise la Funcțiile dispozitivului, așa că aceste semnale transmit informații care nu ajung la unitatea de control.

Inel LEDSemnificație
Verde continuuSenzorul funcționează normal
Galben continuuDefect al senzorului
Roșu intermitentAlarmă
Roșu / galben / verde intermitent, în succesiuneSenzorul se încălzește
Semnalul buzzeruluiEveniment
Două bipuri scurte pe secundăÎncălzirea a început după pornire
Un bip lung pe secundăÎncălzirea s-a încheiat
Bip lung o dată pe secundă, până la remedierea defectuluiDefect al senzorului
Trei bipuri scurte de două ori pe secundăAutotest în curs
Bip lung o dată pe secundăAutotest încheiat cu succes
Bip lung o dată pe secundă, până când scurgerea dispare sau se agraveazăScurgere ușoară de gaz
Cinci secunde de bipuri cu o pauză de o secundă, până când scurgerea dispareScurgere puternică de gaz

După alimentare, senzorul se încălzește aproximativ trei minute. În acest timp, inelul LED clipește succesiv roșu / galben / verde, iar valoarea concentrației gazului nu este validă.

Configurare

Activarea MQTT pe dispozitiv
  1. Deschideți interfața web a dispozitivului într-un browser.
  2. Accesați Internet and Security → Advanced - Developer Settings.
  3. Bifați Enable action execution via MQTT.
  4. Completați câmpul Server în formatul {adresa IP a brokerului MQTT}:{port} — de exemplu 192.168.1.10:1883.
  5. Apăsați SAVE. Dispozitivul se reconectează și începe să publice către broker.

Pe firmware-ul Gen1, activarea MQTT dezactivează conexiunea Shelly Cloud — cele două nu pot funcționa simultan. Dispozitivele Gen1 nu acceptă nici MQTT prin TLS, așa că brokerul trebuie să accepte MQTT simplu pe portul 1883. Păstrați brokerul într-o rețea locală de încredere.

Citirea ID-ului dispozitivului

În interfața web accesați Settings → Device Info → Device ID. Valoarea necesară este primul șir de caractere, nu valoarea dintre paranteze. Este un Shelly-ID de șase sau mai multe caractere, de exemplu 35FA58. Același identificator apare în numele rețelei Wi-Fi pe care dispozitivul o creează în modul punct de acces (ShellyGas-35FA58) și formează prefixul de topic MQTT shellies/shellygas-35FA58/.

Configurarea șablonului

Șablonul solicită trei parametri de import:

Parametru de importImplicitValoarea de introdus
Mqtt Broker IP address192.168.0.1Adresa IP a brokerului MQTT — nu a dispozitivului Shelly Gas
Mqtt Broker port1883Portul pe care ascultă brokerul
Device ID—Shelly-ID-ul citit mai sus, de ex. 35FA58

Parametrul de import Device ID completează variabila deviceID de la nivelul modulului, din care se construiește prefixul pentru fiecare topic folosit de modul. Modulul se abonează la shellies/#, iar scripturile sale de ascultare filtrează mesajele primite după acest prefix.

Implicit, dispozitivul publică o actualizare la fiecare 30 de secunde. Setarea parametrului de dispozitiv mqtt_update_period la 0 îl trece pe raportare doar la schimbare.

Funcțiile dispozitivului

Alarma de gaz

Alarmă de gaz este un comutator cu mai multe valori care primește date din shellies/shellygas-<deviceID>/sensor/gas. Acesta transmite nivelul de alarmă pe care dispozitivul l-a determinat deja din concentrația măsurată.

Valoare în TapHomePayload MQTTSemnificație
Fără alarmănoneConcentrație sub 1800 ppm
Scurgere ușoară de gazmildConcentrație de cel puțin 1800 ppm
Scurgere puternică de gazheavyConcentrație de cel puțin 3000 ppm
AutotesttestPublicat după un autotest reușit
Starea alarmei este necunoscutăunknown sau orice alt payloadDispozitivul nu poate indica nivelul alarmei

Cele două praguri sunt fixate în firmware-ul dispozitivului și nu pot fi modificate.

Concentrația gazului

Concentrația gazului citește valoarea brută din shellies/shellygas-<deviceID>/sensor/concentration în părți per milion, în intervalul 0–65535 ppm. Este aceeași măsurătoare fizică pe care se bazează și Alarmă de gaz, înainte ca firmware-ul să aplice pragurile.

Folosiți Alarmă de gaz pentru logica de alarmă și Concentrația gazului pentru tendințe, grafice și limite proprii de avertizare timpurie sub 1800 ppm. O regulă nu ar trebui să își determine singură nivelul de alarmă din valoarea în ppm și să se aștepte să coincidă cu cel al dispozitivului — buzzerul și LED-ul urmează pragurile fixe din firmware.

Dispozitivul publică -1 în topicul de concentrație ori de câte ori citirea nu este validă — în timpul încălzirii de aproximativ trei minute de după alimentare și cât timp senzorul este defect. Șablonul stochează acest -1 ca atare; nu este un cod de eroare TapHome.

Autotest

Modulul oferă acțiunea de service Autotest, care publică în shellies/shellygas-<deviceID>/sensor/start_self_test. Cât timp rulează testul, dispozitivul emite trei bipuri scurte de două ori pe secundă, iar când testul reușește publică test în topicul de gaz, ceea ce apare în TapHome ca valoarea Autotest a dispozitivului Alarmă de gaz.

Limitări cunoscute

Butonul Oprire sunet alarmă activă nu ajunge la dispozitiv

Șablonul conține butonul Oprire sunet alarmă activă, dar în versiunea actuală a șablonului acesta nu are niciun efect. Butonul publică în topicul literal shellies/shellygas-<deviceid>/sensor/mute — substituentul <deviceid> nu este niciodată înlocuit cu ID-ul configurat al dispozitivului, așa că mesajul ajunge într-un topic la care nu este abonat niciun dispozitiv real. Celelalte trei topicuri din același șablon își construiesc corect prefixul din variabila deviceID.

Nu vă bazați pe butonul Oprire sunet alarmă activă. Oprirea sunetului unei alarme active din TapHome va funcționa doar după ce șablonul va fi corectat să construiască topicul din variabila deviceID. Sunetul alarmei poate fi oprit oricând direct pe dispozitiv, cu Mute din interfața sa web — și doar cât timp o alarmă este efectiv activă.

Rezolvarea problemelor

În TapHome nu sosesc valori
  1. Verificați dacă MQTT este activat pe dispozitiv și dacă în câmpul Server se află adresa brokerului în forma {IP}:{port}
  2. Verificați dacă endpointul modulului indică brokerul MQTT, nu adresa IP a dispozitivului Shelly Gas
  3. Verificați dacă ID-ul dispozitivului corespunde exact celui afișat în Settings → Device Info → Device ID — doar primul șir, fără valoarea dintre paranteze
  4. Abonați-vă la shellies/# cu un client MQTT (de exemplu MQTT Explorer) și verificați dacă sosesc mesaje sub shellies/shellygas-<your-id>/
  5. Dacă dispozitivul a fost trecut pe raportare doar la schimbare (mqtt_update_period = 0), rulați acțiunea de service Autotest — un test reușit publică în topicul de gaz
Concentrația gazului afișează -1

Citirea senzorului nu este validă. Fie dispozitivul încă se încălzește — aproximativ trei minute după alimentare — fie senzorul are un defect. Un defect se vede pe dispozitiv ca LED galben continuu și un bip lung o dată pe secundă. Acest șablon nu citește topicul cu starea senzorului, așa că un defect ajunge în TapHome doar ca acest -1.

Alarmă de gaz afișează „Starea alarmei este necunoscută”

Șablonul afișează această valoare când primește payloadul documentat unknown sau orice alt payload în afara celor patru valori cunoscute. Verificați inelul LED al dispozitivului pentru a vedea în ce stare se află de fapt senzorul.

Dispozitivul a dispărut din Shelly Cloud

Este normal pe firmware-ul Gen1 — activarea MQTT dezactivează conexiunea la cloud. Accesați interfața web prin rețeaua locală, folosind adresa IP a dispozitivului sau numele de gazdă mDNS shellygas-<MAC>.local.

Cum se instalează în TapHome

Cerințe preliminare

  • Dispozitiv Shelly conectat la Wi-Fi (2,4 GHz), de ex. prin aplicația Shelly sau prin punctul de acces propriu al dispozitivului
  • Broker MQTT care rulează în rețeaua dvs. locală (de ex. Mosquitto, Home Assistant sau brokerul integrat TapHome)
  • TapHome CCU în aceeași rețea cu brokerul

La dispozitivele Gen1, activarea MQTT dezactivează Shelly Cloud. Cele două nu pot funcționa simultan. La dispozitivele Gen2/Plus această limitare nu se aplică.

Pasul 1 — Activați MQTT pe dispozitivul Shelly

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

  1. Deschideți interfața web Shelly: http://<device-ip>/
  2. Accesați Internet & Security → Advanced — MQTT
  3. Activați MQTT
  4. Setați MQTT Server: <broker-ip>:<port> (de ex. 192.168.1.10:1883)
  5. Opțional, setați MQTT User și MQTT Password, dacă brokerul dvs. necesită autentificare
  6. Faceți clic pe Save — dispozitivul repornește și se conectează la broker

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

  1. Deschideți interfața web Shelly: http://<device-ip>/
  2. Accesați Settings → MQTT
  3. Activați MQTT
  4. Setați Server: <broker-ip>:<port> (de ex. 192.168.1.10:1883)
  5. Câmpul Client ID este precompletat cu ID-ul dispozitivului (de ex. shellyplus1pm-AABBCCDDEE) — lăsați-l neschimbat, dacă nu aveți un motiv anume să îl modificați
  6. Faceți clic pe Save și reporniți dispozitivul

Pentru a verifica funcționarea MQTT, folosiți un client MQTT (de ex. MQTT Explorer) și abonați-vă la shellies/# (Gen1) sau <device-id>/# (Gen2). Ar trebui să vedeți mesajele de stare trimise de dispozitiv.

Pasul 2 — Aflați Device ID / MQTT Client ID

Unele șabloane necesită parametrul Device ID sau MQTT Client ID. Acesta este identificatorul unic folosit în topicurile MQTT.

  • Gen1: se găsește pe etichetă, ca adresă MAC (de ex. AABBCCDDEE). Device ID = shelly<model>-<mac>, de ex. shelly1pm-AABBCCDDEE
  • Gen2/Plus: se găsește în interfața web Shelly, la Settings → Device Info → Device ID, sau pe eticheta dispozitivului

Pasul 3 — Configurați dispozitivul în TapHome

  1. În TapHome adăugați un nou modul Packet Parser (MQTT)
  2. IP Address: introduceți adresa IP a brokerului MQTT (de ex. 192.168.1.10)
  3. Port: 1883 (implicit; pentru TLS folosiți 8883)
  4. Device ID / MQTT Client ID: introduceți valoarea de la pasul 2 (dacă șablonul o necesită)
  5. Importați șablonul — TapHome se abonează automat la topicurile dispozitivului

Dispozitive disponibile

Shelly Gas MQTT Modul
Acțiuni de service
AutotestPornește autotestul senzorului pe dispozitiv — buzzerul emite trei bipuri de două ori pe secundă, iar Alarmă de gaz raportează Autotest când testul reușește.
Variabile personalizate
deviceID (string)Shelly-ID-ul unității Shelly Gas — șirul de 6 sau mai multe caractere care formează prefixul de topic MQTT shellies/shellygas-<deviceID>/ (de ex. 35FA58). Se citește în interfața web Shelly, la 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

Acțiuni de service
Self test
mqttpublish("shellies/shellygas-"+deviceID+"/sensor/start_self_test","1");
Alarmă de gaz Comutator cu mai multe valori Doar citire

Nivelul de alarmă raportat de senzor — Fără alarmă, Scurgere ușoară de gaz (de la 1800 ppm), Scurgere puternică de gaz (de la 3000 ppm), Autotest sau Starea alarmei este necunoscută. Pragurile sunt fixate în firmware-ul dispozitivului și nu pot fi modificate.

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

Alarmă de gaz

Citirea stării comutatorului
# 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");
Scrierea stării comutatorului
# 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
Ascultător
# 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
Concentrația gazului Variabilă Doar citire

Concentrația măsurată a gazului combustibil, în părți per milion, în intervalul 0–65535 ppm. Dispozitivul raportează -1 cât timp senzorul se încălzește sau este defect.

numeric Unitate: ppm

Concentrația gazului

Scriere
# 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
Citire (modul)
# 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");
Ascultător
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellygas-"+deviceID+"/sensor/concentration")
 Va := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
Oprire sunet alarmă activă Buton

Buton destinat opririi sunetului unei alarme active. În versiunea actuală a șablonului nu are niciun efect — topicul în care publică nu este construit din ID-ul configurat al dispozitivului.

action push button

Oprire sunet alarmă activă

Scrierea stării butonului
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
Conexiune: Packet Parser → MQTT • Nume gazdă: shellygas-{MAC}.local
Îmbunătățiri posibile (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.

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal