TapHome

Shelly H&T Gen3

Packet Parser → MQTT
Beküldő
Utoljára frissítve: 03. 2026
Shelly H&T Gen3

A Shelly H&T Gen3 egy elemes (4x AA) Wi-Fi hőmérséklet- és páratartalom-érzékelő nagy e-paper kijelzővel. A TapHome MQTT-n keresztül kommunikál az eszközzel, Gen2+ RPC értesítésekkel az events/rpc topicon. Ez az ajánlott protokoll az elemes Shelly Gen3 eszközökhöz, mivel az érzékelő az idő nagy részében alvó módban van, és csak felébredéskor publikál adatokat.

A sablon egyetlen Hőmérséklet- és páratartalom-érzékelő eszközt és egy modul szintű Akkumulátor szervizattribútumot hoz létre. Az offline érzékelési mechanizmus figyeli az utoljára fogadott időbélyeget, és figyelmeztetéseket vagy hibákat jelez, ha az eszköz hosszabb ideje nem jelentett.

Konfiguráció

MQTT Client ID

Minden Shelly H&T Gen3 egyedi MQTT Client ID-vel rendelkezik shellyhtg3-<MAC12> formátumban, ahol a <MAC12> a teljes 12 karakteres MAC-cím nagybetűs hexadecimális formában (pl. shellyhtg3-AABBCCDDEEFF). Ez az ID egyben az alapértelmezett MQTT topic előtag is.

A Client ID megtalálható:

  • Az eszköz címkéjén (MAC-cím)
  • A Shelly webes felületen: SettingsMQTTClient ID
  • API-n keresztül: GET http://<device-ip>/rpc/Mqtt.GetConfigclient_id mező
Sablon beállítása

A sablon TapHome-ba importálása után:

  1. Nyisd meg a Shelly H&T Gen3 MQTT modult
  2. Állítsd be az MQTT Broker IP-t az MQTT broker címére
  3. Állítsd be a Port-ot (alapértelmezett 1883)
  4. Állítsd be az MQTT ID import paramétert az eszköz Client ID-jére (pl. shellyhtg3-AABBCCDDEEFF)

A modul feliratkozik a <device-id>/# topicra, és a listener szkriptek feldolgozzák a NotifyStatus JSON-RPC eseményeket az events/rpc topicról.

Győződj meg róla, hogy a Shelly H&T Gen3-on engedélyezve van az MQTT és az rpc_ntf (RPC értesítések) true értékre van állítva (alapértelmezett). A sablon az events/rpc értesítésekre támaszkodik, nem az egyedi állapot topicokra.

Mérési és jelentési viselkedés

A Shelly H&T Gen3 az áramforrástól függően eltérően működik:

  • Elemes mód — 1 percenként ébred mérésre. MQTT-n keresztül jelent, ha a hőmérséklet több mint 0,5 °C-kal vagy a páratartalom több mint 5%-kal változik. Feltétel nélküli állapotjelentés 2 óránként kerül küldésre, ha nem volt küszöbérték-alapú jelentés.
  • USB tápellátás — 5 percenként ébred mérésre, kijelző frissítésre és jelentésre minden ciklusban.

Az e-paper kijelző frissül, ha a hőmérséklet több mint 0,2 °C-kal vagy a páratartalom több mint 3%-kal változik.

Az eszköz elemről működik és nem csatlakozik állandóan az MQTT brokerhez. Számíts szünetekre a mérések között, különösen elemes módban. Ha az érzékelő helyén gyenge a Wi-Fi jel, a gyakori újracsatlakozási kísérletek csökkenthetik az elem élettartamát.

Eszközképességek

Hőmérséklet és páratartalom

Az érzékelő eszköz a hőmérsékletet és páratartalmat a NotifyStatus eseményekből olvassa az events/rpc topicon:

  • Hőmérséklet — környezeti hőmérséklet Celsiusban, a params['temperature:0'].tC értékből
  • Páratartalom — relatív páratartalom százalékban, a params['humidity:0'].rh értékből (a listener szkript 100-zal osztja az értéket a TapHome által elvárt 0–1 tartományra való konvertáláshoz)

Mindkét érték csak olvasható, és az érzékelő minden felébredésekor és adatpublikálásakor frissül.

A hőmérséklet jelentési küszöbérték az eszközön konfigurálható (alapértelmezett 0,5 °C, tartomány 0,5–5,0 °C). A páratartalom küszöbérték alapértelmezetten 5% (tartomány 1–20%). Ezek a küszöbértékek a Shelly webes felületen vagy API-n keresztül módosíthatók a jelentési gyakoriság és az elem élettartam közötti egyensúly érdekében.

Akkumulátor monitorozás

A modul egy Akkumulátor [%] szervizattribútumot biztosít, amely az akkumulátor töltöttségi szintjét olvassa a params['devicepower:0'].battery.percent értékből a NotifyStatus eseményben. Alacsony akkumulátor figyelmeztetés aktiválódik, ha a szint 30% alá esik.

