Slow PWM Output

Similar to PWM, the Slow PWM Output platform allows you to control GPIO pins by pulsing them on/off over a longer time period. It could be used to control a heating element through a relay where a fast PWM update cycle would not be appropriate.


This is for slow PWM output. For fast-switching PWM outputs (for example, lights), see these outputs:

# Example configuration entry
  - platform: slow_pwm
    pin: D1
    id: my_slow_pwm
    period: 15s

Configuration variables:

  • id (Required, ID): The id to use for this output component.

  • period (Required, Time): The duration of each cycle. (i.e. a 10s period at 50% duty would result in the pin being turned on for 5s, then off for 5s)

  • pin (Optional, Pin Schema): The pin to pulse.

  • state_change_action (Optional, Automation): An automation to perform when the load is switched. If a lambda is used the boolean state parameter holds the new status.

  • turn_on_action (Optional, Automation): An automation to perform when the load is turned on. Can be used to control for example a switch or output component.

  • turn_off_action (Optional, Automation): An automation to perform when the load is turned off. turn_on_action and turn_off_action must be configured together.

  • restart_cycle_on_state_change (Optional, boolean): Restart a timer of a cycle when new state is set. Defaults to false.

  • All other options from Output.


  • If pin is defined the GPIO pin state is writen before any action is executed.

  • state_change_action and turn_on_action/turn_off_action can be used togther. state_change_action is called before turn_on_action/turn_off_action. It’s recommended to use either state_change_action or turn_on_action/turn_off_action to change the state of an output. Using both automations together is only recommended for monitoring.


  - platform: slow_pwm
    id: my_slow_pwm
    period: 15s
      - lambda: |-
          auto *out1 = id(output1);
      - output.turn_off: output1

See Also