Rotary Encoder Sensor¶
rotary_encoder sensor platform allows you to use any continuous-rotation
rotary encoders with ESPHome. These devices usually have two pins with which
they encode the rotation. Every time the knob of the rotary encoder is turned, the
signals of the two pins go HIGH and LOW in turn. See
this Arduino article to gain
a better understanding of these sensors.
To use rotary encoders in ESPHome, first identify the two pins encoding th step value.
These are often called
DT as in above image. Note if the values this sensor
outputs go in the wrong direction, you can just swap these two pins.
# Example configuration entry sensor: - platform: rotary_encoder name: "Rotary Encoder" pin_a: D1 pin_b: D2
pin_a (Required, Pin Schema): The first pin for determining the step value. Must not be a pin from an external I/O expander.
pin_b (Required, Pin Schema): The second pin for determining the step value. Must not be a pin from an external I/O expander.
name (Required, string): The name of the rotary encoder sensor.
pin_reset (Optional, Pin Schema): An optional pin that resets the step value. This is useful with rotary encoders that have have a third pin. Defaults to no reset pin.
resolution (Optional, string): The resolution of the sensor, this controls how many pulses are generated by one step:
id (Optional, ID): Manually specify the ID used for code generation.
min_value (Optional, int): The minimum value this rotary encoder will go to, turning the knob further will not decrease the number. Defaults to no minimum.
max_value (Optional, int): The maximum value this rotary encoder will go to, turning the knob further will not increase the number. Defaults to no maximum.
All other options from Sensor.
The internal state of the rotary encoder can be manually changed to any value with this action. After executing this action, rotating the encoder further will increase/decrease the state relative to the newly set internal value.
# Example configuration entry sensor: - platform: rotary_encoder id: my_rotary_encoder # ... # in some trigger on_...: - sensor.rotary_encoder.set_value: id: my_rotary_encoder value: 10 # Templated - sensor.my_rotary_encoder.publish: id: my_rotary_encoder value: !lambda 'return -1;'
With these configuration options, you can run automations based on the direction that the encoder has been turned, and not the value that it currently holds. These triggers ignore the min and max values and will trigger on every step.
on_clockwise: - logger.log: "Turned Clockwise" on_anticlockwise: - logger.log: "Turned Anticlockwise"