Az akkumulátorszint minden érzékelő jelentéssel frissül. 4x AA elemmel az elvárt élettartam normál körülmények között körülbelül 1 év.

Offline érzékelés

A sablon időbélyeg-alapú mechanizmussal figyeli az eszköz csatlakozottságát. A modul listener szkriptje minden NotifyStatus eseményből eltárolja a Unix időbélyeget a timestamp egyéni változóba. Az olvasó szkript ezután összehasonlítja a tárolt időbélyeget az aktuális idővel:

  • Offline > 12 óra — WARNING: “Device is offline > 12H”
  • Offline > 24 óra — ERROR: “Device is offline > 24H”

Ez különösen hasznos elemes eszközöknél, amelyek lemerült elemek vagy Wi-Fi kapcsolat elvesztése miatt elnémulhatnak.

További képességek

A Shelly H&T Gen3 online/offline állapotot is publikál az MQTT Last Will and Testament (LWT) topicon, elemfeszültséget Voltban és külső tápellátás állapotot (USB Type-C csatlakoztatva van-e). Egyedi komponens állapot topicok (status/temperature:0, status/humidity:0, status/devicepower:0) elérhetők, ha a status_ntf engedélyezve van, és a hőmérséklet Fahrenheitben is elérhető. Az eszköz e-paper kijelzővel rendelkezik konfigurálható hőmérsékleti egységgel és óraformátummal. Ezek a képességek egy jövőbeli sablon frissítésben adhatók hozzá.

Hibaelhárítás

Az érzékelő nem jelent adatokat
  1. Ellenőrizd, hogy a Shelly H&T Gen3 csatlakozik a Wi-Fi-hez és az MQTT engedélyezve van az eszközbeállításokban (SettingsMQTTEnable)
  2. Ellenőrizd, hogy az rpc_ntf true értékre van állítva (alapértelmezett) — a sablon RPC értesítéseket igényel az events/rpc-n
  3. Győződj meg róla, hogy az MQTT ID import paraméter pontosan megegyezik az eszköz Client ID-jével (pl. shellyhtg3-AABBCCDDEEFF)
  4. Használj MQTT klienst (pl. MQTT Explorer) a <device-id>/# topicra való feliratkozáshoz, és ellenőrizd, hogy az érzékelő NotifyStatus üzeneteket publikál felébredéskor
  5. Ellenőrizd az eszköz elemszintjét — lemerült elemek megakadályozzák, hogy az érzékelő csatlakozzon a Wi-Fi-hez
A páratartalom mérés helytelennek tűnik
  1. A TapHome sablon 100-zal osztja a nyers páratartalom értéket (pl. rh: 55.3 lesz 0.553 a TapHome-ban). Ez elvárt viselkedés — a TapHome belsőleg 0–1 tartományt használ
  2. Az érzékelő konfigurálható páratartalom offsettel rendelkezik (Humidity.SetConfigoffset) — ellenőrizd, hogy nincs helytelen értékre állítva
  3. Az érzékelő működési páratartalom tartománya 30–70% RH. A tartományon kívüli mérések kevésbé pontosak lehetnek
Offline figyelmeztetések a működő érzékelő ellenére
  1. Az offline érzékelés a tárolt időbélyeget hasonlítja az aktuális időhöz. Ha a TapHome Core órája jelentősen eltér, hamis figyelmeztetések jelenhetnek meg
  2. Elemről üzemelve az érzékelő csak küszöbérték túllépésekor vagy 2 óránként feltétel nélkül jelent — akár 2 órás szünetek a jelentések között normálisak
  3. Ha az érzékelő szakaszos Wi-Fi-vel rendelkező helyen van, kihagyhat jelentési ablakokat. Ellenőrizd a Wi-Fi jelerősséget az érzékelő helyén

Telepítés a TapHome-ban

Előfeltételek

  • Shelly eszköz csatlakoztatva a Wi-Fi-hez (ha még nem, lásd a HTTP kapcsolódási útmutatót)
  • MQTT broker fut a helyi hálózaton (pl. Mosquitto, Home Assistant vagy a TapHome beépített brokere)
  • TapHome CCU ugyanazon a hálózaton, mint a broker

A Gen1 eszközökön az MQTT engedélyezése letiltja a Shelly Cloudot. A kettő nem futhat egyszerre. A Gen2/Plus eszközökön ez a korlátozás nem érvényes.

1. lépés — MQTT engedélyezése a Shelly eszközön

