Shelly 2.5 getting hot to touch (63°C external case) - should I be worried?

Hi Trioon:
By the way.
May you share the configuration for how to show Shelly temperature by degreee C ?
Tks

I communicate with the Shelly by MQTT, which has one topic for °C and one for °F (here is the API reference):

- platform: mqtt
  name: "Immersion switch temperature"
  state_topic: "shellies/shelly1pm-xxxxxx/temperature"
  unit_of_measurement: "°C"
  device_class: temperature

tks for your reply
by the way, may you share config for switch?

tks again

light or switch - config is very similar if not the same. Also shelly1, 1pm, 2.5 are the same in regard of mqtt relay configuration
It differs in a domain the definition is member of. (see mqtt light and mqtt switch documentation).
comparing to post above I would define more details for the entity. Here is config of relay 0 one of my shellies 2.5. For second relay you need to duplicate the code changing name and relay number from 0 to 1.
Also note, Shelly2.5 provides sensors (internal temp and power usage)

  - plateform: mqtt
    name: "Entrance"
    command_topic: "shellies/shelly25-entrance/relay/0/command"
    state_topic: "shellies/shelly25-entrance/relay/0"
    availability_topic: "shellies/shelly25-entrance/online"
    qos: 1
    retain: false
    payload_on: "on"
    payload_off: "off"
    payload_available: "true"
    payload_not_available: "false"
    optimistic: false

Just built in a shelly 2.5 esphome flashed…

Instantly (after a few minutes) lights out and message on app… temperature too high… Is this normal? Only 300W lamp connected…

image

max_temp was set by me at 75… now I have set it at 85…

Is this normal behavior??

substitutions:
devicename: shelly_25_01
  # ip: 192.168.xx.xx
  channel_1: Relay 1
  channel_2: Relay 2

  ssid: IOTDOM
  password: !secret IOTDOM_wifi_key

  max_power: "2000.0"
  max_temp: "85.0"

esphome:
  name: ${devicename}
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: "IOTDOM"
  password: !secret IOTDOM_wifi_key
  domain: !secret domain
  use_address: 192.168.6.28
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${devicename} Fallback Hotspot"
    password: !secret Fallback_Hotspot

captive_portal:

# Enable logging
logger:
  level: DEBUG

# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

time:
  - platform: sntp
    id: my_time

i2c:
  sda: GPIO12
  scl: GPIO14

sensor:
  - platform: ade7953
    voltage:
      name: ${devicename} voltage
    current_a:
      name: ${channel_2} current
      internal: true
    current_b:
      name: ${channel_1} current
      internal: true
    active_power_a:
      name: ${channel_2} power
      id: power_channel_2
      filters:
        - multiply: 1
      on_value_range:
        - above: ${max_power}
          then:
            - switch.turn_off: shelly_relay_2
            - homeassistant.service:
                service: persistent_notification.create
                data:
                  title: Message from ${devicename}
                data_template:
                  message: Switch turned off because power exceeded ${max_power}W
    active_power_b:
      name: ${channel_1} power
      id: power_channel_1
      filters:
        - multiply: -1
      on_value_range:
        - above: ${max_power}
          then:
            - switch.turn_off: shelly_relay_1
            - homeassistant.service:
                service: persistent_notification.create
                data:
                  title: Message from ${devicename}
                data_template:
                  message: Switch turned off because power exceeded ${max_power}W
    update_interval: 30s

  - platform: total_daily_energy
    name: ${channel_1} energy
    power_id: power_channel_1
    filters:
      # Multiplication factor from W to kW is 0.001
      - multiply: 0.001
    unit_of_measurement: kW

  - platform: total_daily_energy
    name: ${channel_2} energy
    power_id: power_channel_2
    filters:
      # Multiplication factor from W to kW is 0.001
      - multiply: 0.001
    unit_of_measurement: kW

  # NTC Temperature
  - platform: ntc
    sensor: temp_resistance_reading
    name: ${devicename} temperature
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    icon: "mdi:thermometer"
    calibration:
      b_constant: 3350
      reference_resistance: 10kOhm
      reference_temperature: 298.15K
    on_value_range:
      - above: ${max_temp}
        then:
          - switch.turn_off: shelly_relay_1
          - switch.turn_off: shelly_relay_2
          - homeassistant.service:
              service: persistent_notification.create
              data:
                title: Message from ${devicename}
              data_template:
                message: Switch turned off because temperature exceeded ${max_temp}°C
  - platform: resistance
    id: temp_resistance_reading
    sensor: temp_analog_reading
    configuration: DOWNSTREAM
    resistor: 32kOhm
  - platform: adc
    id: temp_analog_reading
    pin: A0

