TapHome

Shelly Door/Window 2

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 05. 2026
Shelly Door/Window 2

Shelly Door/Window 2 (SHDW-2) je batériový (2x CR123A) Wi-Fi kontaktný senzor. TapHome komunikuje so zariadením cez MQTT — odporúčaný protokol pre batériové Shelly zariadenia, keďže senzor väčšinu času spí a publikuje dáta len pri udalostiach prebudenia (zmena stavu magnetu, vibrácia, zmena jasu alebo periodický časovač).

Šablóna podporuje až 5 Shelly Door/Window senzorov na modul. Každá inštancia senzora sa rozlišuje custom premennou sensorN_topic ukazujúcou na MQTT Client ID zariadenia.

Konfigurácia

Device ID

Každý senzor Shelly Door/Window 2 má unikátne MQTT Device ID vo formáte shellydw2-<MAC6>, kde <MAC6> je posledných 6 znakov MAC adresy v hexadecimálnom tvare malými písmenami (napr. shellydw2-A1B2C3).

Device ID nájdete:

  • Na štítku zariadenia (MAC adresa)
  • Vo webovom rozhraní Shelly: SettingsDevice Info
  • Cez API: GET http://<device-ip>/settings → pole device.hostname

Toto zariadenie podporuje mDNS objavovanie. Môžete použiť hostname shellydw2-{MAC}.local namiesto IP adresy pri konfigurácii TapHome. Nahraďte {MAC} poslednými 6 znakmi MAC adresy zariadenia malými písmenami (napr. shellydw2-A1B2C3.local). Použitie hostname predchádza problémom s konektivitou pri zmene IP adresy zariadenia.

Nastavenie šablóny

Po importe šablóny v TapHome:

  1. Otvorte modul Shelly Door/Window MQTT
  2. Nastavte MQTT Broker IP a Port (predvolene 1883)
  3. Pre každú inštanciu senzora nastavte custom premennú sensorN_topic na Device ID zodpovedajúceho Shelly Door/Window 2 (napr. shellydw2-A1B2C3)

Modul sa prihlási na odber shellies/# a listenerové skripty filtrujú správy podľa nakonfigurovaného prefixu topicu.

Konfigurujte len sloty senzorov, ktoré skutočne používate. Nenakonfigurované sloty (s predvolenou hodnotou shellydw2-deviceid) zobrazia chybovú správu vyzývajúcu na nastavenie správneho topicu.

Schopnosti zariadenia

Detekcia otvorenia/zatvorenia

Každá inštancia senzora je mapovaná ako zariadenie Reed Contact v TapHome. Stav dverí/okna sa číta z topicu shellies/<id>/sensor/state:

  • openAlarm (dvere/okno otvorené)
  • closeOK (dvere/okno zatvorené)

Senzor sa prebudí a publikuje svoj stav pri pohybe magnetu (dvere alebo okno sa otvoria alebo zatvoria), a tiež počas periodických intervalov hlásení (predvolene každé 3 minúty).

Monitorovanie batérie, teploty a osvetlenia

Každá inštancia senzora poskytuje tri servisné atribúty:

  • Batéria — percentuálna úroveň batérie čítaná z shellies/<id>/sensor/battery. Varovanie o nízkej batérii sa spustí pri poklese pod 20 %.
  • Teplota — okoliná teplota v °C čítaná z shellies/<id>/sensor/temperature.
  • Osvetlenie — úroveň okolitého svetla v luxoch čítaná z shellies/<id>/sensor/lux.

Všetky atribúty sú len na čítanie a aktualizujú sa pri každom prebudení senzora a publikovaní dát.

Ďalšie schopnosti (neimplementované)

Shelly Door/Window 2 tiež publikuje uhol náklonu (0–180 stupňov) a detekciu vibrácií cez MQTT, ako aj stav online/offline cez LWT topic. Tieto schopnosti sú dostupné vo výstupe MQTT zariadenia, ale nie sú mapované v aktuálnej TapHome šablóne. Môžu byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

Senzor nehlási dáta
  1. Overte, že Shelly Door/Window 2 je pripojený k Wi-Fi a MQTT je povolené v nastaveniach zariadenia
  2. Skontrolujte, že custom premenná sensorN_topic presne zodpovedá Device ID (napr. shellydw2-A1B2C3)
  3. Ak sa zmenila adresa MQTT brokera, skúste použiť mDNS hostname (shellydw2-A1B2C3.local) na overenie, že senzor je dostupný v sieti
  4. Použite MQTT klienta (napr. MQTT Explorer) na prihlásenie odberu shellies/# a overte, že senzor publikuje správy pri prebudení
Stav otvorenia/zatvorenia sa neaktualizuje
  1. Uistite sa, že magnet je správne zarovnaný s hlavnou jednotkou — keď sú dvere/okno zatvorené, magnet by mal byť do 15 mm od senzora
  2. Ak bol senzor nedávno presunutý, použite kalibračný endpoint (GET http://<device-ip>/calibrate?opened=1) s dverami/oknom v otvorenej polohe na rekalibráciu
  3. Skontrolujte v TapHome stav zariadenia Reed Contact — 1 = otvorené (alarm), 0 = zatvorené (OK)
Batéria sa rýchlo vybíja
  1. Shelly Door/Window 2 používa 2x CR123A batérie (nie nabíjateľné) s typickou výdržou približne 18 mesiacov
  2. Časté prebúdzania (napr. kvôli nestabilnému Wi-Fi vyžadujúcemu opakované pripájanie alebo veľmi krátkej perióde spánku) môžu batériu vybiť rýchlejšie
  3. Predvolená perióda spánku je 3 minúty — jej zvýšenie cez sleep_mode.period v nastaveniach zariadenia znižuje spotrebu energie
  4. Zabezpečte silný Wi-Fi signál na mieste senzora

Gen1 Shelly zariadenia nepodporujú MQTT cez TLS. Komunikácia medzi senzorom a MQTT brokerom je nešifrovaná (plain MQTT, port 1883). Zabezpečte, aby bol MQTT broker v dôveryhodnej lokálnej sieti.

Ako nainštalovať v TapHome

Predpoklady

  • Zariadenie Shelly pripojené k Wi-Fi (ak ešte nie, pozrite návod na HTTP pripojenie)
  • MQTT broker bežiaci vo vašej lokálnej sieti (napr. Mosquitto, Home Assistant alebo vstavaný broker TapHome)
  • TapHome CCU v rovnakej sieti ako broker

Na zariadeniach Gen1 povolenie MQTT vypne Shelly Cloud. Oboje nemôže bežať súčasne. Na zariadeniach Gen2/Plus toto obmedzenie neplatí.

Krok 1 — Povoľte MQTT na zariadení Shelly

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

  1. Otvorte webové rozhranie Shelly: http://<device-ip>/
  2. Prejdite na Internet & SecurityAdvanced — MQTT
  3. Povoľte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (napr. 192.168.1.10:1883)
  5. Voliteľne nastavte MQTT User a MQTT Password, ak váš broker vyžaduje autentifikáciu
  6. Kliknite na Save — zariadenie sa reštartuje a pripojí k brokeru

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

  1. Otvorte webové rozhranie Shelly: http://<device-ip>/
  2. Prejdite na SettingsMQTT
  3. Povoľte MQTT
  4. Nastavte Server: <broker-ip>:<port> (napr. 192.168.1.10:1883)
  5. Client ID je predvyplnené ID zariadenia (napr. shellyplus1pm-AABBCCDDEE) — ponechajte tak, pokiaľ nemáte konkrétny dôvod na zmenu
  6. Kliknite na Save a reštartujte zariadenie

Na overenie funkčnosti MQTT použite MQTT klienta (napr. MQTT Explorer) a prihláste sa na odber shellies/# (Gen1) alebo <device-id>/# (Gen2). Mali by ste vidieť stavové správy zo zariadenia.

Krok 2 — Zistite Device ID / MQTT Client ID

Niektoré šablóny vyžadujú parameter Device ID alebo MQTT Client ID. Ide o jedinečný identifikátor používaný v MQTT topicoch.

  • Gen1: nachádza sa na štítku ako MAC adresa (napr. AABBCCDDEE). Device ID = shelly<model>-<mac>, napr. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachádza sa vo webovom rozhraní Shelly v časti SettingsDevice InfoDevice ID, alebo na štítku zariadenia

Krok 3 — Konfigurácia v TapHome

  1. V TapHome pridajte nový modul Packet Parser (MQTT)
  2. IP Address: zadajte IP adresu MQTT brokera (napr. 192.168.1.10)
  3. Port: 1883 (predvolený; pre TLS použite 8883)
  4. Device ID / MQTT Client ID: zadajte hodnotu z kroku 2 (ak to šablóna vyžaduje)
  5. Importujte šablónu — TapHome sa automaticky prihlási na odber topicov zariadenia

Dostupné zariadenia

Shelly Door/Window MQTT Modul
Vlastné premenné
sensor1_topic (string) = shellydw2-deviceidMQTT identifikátor senzora dverí/okien 1 — formát je 'shellydw2-DEVICEID' (nájdete vo webovom rozhraní Shelly → Settings → Device Info)
Open http://shellyIpAddress → Settings → Device info → copy Device ID. Format: shellydw2-<last6MAC>
sensor2_topic (string) = shellydw2-deviceidMQTT identifikátor senzora dverí/okien 2
sensor3_topic (string) = shellydw2-deviceidMQTT identifikátor senzora dverí/okien 3
sensor4_topic (string) = shellydw2-deviceidMQTT identifikátor senzora dverí/okien 4
sensor5_topic (string) = shellydw2-deviceidMQTT identifikátor senzora dverí/okien 5
Senzor dverí/okien 1 Jazýčkový kontakt Len na čítanie

Detekcia otvorenia/zatvorenia cez jazýčkový spínač — hlási alarm keď sú dvere/okno otvorené, OK keď zatvorené

boolean
Servisné atribúty
Batéria
Teplota
Osvetlenie

Senzor dverí/okien 1

Listener
IF (INDEXOF(sensor1_topic, "shellydw2-deviceid") = 0)
    ADDERROR("Set correct 'sensor1_topic' value in module variables. Topic format is 'shellydw2-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR topicPrefix := "shellies/" + sensor1_topic;

IF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/state") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "open", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "close", CompareOptions.IgnoreCase) = 0)
        Rc := 0;
    ELSE
        Rc := NaN;
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/temperature") = 0)
    temp := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/battery") = 0)
    battery := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
    IF battery < 20
        ADDWARNING("Battery low (" + battery + "%)");
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/lux") = 0)
    luminance := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Senzor dverí/okien 2 Jazýčkový kontakt Len na čítanie

Detekcia otvorenia/zatvorenia cez jazýčkový spínač — hlási alarm keď sú dvere/okno otvorené, OK keď zatvorené

boolean
Servisné atribúty
Batéria
Teplota
Osvetlenie

Senzor dverí/okien 2

Listener
IF (INDEXOF(sensor2_topic, "shellydw2-deviceid") = 0)
    ADDERROR("Set correct 'sensor2_topic' value in module variables. Topic format is 'shellydw2-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR topicPrefix := "shellies/" + sensor2_topic;

IF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/state") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "open", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "close", CompareOptions.IgnoreCase) = 0)
        Rc := 0;
    ELSE
        Rc := NaN;
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/temperature") = 0)
    temp := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/battery") = 0)
    battery := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
    IF battery < 20
        ADDWARNING("Battery low (" + battery + "%)");
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/lux") = 0)
    luminance := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Senzor dverí/okien 3 Jazýčkový kontakt Len na čítanie

Detekcia otvorenia/zatvorenia cez jazýčkový spínač — hlási alarm keď sú dvere/okno otvorené, OK keď zatvorené

boolean
Servisné atribúty
Batéria
Teplota
Osvetlenie

Senzor dverí/okien 3

Listener
IF (INDEXOF(sensor3_topic, "shellydw2-deviceid") = 0)
    ADDERROR("Set correct 'sensor3_topic' value in module variables. Topic format is 'shellydw2-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR topicPrefix := "shellies/" + sensor3_topic;

IF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/state") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "open", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "close", CompareOptions.IgnoreCase) = 0)
        Rc := 0;
    ELSE
        Rc := NaN;
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/temperature") = 0)
    temp := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/battery") = 0)
    battery := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
    IF battery < 20
        ADDWARNING("Battery low (" + battery + "%)");
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/lux") = 0)
    luminance := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Senzor dverí/okien 4 Jazýčkový kontakt Len na čítanie

Detekcia otvorenia/zatvorenia cez jazýčkový spínač — hlási alarm keď sú dvere/okno otvorené, OK keď zatvorené

boolean
Servisné atribúty
Batéria
Teplota
Osvetlenie

Senzor dverí/okien 4

Listener
IF (INDEXOF(sensor4_topic, "shellydw2-deviceid") = 0)
    ADDERROR("Set correct 'sensor4_topic' value in module variables. Topic format is 'shellydw2-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR topicPrefix := "shellies/" + sensor4_topic;

IF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/state") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "open", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "close", CompareOptions.IgnoreCase) = 0)
        Rc := 0;
    ELSE
        Rc := NaN;
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/temperature") = 0)
    temp := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/battery") = 0)
    battery := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
    IF battery < 20
        ADDWARNING("Battery low (" + battery + "%)");
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/lux") = 0)
    luminance := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Senzor dverí/okien 5 Jazýčkový kontakt Len na čítanie

Detekcia otvorenia/zatvorenia cez jazýčkový spínač — hlási alarm keď sú dvere/okno otvorené, OK keď zatvorené

boolean
Servisné atribúty
Batéria
Teplota
Osvetlenie

Senzor dverí/okien 5

Listener
IF (INDEXOF(sensor5_topic, "shellydw2-deviceid") = 0)
    ADDERROR("Set correct 'sensor5_topic' value in module variables. Topic format is 'shellydw2-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

VAR topicPrefix := "shellies/" + sensor5_topic;

IF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/state") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "open", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "close", CompareOptions.IgnoreCase) = 0)
        Rc := 0;
    ELSE
        Rc := NaN;
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/temperature") = 0)
    temp := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/battery") = 0)
    battery := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
    IF battery < 20
        ADDWARNING("Battery low (" + battery + "%)");
    END
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, topicPrefix + "/sensor/lux") = 0)
    luminance := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Pripojenie: Packet Parser → MQTT
Možné vylepšenia (4)
  • Tilt Angle — Tilt angle in degrees (0-180), DW2 only. Available in MQTT but not mapped in the TapHome listener script.
  • Vibration Detection — Vibration detection (0=none, 1=detected). Configurable sensitivity (high/medium/low). Available in MQTT but not mapped in the TapHome listener script.
  • Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline sensors.
  • Full Status JSON — Complete /status as JSON (fw >=1.8.0). Could parse wifi_sta.rssi, battery, act_reasons.

Zdroje

Našli ste problém s touto šablónou zariadenia?

Napíšte nám, čo nefunguje, čo chýba, alebo ako by sa mala šablóna správať. Vaša spätná väzba nám pomáha udržiavať katalóg presný.

Overené TapHomom

Chcete to použiť vo svojom TapHome jadre?

Otvorte túto šablónu v Customer Portali a aplikujte ju na svoj domov, alebo navrhnite zmenu a odošlite ju späť do katalógu.

Otvoriť v portáli