TapHome

Shelly Gas

Packet Parser → HTTP
Eingereicht von
Zuletzt aktualisiert: 03. 2026
Shelly Gas

Der Shelly Gas (Modell SHGS-1) ist ein netzbetriebener Wi-Fi Gasdetektor, der in zwei Varianten erhältlich ist — CNG (Erdgas / Methan) und LPG (Propan / Butan). Beide Varianten verwenden dieselbe API und dieselbe TapHome-Vorlage. Das Gerät wird direkt in eine Steckdose gesteckt und überwacht die Gaskonzentration kontinuierlich, wobei es bei Überschreitung der Schwellenwerte einen Ton- und Lichtalarm auslöst.

TapHome kommuniziert mit dem Gerät über HTTP im lokalen Netzwerk — keine Cloud-Verbindung erforderlich. Die Vorlage fragt den /status-Endpoint nach Alarmzustand und Gaskonzentration ab und bietet Steuerungsmöglichkeiten zum Stummschalten des Alarms und zum Ausführen eines Sensor-Selbsttests.

Eine MQTT-Variante dieser Vorlage ist ebenfalls verfügbar (Shelly GAS MQTT). Verwenden Sie die MQTT-Vorlage, wenn das Gerät für die Kommunikation über einen MQTT-Broker statt HTTP konfiguriert ist.

Konfiguration

Der Shelly Gas verbindet sich über Wi-Fi. Beim Import der TapHome-Vorlage geben Sie die IP-Adresse des Geräts ein (Standard-Platzhalter 192.168.0.1).

Beide Varianten CNG und LPG werden identisch konfiguriert — der physische Sensor unterscheidet sich, aber API und Vorlage sind gleich.

Gerätefähigkeiten

Gasalarmüberwachung

Die Vorlage stellt einen Mehrfachwert-Schalter bereit, der den aktuellen Alarmzustand aus der /status-Antwort liest (gas_sensor.alarm_state). Das Gerät meldet einen der folgenden Zustände:

ZustandBedeutung
No alarmNormalbetrieb — kein Gas erkannt
Mild gas leakGaskonzentration >= 1800 ppm
Heavy gas leakGaskonzentration >= 3000 ppm
Self TestSensor-Selbstdiagnose läuft
Alarm state is unknownUnbekannter Zustand (Fallback)

Die Alarmschwellenwerte sind auf Geräteebene fest und können weder über TapHome noch über die API geändert werden.

Gaskonzentration

Ein Sensorgerät liest die aktuelle Gaskonzentration in Teilen pro Million (ppm) aus der /status-Antwort (concentration.ppm). Der Wert wird alle 15 Sekunden aktualisiert. Während der Aufwärmphase des Sensors nach dem Einschalten kann der Messwert ungültig sein.

Aktiven Alarm stummschalten

Ein Tastergerät sendet eine GET /mute-Anfrage, um den Alarmbuzzer stumm zu schalten, ohne den Alarmzustand zu löschen. Der Alarmzustand bleibt aktiv, bis die Gaskonzentration unter den Schwellenwert fällt.

Servicediagnose

Die Vorlage stellt 9 Serviceattribute zur Geräteüberwachung bereit:

  • Geräteinformationen — Hostname, MAC-Adresse, Gerätezeit, Betriebszeit, RAM-Nutzung
  • Konnektivität — Cloud aktiviert/verbunden, MQTT verbunden, Firmware-Update verfügbar
Serviceaktionen

Zwei Serviceaktionen stehen zur Verfügung:

  • Lautstärke einstellen — passt die Lautstärke des Alarmbuzzers an (1 = leiseste, 11 = lauteste) über /settings?set_volume={value}
  • Selbsttest — startet eine Sensor-Selbstdiagnose (~30 Sekunden) über /self_test
Weitere Fähigkeiten

Der Shelly Gas stellt auch den Betriebszustand des Sensors (normal / warmup / fault), den Selbsttest-Fortschritt, das Konzentrations-Gültigkeitsflag, die WiFi-Signalstärke und die Steuerung eines externen Ventilmanipulators (11–13V, 500mA Klinkenbuchsenausgang) in seiner /status-Antwort bereit. Ein Endpunkt zum Aufheben der Stummschaltung (/unmute) ist verfügbar, um den Alarmbuzzer nach der Stummschaltung wieder zu aktivieren. Diese Fähigkeiten können in einer zukünftigen Vorlagenaktualisierung hinzugefügt werden.

Fehlerbehebung

Gerät antwortet nicht
  1. Überprüfen Sie, dass der Shelly mit Wi-Fi verbunden ist und eine gültige IP-Adresse hat
  2. Versuchen Sie den mDNS-Hostnamen (shellygas-AABBCCDDEE.local) statt der IP-Adresse — die IP kann sich nach einer DHCP-Erneuerung geändert haben
  3. Öffnen Sie http://{device-ip}/shelly im Browser — wenn er mit dem Gerätetyp SHGS-1 antwortet, ist das Gerät erreichbar
  4. Prüfen Sie, ob TapHome CCU und Shelly im selben Netzwerk / VLAN sind
Gaskonzentration zeigt immer Null
  1. Bestätigen Sie, dass der Sensor nicht im Aufwärmmodus ist — nach dem Einschalten benötigt der Sensor Zeit zur Stabilisierung, bevor er gültige Messwerte liefert
  2. Prüfen Sie concentration.is_valid in der /status-Antwort — wenn false, wärmt sich der Sensor noch auf
  3. Stellen Sie sicher, dass das Gerät korrekt positioniert ist (CNG-Variante nahe der Decke, LPG-Variante nahe dem Boden — Gas steigt oder sinkt je nach Dichte)
