TapHome

Shelly UNI

Packet Parser → MQTT
Dodane przez
Ostatnia aktualizacja: 04. 2026
Shelly UNI

Shelly UNI to kompaktowy uniwersalny moduł Wi-Fi I/O (20 × 33 × 13 mm) z platformy Shelly Gen1. Udostępnia jedno wejście napięciowe ADC, dwa bezpotencjałowe wyjścia open-collector oraz dwa wejścia cyfrowe — przeznaczony do doposażenia starszych urządzeń bez centrali.

TapHome komunikuje się z urządzeniem przez MQTT. Szablon subskrybuje drzewo tematów shellies/<prefix>/... i publikuje polecenia do .../relay/{0,1}/command. Moduł udostępnia 5 urządzeń: 1 wejście analogowe, 2 przełączniki i 2 kontakty reed.

Połączenie sprzętowe

Zasilanie

Shelly UNI to moduł niskonapięciowy i nie może być zasilany bezpośrednio z sieci 230 V. Zasil go:

  • 12–36 V DC przez przewód czerwony (+) i czarny (GND), lub
  • 12–24 V AC przez przewód czerwony i czarny (bez polaryzacji)

Wymagany jest zewnętrzny zasilacz niskonapięciowy. Pobór mocy urządzenia wynosi poniżej 1 W.

Nie podłączaj przewodu czerwonego/czarnego do napięcia sieciowego. Na zaciskach IN_1 / IN_2 / OUT1 / OUT2 może w zależności od obwodu zewnętrznego występować niebezpieczne napięcie — instalację musi wykonać wykwalifikowany elektryk.

Oznaczenia przewodu pigtail

Urządzenie dostarczane jest z kolorowo oznaczonym przewodem pigtail:

PrzewódZaciskFunkcja
CzerwonyVCC12–36 V DC (lub 12–24 V AC razem z czarnym)
CzarnyGNDMasa (lub faza AC z czerwonym)
BiałyADC_INWejście analogowe (zakres 0–12 V lub 0–30 V)
ŻółtyVCC_SENSORWyjście 3,3 V DC dla czujników one-wire
NiebieskiDATA_SENSORDane one-wire (DS18B20 / DHT22)
ZielonyGND_SENSORMasa czujnika
JasnobrązowyIN_1Wejście cyfrowe 1
CiemnobrązowyIN_2Wejście cyfrowe 2

Dwa bezpotencjałowe wyjścia są oznaczone na obudowie modułu jako OUT1 i OUT2.

Wejścia cyfrowe (IN_1, IN_2)

Każde wejście cyfrowe jest bezpotencjałowe i może być sterowane źródłem DC lub AC:

  • DC: HIGH przy ≥ 2,2 V, LOW poniżej 2,2 V, maks. 36 V DC
  • AC: HIGH przy ≥ 12 V, LOW poniżej 12 V, maks. 24 V AC

Typowe zastosowania to kontakty reed (czujniki okien/drzwi, wyłączniki pływakowe) oraz przyciski zwierające wejście do GND przez zewnętrzne zasilanie.

Schemat podłączenia kontaktu reed Shelly UNI z zasilaniem DC
Schemat podłączenia kontaktu reed Shelly UNI z zasilaniem AC
Schemat podłączenia przycisku/przełącznika Shelly UNI z zasilaniem DC
Schemat podłączenia przycisku/przełącznika Shelly UNI z zasilaniem AC
Wyjścia bezpotencjałowe (OUT1, OUT2)

Każde wyjście to bezpotencjałowy kontakt open-collector z następującymi wartościami granicznymi:

  • maksymalny prąd 100 mA
  • maksymalna moc 300 mW
  • maksymalne napięcie łączeniowe 24 V AC lub 36 V DC

Te parametry są zbyt niskie dla obciążeń sieciowych — do przełączania rzeczywistych obciążeń (oświetlenie, pompy, zawory) podłącz wyjścia do zewnętrznego przekaźnika lub stycznika i zasil jego cewkę z odpowiedniego źródła niskonapięciowego.

Schemat okablowania bezpotencjałowego wyjścia Shelly UNI
Wejście analogowe (ADC)

