TapHome

Shelly Gas MQTT

Packet Parser → MQTT
Přidal
Poslední aktualizace: 08. 2026

Toto zařízení podporuje mDNS

Místo IP adresy můžete zařízení oslovit na:

shellygas-{MAC}.local

Nahraďte {MAC} MAC adresou zařízení (velká písmena, bez dvojteček).

TapHome podporuje mDNS — použití hostname je spolehlivější než statická IP.

Shelly Gas MQTT

Shelly Gas (model SHGS-1) je síťově napájený Wi-Fi detektor hořlavého plynu. Zapojuje se přímo do zásuvky, průběžně měří koncentraci plynu a při překročení prahu spustí vlastní zvukový a světelný alarm. Prodává se jako dva samostatné produkty — Shelly Gas CNG pro stlačený zemní plyn (metan) a Shelly Gas LPG pro zkapalněný ropný plyn (propan / butan). Oba mají stejný firmware a stejné MQTT topicy, takže tato jedna šablona funguje s oběma; liší se pouze senzorový článek a doporučená výška montáže.

Tato šablona se připojuje k MQTT brokeru, nikoli přímo k zařízení. Modul se přihlásí k odběru shellies/# na brokeru a podle Device ID vyfiltruje zprávy patřící konkrétní jednotce Shelly Gas. TapHome přijímá stav alarmu a koncentraci plynu tak, jak je zařízení publikuje, a umí spustit samotest senzoru.

K dispozici je i HTTP varianta této šablony (Shelly Gas). Tuto MQTT šablonu použijte, pokud v instalaci již běží MQTT broker a preferujete push aktualizace; HTTP šablonu použijte, pokud broker není k dispozici.

Shelly Gas je bezpečnostní zařízení. Integrace do TapHome doplňuje jeho vestavěný bzučák a LED alarm — nenahrazuje je. Bzučák a LED fungují nezávisle na MQTT, na brokeru i na řídicí jednotce TapHome a fungují i tehdy, když je kterýkoli z nich nedostupný.

Hardware

Umístění

Jednotka se zapojuje do síťové zásuvky — žádná kabeláž není potřeba. Správná výška montáže závisí na variantě plynu, protože oba plyny se ve vzduchu chovají odlišně.

VariantaDetekovaný plynChování ve vzduchuDoporučené umístění
Shelly Gas CNGStlačený zemní plyn (metan)Lehčí než vzduch, hromadí se u stropu0,3–1 m pod stropem, svisle, a 1,5 m od zdroje plynu
Shelly Gas LPGZkapalněný ropný plyn (propan / butan)Těžší než vzduch, hromadí se u podlahy0,3 m nad podlahou, do 1,5 m od zdroje plynu

CNG a LPG jsou dva samostatné produkty s odlišnými senzory, nikoli přepínatelný režim. Pokud varianta není zřejmá, zkontrolujte označení na zadní straně zařízení.

Specifikace
ParametrHodnota
Napájení110–230 V ±10 %, 50/60 Hz AC
Příkon< 3 W
Citlivost alarmu6 % LEL (dolní mez výbušnosti)
Hlasitost≥ 70 dB
Wi-Fi802.11 b/g/n, 2400–2484 MHz
Dosahdo 50 m venku, do 30 m uvnitř
Provozní teplota−10 °C až +50 °C
Výstup konektoru manipulátoru ventilu11–13 V, 500 mA (externí příslušenství, tato šablona jej neovládá)
Rozměry89,5 × 89,5 × 38 mm (bez zástrčky)
Lokální signalizace

LED prstenec a bzučák jsou vlastní signalizací zařízení. TapHome vidí pouze dva topicy popsané v části Funkce zařízení, takže tyto signály nesou informace, které se k řídicí jednotce nedostanou.

LED prstenecVýznam
Svítí zeleněSenzor v normálním provozu
Svítí žlutěPorucha senzoru
Bliká červeněAlarm
Bliká červeně / žlutě / zeleně v sleduSenzor se zahřívá
Vzor bzučákuUdálost
Dvě krátká pípnutí za sekunduZahřívání se spustilo po zapnutí
Jedno dlouhé pípnutí za sekunduZahřívání skončilo
Dlouhé pípnutí jednou za sekundu, dokud porucha trváPorucha senzoru
Tři krátká pípnutí dvakrát za sekunduProbíhá samotest
Dlouhé pípnutí jednou za sekunduSamotest úspěšně dokončen
Dlouhé pípnutí jednou za sekundu, dokud únik trvá nebo se nezhoršíMírný únik plynu
Pět sekund pípání se sekundovou pauzou, dokud únik trváSilný únik plynu

