TapHome

Shelly 1PM

Packet Parser → MQTT
Beküldő
Utoljára frissítve: 04. 2026
Shelly 1PM

A Shelly 1PM egy kompakt egycsatornás Wi-Fi relés kapcsoló beépített teljesítményméréssel. Elfér egy szabványos fali kapcsoló mögött, és egyetlen áramkört vezérelhet 16 A-ig (3500 W 230 V mellett). A TapHome MQTT-n keresztül kommunikál az eszközzel — ez a Shelly 1PM sablon MQTT változata, amely akkor ajánlott, ha a helyi MQTT kommunikációt részesíted előnyben a HTTP polling helyett.

A sablon modulonként legfeljebb 5 Shelly 1PM egységet támogat. Minden egységet egy egyedi pulgNtopic változó különböztet meg, amely az eszköz MQTT Client ID-jára mutat. Minden egység egy relés kapcsolót és egy villamos mérőt biztosít.

Konfiguráció

Device ID

Minden Shelly 1PM egyedi MQTT Device ID-vel rendelkezik shelly1pm-<MAC6> formátumban, ahol a <MAC6> a MAC-cím utolsó 6 karaktere kisbetűs hexadecimális formátumban (pl. shelly1pm-112233).

A Device ID megtalálható:

  • Az eszköz címkéjén (MAC-cím)
  • A Shelly webes felületén: SettingsDevice Info
  • API-n keresztül: GET http://<device-ip>/settingsmqtt.id mező

Ez az eszköz támogatja az mDNS discovery-t. A TapHome konfigurálásakor IP-cím helyett használhatod a shelly1pm-{MAC}.local hostnevet. Cseréld ki a {MAC}-et az eszköz MAC-címének utolsó 6 karakterére kisbetűs hexadecimális formátumban (pl. shelly1pm-112233.local). A hostname használata megelőzi a csatlakozási problémákat az eszköz IP-címének változásakor.

Sablon beállítása

A sablon TapHome-ba történő importálása után:

  1. Nyisd meg a Shelly 1PM MQTT modult
  2. Állítsd be az MQTT Broker IP-t és a Port-ot (alapértelmezés: 1883)
  3. Minden Shelly 1PM egységhez állítsd be a pulgNtopic változót a megfelelő Shelly 1PM Device ID-jára (pl. shelly1pm-112233)

A modul feliratkozik a shellies/# topicra, és a listener szkriptek a konfigurált topic-előtag alapján szűrik az üzeneteket.

Csak a ténylegesen használt slotokat konfiguráld. A nem konfigurált slotok (az alapértelmezett shelly1pm-deviceidN értékkel) nem egyeznek valódi eszközzel, és figyelmen kívül hagyhatók.

Eszközfunkciók

Relévezérlés

Minden egység egy kapcsolóeszközt biztosít a TapHome-ban. A relé állapota a shellies/<id>/relay/0 topicból olvasható, és on vagy off üzenet küldésével vezérelhető a shellies/<id>/relay/0/command topicra.

Teljesítménymérés

Minden egység tartalmaz egy villamos mérőt, amely két értéket olvas:

  • Valós idejű teljesítményshellies/<id>/relay/0/power wattban jelentve, a sablon kW-ra konvertálja
  • Összesített fogyasztásshellies/<id>/relay/0/energy watt-percben jelentve, a sablon kWh-ra konvertálja

A mérő csak olvasható — automatikusan frissül, amikor az eszköz új adatokat publikál.

Hőmérséklet- és túlterhelés-figyelés

Minden kapcsolóeszköz négy szervizattribútumot biztosít:

  • Belső hőmérséklet — az eszköz hőmérséklete °C-ban a shellies/<id>/temperature topicból
  • Hőmérséklet állapot — hőmérsékleti szint: Normal, High vagy Very High (shellies/<id>/temperature_status)
  • Túlmelegedés — túlhőmérséklet riasztási jelző (shellies/<id>/overtemperature)
  • Túlterhelés — a terhelés teljesítményét (W) jelenti túlterhelés észlelésekor (shellies/<id>/overpower_value)