Jeden kanał ADC na białym przewodzie (ADC_IN) obsługuje dwa zakresy napięciowe, wybierane w interfejsie webowym Shelly:

  • 0–12 V — wyższa rozdzielczość dla sygnałów niskonapięciowych
  • 0–30 V — szerszy zakres do monitorowania baterii / szyny DC

Wybrany zakres jest zapisywany tylko w urządzeniu — szablon TapHome odczytuje surową publikowaną wartość i nie wykrywa, który zakres jest aktywny. Upewnij się, że zakres ADC Shelly odpowiada sygnałowi podłączonemu do białego przewodu.

Schemat okablowania wejścia ADC Shelly UNI

Konfiguracja

Shelly-ID i prefiks MQTT

Każdy Shelly UNI ma unikalne Shelly-ID równe ostatnim 6 znakom jego adresu MAC (np. 35FA58). Wynikowy prefiks tematu MQTT to shellyuni-<Shelly-ID> (np. shellyuni-35fa58).

Shelly-ID znajdziesz:

  • Na etykiecie urządzenia (adres MAC)
  • W interfejsie webowym Shelly: SettingsDevice Info
  • Przez API: GET http://<device-ip>/settings → pole device.hostname

Urządzenia Shelly Gen1 ogłaszają się przez mDNS jako shellyuni-<Shelly-ID>.local. Możesz użyć tej nazwy hosta zamiast stałego adresu IP, aby dotrzeć do interfejsu webowego.

Włączenie MQTT

W nowym urządzeniu MQTT jest wyłączony. Włącz go przed importem szablonu TapHome:

  1. Połącz się z punktem dostępowym urządzenia shellyuni-XXXXXX (hasło jest wydrukowane na urządzeniu) lub znajdź go w sieci lokalnej
  2. Otwórz interfejs webowy pod adresem http://192.168.33.1/ (tryb AP) lub pod adresem LAN IP
  3. Przejdź do Internet & SecurityAdvanced — Developer Settings
  4. Zaznacz Enable action execution via MQTT
  5. Ustaw IP i port brokera (domyślnie 1883), pola użytkownika i hasła pozostaw puste — TapHome nie obsługuje uwierzytelniania MQTT w Gen1
  6. Zapisz i zrestartuj urządzenie

Włączenie MQTT wyłącza połączenie z Shelly Cloud w urządzeniach Gen1. Jest to zamierzone — urządzenie nie może utrzymać obu połączeń jednocześnie. Aplikacja mobilna Shelly nie będzie już sterować urządzeniem przez chmurę; używaj MQTT lub lokalnego interfejsu webowego.

Urządzenia Shelly Gen1 nie obsługują MQTT po TLS. Komunikacja pomiędzy urządzeniem a brokerem jest nieszyfrowana (zwykły MQTT, port 1883). Trzymaj brokera w zaufanej sieci lokalnej.

Konfiguracja szablonu

Podczas importu szablonu do TapHome podaj:

  • IpAddress — adres IP brokera MQTT
  • Port — port brokera (domyślnie 1883)
  • DeviceID — 6-znakowe Shelly-ID konkretnego UNI (np. 35fa58)

Parametr importu DeviceID służy do zbudowania zmiennej custom MQTTprefix (domyślnie shellyuni-$[DeviceID]). Jeśli ustawiłeś na urządzeniu Shelly własne mqtt_id (nadpisujące domyślne), po imporcie zmodyfikuj w module zmienną MQTTprefix, aby się zgadzała.

Wyłącz uwierzytelnianie HTTP na urządzeniu Shelly (Internet & SecurityRestrict Login). TapHome w tym szablonie nie używa HTTP, ale pozostawione uwierzytelnianie może skomplikować diagnostykę i aktualizacje firmware’u.

Możliwości urządzenia

Pomiar napięcia analogowego

Urządzenie Analog Input odczytuje napięcie ADC z shellies/<prefix>/adc/0 i udostępnia je jako wartość liczbową w woltach. Skrypt parsuje przychodzący payload przez TODOUBLE(TOSTRING(PAYLOAD)) — bez skalowania.