Po zapnutí zařízení spustí samotest, který trvá přibližně tři minuty. LED prstenec během něj prochází zelenou → oranžovou → červenou a údaj o plynu není platný.

Konfigurace

Povolení MQTT na zařízení
  1. Otevřete webové rozhraní zařízení v prohlížeči.
  2. Přejděte do Internet and SecurityAdvanced - Developer Settings.
  3. Zaškrtněte Enable action execution via MQTT.
  4. Do pole Server zadejte hodnotu podle vzorce {IP adresa MQTT brokeru}:{port} — například 192.168.1.10:1883.
  5. Stiskněte SAVE. Zařízení se znovu připojí a začne publikovat na brokera.

Na firmwaru Gen1 povolení MQTT vypne připojení k Shelly Cloud — obojí naráz fungovat nemůže. Zařízení Gen1 také nepodporují MQTT přes TLS, takže broker musí přijímat nešifrované MQTT na portu 1883. Brokera proto držte v důvěryhodné lokální síti.

Zjištění Device ID

Ve webovém rozhraní přejděte do SettingsDevice InfoDevice ID. Potřebná je první skupina znaků, nikoli hodnota v závorkách. Jde o Shelly-ID se šesti nebo více znaky, například 35FA58. Stejný identifikátor se objeví i ve Wi-Fi síti, kterou zařízení vytvoří v režimu přístupového bodu (ShellyGas-35FA58), a tvoří prefix MQTT topicu shellies/shellygas-35FA58/.

Nastavení šablony

Šablona si vyžádá tři importní parametry:

Importní parametrVýchozíHodnota k zadání
Mqtt Broker IP address192.168.0.1IP adresa MQTT brokeru — nikoli zařízení Shelly Gas
Mqtt Broker port1883Port, na kterém broker naslouchá
Device IDShelly-ID zjištěné výše, např. 35FA58

Importní parametr Device ID naplní proměnnou deviceID na úrovni modulu, která sestavuje prefix pro každý topic, který modul používá. Modul se přihlásí k odběru shellies/# a jeho listener skripty filtrují příchozí zprávy podle tohoto prefixu.

Zařízení výchozím nastavením publikuje aktualizaci každých 30 sekund. Nastavením parametru zařízení mqtt_update_period na 0 přejde na hlášení pouze při změně.

Funkce zařízení

Plynový alarm

Plynový alarm je vícehodnotový přepínač napájený z shellies/shellygas-<deviceID>/sensor/gas. Nese úroveň alarmu, kterou zařízení již odvodilo z naměřené koncentrace.

Hodnota v TapHomeMQTT payloadVýznam
Žádný alarmnoneKoncentrace pod 1800 ppm
Mírný únik plynumildKoncentrace od 1800 ppm
Silný únik plynuheavyKoncentrace od 3000 ppm
SamotesttestPublikováno po úspěšném samotestu
Stav alarmu je neznámýunknown nebo jiný payloadZařízení neumí určit úroveň alarmu

Oba prahy jsou pevně dané firmwarem zařízení a nelze je změnit.

Koncentrace plynu

Koncentrace plynu čte surovou hodnotu z shellies/shellygas-<deviceID>/sensor/concentration v milióntinách, v rozsahu 0–65535 ppm. Jde o stejné fyzikální měření jako u Plynového alarmu, ještě před aplikováním firmwarových prahů.

Plynový alarm použijte pro logiku alarmů a Koncentraci plynu pro trendy, grafy a vlastní časná varování pod 1800 ppm. Pravidlo by si nemělo odvozovat vlastní úroveň alarmu z hodnoty v ppm a očekávat, že se shodne se zařízením — bzučák a LED se řídí pevnými firmwarovými prahy.