További funkciók

A Shelly 1PM online/offline állapotot is publikál az MQTT Last Will and Testament (LWT) topicon keresztül, teljes JSON állapotüzenetet (firmware ≥1.8.0), fizikai bemenet állapotát és bemeneti eseményeket (rövid/dupla/tripla/hosszú nyomás). Ezek a funkciók egy jövőbeli sablonfrissítésben adhatók hozzá.

Hibaelhárítás

Az eszköz nem küld adatokat
  1. Ellenőrizd, hogy a Shelly 1PM csatlakozik a Wi-Fi-hez és az MQTT engedélyezve van az eszközbeállításokban
  2. Ellenőrizd, hogy a pulgNtopic változó pontosan megegyezik a Device ID-vel (pl. shelly1pm-112233)
  3. Erősítsd meg az MQTT broker IP-címének és portjának helyességét a modulbeállításokban
  4. Használj MQTT klienst (pl. MQTT Explorer) a shellies/# feliratkozáshoz, és ellenőrizd, hogy az eszköz publikál üzeneteket
A teljesítménymérés nullát mutat
  1. Erősítsd meg, hogy a terhelés a Shelly relén keresztül van csatlakoztatva (nem megkerülve)
  2. Ellenőrizd, hogy a relé be van kapcsolva — a mérő csak akkor mér, amikor áram folyik a relén keresztül
  3. Iratkozz fel a shellies/<id>/relay/0/power topicra egy MQTT kliensben, és ellenőrizd, hogy az eszköz nem nulla értéket jelent
Túlmelegedési figyelmeztetés

A Shelly 1PM beépített hővédelemmel rendelkezik. Ha az eszköz hőmérséklete meghaladja a biztonságos határértékeket, a temperature_status “High” vagy “Very High” értékre változik, és az overtemperature true lesz. Biztosíts megfelelő szellőzést az eszköz körül, különösen nagy terhelések kapcsolásakor.

A Shelly Gen1 eszközök nem támogatják az MQTT-t TLS-en keresztül. Az eszköz és az MQTT broker közötti kommunikáció titkosítatlan (plain MQTT, 1883-as port). Győződj meg róla, hogy az MQTT broker megbízható helyi hálózaton van.

Telepítés a TapHome-ban

Előfeltételek

  • Shelly eszköz csatlakoztatva a Wi-Fi-hez (ha még nem, lásd a HTTP kapcsolódási útmutatót)
  • MQTT broker fut a helyi hálózaton (pl. Mosquitto, Home Assistant vagy a TapHome beépített brokere)
  • TapHome CCU ugyanazon a hálózaton, mint a broker

A Gen1 eszközökön az MQTT engedélyezése letiltja a Shelly Cloudot. A kettő nem futhat egyszerre. A Gen2/Plus eszközökön ez a korlátozás nem érvényes.

1. lépés — MQTT engedélyezése a Shelly eszközön