status_led:
  pin:
    number: GPIO0
    inverted: yes

switch:
  - platform: gpio
    id: shelly_relay_1
    name: ${channel_1} relay
    pin: GPIO4
    icon: "mdi:electric-switch"
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    id: shelly_relay_2
    name: ${channel_2} relay
    pin: GPIO15
    icon: "mdi:electric-switch"
    restore_mode: RESTORE_DEFAULT_OFF

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO5
    name: "${channel_1} input"
    on_state:
      then:
        - switch.toggle: shelly_relay_1
  - platform: gpio
    pin:
      number: GPIO13
    name: "${channel_2} input"
    on_state:
      then:
        - switch.toggle: shelly_relay_2

Check this:

4 Likes

@makai THANK YOU!!!

I think ESPHome already addressed the problem by adding the irq_pin.
Still my units get hotter than 75°C is this still normal?

# If you change the light for a sitch or the other way around, 
# make shure to also change
# the automation service call "light.turn_off" / "swich.turn_off".

#Variables
substitutions:
  device_name: shelly_5_25_kitchen
  node_name: Shelly25 Kitchen
  # Name for the relays
  channel_1: Kitchen Spot
  channel_2: Kitchen Exhaust Fan
  max_power: "2000.0" # watt
  max_temp: "80.0" # °C

# Basic Config
esphome:
  name: "${device_name}"
  platform: ESP8266
  board: esp01_1m
  build_path: ./build/${device_name}

wifi:
  use_address: 10.25.30.107

packages:
  #Wifi Settings
  wifi: !include includes/network.yaml

#Device Specific Config

script:
  - id: protection_temp
    then:
      - light.turn_off: channel_1
      - fan.turn_off: channel_2
      - homeassistant.service:
          service: persistent_notification.create
          data:
            title: Message from ${node_name}
          data_template:
            message: Switch turned off because temperature exceeded ${max_temp}°C
  - id: protection_power
    then:
      - light.turn_off: channel_1
      - fan.turn_off: channel_2
      - homeassistant.service:
          service: persistent_notification.create
          data:
            title: Message from ${node_name}
          data_template:
            message: Switch turned off because power exceeded ${max_power}°C

i2c:
  sda: GPIO12
  scl: GPIO14

sensor:
  - platform: ade7953
    irq_pin: GPIO16
    voltage:
      name: ${node_name} Voltage
    current_a:
      name: ${channel_1} Current
    active_power_a:
      name: ${channel_1} Power
      id: channel_1_power
      filters:
        - multiply: 1
      on_value_range:
      - above: ${max_power}
        then:
          - script.execute: protection_power
    current_b:
      name: ${channel_2} Current
    active_power_b:
      name: ${channel_2} Power
      id: channel_2_power
      filters:
        - multiply: 1
      on_value_range:
      - above: ${max_power}
        then:
          - script.execute: protection_power
    update_interval: 60s

  # NTC Temperature
  - platform: ntc
    sensor: temp_resistance_reading
    name: ${node_name} Temperature
    calibration:
      b_constant: 3350
      reference_resistance: 10kOhm
      reference_temperature: 298.15K
    
    on_value_range:
    - above: ${max_temp}
      then:
        - script.execute: protection_temp
  - platform: resistance
    id: temp_resistance_reading
    sensor: temp_analog_reading
    configuration: DOWNSTREAM
    resistor: 32kOhm
  - platform: adc
    id: temp_analog_reading
    pin: A0