Zařízení publikuje na topicu koncentrace hodnotu -1 vždy, když měření není platné — během přibližně tříminutového zahřívání po zapnutí a během poruchy senzoru. Šablona toto -1 ukládá tak, jak je; nejde o chybový kód TapHome.

Samotest

Modul poskytuje servisní akci Samotest, která publikuje na shellies/shellygas-<deviceID>/sensor/start_self_test. Zařízení během testu pípá tři krátká pípnutí dvakrát za sekundu a po úspěchu publikuje test na topicu plynu, což se v TapHome projeví jako hodnota Samotest Plynového alarmu.

Známá omezení

Ztlumení aktivního alarmu se k zařízení nedostane

Šablona obsahuje tlačítko Ztlumit aktivní alarm, ale v aktuální revizi šablony nemá žádný účinek. Tlačítko publikuje na doslovný topic shellies/shellygas-<deviceid>/sensor/mute — zástupný text <deviceid> se nikdy nenahradí nastaveným Device ID, takže zpráva jde na topic, který žádné reálné zařízení neodebírá. Zbývající tři topicy ve stejné šabloně si prefix sestavují z proměnné deviceID správně.

Na tlačítko Ztlumit aktivní alarm se nespoléhejte. Ztlumení aktivního alarmu z TapHome bude fungovat až po opravě šablony tak, aby topic sestavovala z proměnné deviceID. Alarm lze vždy ztlumit přímo na zařízení volbou Mute v jeho webovém rozhraní — a to pouze během skutečně aktivního alarmu.

Řešení problémů

Do TapHome nepřicházejí žádné hodnoty
  1. Ověřte, že MQTT je na zařízení povoleno a pole Server obsahuje adresu brokeru ve tvaru {IP}:{port}
  2. Zkontrolujte, že endpoint modulu směřuje na MQTT brokera, nikoli na IP adresu Shelly Gas
  3. Potvrďte, že Device ID přesně odpovídá tomu, co ukazuje SettingsDevice InfoDevice ID — pouze první skupina znaků, bez hodnoty v závorkách
  4. Přihlaste se MQTT klientem (například MQTT Explorer) k odběru shellies/# a zkontrolujte, že zprávy přicházejí pod shellies/shellygas-<vaše-id>/
  5. Pokud bylo zařízení přepnuto na hlášení pouze při změně (mqtt_update_period = 0), spusťte servisní akci Samotest — úspěšný test publikuje na topicu plynu
Koncentrace plynu ukazuje -1

Měření senzoru není platné. Zařízení se buď ještě zahřívá — přibližně tři minuty po zapnutí — nebo má senzor poruchu. Porucha se na zařízení projeví trvale svítící žlutou LED a dlouhým pípnutím jednou za sekundu. Tato šablona topic se stavem senzoru nečte, takže porucha se do TapHome dostane pouze jako toto -1.

Plynový alarm ukazuje „Stav alarmu je neznámý"

Tato hodnota je záložní větví šablony. Zachytává zdokumentovaný payload unknown i jakýkoli payload mimo čtyři známé hodnoty. Zkontrolujte LED prstenec na zařízení, abyste zjistili, v jakém stavu senzor skutečně je.

Zařízení zmizelo ze Shelly Cloud

Na firmwaru Gen1 očekávané — povolení MQTT vypíná připojení ke cloudu. Do webového rozhraní se dostanete přes lokální síť, pomocí IP adresy zařízení nebo mDNS hostname shellygas-<MAC>.local.

Jak nainstalovat v TapHome

Předpoklady

  • Zařízení Shelly připojené k Wi-Fi (pokud ještě ne, podívejte se na návod na HTTP připojení)
  • MQTT broker běžící ve vaší lokální síti (např. Mosquitto, Home Assistant nebo vestavěný broker TapHome)
  • TapHome CCU ve stejné síti jako broker

Na zařízeních Gen1 povolení MQTT vypne Shelly Cloud. Obojí nemůže běžet současně. Na zařízeních Gen2/Plus toto omezení neplatí.

Krok 1 — Povolte MQTT na zařízení Shelly

Zařízení Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na Internet & SecurityAdvanced — MQTT
  3. Povolte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Volitelně nastavte MQTT User a MQTT Password, pokud váš broker vyžaduje autentifikaci
  6. Klikněte na Save — zařízení se restartuje a připojí k brokeru

