mirror of
https://github.com/esphome/esphome.git
synced 2025-09-16 10:12:21 +01:00
add-black (#1593)
* Add black Update pre commit Update pre commit add empty line * Format with black
This commit is contained in:
committed by
GitHub
parent
2b60b0f1fa
commit
69879920eb
@@ -2,30 +2,45 @@ import esphome.codegen as cg
|
||||
import esphome.config_validation as cv
|
||||
from esphome import pins, automation
|
||||
from esphome.components import sensor
|
||||
from esphome.const import CONF_ID, CONF_RESOLUTION, CONF_MIN_VALUE, CONF_MAX_VALUE, \
|
||||
DEVICE_CLASS_EMPTY, UNIT_STEPS, ICON_ROTATE_RIGHT, CONF_VALUE, CONF_PIN_A, CONF_PIN_B, \
|
||||
CONF_TRIGGER_ID
|
||||
from esphome.const import (
|
||||
CONF_ID,
|
||||
CONF_RESOLUTION,
|
||||
CONF_MIN_VALUE,
|
||||
CONF_MAX_VALUE,
|
||||
DEVICE_CLASS_EMPTY,
|
||||
UNIT_STEPS,
|
||||
ICON_ROTATE_RIGHT,
|
||||
CONF_VALUE,
|
||||
CONF_PIN_A,
|
||||
CONF_PIN_B,
|
||||
CONF_TRIGGER_ID,
|
||||
)
|
||||
|
||||
rotary_encoder_ns = cg.esphome_ns.namespace('rotary_encoder')
|
||||
RotaryEncoderResolution = rotary_encoder_ns.enum('RotaryEncoderResolution')
|
||||
rotary_encoder_ns = cg.esphome_ns.namespace("rotary_encoder")
|
||||
RotaryEncoderResolution = rotary_encoder_ns.enum("RotaryEncoderResolution")
|
||||
RESOLUTIONS = {
|
||||
1: RotaryEncoderResolution.ROTARY_ENCODER_1_PULSE_PER_CYCLE,
|
||||
2: RotaryEncoderResolution.ROTARY_ENCODER_2_PULSES_PER_CYCLE,
|
||||
4: RotaryEncoderResolution.ROTARY_ENCODER_4_PULSES_PER_CYCLE,
|
||||
}
|
||||
|
||||
CONF_PIN_RESET = 'pin_reset'
|
||||
CONF_ON_CLOCKWISE = 'on_clockwise'
|
||||
CONF_ON_ANTICLOCKWISE = 'on_anticlockwise'
|
||||
CONF_PIN_RESET = "pin_reset"
|
||||
CONF_ON_CLOCKWISE = "on_clockwise"
|
||||
CONF_ON_ANTICLOCKWISE = "on_anticlockwise"
|
||||
|
||||
RotaryEncoderSensor = rotary_encoder_ns.class_('RotaryEncoderSensor', sensor.Sensor, cg.Component)
|
||||
RotaryEncoderSetValueAction = rotary_encoder_ns.class_('RotaryEncoderSetValueAction',
|
||||
automation.Action)
|
||||
RotaryEncoderSensor = rotary_encoder_ns.class_(
|
||||
"RotaryEncoderSensor", sensor.Sensor, cg.Component
|
||||
)
|
||||
RotaryEncoderSetValueAction = rotary_encoder_ns.class_(
|
||||
"RotaryEncoderSetValueAction", automation.Action
|
||||
)
|
||||
|
||||
RotaryEncoderClockwiseTrigger = rotary_encoder_ns.class_('RotaryEncoderClockwiseTrigger',
|
||||
automation.Trigger)
|
||||
RotaryEncoderAnticlockwiseTrigger = rotary_encoder_ns.class_('RotaryEncoderAnticlockwiseTrigger',
|
||||
automation.Trigger)
|
||||
RotaryEncoderClockwiseTrigger = rotary_encoder_ns.class_(
|
||||
"RotaryEncoderClockwiseTrigger", automation.Trigger
|
||||
)
|
||||
RotaryEncoderAnticlockwiseTrigger = rotary_encoder_ns.class_(
|
||||
"RotaryEncoderAnticlockwiseTrigger", automation.Trigger
|
||||
)
|
||||
|
||||
|
||||
def validate_min_max_value(config):
|
||||
@@ -33,30 +48,47 @@ def validate_min_max_value(config):
|
||||
min_val = config[CONF_MIN_VALUE]
|
||||
max_val = config[CONF_MAX_VALUE]
|
||||
if min_val >= max_val:
|
||||
raise cv.Invalid("Max value {} must be smaller than min value {}"
|
||||
"".format(max_val, min_val))
|
||||
raise cv.Invalid(
|
||||
"Max value {} must be smaller than min value {}"
|
||||
"".format(max_val, min_val)
|
||||
)
|
||||
return config
|
||||
|
||||
|
||||
CONFIG_SCHEMA = cv.All(sensor.sensor_schema(
|
||||
UNIT_STEPS, ICON_ROTATE_RIGHT, 0, DEVICE_CLASS_EMPTY
|
||||
).extend({
|
||||
cv.GenerateID(): cv.declare_id(RotaryEncoderSensor),
|
||||
cv.Required(CONF_PIN_A): cv.All(pins.internal_gpio_input_pin_schema,
|
||||
pins.validate_has_interrupt),
|
||||
cv.Required(CONF_PIN_B): cv.All(pins.internal_gpio_input_pin_schema,
|
||||
pins.validate_has_interrupt),
|
||||
cv.Optional(CONF_PIN_RESET): pins.internal_gpio_output_pin_schema,
|
||||
cv.Optional(CONF_RESOLUTION, default=1): cv.enum(RESOLUTIONS, int=True),
|
||||
cv.Optional(CONF_MIN_VALUE): cv.int_,
|
||||
cv.Optional(CONF_MAX_VALUE): cv.int_,
|
||||
cv.Optional(CONF_ON_CLOCKWISE): automation.validate_automation({
|
||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(RotaryEncoderClockwiseTrigger),
|
||||
}),
|
||||
cv.Optional(CONF_ON_ANTICLOCKWISE): automation.validate_automation({
|
||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(RotaryEncoderAnticlockwiseTrigger),
|
||||
}),
|
||||
}).extend(cv.COMPONENT_SCHEMA), validate_min_max_value)
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
sensor.sensor_schema(UNIT_STEPS, ICON_ROTATE_RIGHT, 0, DEVICE_CLASS_EMPTY)
|
||||
.extend(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(RotaryEncoderSensor),
|
||||
cv.Required(CONF_PIN_A): cv.All(
|
||||
pins.internal_gpio_input_pin_schema, pins.validate_has_interrupt
|
||||
),
|
||||
cv.Required(CONF_PIN_B): cv.All(
|
||||
pins.internal_gpio_input_pin_schema, pins.validate_has_interrupt
|
||||
),
|
||||
cv.Optional(CONF_PIN_RESET): pins.internal_gpio_output_pin_schema,
|
||||
cv.Optional(CONF_RESOLUTION, default=1): cv.enum(RESOLUTIONS, int=True),
|
||||
cv.Optional(CONF_MIN_VALUE): cv.int_,
|
||||
cv.Optional(CONF_MAX_VALUE): cv.int_,
|
||||
cv.Optional(CONF_ON_CLOCKWISE): automation.validate_automation(
|
||||
{
|
||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
||||
RotaryEncoderClockwiseTrigger
|
||||
),
|
||||
}
|
||||
),
|
||||
cv.Optional(CONF_ON_ANTICLOCKWISE): automation.validate_automation(
|
||||
{
|
||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
||||
RotaryEncoderAnticlockwiseTrigger
|
||||
),
|
||||
}
|
||||
),
|
||||
}
|
||||
)
|
||||
.extend(cv.COMPONENT_SCHEMA),
|
||||
validate_min_max_value,
|
||||
)
|
||||
|
||||
|
||||
def to_code(config):
|
||||
@@ -85,11 +117,16 @@ def to_code(config):
|
||||
yield automation.build_automation(trigger, [], conf)
|
||||
|
||||
|
||||
@automation.register_action('sensor.rotary_encoder.set_value', RotaryEncoderSetValueAction,
|
||||
cv.Schema({
|
||||
cv.Required(CONF_ID): cv.use_id(sensor.Sensor),
|
||||
cv.Required(CONF_VALUE): cv.templatable(cv.int_),
|
||||
}))
|
||||
@automation.register_action(
|
||||
"sensor.rotary_encoder.set_value",
|
||||
RotaryEncoderSetValueAction,
|
||||
cv.Schema(
|
||||
{
|
||||
cv.Required(CONF_ID): cv.use_id(sensor.Sensor),
|
||||
cv.Required(CONF_VALUE): cv.templatable(cv.int_),
|
||||
}
|
||||
),
|
||||
)
|
||||
def sensor_template_publish_to_code(config, action_id, template_arg, args):
|
||||
paren = yield cg.get_variable(config[CONF_ID])
|
||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||
|
Reference in New Issue
Block a user