TapHome

Shelly Flood

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 06. 2026
Shelly Flood

Shelly Flood je batériový (CR123A) Wi-Fi senzor úniku vody. TapHome komunikuje so zariadením cez MQTT — odporúčaný protokol pre batériové Shelly zariadenia, keďže senzor väčšinu času spí a dáta publikuje iba pri udalostiach prebudenia.

Šablóna podporuje až 5 senzorov Shelly Flood na jeden modul. Každá inštancia senzora sa rozlišuje premennou sensorN_topic, ktorá odkazuje na MQTT Client ID zariadenia.

Konfigurácia

Device ID

Každý senzor Shelly Flood má jedinečné MQTT Device ID vo formáte shellyflood-<MAC6>, kde <MAC6> je posledných 6 znakov MAC adresy v malých písmenách (hex), napr. shellyflood-112233.

Device ID možno nájsť:

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

Zariadenie podporuje mDNS discovery. Pri konfigurácii TapHome môžete namiesto IP adresy použiť hostname shellyflood-{MAC}.local. Nahraďte {MAC} poslednými 6 znakmi MAC adresy v malých písmenách (napr. shellyflood-112233.local). Hostname zabraňuje výpadkom komunikácie pri zmene IP adresy zariadenia.

Nastavenie šablóny

Po importovaní šablóny v TapHome:

  1. Otvorte modul Shelly Flood MQTT
  2. Nastavte IP adresu MQTT Brokera a Port (predvolene 1883)
  3. Pre každú inštanciu senzora nastavte premennú sensorN_topic na Device ID príslušného Shelly Flood (napr. shellyflood-112233)

Modul sa prihlási na odber shellies/# a listenery v skriptoch filtrujú správy podľa nastaveného prefixu topicu.

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

Schopnosti zariadenia

Detekcia úniku vody

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

  • trueAlarm (voda detekovaná)
  • falseOK (sucho)

Senzor sa prebudí a publikuje stav pri detekcii vody alebo jej odoznení, ako aj v pravidelných reportovacích intervaloch.

Monitorovanie batérie a teploty

Každá inštancia senzora vystavuje dva servisné atribúty:

  • Battery — percento nabitia batérie čítané z shellies/<id>/sensor/battery. Upozornenie na nízku batériu sa aktivuje pri poklese pod 20 %.
  • Temperature — okolná teplota v °C čítaná z shellies/<id>/sensor/temperature.

Oba atribúty sú len na čítanie a aktualizujú sa pri každom prebudení senzora.

Ďalšie schopnosti

Shelly Flood tiež publikuje stav online/offline cez MQTT Last Will and Testament (LWT) topic a plnú JSON správu o stave (firmware ≥1.8.0). K dispozícii je nastavenie rain_sensor, ktoré invertuje logiku detekcie záplavy pre použitie ako detektor dažďa vonku. Tieto funkcie možno pridať v budúcej aktualizácii šablóny.

Riešenie problémov

Senzor nepublikuje dáta
  1. Overte, že Shelly Flood je pripojený k Wi-Fi a že je v nastaveniach zariadenia povolený MQTT
  2. Skontrolujte, že premenná sensorN_topic presne zodpovedá Device ID (napr. shellyflood-112233)
  3. Ak sa adresa MQTT brokera zmenila, vyskúšajte mDNS hostname (shellyflood-AABBCCDDEE.local) na overenie dostupnosti senzora v sieti
  4. Použite MQTT klienta (napr. MQTT Explorer) na odber shellies/# a overte, či senzor publikuje správy pri prebudení
Alarmový stav úniku sa nespúšťa
  1. Skontrolujte, či sú kontakty na spodku zariadenia čisté a bez prekážok
  2. Otestujte priložením senzora na mokrý povrch — zariadenie by malo do niekoľkých sekúnd publikovať true na topic /sensor/flood
  3. Skontrolujte stav zariadenia Reed Contact v TapHome — 1 = alarm, 0 = OK
