Shelly S4PL-00416EU
| Model | S4PL-00416EU |
| Vendor | Shelly |
| Description | Power strip 4 Gen4 |
| Exposes | switch (state), power, voltage, current, energy, led_mode, led_colors, led_power_brightness, led_night_mode, buttons_enabled, wifi_status, ip_address, dhcp_enabled, wifi_config |
| Picture | ![]() |
Notes
Switching to Zigbee mode
The device is shipped in Matter over WiFi Mode. This is indicated by blue flashing LED rings when in pairing mode. To use the device with Zigbee2MQTT, switch it to Zigbee mode first. This can either be done in the Web UI by connecting to the device's WiFi access point (enabled by default) or via the on-device buttons: Press and hold the button next to the first socket (from the power cord) while pressing the button next to the last socket five times. The device will reboot and indicate Zigbee pairing mode by purple flashing LED rings.
Re-enable Zigbee pairing mode by pressing and holding the first button while pressing the last button three times. Pressing and holding both buttons for three seconds will indicate a status check (Zigbee/Matter mode) on the LED rings.
Factory reset
To reset the device to factory settings, either use the Web UI (if WiFi is enabled) or press and hold the button next to the first socket (from the power cord) and the button next to the last socket simultaneously for 10 seconds. The device will indicate a factory reset with red flashing LED rings. Press and hold both buttons for five seconds to trigger a reboot without a factory reset.
Noisy status updates
Reportedly, the device is frequently publishing status updates to the network GitHub issue, Shelly community. Depending on your network and the number of Shelly power strips, this may cause instabilities. In that case, try modifying the reporting settings or enable debouncing as described here.
Options
How to use device type specific configuration
power_calibration: Calibrates the power value (percentual offset), takes into effect on next report of device. The value must be a number.power_precision: Number of digits after decimal point for power, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of0and with a maximum value of3voltage_calibration: Calibrates the voltage value (percentual offset), takes into effect on next report of device. The value must be a number.voltage_precision: Number of digits after decimal point for voltage, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of0and with a maximum value of3current_calibration: Calibrates the current value (percentual offset), takes into effect on next report of device. The value must be a number.current_precision: Number of digits after decimal point for current, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of0and with a maximum value of3energy_calibration: Calibrates the energy value (percentual offset), takes into effect on next report of device. The value must be a number.energy_precision: Number of digits after decimal point for energy, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of0and with a maximum value of3state_action: State actions will also be published as 'action' when true (default false). The value must betrueorfalse
Exposes
Switch (1 endpoint)
The current state of this switch is in the published state under the state_1 property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_1": "ON"}, {"state_1": "OFF"} or {"state_1": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_1": ""}.
On with timed off
When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on. Additionally an off_wait_time property can be added to the payload to specify the cooldown time in seconds when the switch will not answer to other on with timed off commands. Support depends on the switch firmware. Some devices might require both on_time and off_wait_time to work Examples : {"state" : "ON", "on_time": 300}, {"state" : "ON", "on_time": 300, "off_wait_time": 120}.
Switch (2 endpoint)
The current state of this switch is in the published state under the state_2 property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_2": "ON"}, {"state_2": "OFF"} or {"state_2": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_2": ""}.
On with timed off
When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on. Additionally an off_wait_time property can be added to the payload to specify the cooldown time in seconds when the switch will not answer to other on with timed off commands. Support depends on the switch firmware. Some devices might require both on_time and off_wait_time to work Examples : {"state" : "ON", "on_time": 300}, {"state" : "ON", "on_time": 300, "off_wait_time": 120}.
Switch (3 endpoint)
The current state of this switch is in the published state under the state_3 property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_3": "ON"}, {"state_3": "OFF"} or {"state_3": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_3": ""}.
On with timed off
When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on. Additionally an off_wait_time property can be added to the payload to specify the cooldown time in seconds when the switch will not answer to other on with timed off commands. Support depends on the switch firmware. Some devices might require both on_time and off_wait_time to work Examples : {"state" : "ON", "on_time": 300}, {"state" : "ON", "on_time": 300, "off_wait_time": 120}.
Switch (4 endpoint)
The current state of this switch is in the published state under the state_4 property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_4": "ON"}, {"state_4": "OFF"} or {"state_4": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_4": ""}.
On with timed off
When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on. Additionally an off_wait_time property can be added to the payload to specify the cooldown time in seconds when the switch will not answer to other on with timed off commands. Support depends on the switch firmware. Some devices might require both on_time and off_wait_time to work Examples : {"state" : "ON", "on_time": 300}, {"state" : "ON", "on_time": 300, "off_wait_time": 120}.
Power (numeric, 1 endpoint)
Instantaneous measured power. Value can be found in the published state on the power_1 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"power_1": ""}. It's not possible to write (/set) this value. The unit of this value is W.
Power (numeric, 2 endpoint)
Instantaneous measured power. Value can be found in the published state on the power_2 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"power_2": ""}. It's not possible to write (/set) this value. The unit of this value is W.
Power (numeric, 3 endpoint)
Instantaneous measured power. Value can be found in the published state on the power_3 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"power_3": ""}. It's not possible to write (/set) this value. The unit of this value is W.
Power (numeric, 4 endpoint)
Instantaneous measured power. Value can be found in the published state on the power_4 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"power_4": ""}. It's not possible to write (/set) this value. The unit of this value is W.
Voltage (numeric, 1 endpoint)
Measured electrical potential value. Value can be found in the published state on the voltage_1 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"voltage_1": ""}. It's not possible to write (/set) this value. The unit of this value is V.
Voltage (numeric, 2 endpoint)
Measured electrical potential value. Value can be found in the published state on the voltage_2 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"voltage_2": ""}. It's not possible to write (/set) this value. The unit of this value is V.
Voltage (numeric, 3 endpoint)
Measured electrical potential value. Value can be found in the published state on the voltage_3 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"voltage_3": ""}. It's not possible to write (/set) this value. The unit of this value is V.
Voltage (numeric, 4 endpoint)
Measured electrical potential value. Value can be found in the published state on the voltage_4 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"voltage_4": ""}. It's not possible to write (/set) this value. The unit of this value is V.
Current (numeric, 1 endpoint)
Instantaneous measured electrical current. Value can be found in the published state on the current_1 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"current_1": ""}. It's not possible to write (/set) this value. The unit of this value is A.
Current (numeric, 2 endpoint)
Instantaneous measured electrical current. Value can be found in the published state on the current_2 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"current_2": ""}. It's not possible to write (/set) this value. The unit of this value is A.
Current (numeric, 3 endpoint)
Instantaneous measured electrical current. Value can be found in the published state on the current_3 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"current_3": ""}. It's not possible to write (/set) this value. The unit of this value is A.
Current (numeric, 4 endpoint)
Instantaneous measured electrical current. Value can be found in the published state on the current_4 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"current_4": ""}. It's not possible to write (/set) this value. The unit of this value is A.
Energy (numeric, 1 endpoint)
Sum of consumed energy. Value can be found in the published state on the energy_1 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"energy_1": ""}. It's not possible to write (/set) this value. The unit of this value is kWh.
Energy (numeric, 2 endpoint)
Sum of consumed energy. Value can be found in the published state on the energy_2 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"energy_2": ""}. It's not possible to write (/set) this value. The unit of this value is kWh.
Energy (numeric, 3 endpoint)
Sum of consumed energy. Value can be found in the published state on the energy_3 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"energy_3": ""}. It's not possible to write (/set) this value. The unit of this value is kWh.
Energy (numeric, 4 endpoint)
Sum of consumed energy. Value can be found in the published state on the energy_4 property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"energy_4": ""}. It's not possible to write (/set) this value. The unit of this value is kWh.
LED Mode (enum)
Controls the behaviour of the LED rings around the sockets. Value can be found in the published state on the led_mode property. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"led_mode": NEW_VALUE}. The possible values are: off, switch, power.
LED colors in 'switch' mode (composite)
Can be set by publishing to zigbee2mqtt/FRIENDLY_NAME/set with payload {"led_colors": {"on_r": VALUE, "on_g": VALUE, "on_b": VALUE, "on_brightness": VALUE, "off_r": VALUE, "off_g": VALUE, "off_b": VALUE, "off_brightness": VALUE}} To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"led_colors": ""}.
on_r(numeric) max value is 100, unit is %on_g(numeric) max value is 100, unit is %on_b(numeric) max value is 100, unit is %on_brightness(numeric) max value is 100, unit is %off_r(numeric) max value is 100, unit is %off_g(numeric) max value is 100, unit is %off_b(numeric) max value is 100, unit is %off_brightness(numeric) max value is 100, unit is %
LED brightness in 'power' mode (numeric)
Value can be found in the published state on the led_power_brightness property. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"led_power_brightness": NEW_VALUE}. The minimal value is 0 and the maximum value is 100. The unit of this value is %.
LED night mode (composite)
Adjust LED brightness during night time. Can be set by publishing to zigbee2mqtt/FRIENDLY_NAME/set with payload {"led_night_mode": {"enable": VALUE, "brightness": VALUE, "from": VALUE, "until": VALUE}} To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"led_night_mode": ""}.
enable(binary) allowed values:trueorfalsebrightness(numeric) max value is 100, unit is %from(text): hh:mmuntil(text): hh:mm
Buttons enabled (composite)
Can be set by publishing to zigbee2mqtt/FRIENDLY_NAME/set with payload {"buttons_enabled": {"switch_0": VALUE, "switch_1": VALUE, "switch_2": VALUE, "switch_3": VALUE}} To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"buttons_enabled": ""}.
switch_0(binary) allowed values:momentaryordetachedswitch_1(binary) allowed values:momentaryordetachedswitch_2(binary) allowed values:momentaryordetachedswitch_3(binary) allowed values:momentaryordetached
Wi-Fi status (text)
Current connection status. Value can be found in the published state on the wifi_status property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"wifi_status": ""}. It's not possible to write (/set) this value.
IP address (text)
IP address currently assigned to the device. Value can be found in the published state on the ip_address property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"ip_address": ""}. It's not possible to write (/set) this value.
DHCP enabled (binary)
Indicates whether DHCP is used to automatically assign network settings. Value can be found in the published state on the dhcp_enabled property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"dhcp_enabled": ""}. It's not possible to write (/set) this value. If value equals true dHCP enabled is ON, if false OFF.
Wi-Fi Configuration (composite)
Can be set by publishing to zigbee2mqtt/FRIENDLY_NAME/set with payload {"wifi_config": {"enabled": VALUE, "ssid": VALUE, "password": VALUE, "static_ip": VALUE, "net_mask": VALUE, "gateway": VALUE, "name_server": VALUE}} To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"wifi_config": ""}.
enabled(binary): Enable/disable Wi-Fi connectivity allowed values:trueorfalsessid(text): Name (SSID) of the Wi-Fi network to connect topassword(text): Password for the selected Wi-Fi networkstatic_ip(text): Manually assigned IP address (used when DHCP is disabled)net_mask(text): Subnet mask for the static IP configurationgateway(text): Default gateway address for static IP configurationname_server(text): Name server address for static IP configuration