Gen1 eszközök (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon az Internet & SecurityAdvanced — MQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be az MQTT Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. Opcionálisan állítsa be az MQTT User és MQTT Password mezőket, ha a broker hitelesítést igényel
  6. Kattintson a Save gombra — az eszköz újraindul és csatlakozik a brokerhez

Gen2 / Plus eszközök (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon a SettingsMQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be a Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. A Client ID előre ki van töltve az eszköz azonosítójával (pl. shellyplus1pm-AABBCCDDEE) — hagyja így, hacsak nincs konkrét oka a változtatásra
  6. Kattintson a Save gombra és indítsa újra az eszközt

Az MQTT működésének ellenőrzéséhez használjon egy MQTT klienst (pl. MQTT Explorer), és iratkozzon fel a shellies/# (Gen1) vagy <device-id>/# (Gen2) topikra. Látnia kell az eszköz állapotüzeneteit.

2. lépés — Device ID / MQTT Client ID megkeresése

Egyes sablonok Device ID vagy MQTT Client ID paramétert igényelnek. Ez az egyedi azonosító, amelyet az MQTT topikokban használnak.

  • Gen1: a címkén MAC-címként található (pl. AABBCCDDEE). Device ID = shelly<model>-<mac>, pl. shelly1pm-AABBCCDDEE
  • Gen2/Plus: a Shelly webes felületén a SettingsDevice InfoDevice ID alatt található, vagy az eszköz címkéjén

3. lépés — Konfigurálás a TapHome-ban

  1. A TapHome-ban adjon hozzá egy új Packet Parser (MQTT) modult
  2. IP Address: adja meg az MQTT broker IP-címét (pl. 192.168.1.10)
  3. Port: 1883 (alapértelmezett; TLS esetén használjon 8883-at)
  4. Device ID / MQTT Client ID: adja meg a 2. lépésben kapott értéket (ha a sablon megköveteli)
  5. Importálja a sablont — a TapHome automatikusan feliratkozik az eszköz topikjaira

Elérhető eszközök

Shelly H&T Gen3 MQTT Modul
Szerviz attribútumok
AkkumulátorAkkumulátor töltöttségi szint — alacsony akkumulátor figyelmeztetés 30% alatt
Egyéni változók

Shelly H&T Gen3 MQTT

Olvasás (modul)
if !ISNAN(timestamp)
	DATETIME now := NOW();
	var secondsSeen := now.UNIXTIME - timestamp;
	if secondsSeen > 12 * 60 * 60
		if secondsSeen > 24 * 60 * 60
			ADDERROR("Device is offline > 24H");
		else
			ADDWARNING("Device is offline > 12H");        
		end
	end
end
Figyelő
if INDEXOF(RECEIVEDMSG.Topic, "events/rpc") > 0
	var ts := PARSEJSON(RECEIVEDMSG.Payload, "params.ts", true);
	if(!ISNULL(ts), timestamp := ts);
    var bat := PARSEJSON(RECEIVEDMSG.Payload, "params['devicepower:0'].battery.percent", true);
	if(!ISNULL(bat), BatteryPercentage := bat);
end

if BatteryPercentage < 30
	ADDWARNING("Low battery (<30%)");
end
Szerviz attribútumok
Battery [%]
BatteryPercentage
Hőmérséklet- és páratartalom-érzékelő Hőmérséklet-érzékelő Csak olvasható

Környezeti hőmérséklet (°C) és relatív páratartalom NotifyStatus eseményekből — páratartalom 0–1 tartományra konvertálva a TapHome számára

json Egység: °C / %RH json_path

Hőmérséklet- és páratartalom-érzékelő

Figyelő
if INDEXOF(RECEIVEDMSG.Topic, "events/rpc") > 0
	var temperature := PARSEJSON(RECEIVEDMSG.Payload, "params['temperature:0'].tC", true);
    if(!ISNULL(temperature), Te := temperature);
    var humidity := PARSEJSON(RECEIVEDMSG.Payload, "params['humidity:0'].rh", true);
    if(!ISNULL(humidity), Hu := humidity / 100);
end
Kapcsolat: Packet Parser → MQTT
Lehetséges fejlesztések (8)
  • Temperature Status Topic — Individual status topic (when status_ntf: true). Template uses events/rpc instead — functionally equivalent.
  • Humidity Status Topic — Individual status topic (when status_ntf: true). Template uses events/rpc instead — functionally equivalent.
  • DevicePower Status Topic — Individual status topic with battery.V (voltage). Template already reads battery.percent from events/rpc.
  • Connection Status (LWT) — Last Will and Testament topic — true on connect, false on disconnect. Template uses timestamp-based offline detection instead.
  • Temperature in Fahrenheit — Temperature also available in Fahrenheit (tF field). Template uses tC only.
  • E-Paper Display Configuration — Temperature unit (C/F) and clock format (12/24/disabled) — display-only configuration, not sensor data.
  • Battery Voltage — Battery voltage in Volts. Template reads only percent, not voltage.
  • External Power Status — Whether USB Type-C power is connected. Could distinguish battery vs USB power mode.

Források