Alarm löst nicht aus
  1. Die Alarmschwellenwerte sind fest: mild >= 1800 ppm, schwer >= 3000 ppm — niedrige Konzentrationen unter diesen Werten lösen keinen Alarm aus
  2. Führen Sie einen Selbsttest von TapHome aus (Serviceaktion), um die Sensor- und Buzzer-Funktionalität zu überprüfen
  3. Prüfen Sie das Feld gas_sensor.sensor_state in /status — wenn es fault meldet, muss der Sensor möglicherweise ausgetauscht werden

Gen1 Shelly-Geräte unterstützen nur 2 gleichzeitige HTTP-Verbindungen. Wenn TapHome und ein anderes System (z.B. Home Assistant) dasselbe Gerät gleichzeitig abfragen, kann die Kommunikation unzuverlässig werden. Verwenden Sie ein Abfrageintervall von 10–30 Sekunden.

Installation in TapHome

Voraussetzungen

  • Shelly-Gerät installiert und eingeschaltet
  • Lokales Wi-Fi-Netzwerk (2,4 GHz)
  • TapHome CCU im selben Netzwerk

Schritt 1 — Shelly mit Wi-Fi verbinden

Option A — Shelly-App (empfohlen):

  1. Laden Sie die Shelly-App herunter (iOS / Android)
  2. Tippen Sie auf +Add Device und folgen Sie dem Bluetooth-Kopplungsassistenten
  3. Geben Sie Ihre Wi-Fi-Zugangsdaten ein, wenn Sie dazu aufgefordert werden

Option B — AP-Modus (ohne App):

  1. Beim ersten Einschalten erstellt das Gerät einen Hotspot: ShellyXXX-AABBCCDDEE
  2. Verbinden Sie Ihr Telefon/PC mit diesem Hotspot
  3. Öffnen Sie http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Geben Sie SSID und Passwort ein → Save

Shelly unterstützt nur 2,4 GHz-Netzwerke. 5 GHz-Netzwerke werden beim Scannen nicht angezeigt.

Schritt 2 — IP-Adresse ermitteln

Nach der Verbindung mit Wi-Fi ermitteln Sie die zugewiesene IP-Adresse auf eine der folgenden Arten:

  • Shelly-App: Gerätedetail → Device info → IP-Adresse
  • Shelly-Weboberfläche: Verbinden Sie sich mit dem Geräte-AP vor der Wi-Fi-Einrichtung — die IP wird nach dem Speichern angezeigt
  • Router-DHCP-Tabelle: Suchen Sie nach einem Hostnamen wie shelly1pm-AABBCCDDEE
  • mDNS: Pingen Sie shelly<model>-<mac>.local (z. B. shelly1pm-AABBCCDDEE.local) aus dem selben Netzwerk

Weisen Sie dem Shelly-Gerät eine statische IP (DHCP-Reservierung) in Ihrem Router zu, damit sich die Adresse nach einem Router-Neustart nicht ändert.

Schritt 3 — Konfiguration in TapHome

  1. Fügen Sie in TapHome ein neues Modul Packet Parser (HTTP) hinzu
  2. IP Address: Geben Sie die IP aus Schritt 2 ein (z. B. 192.168.1.50)
  3. Port: 80 (Standard, keine Änderung erforderlich)
  4. Importieren Sie die Vorlage — TapHome fragt regelmäßig /status ab, um den Gerätestatus zu lesen

Die HTTP-Authentifizierung ist auf Shelly-Geräten standardmäßig deaktiviert. Wenn Sie den Anmeldeschutz aktiviert haben, unterstützt TapHome derzeit kein HTTP Basic Auth — lassen Sie die Authentifizierung für die TapHome-Integration deaktiviert.

Verfügbare Geräte

Shelly Gas Modul
Serviceaktionen
Lautstärke einstellen
Selbsttest
Benutzerdefinierte Variablen
deviceID (string) = 10521CF2BA9BIP-Adresse des Shelly Gas Geräts im lokalen Netzwerk

Shelly GAS

Lesen (Modul)
VAR response := SENDHTTPREQUEST("/status");
IF response.IsSuccess
 status := response.Content;
END
Serviceaktionen
Set Volume [1 to 11]
Parameter: Volume [1 to 11] (1–11 Volume)
sendhttprequest("/settings?set_volume="+Volume);
Self test
sendhttprequest("/self_test");
Gasalarm Mehrwertschalter Nur lesen

Gasalarmzustand — Kein Alarm, Leichtes Gasleck (>= 1800 ppm), Schweres Gasleck (>= 3000 ppm), Selbsttest, Unbekannt

enum multi-value switch
Werte / Zustände: No alarm · Mild gas leak · Heavy gas leak · Alarm state is unknown · Self Test

Gasalarm

Schaltzustand lesen
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));
Schaltzustand schreiben
#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
Gaskonzentration Variable Nur lesen

Aktuelle Gaskonzentration in parts per million (ppm)

numeric Einheit: ppm

Gaskonzentration

Lesen
var v := sendhttprequest("/status");
var content := v.Content;
return(todouble(parsejson(content,"concentration.ppm")));
Schreiben
# 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
Lesen (Modul)
parsejson(status, "concentration")
Aktiven Alarm stummschalten Taster

Schaltet den Alarm-Signalgeber stumm, ohne den Alarmzustand zu löschen

action push button

Aktiven Alarm stummschalten

Tastenstatus schreiben
sendhttprequest("/mute");
Verbindung: Packet Parser → HTTP
Mögliche Verbesserungen (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

Quellen