Rzeczywisty zakres pomiaru (0–12 V lub 0–30 V) jest skonfigurowany bezpośrednio na urządzeniu Shelly i nie jest wysyłany przez MQTT. Szablon TapHome nie może zweryfikować, który zakres jest aktywny.

Wyjścia przełączające

Oba wyjścia open-collector są udostępnione jako standardowe urządzenia Switch w TapHome:

  • Switch 1 — OUT_1, temat shellies/<prefix>/relay/0, temat poleceń .../relay/0/command
  • Switch 2 — OUT_2, temat shellies/<prefix>/relay/1, temat poleceń .../relay/1/command

Listener mapuje payload on → ON (St=1) oraz off → OFF (St=0). Polecenia z TapHome są publikowane jako on / off na odpowiedni temat poleceń.

Wyjścia są bezpotencjałowe i ograniczone do 100 mA / 300 mW. Nie podłączaj obciążeń sieciowych bezpośrednio — do wszystkiego cięższego niż urządzenia sygnalizacyjne niskiej mocy użyj zewnętrznego przekaźnika lub stycznika.

Wejścia cyfrowe (kontakty reed)

Oba wejścia cyfrowe są udostępnione jako urządzenia Reed Contact z odwróconą logiką:

  • Reed Contact 1 — IN_1, temat shellies/<prefix>/input/0
  • Reed Contact 2 — IN_2, temat shellies/<prefix>/input/1

Firmware Shelly publikuje 1, gdy wejście widzi napięcie powyżej progu, oraz 0, gdy wejście jest ściągnięte do GND. Ponieważ kontakty reed i przyciski zazwyczaj zwierają wejście do GND w stanie zamkniętym / aktywnym, skrypt TapHome odwraca payload:

1
Rc := IF(payload = "0", 1, 0)

Oznacza to, że Rc=1 w TapHome = kontakt zamknięty (aktywny, czujnik otwarcia okna wyzwolony, przycisk wciśnięty), Rc=0 = kontakt otwarty (nieaktywny).

Dodatkowe możliwości

Sprzęt Shelly UNI obsługuje również do 3 × DS18B20 czujników temperatury na magistrali one-wire oraz — alternatywnie — 1 × DHT22 czujnik wilgotności/temperatury. Te czujniki publikują na shellies/<prefix>/ext_temperature/{0,1,2} i shellies/<prefix>/ext_humidity/0. Obecny szablon MQTT nie podłącza tych tematów do urządzeń TapHome; mogą zostać dodane w przyszłej aktualizacji szablonu.

Podobnie urządzenie udostępnia temat online/offline LWT oraz zdarzenia wejściowe (input events) krótkiego/długiego naciśnięcia na input_event/{0,1}, które nie są wykorzystywane przez ten szablon.

Dla wyzwalaczy scen opartych na zdarzeniach przycisków (krótkie, długie naciśnięcie) temat input_event można dziś subskrybować z osobnego klienta MQTT — szablon TapHome śledzi tylko surowy stan wejścia.

Rozwiązywanie problemów

Urządzenie nie odpowiada
  1. Sprawdź, czy Shelly UNI jest zasilany (czerwony/czarny na 12–36 V DC lub 12–24 V AC) i podłączony do Wi-Fi
  2. Otwórz interfejs webowy Shelly przez nazwę hosta mDNS shellyuni-<Shelly-ID>.local lub jego IP DHCP
  3. Sprawdź, czy MQTT jest włączony (Internet & SecurityAdvanced) i czy IP/port brokera odpowiadają parametrom importu TapHome
  4. Użyj klienta MQTT (np. MQTT Explorer), aby zasubskrybować shellies/# i zweryfikować, że urządzenie publikuje wiadomości
Przełączniki się nie przełączają
  1. Sprawdź ścieżkę tematu poleceń — musi być shellies/<prefix>/relay/0/command (nie .../relay/0/set)
  2. Upewnij się, że zmienna MQTTprefix modułu TapHome odpowiada prefiksowi tematu, na którym urządzenie rzeczywiście publikuje
  3. Pamiętaj, że wyjścia są bezpotencjałowe — bez zewnętrznego obwodu dostarczającego napięcie stan wyjścia się zmienia, ale żadne obciążenie nie jest przełączane
Stan kontaktu reed jest odwrócony

Szablon zakłada, że payload=0 oznacza „kontakt zamknięty". Jeśli okablowanie zewnętrzne podnosi wejście do HIGH, gdy kontakt jest aktywny (odwrotne okablowanie), stan w TapHome pojawi się odwrócony. Przepodłącz tak, aby kontakt w stanie aktywnym zwierał IN_1 / IN_2 do GND, lub dostosuj logikę we własnym skrypcie.

Wartość ADC poza oczekiwanym zakresem

Zakres ADC (0–12 V lub 0–30 V) jest ustawiany na urządzeniu i nie można go odczytać zwrotnie przez MQTT. Jeśli wartość liczbowa w TapHome wygląda błędnie (np. 2× wyższa lub niższa niż oczekiwana), otwórz interfejs webowy Shelly i sprawdź SettingsADC range. Szablon zakłada, że urządzenie publikuje napięcie bezpośrednio i nie przeprowadza konwersji.

Jak zainstalować w TapHome

Wymagania wstępne

  • Urządzenie Shelly połączone z Wi-Fi (jeśli jeszcze nie, zobacz przewodnik po połączeniu HTTP)
  • Broker MQTT działający w sieci lokalnej (np. Mosquitto, Home Assistant lub wbudowany broker TapHome)
  • TapHome CCU w tej samej sieci co broker

Na urządzeniach Gen1 włączenie MQTT wyłącza Shelly Cloud. Oba nie mogą działać jednocześnie. Na urządzeniach Gen2/Plus to ograniczenie nie obowiązuje.

Krok 1 — Włącz MQTT na urządzeniu Shelly

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

  1. Otwórz interfejs webowy Shelly: http://<device-ip>/
  2. Przejdź do Internet & SecurityAdvanced — MQTT
  3. Włącz MQTT
  4. Ustaw MQTT Server: <broker-ip>:<port> (np. 192.168.1.10:1883)
  5. Opcjonalnie ustaw MQTT User i MQTT Password, jeśli broker wymaga uwierzytelniania
  6. Kliknij Save — urządzenie zrestartuje się i połączy z brokerem

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

  1. Otwórz interfejs webowy Shelly: http://<device-ip>/
  2. Przejdź do SettingsMQTT
  3. Włącz MQTT
  4. Ustaw Server: <broker-ip>:<port> (np. 192.168.1.10:1883)
  5. Client ID jest wstępnie wypełnione identyfikatorem urządzenia (np. shellyplus1pm-AABBCCDDEE) — pozostaw bez zmian, chyba że masz konkretny powód do zmiany
  6. Kliknij Save i zrestartuj urządzenie

Aby sprawdzić, czy MQTT działa, użyj klienta MQTT (np. MQTT Explorer) i zasubskrybuj shellies/# (Gen1) lub <device-id>/# (Gen2). Powinieneś zobaczyć komunikaty o stanie z urządzenia.

Krok 2 — Znajdź Device ID / MQTT Client ID

Niektóre szablony wymagają parametru Device ID lub MQTT Client ID. Jest to unikalny identyfikator używany w topikach MQTT.

  • Gen1: znajduje się na etykiecie jako adres MAC (np. AABBCCDDEE). Device ID = shelly<model>-<mac>, np. shelly1pm-AABBCCDDEE
  • Gen2/Plus: znajduje się w interfejsie webowym Shelly w sekcji SettingsDevice InfoDevice ID lub na etykiecie urządzenia

Krok 3 — Konfiguracja w TapHome

  1. W TapHome dodaj nowy moduł Packet Parser (MQTT)
  2. IP Address: wprowadź adres IP brokera MQTT (np. 192.168.1.10)
  3. Port: 1883 (domyślny; użyj 8883 dla TLS)
  4. Device ID / MQTT Client ID: wprowadź wartość z kroku 2 (jeśli wymagane przez szablon)
  5. Zaimportuj szablon — TapHome automatycznie zasubskrybuje topiki urządzenia

Dostępne urządzenia

