Skip to main content
Device Type:light
Electrical Standard:ukuseu
Board:esp32

Shelly Pro RGBWW PM

Product Image

GPIO Pinout

The SW inputs are connected via AiP4052 multiplexers (compatible with other 4052 chips). The multiplexer select lines S0 and S1 are connected to GPIO0 and GPIO2 respectively.

PinConditionFunction
GPIO0-Mux Select S0
GPIO2-Mux Select S1
GPIO12-PWM2
GPIO13-PWM1
GPIO14-PWM3
GPIO16-PWM4
GPIO17-PWM5
??NTC Temp Sensor
??Voltage Monitor
??Wi-Fi LED
GPIO35-Reset Button
GPIO36GPIO0=1, GPIO2=0SW4
GPIO36GPIO0=0, GPIO2=1SW1
GPIO37GPIO0=0, GPIO2=1SW2
GPIO38GPIO0=0, GPIO2=1SW3
GPIO39GPIO0=0, GPIO2=1SW5

Pro addon interface

Use it for flashing. Connect GPIO0 to GND during reset. Do not connect +12V pin (neither +12V power to other connectors).

Addon interface pinout

Configuration monochromatic channel

partitions_8mb_ota.csv:

# Name,   Type, SubType, Offset,  Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x330000,
app1, app, ota_1, 0x340000,0x330000,
spiffs, data, spiffs, 0x670000,0x190000,

esphome:
name: shelly-pro-rgbww-pm
platformio_options:
board_build.flash_mode: dio

esp32:
board: esp32dev
variant: esp32
flash_size: 8MB
framework:
type: esp-idf
partitions: partitions_8mb_ota.csv

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password

captive_portal:
logger:
api:
ota:
platform: esphome

web_server:
port: 80

light:
- platform: monochromatic
name: "Channel 1"
output: pwm_1

- platform: monochromatic
name: "Channel 2"
output: pwm_2

- platform: monochromatic
name: "Channel 3"
output: pwm_3

- platform: monochromatic
name: "Channel 4"
output: pwm_4

- platform: monochromatic
name: "Channel 5"
output: pwm_5

# Alternatively, use RGBWW light platform
# - platform: rgbww
# name: ${device_name} Led Stip
# red: pwm_1
# green: pwm_2
# blue: pwm_3
# cold_white: pwm_4
# warm_white: pwm_5

output:
- platform: ledc
pin: GPIO13
id: pwm_1

- platform: ledc
pin: GPIO12
id: pwm_2

- platform: ledc
pin: GPIO14
id: pwm_3

- platform: ledc
pin: GPIO16
id: pwm_4

- platform: ledc
pin: GPIO17
id: pwm_5

- platform: gpio
id: mux_a
pin: 0

- platform: gpio
id: mux_b
pin: 2

binary_sensor:
- platform: gpio
pin:
number: GPIO35
inverted: True
name: ${device_name} Reset Button
filters:
- delayed_on_off: 10ms

- platform: gpio
id: in36
pin: { number: 36, mode: INPUT }
- platform: gpio
id: in37
pin: { number: 37, mode: INPUT }
- platform: gpio
id: in38
pin: { number: 38, mode: INPUT }
- platform: gpio
id: in39
pin: { number: 39, mode: INPUT }

- platform: template
name: "SW1"
id: sw1

- platform: template
name: "SW2"
id: sw2

- platform: template
name: "SW3"
id: sw3

- platform: template
name: "SW4"
id: sw4

- platform: template
name: "SW5"
id: sw5

interval:
- interval: 50ms
then:
- lambda: |-
id(mux_a).turn_on();
id(mux_b).turn_off();
delay(1);
id(sw4).publish_state(gpio_get_level(GPIO_NUM_36) == 0);

id(mux_a).turn_off();
id(mux_b).turn_on();
delay(1);
id(sw1).publish_state(gpio_get_level(GPIO_NUM_36) == 0);
id(sw2).publish_state(gpio_get_level(GPIO_NUM_37) == 0);
id(sw3).publish_state(gpio_get_level(GPIO_NUM_38) == 0);
id(sw5).publish_state(gpio_get_level(GPIO_NUM_39) == 0);