Gen1 eszközök (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon az Internet & SecurityAdvanced — MQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be az MQTT Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. Opcionálisan állítsa be az MQTT User és MQTT Password mezőket, ha a broker hitelesítést igényel
  6. Kattintson a Save gombra — az eszköz újraindul és csatlakozik a brokerhez

Gen2 / Plus eszközök (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon a SettingsMQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be a Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. A Client ID előre ki van töltve az eszköz azonosítójával (pl. shellyplus1pm-AABBCCDDEE) — hagyja így, hacsak nincs konkrét oka a változtatásra
  6. Kattintson a Save gombra és indítsa újra az eszközt

Az MQTT működésének ellenőrzéséhez használjon egy MQTT klienst (pl. MQTT Explorer), és iratkozzon fel a shellies/# (Gen1) vagy <device-id>/# (Gen2) topikra. Látnia kell az eszköz állapotüzeneteit.

2. lépés — Device ID / MQTT Client ID megkeresése

Egyes sablonok Device ID vagy MQTT Client ID paramétert igényelnek. Ez az egyedi azonosító, amelyet az MQTT topikokban használnak.

  • Gen1: a címkén MAC-címként található (pl. AABBCCDDEE). Device ID = shelly<model>-<mac>, pl. shelly1pm-AABBCCDDEE
  • Gen2/Plus: a Shelly webes felületén a SettingsDevice InfoDevice ID alatt található, vagy az eszköz címkéjén

3. lépés — Konfigurálás a TapHome-ban

  1. A TapHome-ban adjon hozzá egy új Packet Parser (MQTT) modult
  2. IP Address: adja meg az MQTT broker IP-címét (pl. 192.168.1.10)
  3. Port: 1883 (alapértelmezett; TLS esetén használjon 8883-at)
  4. Device ID / MQTT Client ID: adja meg a 2. lépésben kapott értéket (ha a sablon megköveteli)
  5. Importálja a sablont — a TapHome automatikusan feliratkozik az eszköz topikjaira

Elérhető eszközök

Shelly 1PM MQTT Modul
Egyéni változók
pulg1topic (string) = shelly1pm-deviceid1Az első Shelly 1PM egység MQTT device ID-ja — formátum: 'shelly1pm-DEVICEID' (a Device ID a Shelly webes felületen található → Settings → Device Info)
Open http://shellyIpAddress → Settings → Device info → copy Device ID
pulg2topic (string) = shelly1pm-deviceid2A második Shelly 1PM egység MQTT device ID-ja
pulg3topic (string) = shelly1pm-deviceid3A harmadik Shelly 1PM egység MQTT device ID-ja
pulg4topic (string) = shelly1pm-deviceid4A negyedik Shelly 1PM egység MQTT device ID-ja
pulg5topic (string) = shelly1pm-deviceid5Az ötödik Shelly 1PM egység MQTT device ID-ja
Villamos mérő 1 Villanyóra Csak olvasható

Valós idejű teljesítmény (kW) és kumulatív energia (kWh) az 1. Shelly 1PM egységhez

numeric Egység: kW / kWh

Villamos mérő 1

Figyelő
IF(INDEXOF(pulg1topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg1topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg1topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
Kapcsoló 1 Kapcsoló

Relévezérlés az 1. Shelly 1PM egységhez — ki/be kapcsolás hőmérséklet- és túlterhelés-figyeléssel

boolean
Értékek / Állapotok: ON · OFF

Kapcsoló 1

Kapcsoló állapot írása
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg1topic + "/relay/0/command", value);
Figyelő
IF(INDEXOF(pulg1topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg1topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg1topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg1topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
Szerviz attribútumok
Internal temperature
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
Overheated
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
Temperature status
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
Overpower
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
Villamos mérő 2 Villanyóra Csak olvasható

Valós idejű teljesítmény (kW) és kumulatív energia (kWh) a 2. Shelly 1PM egységhez

numeric Egység: kW / kWh

Villamos mérő 2

Figyelő
IF(INDEXOF(pulg2topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg2topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg2topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
Kapcsoló 2 Kapcsoló

Relévezérlés a 2. Shelly 1PM egységhez — ki/be kapcsolás hőmérséklet- és túlterhelés-figyeléssel

boolean
Értékek / Állapotok: ON · OFF

Kapcsoló 2

Kapcsoló állapot írása
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg2topic + "/relay/0/command", value);
Figyelő
IF(INDEXOF(pulg2topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg2topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg2topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg2topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
Szerviz attribútumok
Internal temperature
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
Overheated
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
Temperature status
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
Overpower
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
Villamos mérő 3 Villanyóra Csak olvasható

Valós idejű teljesítmény (kW) és kumulatív energia (kWh) a 3. Shelly 1PM egységhez

numeric Egység: kW / kWh

Villamos mérő 3

Figyelő
IF(INDEXOF(pulg3topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg3topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg3topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
Kapcsoló 3 Kapcsoló

Relévezérlés a 3. Shelly 1PM egységhez — ki/be kapcsolás hőmérséklet- és túlterhelés-figyeléssel

boolean
Értékek / Állapotok: ON · OFF

Kapcsoló 3

Kapcsoló állapot írása
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg3topic + "/relay/0/command", value);
Figyelő
IF(INDEXOF(pulg3topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg3topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg3topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg3topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
Szerviz attribútumok
Internal temperature
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
Overheated
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
Temperature status
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
Overpower
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
Villamos mérő 4 Villanyóra Csak olvasható

Valós idejű teljesítmény (kW) és kumulatív energia (kWh) a 4. Shelly 1PM egységhez

numeric Egység: kW / kWh

Villamos mérő 4

Figyelő
IF(INDEXOF(pulg4topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg4topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg4topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
Kapcsoló 4 Kapcsoló

Relévezérlés a 4. Shelly 1PM egységhez — ki/be kapcsolás hőmérséklet- és túlterhelés-figyeléssel

boolean
Értékek / Állapotok: ON · OFF

Kapcsoló 4

Kapcsoló állapot írása
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg4topic + "/relay/0/command", value);
Figyelő
IF(INDEXOF(pulg4topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg4topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg4topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg4topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
Szerviz attribútumok
Internal temperature
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
Overheated
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
Temperature status
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
Overpower
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
Villamos mérő 5 Villanyóra Csak olvasható

Valós idejű teljesítmény (kW) és kumulatív energia (kWh) az 5. Shelly 1PM egységhez

numeric Egység: kW / kWh

Villamos mérő 5

Figyelő
IF(INDEXOF(pulg5topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg5topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg5topic + "/relay/0/") != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/relay/0/power")
    VAR valueP := TOSTRING(RECEIVEDMSG.PAYLOAD);

    Ed := IF(ISNULL(valueP), NaN, TODOUBLE(valueP) / 1000.0);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/relay/0/energy")
    VAR valueE := TOSTRING(RECEIVEDMSG.PAYLOAD);

    To := IF(ISNULL(valueE), NaN, TODOUBLE(valueE) / 60000.0);
END
Kapcsoló 5 Kapcsoló

Relévezérlés az 5. Shelly 1PM egységhez — ki/be kapcsolás hőmérséklet- és túlterhelés-figyeléssel

boolean
Értékek / Állapotok: ON · OFF

Kapcsoló 5

Kapcsoló állapot írása
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg5topic + "/relay/0/command", value);
Figyelő
IF(INDEXOF(pulg5topic, "shelly1pm-deviceid") = 0)
    ADDERROR("Set correct 'pulg5topic' value in module variables. Topic format is 'shelly1pm-<deviceid>'. The Device ID can be found by opening url 'http://shellyIpAddress', in Settings -> Device info.");
    RETURN(-1);
END

IF(INDEXOF(RECEIVEDMSG.TOPIC, "shellies/" + pulg5topic) != 0)
    RETURN(0);
END

IF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/relay/0")
    VAR value := TOSTRING(RECEIVEDMSG.PAYLOAD);
    
    IF(value = "on")
        St := 1;
    ELSEIF(value = "off")
        St := 0;
    ELSE
        ADDERROR("Unknown switch state");
    END
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/temperature")
    internalTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/overtemperature")
    overTemp := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/temperature_status")
    tempStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
ELSEIF(RECEIVEDMSG.TOPIC = "shellies/" + pulg5topic + "/overpower_value")
    overPower := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
Szerviz attribútumok
Internal temperature
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
Overheated
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
Temperature status
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
Overpower
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
Kapcsolat: Packet Parser → MQTT
Lehetséges fejlesztések (5)
  • Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline units.
  • Full Status JSON — Complete /status as JSON (fw ≥1.8.0). Could parse wifi_sta.rssi, uptime, has_update.
  • Input State — Physical input state (0/1). Shelly 1PM has one input — could be used for detached switch scenarios.
  • Input Event — JSON with event type (S=short, SS=double, SSS=triple, L=long) and event_cnt. Useful for button automation.
  • Internal Temperature (Fahrenheit) — Same as temperature topic but in Fahrenheit. Redundant — Celsius already implemented via service attribute.

Források