TapHome

Shelly Door/Window 2

Packet Parser → MQTT
Autor
Posljednje ažuriranje: 10. 2026

Ovaj uređaj podržava mDNS

Umjesto IP adrese uređaju možete pristupiti na adresi:

shellydw2-{MAC}.local

Zamijenite {MAC} MAC adresom svog uređaja (velika slova, bez dvotočaka).

TapHome podržava mDNS. Naziv računala (hostname) pouzdaniji je od statične IP adrese.

Shelly Door/Window 2

Shelly Door/Window 2 (SHDW-2) je Wi-Fi kontaktni senzor na baterije (2× CR123A). TapHome s uređajem komunicira preko MQTT-a, što je preporučeni protokol za uređaje Shelly na baterije: senzor većinu vremena spava i podatke objavljuje samo kada se probudi (promjena položaja magneta, vibracija, promjena osvijetljenosti ili periodički timer).

Predložak podržava do 5 senzora Shelly Door/Window po modulu. Svaki se senzor razlikuje po korisničkoj varijabli sensorN_topic koja upućuje na MQTT Client ID uređaja.

Konfiguracija

Device ID

Svaki senzor Shelly Door/Window 2 ima jedinstveni MQTT Device ID u obliku shellydw2-<MAC6>, gdje je <MAC6> zadnjih 6 znakova MAC adrese u heksadecimalnom zapisu (npr. shellydw2-A1B2C3).

Device ID možete pronaći:

  • Na naljepnici uređaja (MAC adresa)
  • U web-sučelju Shelly: Settings → Device Info
  • Preko API-ja: GET http://<device-ip>/settings → polje device.hostname

Ovaj uređaj podržava otkrivanje preko mDNS-a. Pri konfiguraciji sustava TapHome umjesto IP adrese možete koristiti naziv hosta shellydw2-{MAC}.local. Zamijenite {MAC} sa zadnjih 6 znakova MAC adrese uređaja malim slovima u heksadecimalnom zapisu (npr. shellydw2-A1B2C3.local). Naziv hosta sprječava prekide veze kada se IP adresa uređaja promijeni.

Postavljanje predloška

Nakon uvoza predloška u TapHome:

  1. Otvorite modul Shelly Door/Window MQTT
  2. Postavite MQTT Broker IP i Port (zadano 1883)
  3. Za svaki senzor postavite korisničku varijablu sensorN_topic na Device ID odgovarajućeg senzora Shelly Door/Window 2 (npr. shellydw2-A1B2C3)

Modul se pretplaćuje na shellies/#, a skripte za primanje poruka filtriraju poruke prema postavljenom prefiksu teme.

Konfigurirajte samo mjesta za senzore koja stvarno koristite. Nekonfigurirana mjesta (sa zadanom vrijednošću shellydw2-deviceid) prikazat će poruku o pogrešci s upozorenjem da treba postaviti ispravnu temu.

Mogućnosti uređaja

Prepoznavanje otvaranja i zatvaranja

Svaki je senzor u sustavu TapHome prikazan kao uređaj vrste „Magnetski kontakt” (Reed Contact). Stanje vrata ili prozora čita se iz teme shellies/<id>/sensor/state:

  • open → Alarm (vrata/prozor otvoreni)
  • close → OK (vrata/prozor zatvoreni)

Senzor se budi i objavljuje stanje kada se magnet pomakne (vrata ili prozor se otvore ili zatvore), a i u periodičkim intervalima javljanja (zadano svake 3 minute).

Praćenje baterije, temperature i osvijetljenosti

Svaki senzor ima tri servisna atributa:

  • Baterija: razina baterije u postocima iz teme shellies/<id>/sensor/battery. Upozorenje o slaboj bateriji javlja se kada razina padne ispod 20 %.
  • Temperatura: temperatura okoline u °C iz teme shellies/<id>/sensor/temperature.
  • Osvijetljenost: razina svjetla u okolini u luksima iz teme shellies/<id>/sensor/lux.

Svi su atributi samo za čitanje i ažuriraju se kad god se senzor probudi i objavi podatke.

Dodatne mogućnosti (nisu implementirane)

Shelly Door/Window 2 preko MQTT-a objavljuje i kut nagiba (0–180 stupnjeva) i prepoznavanje vibracija, kao i stanje online/offline preko teme LWT. Te su mogućnosti dostupne u MQTT porukama uređaja, ali nisu mapirane u trenutačnom predlošku TapHome. Mogu se dodati u budućem ažuriranju predloška.

