---
title: "Shelly 1PM"
description: "Shelly 1PM relè Wi-Fi monocanale con misurazione della potenza via MQTT con TapHome. Controllo relè, potenza in tempo reale ed energia cumulativa."
url: "https://taphome.com/it/compatibility/shelly-1pm-mqtt/"
language: it
lastmod: 2026-03-31
generator: hugo
ai:
  topics: ["mqtt","smart-plug","wifi","relay","power-metering"]
  questions: ["Come integrare Shelly 1PM con TapHome tramite MQTT?","Cosa misura il template Shelly 1PM MQTT in TapHome?","Come configurare più unità Shelly 1PM in un template TapHome?","Perché il mio Shelly 1PM MQTT non riporta dati di potenza?","Come trovare il Device ID MQTT dello Shelly 1PM?","Lo Shelly 1PM MQTT segnala surriscaldamento e sovraccarico in TapHome?"]
---

# Shelly 1PM

Comunicazione: Packet Parser → MQTT

- [Pagina prodotto Shelly 1PM](https://www.shelly.com/en/products/shop/shelly-1pm)
- [Riferimento API MQTT Shelly Gen1](https://shelly-api-docs.shelly.cloud/gen1/)

> Indirizzo di rete
> 
> Con il broker MQTT integrato in TapHome, inserisci `127.0.0.1` come indirizzo del broker in TapHome. Nel dispositivo inserisci l’indirizzo IP del TapHome Core e assegna al Core una prenotazione IP nel router.
> 
> [Preparazione della rete](https://taphome.com/it/docs/setup/network-preparation/)

## Guida all'integrazione

Lo Shelly 1PM è un compatto interruttore relè Wi-Fi monocanale con misurazione della potenza integrata. Si installa dietro un interruttore a parete standard e può controllare un circuito fino a 16 A (3500 W a 230 V). TapHome comunica con il dispositivo tramite MQTT — questa è la variante MQTT del template Shelly 1PM, adatta quando si preferisce la comunicazione MQTT locale rispetto al polling HTTP.

Il template supporta fino a 5 unità Shelly 1PM per modulo. Ogni unità è distinta da una variabile `pulgNtopic` che punta al Client ID MQTT del dispositivo. Ogni unità espone un interruttore relè e un contatore elettrico.

## Configurazione

### Device ID

Ogni Shelly 1PM ha un Device ID MQTT univoco nel formato `shelly1pm-<MAC6>`, dove `<MAC6>` sono gli ultimi 6 caratteri dell'indirizzo MAC in esadecimale minuscolo (es. `shelly1pm-112233`).

Il Device ID si trova:

- Sull'etichetta del dispositivo (indirizzo MAC)
- Nell'interfaccia web Shelly: **Settings** → **Device Info**
- Tramite API: `GET http://<device-ip>/settings` → campo `mqtt.id`

> [!TIP]
> Questo dispositivo supporta **mDNS discovery**. Al posto dell'indirizzo IP puoi usare l'hostname `shelly1pm-{MAC}.local` durante la configurazione di TapHome. Sostituisci `{MAC}` con gli ultimi 6 caratteri dell'indirizzo MAC del dispositivo in esadecimale minuscolo (es. `shelly1pm-112233.local`). L'uso dell'hostname previene problemi di connessione quando l'indirizzo IP del dispositivo cambia.

### Configurazione del template

Dopo aver importato il template in TapHome:

1. Apri il modulo **Shelly 1PM MQTT**
2. Imposta l'**IP del broker MQTT** e la **Porta** (predefinita `1883`)
3. Per ogni unità Shelly 1PM, imposta la variabile `pulgNtopic` sul Device ID dello Shelly 1PM corrispondente (es. `shelly1pm-112233`)

Il modulo si iscrive a `shellies/#` e gli script listener filtrano i messaggi in base al prefisso topic configurato.

> [!TIP]
> Configura solo gli slot che utilizzi effettivamente. Gli slot non configurati (con il valore predefinito `shelly1pm-deviceidN`) non corrispondono a nessun dispositivo reale e possono essere ignorati.

## Funzionalità del dispositivo

### Controllo relè

Ogni unità espone un dispositivo interruttore in TapHome. Lo stato del relè viene letto dal topic `shellies/<id>/relay/0` e controllato pubblicando `on` o `off` su `shellies/<id>/relay/0/command`.

### Misurazione della potenza

Ogni unità include un contatore elettrico che legge due valori:

- **Potenza in tempo reale** — `shellies/<id>/relay/0/power` riportata in watt, convertita in kW dal template
- **Consumo totale** — `shellies/<id>/relay/0/energy` riportato in watt-minuti, convertito in kWh dal template

Il contatore è in sola lettura — si aggiorna automaticamente quando il dispositivo pubblica nuovi dati.

### Monitoraggio termico e di sovraccarico

Ogni dispositivo interruttore espone quattro attributi di servizio:

- **Temperatura interna** — temperatura del dispositivo in °C dal topic `shellies/<id>/temperature`
- **Stato temperatura** — livello termico: Normal, High o Very High (`shellies/<id>/temperature_status`)
- **Surriscaldamento** — flag di allarme sovratemperatura (`shellies/<id>/overtemperature`)
- **Sovraccarico** — riporta la potenza del carico (W) quando viene rilevata una condizione di sovraccarico (`shellies/<id>/overpower_value`)

### Funzionalità aggiuntive

Lo Shelly 1PM pubblica anche uno stato online/offline tramite il topic MQTT Last Will and Testament (LWT), un messaggio di stato JSON completo (firmware ≥1.8.0), lo stato dell'input fisico e eventi di input (pressione breve/doppia/tripla/lunga). Queste funzionalità potranno essere aggiunte in un futuro aggiornamento del template.

## Risoluzione dei problemi

### Il dispositivo non invia dati

1. Verifica che lo Shelly 1PM sia connesso al Wi-Fi e che MQTT sia abilitato nelle impostazioni del dispositivo
2. Controlla che la variabile `pulgNtopic` corrisponda esattamente al Device ID (es. `shelly1pm-112233`)
3. Conferma la correttezza dell'IP e della porta del broker MQTT nelle impostazioni del modulo
4. Usa un client MQTT (es. MQTT Explorer) per iscriverti a `shellies/#` e verificare che il dispositivo pubblichi messaggi

### La misurazione della potenza mostra zero

1. Conferma che il carico sia collegato attraverso il relè Shelly (non bypassato)
2. Controlla che il relè sia acceso — il contatore misura solo quando la corrente scorre attraverso il relè
3. Iscriviti a `shellies/<id>/relay/0/power` con un client MQTT e verifica che il dispositivo riporti un valore diverso da zero

### Avviso di surriscaldamento

Lo Shelly 1PM dispone di protezione termica integrata. Se la temperatura del dispositivo supera i limiti di sicurezza, `temperature_status` cambia in "High" o "Very High" e `overtemperature` diventa `true`. Assicura una ventilazione adeguata intorno al dispositivo, specialmente quando si commutano carichi elevati.

> [!WARNING]
> I dispositivi Shelly Gen1 **non supportano** MQTT su TLS. La comunicazione tra il dispositivo e il broker MQTT non è crittografata (plain MQTT, porta 1883). Assicurati che il broker MQTT si trovi su una rete locale affidabile.

## Come installare in TapHome

### Prerequisiti

- Dispositivo Shelly connesso al Wi-Fi (2,4 GHz), ad es. tramite l'app Shelly o l'access point del dispositivo stesso
- Broker MQTT attivo sulla rete locale (es. Mosquitto, Home Assistant o il broker integrato di TapHome)
- TapHome CCU sulla stessa rete del broker

> [!WARNING]
> Sui dispositivi **Gen1**, l'attivazione di MQTT **disabilita Shelly Cloud**. Entrambi non possono funzionare contemporaneamente. Sui dispositivi Gen2/Plus questa limitazione non si applica.

### Passaggio 1 — Abilitare MQTT sul dispositivo Shelly

#### Dispositivi Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

1. Apri l'interfaccia web Shelly: `http://<device-ip>/`
2. Vai su **Internet & Security** → **Advanced — MQTT**
3. Abilita **MQTT**
4. Imposta **MQTT Server**: `<broker-ip>:<port>` (es. `192.168.1.10:1883`)
5. Opzionalmente imposta **MQTT User** e **MQTT Password** se il broker richiede l'autenticazione
6. Clicca su **Save** — il dispositivo si riavvierà e si connetterà al broker

#### Dispositivi Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

1. Apri l'interfaccia web Shelly: `http://<device-ip>/`
2. Vai su **Settings** → **MQTT**
3. Abilita **MQTT**
4. Imposta **Server**: `<broker-ip>:<port>` (es. `192.168.1.10:1883`)
5. Il **Client ID** è precompilato con l'ID del dispositivo (es. `shellyplus1pm-AABBCCDDEE`) — lascialo così a meno che tu non abbia un motivo specifico per cambiarlo
6. Clicca su **Save** e riavvia il dispositivo

Con il broker integrato di TapHome, `<broker-ip>` è l'indirizzo IP del TapHome Core. Assegna al Core una prenotazione IP nel router, altrimenti il dispositivo perde il broker quando il router cambia l'indirizzo → [Preparazione della rete](https://taphome.com/it/docs/setup/network-preparation/).

> [!TIP]
> Per verificare che MQTT funzioni, usa un client MQTT (es. MQTT Explorer) e sottoscrivi `shellies/#` (Gen1) o `<device-id>/#` (Gen2). Dovresti vedere i messaggi di stato dal dispositivo.

### Passaggio 2 — Trovare il Device ID / MQTT Client ID

Alcuni template richiedono un parametro **Device ID** o **MQTT Client ID**. Questo è l'identificatore univoco utilizzato nei topic MQTT.

- **Gen1:** si trova sull'etichetta come indirizzo MAC (es. `AABBCCDDEE`). Device ID = `shelly<model>-<mac>`, es. `shelly1pm-AABBCCDDEE`
- **Gen2/Plus:** si trova nell'interfaccia web Shelly sotto **Settings** → **Device Info** → **Device ID**, oppure sull'etichetta del dispositivo

### Passaggio 3 — Configurazione in TapHome

1. In TapHome, aggiungi un nuovo modulo **Packet Parser (MQTT)**
2. **IP Address:** `127.0.0.1` per il broker integrato di TapHome (l'unità di controllo si connette a sé stessa, l'indirizzo non cambia mai); per un broker esterno il suo indirizzo IP (es. `192.168.1.10`)
3. **Port:** `1883` (predefinito; usa `8883` per TLS)
4. **Device ID / MQTT Client ID:** inserisci il valore dal passaggio 2 (se richiesto dal template)
5. Importa il template — TapHome si sottoscriverà automaticamente ai topic del dispositivo

## Dispositivi disponibili 10

Questi dispositivi compaiono in TapHome dopo l'importazione.

Shelly 1PM MQTT Modulo

Variabili personalizzate

`pulg1topic` (string) = shelly1pm-deviceid1 Device ID MQTT della prima unità Shelly 1PM — formato 'shelly1pm-DEVICEID' (il Device ID si trova nell'interfaccia web Shelly → Settings → Device Info)

Open http://shellyIpAddress → Settings → Device info → copy Device ID

`pulg2topic` (string) = shelly1pm-deviceid2 Device ID MQTT della seconda unità Shelly 1PM 

`pulg3topic` (string) = shelly1pm-deviceid3 Device ID MQTT della terza unità Shelly 1PM 

`pulg4topic` (string) = shelly1pm-deviceid4 Device ID MQTT della quarta unità Shelly 1PM 

`pulg5topic` (string) = shelly1pm-deviceid5 Device ID MQTT della quinta unità Shelly 1PM

Contatore elettrico 1 Contatore elettrico Solo lettura

Potenza in tempo reale (kW) ed energia cumulativa (kWh) per l'unità Shelly 1PM 1

numeric Unità: kW / kWh

Listener

```taphome
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
```

Interruttore 1 Interruttore Lettura e scrittura

Controllo relè per l'unità Shelly 1PM 1 — commutazione on/off con monitoraggio termico e di sovraccarico

boolean

Valori / Stati: ON · OFF

Scrittura stato interruttore

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg1topic + "/relay/0/command", value);
```

Listener

```taphome
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
```

Attributi di servizio

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

Contatore elettrico 2 Contatore elettrico Solo lettura

Potenza in tempo reale (kW) ed energia cumulativa (kWh) per l'unità Shelly 1PM 2

numeric Unità: kW / kWh

Listener

```taphome
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
```

Interruttore 2 Interruttore Lettura e scrittura

Controllo relè per l'unità Shelly 1PM 2 — commutazione on/off con monitoraggio termico e di sovraccarico

boolean

Valori / Stati: ON · OFF

Scrittura stato interruttore

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg2topic + "/relay/0/command", value);
```

Listener

```taphome
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
```

Attributi di servizio

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

Contatore elettrico 3 Contatore elettrico Solo lettura

Potenza in tempo reale (kW) ed energia cumulativa (kWh) per l'unità Shelly 1PM 3

numeric Unità: kW / kWh

Listener

```taphome
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
```

Interruttore 3 Interruttore Lettura e scrittura

Controllo relè per l'unità Shelly 1PM 3 — commutazione on/off con monitoraggio termico e di sovraccarico

boolean

Valori / Stati: ON · OFF

Scrittura stato interruttore

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg3topic + "/relay/0/command", value);
```

Listener

```taphome
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
```

Attributi di servizio

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

Contatore elettrico 4 Contatore elettrico Solo lettura

Potenza in tempo reale (kW) ed energia cumulativa (kWh) per l'unità Shelly 1PM 4

numeric Unità: kW / kWh

Listener

```taphome
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
```

Interruttore 4 Interruttore Lettura e scrittura

Controllo relè per l'unità Shelly 1PM 4 — commutazione on/off con monitoraggio termico e di sovraccarico

boolean

Valori / Stati: ON · OFF

Scrittura stato interruttore

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg4topic + "/relay/0/command", value);
```

Listener

```taphome
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
```

Attributi di servizio

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

Contatore elettrico 5 Contatore elettrico Solo lettura

Potenza in tempo reale (kW) ed energia cumulativa (kWh) per l'unità Shelly 1PM 5

numeric Unità: kW / kWh

Listener

```taphome
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
```

Interruttore 5 Interruttore Lettura e scrittura

Controllo relè per l'unità Shelly 1PM 5 — commutazione on/off con monitoraggio termico e di sovraccarico

boolean

Valori / Stati: ON · OFF

Scrittura stato interruttore

```taphome
VAR value := IF(St = 1, "on", "off");
MQTTPUBLISH("shellies/" + pulg5topic + "/relay/0/command", value);
```

Listener

```taphome
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
```

Attributi di servizio

Internal temperature

```taphome
IF(LENGTH(internalTemp) = 0, "Unknown", internalTemp + "°C");
```

Overheated

```taphome
IF(LENGTH(overTemp) = 0, "Unknown", IF(overtemp = 0, "No", "Yes"));
```

Temperature status

```taphome
IF(LENGTH(tempStatus) = 0, "Unknown", tempStatus);
```

Overpower

```taphome
IF(LENGTH(overPower) = 0, "0W", overPower + "W");
```

**Connessione:** Packet Parser → MQTT • Hostname: `shelly1pm-{MAC}.local`

Possibili miglioramenti (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.

## Parametri di importazione

Inserisci questi valori quando importi l'XML.

| Richiesto nell'app       | Predefinito   |
|--------------------------|---------------|
| Mqtt Broker Indirizzo IP | `192.168.0.1` |
| Mqtt Broker port         | `1883`        |

## Fonti

- Shelly Gen1 API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen1/) 2026-03-12
- Home Assistant Shelly Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-12

## Documentazione correlata

- [MQTT Integration](https://taphome.com/it/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/it/docs/integration/packet-parser/)
- [Funzioni Packet parser](https://taphome.com/it/docs/script/packet-parser/)
- [Funzioni di parsing](https://taphome.com/it/docs/script/parsing-functions/)
- [Broker MQTT](https://taphome.com/it/docs/integration/packet-parser/mqtt-broker/)
- [Script listener](https://taphome.com/it/docs/script/listener-scripts/)

