devices.esphome.io
Shelly Plus 0-10V
Shelly Plus 0-10V
Device Type: dimmerBoard: esp32Difficulty: Plug-n-flash, 2/5
      
   
        
GPIO Pinout
| Pin | Function | 
|---|---|
| GPIO0 | LED (Inverted) | 
| GPIO4 | Switch 1 input | 
| GPIO18 | Switch 2 input | 
| GPIO25 | Button (Inverted, Pull-up) | 
| GPIO26 | PWM (Inverted) | 
| GPIO32 | NTC | 
The Shelly Plus 0-10V is based on the ESP32-U4WDH (Single core, 160MHz, 4MB embedded flash).
The board is similar to the Shelly Plus 1 in pinout, but with an extra switch input and the PWM output instead of the relay.
Please Note: this device is a 0-10V SINKING controller for lightning (to be attached to a transformer, for example): don't expect to read 0-10V on the PWM output.
Please calibrate the NTC, the value below is just a rough estimate!
Credit and thanks to
Complete configuration
substitutions:    device_name: shelly-0-10    room: myhomeesphome:  name: $device_name  platformio_options:    board_build.f_cpu: 160000000L  area: ${room}  project:    name: "my-light"    version: "1.0.0"  min_version: 2024.4.0 #just to be sure that everything works
esp32:  board: esp32doit-devkit-v1  framework:    type: esp-idf    sdkconfig_options:      CONFIG_FREERTOS_UNICORE: y      CONFIG_ESP32_DEFAULT_CPU_FREQ_160: y      CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ: "160"
wifi:  ssid: !secret wifi_ssid  password: !secret wifi_password  power_save_mode: none  ap:    ssid: "${device_name} Fallback Hotspot"    password: !secret ap_password
logger:
api:  encryption:    key: !secret api_encryption_key
ota:  password: !secret ota_password
output:  - platform: ledc    pin: GPIO26    id: led_output    inverted: true    frequency: "1220Hz"    channel: 0    min_power: 0.6 #Set the minimum % that gives at least some light, so that low values of the output are low values of light. Remove if not needed.    zero_means_zero: true  #to avoid having the lamp on when at 0% with min power. Remove if not needed
# Example usage in a lightlight:  - platform: monochromatic    output: led_output    name: "${device_name} Light"    default_transition_length: 100ms    restore_mode: ALWAYS_ON    id: dimmer_out
binary_sensor:  - platform: gpio    name: "${device_name} Switch 1"    pin: GPIO4    filters:      - delayed_on_off: 50ms  - platform: gpio    name: "${device_name} Switch 2"    pin: GPIO18    filters:      - delayed_on_off: 50ms  - platform: gpio    name: "${device_name} Button"    pin:      number: GPIO25      inverted: yes      mode:        input: true        pullup: true    filters:      - delayed_on_off: 5ms
sensor:  - platform: ntc    sensor: temp_resistance_reading    name: "${device_name} 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: "80.0"        then:          - light.turn_off: dimmer_out  - platform: resistance    id: temp_resistance_reading    sensor: temp_analog_reading    configuration: DOWNSTREAM    resistor: 10kOhm  - platform: adc    id: temp_analog_reading    pin: GPIO32    attenuation: 12db
status_led:  pin:    number: GPIO0    inverted: true