TapHome

Shelly Plus 1PM

Packet Parser → MQTT
Přidal
Poslední aktualizace: 04. 2026
Shelly Plus 1PM

Shelly Plus 1PM je kompaktní Gen2+ Wi-Fi reléový spínač s vestavěným měřením spotřeby. Vejde se za standardní nástěnný vypínač a dokáže ovládat jeden okruh do 16 A (3500 W při 230 V AC) nebo 10 A (30 V DC). Toto je MQTT varianta TapHome šablony — zařízení komunikuje přes MQTT broker namísto přímého HTTP pollingu, což je užitečné v prostředích s více kontroléry nebo pokud je zařízení v jiné VLAN.

Šablona obsahuje dvě zařízení: Elektroměr pro monitorování příkonu a energie a Spínač pro ovládání relé. Tři atributy na úrovni modulu zobrazují vnitřní teplotu, napětí a proud.

Konfigurace

MQTT Client ID

Každý Shelly Plus 1PM má unikátní MQTT Client ID ve formátu shellyplus1pm-<DEVICEID>, kde <DEVICEID> je 12znakový hex MAC adresa (např. shellyplus1pm-AABBCCDDEE00).

Client ID najdete:

  • Ve webovém rozhraní Shelly: SettingsMQTTClient ID
  • Přes API: GET http://<device-ip>/rpc/MQTT.GetConfig → pole client_id
  • Na štítku zařízení (MAC adresa)

Toto zařízení podporuje mDNS discovery. Místo IP adresy můžete při ověřování konektivity použít hostname shellyplus1pm-{MAC}.local. Nahraďte {MAC} úplnou MAC adresou zařízení v hexadecimálním formátu s malými písmeny (např. shellyplus1pm-aabbccddee00.local).

Povolení MQTT
  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na SettingsMQTT
  3. Povolte MQTT
  4. Nastavte Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Client ID je vyplněno automaticky — ponechte beze změny, pokud nemáte konkrétní důvod ho měnit
  6. Klikněte Save a restartujte zařízení

Pro ověření funkčnosti MQTT použijte MQTT klienta (např. MQTT Explorer) a přihlaste se k odběru shellyplus1pm-<DEVICEID>/#. Měli byste vidět stavové zprávy ze zařízení, včetně shellyplus1pm-<DEVICEID>/status/switch:0.

Nastavení šablony

Po importování šablony do TapHome:

  1. Otevřete Shelly Plus 1PM MQTT Module
  2. Nastavte MQTT Broker IP a Port (výchozí 1883)
  3. Nastavte proměnnou plug1topic na MQTT Client ID vašeho Shelly Plus 1PM (např. shellyplus1pm-AABBCCDDEE00)

Modul odebírá zprávy z {plug1topic}/status/switch:0 a ovládací příkazy publikuje do {plug1topic}/command/switch:0.

Schopnosti zařízení

Měření spotřeby

Elektroměr čte dvě hodnoty z MQTT stavové zprávy {plug1topic}/status/switch:0:

  • Okamžitý příkonapower hlášený ve wattech, šablona ho konvertuje na kW (dělení 1000)
  • Kumulativní energieaenergy.total hlášená ve watthodinách, šablona ji konvertuje na kWh (dělení 1000)

Elektroměr je pouze pro čtení — aktualizuje se automaticky po každém publikování stavové zprávy na MQTT broker.

Ovládání relé

Spínač ovládá relé:

  • Čtení stavu — odebírá {plug1topic}/status/switch:0 a čte booleovské pole output
  • Zápis stavu — publikuje on nebo off do {plug1topic}/command/switch:0

Relé podporuje zátěž do 3500 W / 16 A při 230 V AC.

Diagnostika

Tři atributy na úrovni modulu jsou parsovány ze stejného JSON payloadu status/switch:0:

AtributJednotkaPopis
Vnitřní teplota°CVnitřní teplota zařízení — monitoruje tepelný stav relé a PCB
NapětíVNapětí střídavého napájení na vstupu relé
ProudAProud zátěží přes výstup relé

Všechny tři atributy zobrazují “Unknown” do příchodu první MQTT stavové zprávy (počáteční hodnota je NaN).

Další schopnosti

Shelly Plus 1PM také poskytuje účiník, síťovou frekvenci, vrácenou energii (pro obousměrné měření), stav fyzického vstupu, příkaz toggle, časovač automatického vypnutí a akci vynuceného obnovení stavu přes MQTT API. Tyto schopnosti mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

MQTT zprávy nepřicházejí
  1. Ověřte, že MQTT je povoleno ve webovém rozhraní Shelly (SettingsMQTT)
  2. Zkontrolujte, že adresa brokeru a port jsou správné v nastavení zařízení Shelly i modulu TapHome
  3. Zkontrolujte, že proměnná plug1topic přesně odpovídá MQTT Client ID zařízení Shelly (např. shellyplus1pm-AABBCCDDEE00)
  4. Použijte MQTT klienta (např. MQTT Explorer) a přihlaste se k odběru shellyplus1pm-# k ověření, že zařízení publikuje zprávy
Měření příkonu ukazuje nulu
  1. Ověřte, že zátěž je připojena přes relé Shelly (ne obejitá)
  2. Zkontrolujte, že relé je zapnuto — měřič měří jen při průtoku proudu přes relé
  3. Přihlaste se k odběru {plug1topic}/status/switch:0 přes MQTT klienta a ověřte, že apower vrací nenulovou hodnotu
Relé nereaguje na příkazy
  1. Ověřte, že TapHome má přístup k MQTT brokeru (správné IP a port v nastavení modulu)
  2. Zkontrolujte, že hodnota plug1topic odpovídá MQTT Client ID zařízení
  3. Otestujte publikováním on do {plug1topic}/command/switch:0 přes MQTT klienta — relé by se mělo zapnout
Diagnostika zobrazuje “Unknown”
  1. Všechny tři atributy (teplota, napětí, proud) zobrazují “Unknown” do příchodu první stavové zprávy
  2. Pokud hodnoty zůstávají “Unknown” po spuštění zařízení, zkontrolujte, že MQTT spojení je aktivní a stavové zprávy se publikují
  3. Restartujte zařízení Shelly pro vynucení nového publikování stavu

Gen2+ zařízení Shelly podporují MQTT s volitelným TLS. Pokud TLS není nakonfigurováno, komunikace mezi zařízením a MQTT brokerem je nešifrovaná (plain MQTT, port 1883). Pro šifrovanou komunikaci povolte TLS v nastavení MQTT zařízení Shelly a použijte port 8883.

Jak nainstalovat v TapHome

Předpoklady

  • Zařízení Shelly připojené k Wi-Fi (pokud ještě ne, podívejte se na návod na HTTP připojení)
  • MQTT broker běžící ve vaší lokální síti (např. Mosquitto, Home Assistant nebo vestavěný broker TapHome)
  • TapHome CCU ve stejné síti jako broker

Na zařízeních Gen1 povolení MQTT vypne Shelly Cloud. Obojí nemůže běžet současně. Na zařízeních Gen2/Plus toto omezení neplatí.

Krok 1 — Povolte MQTT na zařízení Shelly

Zařízení Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na Internet & SecurityAdvanced — MQTT
  3. Povolte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Volitelně nastavte MQTT User a MQTT Password, pokud váš broker vyžaduje autentifikaci
  6. Klikněte na Save — zařízení se restartuje a připojí k brokeru

Zařízení Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na SettingsMQTT
  3. Povolte MQTT
  4. Nastavte Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Client ID je předvyplněné ID zařízení (např. shellyplus1pm-AABBCCDDEE) — ponechte tak, pokud nemáte konkrétní důvod ke změně
  6. Klikněte na Save a restartujte zařízení

Pro ověření funkčnosti MQTT použijte MQTT klienta (např. MQTT Explorer) a přihlaste se k odběru shellies/# (Gen1) nebo <device-id>/# (Gen2). Měli byste vidět stavové zprávy ze zařízení.

Krok 2 — Zjistěte Device ID / MQTT Client ID

Některé šablony vyžadují parametr Device ID nebo MQTT Client ID. Jde o jedinečný identifikátor používaný v MQTT topicích.

  • Gen1: nachází se na štítku jako MAC adresa (např. AABBCCDDEE). Device ID = shelly<model>-<mac>, např. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachází se ve webovém rozhraní Shelly v části SettingsDevice InfoDevice ID, nebo na štítku zařízení

Krok 3 — Konfigurace v TapHome

  1. V TapHome přidejte nový modul Packet Parser (MQTT)
  2. IP Address: zadejte IP adresu MQTT brokeru (např. 192.168.1.10)
  3. Port: 1883 (výchozí; pro TLS použijte 8883)
  4. Device ID / MQTT Client ID: zadejte hodnotu z kroku 2 (pokud to šablona vyžaduje)
  5. Importujte šablonu — TapHome se automaticky přihlásí k odběru topiců zařízení

Dostupná zařízení

Shelly Plus 1PM MQTT Module Modul
Servisní atributy
Vnitřní teplotaVnitřní teplota zařízení — monitoruje tepelný stav relé a PCB
NapětíNapětí střídavého napájení na vstupu relé
ProudProud zátěží přes výstup relé
Vlastní proměnné
plug1topic (string)MQTT Client ID zařízení Shelly Plus 1PM — formát je 'shellyplus1pm-<deviceid>'. Najdete ve webovém rozhraní zařízení: Settings → MQTT Settings → Client ID

Shelly Plus 1PM MQTT Module

Listener
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
Servisní atributy
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 Elektroměr Pouze ke čtení

Okamžitý příkon (kW) a kumulativní energie (kWh) z MQTT stavového payloadu

numeric Jednotka: kW / kWh

Shelly Plus 1PM MQTT Power

Listener
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 Přepínač

Ovládání relé zapnout/vypnout přes MQTT příkazový topic

boolean
Hodnoty / Stavy: ON · OFF

Shelly Plus 1PM MQTT Switch

Zápis stavu přepínače
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH(plug1topic + "/command/switch:0", value);
Listener
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
Připojení: Packet Parser → MQTT
Možná vylepšení (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

Zdroje