Rješavanje problema

Senzor ne šalje podatke
  1. Provjerite je li Shelly Door/Window 2 spojen na Wi-Fi i je li MQTT uključen u postavkama uređaja
  2. Provjerite odgovara li korisnička varijabla sensorN_topic točno Device ID-u (npr. shellydw2-A1B2C3)
  3. Ako se adresa MQTT brokera promijenila, ažurirajte adresu brokera u MQTT postavkama senzora (najprije probudite senzor kako bi njegovo web-sučelje bilo dostupno)
  4. MQTT klijentom (npr. MQTT Explorer) pretplatite se na shellies/# i provjerite objavljuje li senzor poruke kada se probudi
Stanje otvaranja i zatvaranja se ne ažurira
  1. Provjerite je li magnet ispravno poravnat s glavnom jedinicom: kada su vrata ili prozor zatvoreni, magnet mora biti na udaljenosti do 15 mm od senzora
  2. Ako je senzor nedavno premješten, ponovno ga kalibrirajte preko krajnje točke za kalibraciju (GET http://<device-ip>/calibrate?opened=1) dok su vrata ili prozor otvoreni
  3. U sustavu TapHome provjerite stanje uređaja magnetski kontakt: 1 = otvoreno (alarm), 0 = zatvoreno (OK)
Baterija se brzo prazni
  1. Shelly Door/Window 2 koristi dvije nepunjive baterije CR123A, čiji je uobičajeni vijek trajanja oko 18 mjeseci
  2. Česta buđenja (npr. zbog nestabilnog Wi-Fi signala koji traži ponovno spajanje ili zbog vrlo kratkog razdoblja spavanja) mogu brže isprazniti bateriju
  3. Zadano razdoblje spavanja je 3 minute: produljenjem preko sleep_mode.period u postavkama uređaja smanjuje se potrošnja energije
  4. Osigurajte jak Wi-Fi signal na mjestu senzora

Uređaji Shelly Gen1 ne podržavaju MQTT preko TLS-a. Komunikacija između senzora i MQTT brokera nije šifrirana (obični MQTT, port 1883). Pobrinite se da je MQTT broker u pouzdanoj lokalnoj mreži.

Kako ga instalirati u TapHome

Preduvjeti

  • Uređaj Shelly spojen na Wi-Fi (2,4 GHz), npr. putem aplikacije Shelly ili vlastite pristupne točke uređaja
  • MQTT broker koji radi u vašoj lokalnoj mreži (npr. Mosquitto, Home Assistant ili ugrađeni broker TapHome)
  • TapHome CCU u istoj mreži kao broker

Na uređajima Gen1 uključivanje MQTT-a isključuje Shelly Cloud. MQTT i Shelly Cloud ne mogu raditi istodobno. Na uređajima Gen2/Plus to ograničenje ne vrijedi.

Korak 1 — Uključite MQTT na uređaju Shelly

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

  1. Otvorite web-sučelje Shelly: http://<device-ip>/
  2. Idite na Internet & Security → Advanced — MQTT
  3. Uključite MQTT
  4. Postavite MQTT Server: <broker-ip>:<port> (npr. 192.168.1.10:1883)
  5. Ako vaš broker zahtijeva autentifikaciju, postavite MQTT User i MQTT Password
  6. Kliknite Save — uređaj će se ponovno pokrenuti i spojiti na broker

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

  1. Otvorite web-sučelje Shelly: http://<device-ip>/
  2. Idite na Settings → MQTT
  3. Uključite MQTT
  4. Postavite Server: <broker-ip>:<port> (npr. 192.168.1.10:1883)
  5. Client ID je unaprijed popunjen ID-jem uređaja (npr. shellyplus1pm-AABBCCDDEE) — ostavite ga takvim, osim ako ga iz određenog razloga trebate promijeniti
  6. Kliknite Save i ponovno pokrenite uređaj

Za provjeru rada MQTT-a koristite MQTT klijent (npr. MQTT Explorer) i pretplatite se na shellies/# (Gen1) ili <device-id>/# (Gen2). Trebali biste vidjeti statusne poruke uređaja.

Korak 2 — Pronađite Device ID / MQTT Client ID

Neki predlošci zahtijevaju parametar Device ID ili MQTT Client ID. To je jedinstveni identifikator koji se koristi u MQTT temama (topics).

  • Gen1: nalazi se na naljepnici kao MAC adresa (npr. AABBCCDDEE). Device ID = shelly<model>-<mac>, npr. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nalazi se u web-sučelju Shelly pod Settings → Device Info → Device ID ili na naljepnici uređaja

Korak 3 — Konfiguracija u sustavu TapHome

  1. U sustavu TapHome dodajte novi modul Packet Parser (MQTT)
  2. IP adresa: unesite IP adresu MQTT brokera (npr. 192.168.1.10)
  3. Port: 1883 (zadano; za TLS koristite 8883)
  4. Device ID / MQTT Client ID: unesite vrijednost iz koraka 2 (ako je predložak zahtijeva)
  5. Uvezite predložak — TapHome će se automatski pretplatiti na teme uređaja

Dostupni uređaji

Shelly Door/Window MQTT Modul
Prilagođene varijable
sensor1_topic (string) = shellydw2-deviceidMQTT Device ID senzora vrata/prozora 1 — oblik je 'shellydw2-DEVICEID' (Device ID pronađite u web-sučelju Shelly → Settings → Device Info)
Open http://shellyIpAddress → Settings → Device info → copy Device ID. Format: shellydw2-<last6MAC>
sensor2_topic (string) = shellydw2-deviceidMQTT Device ID senzora vrata/prozora 2
sensor3_topic (string) = shellydw2-deviceidMQTT Device ID senzora vrata/prozora 3
sensor4_topic (string) = shellydw2-deviceidMQTT Device ID senzora vrata/prozora 4
sensor5_topic (string) = shellydw2-deviceidMQTT Device ID senzora vrata/prozora 5
Senzor vrata/prozora 1 Magnetski kontakt Samo za čitanje

Prepoznavanje otvaranja i zatvaranja preko magnetskog kontakta — javlja alarm kada su vrata/prozor otvoreni, OK kada su zatvoreni

boolean
Servisni atributi
Baterija
Temperatura
Osvijetljenost

Senzor vrata/prozora 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
Servisni atributi
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Senzor vrata/prozora 2 Magnetski kontakt Samo za čitanje

Prepoznavanje otvaranja i zatvaranja preko magnetskog kontakta — javlja alarm kada su vrata/prozor otvoreni, OK kada su zatvoreni

boolean
Servisni atributi
Baterija
Temperatura
Osvijetljenost

Senzor vrata/prozora 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
Servisni atributi
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Senzor vrata/prozora 3 Magnetski kontakt Samo za čitanje

Prepoznavanje otvaranja i zatvaranja preko magnetskog kontakta — javlja alarm kada su vrata/prozor otvoreni, OK kada su zatvoreni

boolean
Servisni atributi
Baterija
Temperatura
Osvijetljenost

Senzor vrata/prozora 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
Servisni atributi
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Senzor vrata/prozora 4 Magnetski kontakt Samo za čitanje

Prepoznavanje otvaranja i zatvaranja preko magnetskog kontakta — javlja alarm kada su vrata/prozor otvoreni, OK kada su zatvoreni

boolean
Servisni atributi
Baterija
Temperatura
Osvijetljenost

Senzor vrata/prozora 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
Servisni atributi
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Senzor vrata/prozora 5 Magnetski kontakt Samo za čitanje

Prepoznavanje otvaranja i zatvaranja preko magnetskog kontakta — javlja alarm kada su vrata/prozor otvoreni, OK kada su zatvoreni

boolean
Servisni atributi
Baterija
Temperatura
Osvijetljenost

Senzor vrata/prozora 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
Servisni atributi
Battery
battery + "%"
Temperature
temp + "°C"
Luminance
luminance + " lux"
Povezivanje: Packet Parser → MQTT • Naziv računala (hostname): shellydw2-{MAC}.local
Moguća poboljšanja (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.

Izvori

Pronašli ste problem s ovim predloškom uređaja?

Recite nam što ne radi, što nedostaje ili kako bi se predložak trebao ponašati. Vaše povratne informacije pomažu nam da katalog bude točan.

Provjerio TapHome

Želite ovo koristiti u svojoj centralnoj jedinici TapHome Core?

Otvorite ovaj predložak na portalu Customer Portal kako biste ga primijenili na jedan od svojih domova ili predložili poboljšanje i poslali ga natrag u katalog.

Otvorite na portalu