## Changed to always off under switch component
#status_led:
#  pin:
#    number: GPIO0
#    inverted: yes



    
## Added to turn off status led
switch:
  - platform: gpio
    pin:
      number: GPIO0
      inverted: true
    id: status_light
    restore_mode: ALWAYS_OFF
    internal: true

output:
  - platform: gpio
    pin: GPIO15
    id: out_channel_1
  - platform: gpio
    pin: GPIO4
    id: out_channel_2

fan:
  - platform: binary
    output: out_channel_2
    name: "${channel_2}"
    id: channel_2

light:
  - platform: binary
    name: "${channel_1}"
    restore_mode: RESTORE_DEFAULT_OFF
    output: out_channel_1
    id: channel_1

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO13
    name: "${channel_1}"
    on_state:
      then:
        - light.toggle: channel_1
    internal: true

  - platform: gpio
    pin:
      number: GPIO5
    name: "${channel_2}"
    on_state:
      then:
        - fan.toggle: channel_2
    internal: true

I don’t know. Add a binary sensor for gpio 16 and check again

it’s already in:


sensor:
  - platform: ade7953
    irq_pin: GPIO16

Ok but that doesn’t seems to work. So follow the link above and add:

binary_sensor:
  - platform: gpio
    pin: GPIO16
    name: "ade7953 IRQ pin"
    internal: true

If then it’s working as expected, open an issue at Esphome GitHub about irq_pin

Hi,
My Shelly 2.5 is at 50C with no load and almost 70C with just 40W (like 15W+25W) total load, using the original firmware. It is in a closed fuse box in a basement at like 14C.
My understanding is that if you want to drive any load you should probably put a proper contactor/relay in between or simply use 2 x Shelly 1 which have a dry relay. I have a Shelly 1 with like 300W and by touch it does not seem to get very hot.
From some discussions on the Shelly forums, it seems the manufacturer claims it is ok to have high temperatures with the 2.5 but, like most users i guess, I do not feel good about it reaching 80C or 90C.

link possible?

I did not have it handy but with a bit of digging i think i had this one in mind:
https://www.shelly-support.eu/forum/index.php?thread/3957-dimmer-2-overtemperature-error/&postID=55063#post55063

There are a few discussion on overheating on their forum: if you search you may find more useful data points.

That said i like very much the Shelly devices because they are more opened than most devices right out of the box and they don’t try to push their app and cloud down your throat. Just have to be aware of the practical vs theoritical load limits.

That is about a dimmer, not the shelly 2.5…

Right. But it does not matter much: the 1PM, 2.5 and any without dry relay are subject to overheating.

That said, I found the more relevant post involving one of their technical guy (it was not on their forum as i thought but only linked from their forum to their facebook page):
https://m.facebook.com/groups/1686781668087857?view=permalink&id=2054834997949187

Their tech support is relatively responsive so if you need more details probably best to go directly to the source.

I can confirm they (Shelly) claims what JeanC said about S2.5.
it doesn’t change the fact that such temperatures might be limitting as well as one might have concerns about energy loss/waste

Ok, but formally now “what is said then” :thinking:, in other words… is 90 to 95 degrees safe and cut off at 95 normal? Even if it “can get 120 degrees” :flushed:. That facebook post does not make things more clear but more vague :sweat_smile:

FWIW, I measured the case temperature of a Wemo Insight plug. A washing machine is connected to it and typically draws from 200 to 450 watts depending on the washing cycle. While it was part way through a spin cycle (consumes more power) I took several measurements and the highest value was 37.2 C (99 F).

I also have a refrigerator connected to a CE Smart Plug with Energy Monitoring (flashed with Tasmota). It consumes about 150 watts (when the compressor kicks in) and the plug’s case temperature is just a few degrees above ambient.

Right it is not a tech doc. I think he tried to say they cut 10C below rating of the components (105C) and that they are confortable with that margin. Personally i am not :slight_smile: