Slow PWM Output =============== .. seo:: :description: Instructions for setting up slow pwm outputs for GPIO pins. :image: pwm.png 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. .. note:: This is for **slow** PWM output. For fast-switching PWM outputs (for example, lights), see these outputs: - ESP32: :doc:`ledc` - ESP8266: :doc:`esp8266_pwm` .. code-block:: yaml # Example configuration entry output: - platform: slow_pwm pin: D1 id: my_slow_pwm period: 15s Configuration variables: ------------------------ - **id** (**Required**, :ref:`config-id`): The id to use for this output component. - **period** (**Required**, :ref:`config-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*, :ref:`Pin Schema `): The pin to pulse. - **state_change_action** (*Optional*, :ref:`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*, :ref:`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*, :ref:`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 :ref:`Output `. .. note:: - 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. Example: -------- .. code-block:: yaml output: - platform: slow_pwm id: my_slow_pwm period: 15s turn_on_action: - lambda: |- auto *out1 = id(output1); out1->turn_on(); turn_off_action: - output.turn_off: output1 See Also -------- - :doc:`/components/output/index` - :doc:`/components/output/esp8266_pwm` - :doc:`/components/output/ledc` - :doc:`/components/light/monochromatic` - :doc:`/components/fan/speed` - :doc:`/components/power_supply` - :apiref:`slow_pwm/slow_pwm_output.h` - :ghedit:`Edit`