Rýchle vybíjanie batérie
  1. Shelly Flood je navrhnutý pre dlhú životnosť batérie (CR123A, typicky 1–2 roky v závislosti od frekvencie reportovania)
  2. Časté prebúdzanie (napr. kvôli nestabilnému Wi-Fi signálu vyžadujúcemu opakované reconnekty) môže batériu vybiť rýchlejšie
  3. Uistite sa, že je na mieste inštalácie senzora dostatočne silný Wi-Fi signál

Zariadenia Shelly Gen1 nepodporujú MQTT cez TLS. Komunikácia medzi senzorom a MQTT brokerom je nešifrovaná (plain MQTT, port 1883). Uistite sa, že MQTT broker je 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 Flood MQTT Modul
Vlastné premenné
sensor1_topic (string) = shellyflood-deviceidNázov MQTT topicu senzora zaplavenia 1 — formát je 'shellyflood-DEVICEID' (Device ID nájdete v Shelly web UI → Settings → Device Info)
sensor2_topic (string) = shellyflood-deviceidNázov MQTT topicu senzora zaplavenia 2
sensor3_topic (string) = shellyflood-deviceidNázov MQTT topicu senzora zaplavenia 3
sensor4_topic (string) = shellyflood-deviceidNázov MQTT topicu senzora zaplavenia 4
sensor5_topic (string) = shellyflood-deviceidNázov MQTT topicu senzora zaplavenia 5
Senzor zaplavenia 1 Jazýčkový kontakt Len na čítanie

Detekcia úniku vody — hlási alarm pri prítomnosti vody, OK keď je sucho

boolean
Servisné atribúty
Batéria
Teplota

Senzor zaplavenia 1

Listener
IF (INDEXOF(sensor1_topic, "shellyflood-deviceid") = 0)
    ADDERROR("Set correct 'sensor1_topic' value in module variables. Topic format is 'shellyflood-<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/flood") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "true", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "false", 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
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Senzor zaplavenia 2 Jazýčkový kontakt Len na čítanie

Detekcia úniku vody — hlási alarm pri prítomnosti vody, OK keď je sucho

boolean
Servisné atribúty
Batéria
Teplota

Senzor zaplavenia 2

Listener
IF (INDEXOF(sensor2_topic, "shellyflood-deviceid") = 0)
    ADDERROR("Set correct 'sensor2_topic' value in module variables. Topic format is 'shellyflood-<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/flood") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "true", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "false", 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
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Senzor zaplavenia 3 Jazýčkový kontakt Len na čítanie

Detekcia úniku vody — hlási alarm pri prítomnosti vody, OK keď je sucho

boolean
Servisné atribúty
Batéria
Teplota

Senzor zaplavenia 3

Listener
IF (INDEXOF(sensor3_topic, "shellyflood-deviceid") = 0)
    ADDERROR("Set correct 'sensor3_topic' value in module variables. Topic format is 'shellyflood-<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/flood") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "true", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "false", 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
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Senzor zaplavenia 4 Jazýčkový kontakt Len na čítanie

Detekcia úniku vody — hlási alarm pri prítomnosti vody, OK keď je sucho

boolean
Servisné atribúty
Batéria
Teplota

Senzor zaplavenia 4

Listener
IF (INDEXOF(sensor4_topic, "shellyflood-deviceid") = 0)
    ADDERROR("Set correct 'sensor4_topic' value in module variables. Topic format is 'shellyflood-<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/flood") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "true", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "false", 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
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Senzor zaplavenia 5 Jazýčkový kontakt Len na čítanie

Detekcia úniku vody — hlási alarm pri prítomnosti vody, OK keď je sucho

boolean
Servisné atribúty
Batéria
Teplota

Senzor zaplavenia 5

Listener
IF (INDEXOF(sensor5_topic, "shellyflood-deviceid") = 0)
    ADDERROR("Set correct 'sensor5_topic' value in module variables. Topic format is 'shellyflood-<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/flood") = 0)
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);

    IF (COMPARE(value, "true", CompareOptions.IgnoreCase) = 0)
        Rc := 1;
    ELSEIF (COMPARE(value, "false", 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
END
Servisné atribúty
Battery
battery + "%"
Temperature
temp + "°C"
Pripojenie: Packet Parser → MQTT
Možné vylepšenia (2)
  • 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