TapHome

Shelly Plus 1PM

Packet Parser → MQTT
Dodane przez
Ostatnia aktualizacja: 04. 2026
Shelly Plus 1PM

Shelly Plus 1PM to kompaktowy przekaźnik Wi-Fi Gen2+ z wbudowanym pomiarem mocy. Mieści się za standardowym wyłącznikiem ściennym i może sterować jednym obwodem do 16 A (3500 W przy 230 V AC) lub 10 A (30 V DC). To jest wariant MQTT szablonu TapHome — urządzenie komunikuje się przez broker MQTT zamiast bezpośredniego odpytywania HTTP, co jest przydatne w środowiskach z wieloma kontrolerami lub gdy urządzenie znajduje się w innej sieci VLAN.

Szablon zawiera dwa urządzenia: Licznik energii do monitorowania mocy i energii oraz Przełącznik do sterowania przekaźnikiem. Trzy atrybuty serwisowe na poziomie modułu pokazują temperaturę wewnętrzną, napięcie i prąd.

Konfiguracja

MQTT Client ID

Każdy Shelly Plus 1PM ma unikalne MQTT Client ID w formacie shellyplus1pm-<DEVICEID>, gdzie <DEVICEID> to 12-znakowy szesnastkowy adres MAC (np. shellyplus1pm-AABBCCDDEE00).

Client ID można znaleźć:

  • W interfejsie webowym Shelly: SettingsMQTTClient ID
  • Przez API: GET http://<device-ip>/rpc/MQTT.GetConfig → pole client_id
  • Na etykiecie urządzenia (adres MAC)

To urządzenie obsługuje mDNS discovery. Zamiast adresu IP można użyć nazwy hosta shellyplus1pm-{MAC}.local do weryfikacji łączności. Zastąp {MAC} pełnym adresem MAC urządzenia w formacie szesnastkowym małymi literami (np. shellyplus1pm-aabbccddee00.local).

Włączenie MQTT
  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 wypełnione automatycznie — pozostaw bez zmian, chyba że masz konkretny powód do zmiany
  6. Kliknij Save i uruchom ponownie urządzenie

Aby zweryfikować działanie MQTT, użyj klienta MQTT (np. MQTT Explorer) i zasubskrybuj shellyplus1pm-<DEVICEID>/#. Powinieneś zobaczyć komunikaty statusowe z urządzenia, w tym shellyplus1pm-<DEVICEID>/status/switch:0.

Konfiguracja szablonu

Po zaimportowaniu szablonu do TapHome:

  1. Otwórz Shelly Plus 1PM MQTT Module
  2. Ustaw MQTT Broker IP i Port (domyślnie 1883)
  3. Ustaw zmienną plug1topic na MQTT Client ID urządzenia Shelly Plus 1PM (np. shellyplus1pm-AABBCCDDEE00)

Moduł subskrybuje {plug1topic}/status/switch:0 i publikuje polecenia sterujące do {plug1topic}/command/switch:0.

Możliwości urządzenia

Pomiar mocy

Licznik energii odczytuje dwie wartości z komunikatu statusowego MQTT {plug1topic}/status/switch:0:

  • Moc chwilowaapower raportowana w watach, konwertowana na kW przez szablon (dzielenie przez 1000)
  • Energia kumulatywnaaenergy.total raportowana w watogodzinach, konwertowana na kWh przez szablon (dzielenie przez 1000)

Licznik jest tylko do odczytu — aktualizuje się automatycznie po każdym opublikowaniu komunikatu statusowego na broker MQTT.

Sterowanie przekaźnikiem

Przełącznik steruje przekaźnikiem:

  • Odczyt stanu — subskrybuje {plug1topic}/status/switch:0 i odczytuje pole logiczne output
  • Zapis stanu — publikuje on lub off do {plug1topic}/command/switch:0

Przekaźnik obsługuje obciążenie do 3500 W / 16 A przy 230 V AC.

Diagnostyka

Trzy atrybuty serwisowe na poziomie modułu są parsowane z tego samego payloadu JSON status/switch:0:

AtrybutJednostkaOpis
Temperatura wewnętrzna°CTemperatura wewnętrzna urządzenia — monitoruje stan termiczny przekaźnika i PCB
NapięcieVNapięcie zasilania AC na wejściu przekaźnika
PrądAPrąd obciążenia przez wyjście przekaźnika

Wszystkie trzy atrybuty wyświetlają „Unknown" do momentu nadejścia pierwszego komunikatu statusowego MQTT (wartość początkowa to NaN).

Dodatkowe możliwości

Shelly Plus 1PM udostępnia również współczynnik mocy, częstotliwość sieci, energię zwróconą (do pomiarów dwukierunkowych), stan wejścia fizycznego, polecenie toggle, timer automatycznego wyłączenia oraz akcję wymuszonej aktualizacji statusu przez swoje MQTT API. Te możliwości mogą zostać dodane w przyszłej aktualizacji szablonu.

Rozwiązywanie problemów

Komunikaty MQTT nie docierają
  1. Zweryfikuj, że MQTT jest włączone w interfejsie webowym Shelly (SettingsMQTT)
  2. Sprawdź, czy adres brokera i port są prawidłowe zarówno w ustawieniach urządzenia Shelly, jak i modułu TapHome
  3. Sprawdź, czy zmienna plug1topic dokładnie odpowiada MQTT Client ID urządzenia Shelly (np. shellyplus1pm-AABBCCDDEE00)
  4. Użyj klienta MQTT (np. MQTT Explorer) i zasubskrybuj shellyplus1pm-#, aby zweryfikować, czy urządzenie publikuje komunikaty
Pomiar mocy pokazuje zero
  1. Upewnij się, że obciążenie jest podłączone przez przekaźnik Shelly (nie pominięte)
  2. Sprawdź, czy przekaźnik jest włączony — licznik mierzy tylko przy przepływie prądu przez przekaźnik
  3. Zasubskrybuj {plug1topic}/status/switch:0 klientem MQTT i zweryfikuj, że apower zwraca wartość różną od zera
Przekaźnik nie reaguje na polecenia
  1. Zweryfikuj, że TapHome ma dostęp do brokera MQTT (prawidłowe IP i port w ustawieniach modułu)
  2. Sprawdź, czy wartość plug1topic odpowiada MQTT Client ID urządzenia
  3. Przetestuj publikując on do {plug1topic}/command/switch:0 przez klienta MQTT — przekaźnik powinien się włączyć
Diagnostyka pokazuje „Unknown"
  1. Wszystkie trzy atrybuty (temperatura, napięcie, prąd) pokazują „Unknown" do momentu nadejścia pierwszego komunikatu statusowego
  2. Jeśli wartości pozostają „Unknown" po uruchomieniu urządzenia, sprawdź, czy połączenie MQTT jest aktywne i komunikaty statusowe są publikowane
  3. Uruchom ponownie urządzenie Shelly, aby wymusić nową publikację statusu

Urządzenia Shelly Gen2+ obsługują MQTT z opcjonalnym TLS. Jeśli TLS nie jest skonfigurowany, komunikacja między urządzeniem a brokerem MQTT jest nieszyfrowana (plain MQTT, port 1883). Dla szyfrowanej komunikacji włącz TLS w ustawieniach MQTT urządzenia Shelly i użyj portu 8883.

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 Plus 1PM MQTT Module Moduł
Atrybuty serwisowe
Temperatura wewnętrznaTemperatura wewnętrzna urządzenia — monitoruje stan termiczny przekaźnika i PCB
NapięcieNapięcie zasilania AC na wejściu przekaźnika
PrądPrąd obciążenia przez wyjście przekaźnika
Zmienne niestandardowe
plug1topic (string)MQTT Client ID urządzenia Shelly Plus 1PM — format to 'shellyplus1pm-<deviceid>'. Do znalezienia w interfejsie webowym urządzenia: Settings → MQTT Settings → Client ID

Shelly Plus 1PM MQTT Module

Nasłuchiwanie
IF(INDEXOF(plug1topic, "shellyplus1pm-deviceid") = 0)
    ADDERROR("Set correct 'plug1topic' value in module variables. Topic format is 'shellyplus1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> MQTT Settings -> Client ID.");
    RETURN(-1);
END

IF(RECEIVEDMSG.TOPIC = plug1topic + "/status/switch:0")
    internalTemp := PARSEJSON(RECEIVEDMSG.PAYLOAD, "temperature.tC");
    voltage := PARSEJSON(RECEIVEDMSG.PAYLOAD, "voltage");
    current := PARSEJSON(RECEIVEDMSG.PAYLOAD, "current");
    VAR errors := PARSEJSON(RECEIVEDMSG.PAYLOAD, "errors", TRUE);
    
    IF (!ISNULL(errors))
        VAR errCount := LENGTH(errors);
        VAR i := 0;
        VAR errorText := "";
        
        WHILE i < errCount
            IF LENGTH(errorText)
                errorText += ", ";
            END
            errorText := errorText + GETAT(errors, i);
            i += 1;
        LOOP
        
        IF LENGTH(errorText)
            ADDERROR(errorText);
        END
    END
END
Atrybuty serwisowe
Internal temperature
IF(ISNAN(internalTemp), "Unknown", internalTemp + "°C");
Voltage
IF(ISNAN(voltage), "Unknown", voltage + "V");
Current
IF(ISNAN(current), "Unknown", current + "A");
Shelly Plus 1PM MQTT Power Licznik energii Tylko do odczytu

Moc chwilowa (kW) i energia kumulatywna (kWh) z payloadu statusowego MQTT

numeric Jednostka: kW / kWh

Shelly Plus 1PM MQTT Power

Nasłuchiwanie
IF(INDEXOF(plug1topic, "shellyplus1pm-deviceid") = 0)
    ADDERROR("Set correct 'plug1topic' value in module variables. Topic format is 'shellyplus1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> MQTT Settings -> Client ID.");
    RETURN(-1);
END

IF(RECEIVEDMSG.TOPIC = plug1topic + "/status/switch:0")
    Ed := PARSEJSON(RECEIVEDMSG.PAYLOAD, "apower") / 1000.0;
    To := PARSEJSON(RECEIVEDMSG.PAYLOAD, "aenergy.total") / 1000.0;
END
Shelly Plus 1PM MQTT Switch Przełącznik

Sterowanie przekaźnikiem wł./wył. przez MQTT command topic

boolean
Wartości / Stany: ON · OFF

Shelly Plus 1PM MQTT Switch

Zapis stanu przełącznika
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH(plug1topic + "/command/switch:0", value);
Nasłuchiwanie
IF(INDEXOF(plug1topic, "shellyplus1pm-deviceid") = 0)
    ADDERROR("Set correct 'plug1topic' value in module variables. Topic format is 'shellyplus1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> MQTT Settings -> Client ID.");
    RETURN(-1);
END

IF(RECEIVEDMSG.TOPIC = plug1topic + "/status/switch:0")
    St := PARSEJSON(RECEIVEDMSG.PAYLOAD, "output");
END
Połączenie: Packet Parser → MQTT
Możliwe ulepszenia (8)
  • Power Factor — Power factor value, available in switch:0 status JSON for metered devices
  • Network Frequency — AC network frequency in Hz, available in switch:0 status JSON
  • Returned Energy — Returned/exported energy in Wh, for bi-directional metering scenarios
  • Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline device.
  • Toggle Command — Toggle relay state; template only supports on/off
  • Auto-off Timer — Turn ON with auto-off timer in seconds via 'on,N' command
  • Input State — Physical switch/button input state, available via Input.GetStatus RPC method over MQTT
  • Force Status Update — Request device to publish current status on all component topics

Źródła