Shelly UNI Moduł
Zmienne niestandardowe
MQTTprefix (string) = shellyuni-$[DeviceID]Prefiks tematu MQTT urządzenia Shelly UNI — domyślnie shellyuni-{DeviceID}, używany jako podstawa dla wszystkich subskrybowanych/publikowanych tematów
Pass DeviceID as import parameter; find it in the Shelly web UI → Settings → Device Info (last 6 characters of MAC address). Custom mqtt_id set on the Shelly device overrides this default.
Wejście analogowe Zmienna Tylko do odczytu

Pomiar napięcia ADC — podwójny zakres 0–12 V lub 0–30 V, wybierany w urządzeniu

numeric Jednostka: V

Wejście analogowe

Nasłuchiwanie
if RECEIVEDMSG.TOPIC = "shellies/" + MQTTprefix + "/adc/0"
    Va := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD));
end
Przełącznik 1 Przełącznik

Bezpotencjałowe wyjście otwartego kolektora OUT_1 — maks. 100 mA / 300 mW, 24 V AC lub 36 V DC

string
Wartości / Stany: ON · OFF

Przełącznik 1

Zapis stanu przełącznika
MQTTPUBLISH("shellies/" + MQTTprefix + "/relay/0/command", if(St, "on", "off"))
Nasłuchiwanie
if RECEIVEDMSG.TOPIC = "shellies/" + MQTTprefix + "/relay/0"
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);

    if(payload = "on", St := 1, St := 0);
end
Przełącznik 2 Przełącznik

Bezpotencjałowe wyjście otwartego kolektora OUT_2 — maks. 100 mA / 300 mW, 24 V AC lub 36 V DC

string
Wartości / Stany: ON · OFF

Przełącznik 2

Zapis stanu przełącznika
MQTTPUBLISH("shellies/" + MQTTprefix + "/relay/1/command", if(St, "on", "off"))
Nasłuchiwanie
if RECEIVEDMSG.TOPIC = "shellies/" + MQTTprefix + "/relay/1"
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);

    if(payload = "on", St := 1, St := 0);
end
Kontakt reed 1 Kontakt reed Tylko do odczytu

Wejście cyfrowe IN_1 — odwrócona logika, kontakt zwarty do GND = aktywny (1) w TapHome

string

Kontakt reed 1

Nasłuchiwanie
if RECEIVEDMSG.TOPIC = "shellies/" + MQTTprefix + "/input/0"
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Rc := if(payload = "0", 1, 0);
end
Kontakt reed 2 Kontakt reed Tylko do odczytu

Wejście cyfrowe IN_2 — odwrócona logika, kontakt zwarty do GND = aktywny (1) w TapHome

string

Kontakt reed 2

Nasłuchiwanie
if RECEIVEDMSG.TOPIC = "shellies/" + MQTTprefix + "/input/1"
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Rc := if(payload = "0", 1, 0);
end
Połączenie: Packet Parser → MQTT
Możliwe ulepszenia (8)
  • External Temperature Sensor 1 (DS18B20) — Hardware supports up to 3× DS18B20 on the one-wire bus (Blue DATA + Yellow VCC + Green GND). Not wired in this MQTT template; would need a PacketParserVariable listening on ext_temperature/0 (value 999 = invalid).
  • External Temperature Sensor 2 (DS18B20) — Second DS18B20 on the one-wire bus. Same pattern as sensor 1, different index.
  • External Temperature Sensor 3 (DS18B20) — Third DS18B20 on the one-wire bus. Same pattern as sensor 1, different index.
  • External Humidity Sensor (DHT22) — Hardware supports 1× DHT22 humidity/temperature sensor (mutually exclusive with DS18B20 chain). Not wired in this MQTT template; would need a PacketParserVariable on ext_humidity/0 (value 999 = invalid).
  • Connection Status (LWT) — Last-Will-Testament topic — 'true' on connect, 'false' on disconnect. Could be added to detect offline devices.
  • Input 1 Event — JSON payload {event, event_cnt} — short/long press events on IN_1, useful for scene triggers.
  • Input 2 Event — JSON payload {event, event_cnt} — short/long press events on IN_2.
  • Full Status JSON — Full /status JSON published periodically (firmware ≥ 1.8.0). Could be parsed for wifi_sta.rssi, update status, uptime.

Źródła