Zařízení Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na SettingsMQTT
  3. Povolte MQTT
  4. Nastavte Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Client ID je předvyplněné ID zařízení (např. shellyplus1pm-AABBCCDDEE) — ponechte tak, pokud nemáte konkrétní důvod ke změně
  6. Klikněte na Save a restartujte zařízení

Pro ověření funkčnosti MQTT použijte MQTT klienta (např. MQTT Explorer) a přihlaste se k odběru shellies/# (Gen1) nebo <device-id>/# (Gen2). Měli byste vidět stavové zprávy ze zařízení.

Krok 2 — Zjistěte Device ID / MQTT Client ID

Některé šablony vyžadují parametr Device ID nebo MQTT Client ID. Jde o jedinečný identifikátor používaný v MQTT topicích.

  • Gen1: nachází se na štítku jako MAC adresa (např. AABBCCDDEE). Device ID = shelly<model>-<mac>, např. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachází se ve webovém rozhraní Shelly v části SettingsDevice InfoDevice ID, nebo na štítku zařízení

Krok 3 — Konfigurace v TapHome

  1. V TapHome přidejte nový modul Packet Parser (MQTT)
  2. IP Address: zadejte IP adresu MQTT brokeru (např. 192.168.1.10)
  3. Port: 1883 (výchozí; pro TLS použijte 8883)
  4. Device ID / MQTT Client ID: zadejte hodnotu z kroku 2 (pokud to šablona vyžaduje)
  5. Importujte šablonu — TapHome se automaticky přihlásí k odběru topiců zařízení

Dostupná zařízení

Shelly Gas MQTT Modul
Servisní akce
SamotestSpustí samotest senzoru na zařízení — bzučák pípne třikrát dvakrát za sekundu a po úspěšném testu Plynový alarm ohlásí Samotest.
Vlastní proměnné
deviceID (string)Shelly-ID jednotky Shelly Gas — řetězec se šesti nebo více znaky, který tvoří prefix MQTT topicu shellies/shellygas-<deviceID>/ (např. 35FA58). Zjistíte jej ve webovém rozhraní Shelly v 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

Servisní akce
Self test
mqttpublish("shellies/shellygas-"+deviceID+"/sensor/start_self_test","1");
Plynový alarm Vícestavový přepínač Pouze ke čtení

Úroveň alarmu hlášená senzorem — Žádný alarm, Mírný únik plynu (od 1800 ppm), Silný únik plynu (od 3000 ppm), Samotest nebo Stav alarmu je neznámý. Prahy jsou pevně dané firmwarem zařízení a nelze je změnit.

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

Plynový alarm

Čtení stavu přepínače
# 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");
Zápis stavu přepínače
# 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
Koncentrace plynu Proměnná Pouze ke čtení

Naměřená koncentrace hořlavého plynu v milióntinách, rozsah 0–65535 ppm. Během zahřívání senzoru nebo při jeho poruše zařízení hlásí -1.

numeric Jednotka: ppm

Koncentrace plynu

Zápis
# 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
Čtení (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");
Listener
# Parse received bytes:
IF(RECEIVEDMSG.TOPIC = "shellies/shellygas-"+deviceID+"/sensor/concentration")
 Va := todouble(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
Ztlumit aktivní alarm Tlačítko

Tlačítko určené ke ztlumení právě aktivního alarmu. V aktuální revizi šablony nemá žádný účinek — topic, na který publikuje, se nesestavuje z nastaveného Device ID.

action push button

Ztlumit aktivní alarm

Zápis stavu tlačítka
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
Připojení: Packet Parser → MQTT • Hostname: shellygas-{MAC}.local
Možná vylepšení (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.

Zdroje

Našli jste problém s touto šablonou zařízení?

Napište nám, co nefunguje, co chybí, nebo jak by se měla šablona chovat. Vaše zpětná vazba nám pomáhá udržet katalog přesný.

Ověřeno TapHome

Chcete to použít ve svém TapHome jádře?

Otevřete tuto šablonu v zákaznickém portálu a použijte ji ve svém domově, nebo navrhněte úpravu a odešlete ji zpět do katalogu.

Otevřít v portálu