Exemple #1
0
 validate_unit_of_measurement,
 cv.Optional(CONF_ACCURACY_DECIMALS):
 validate_accuracy_decimals,
 cv.Optional(CONF_DEVICE_CLASS):
 validate_device_class,
 cv.Optional(CONF_STATE_CLASS):
 validate_state_class,
 cv.Optional("last_reset_type"):
 cv.invalid(
     "last_reset_type has been removed since 2021.9.0. state_class: total_increasing should be used for total values."
 ),
 cv.Optional(CONF_FORCE_UPDATE, default=False):
 cv.boolean,
 cv.Optional(CONF_EXPIRE_AFTER):
 cv.All(
     cv.requires_component("mqtt"),
     cv.Any(None, cv.positive_time_period_milliseconds),
 ),
 cv.Optional(CONF_FILTERS):
 validate_filters,
 cv.Optional(CONF_ON_VALUE):
 automation.validate_automation({
     cv.GenerateID(CONF_TRIGGER_ID):
     cv.declare_id(SensorStateTrigger),
 }),
 cv.Optional(CONF_ON_RAW_VALUE):
 automation.validate_automation({
     cv.GenerateID(CONF_TRIGGER_ID):
     cv.declare_id(SensorRawStateTrigger),
 }),
 cv.Optional(CONF_ON_VALUE_RANGE):
Exemple #2
0
FanSpeed = fan_ns.enum('FanSpeed')
FAN_SPEEDS = {
    'OFF': FanSpeed.FAN_SPEED_OFF,
    'LOW': FanSpeed.FAN_SPEED_LOW,
    'MEDIUM': FanSpeed.FAN_SPEED_MEDIUM,
    'HIGH': FanSpeed.FAN_SPEED_HIGH,
}

FAN_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({
    cv.GenerateID():
    cv.declare_id(FanState),
    cv.OnlyWith(CONF_MQTT_ID, 'mqtt'):
    cv.declare_id(mqtt.MQTTFanComponent),
    cv.Optional(CONF_OSCILLATION_STATE_TOPIC):
    cv.All(cv.requires_component('mqtt'), cv.publish_topic),
    cv.Optional(CONF_OSCILLATION_COMMAND_TOPIC):
    cv.All(cv.requires_component('mqtt'), cv.subscribe_topic),
    cv.Optional(CONF_SPEED_STATE_TOPIC):
    cv.All(cv.requires_component('mqtt'), cv.publish_topic),
    cv.Optional(CONF_SPEED_COMMAND_TOPIC):
    cv.All(cv.requires_component('mqtt'), cv.subscribe_topic),
})


@coroutine
def setup_fan_core_(var, config):
    cg.add(var.set_name(config[CONF_NAME]))
    if CONF_INTERNAL in config:
        cg.add(var.set_internal(config[CONF_INTERNAL]))
Exemple #3
0
TurnOnAction = fan_ns.class_('TurnOnAction', automation.Action)
TurnOffAction = fan_ns.class_('TurnOffAction', automation.Action)
ToggleAction = fan_ns.class_('ToggleAction', automation.Action)

FanSpeed = fan_ns.enum('FanSpeed')
FAN_SPEEDS = {
    'OFF': FanSpeed.FAN_SPEED_OFF,
    'LOW': FanSpeed.FAN_SPEED_LOW,
    'MEDIUM': FanSpeed.FAN_SPEED_MEDIUM,
    'HIGH': FanSpeed.FAN_SPEED_HIGH,
}

FAN_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({
    cv.GenerateID(): cv.declare_id(FanState),
    cv.OnlyWith(CONF_MQTT_ID, 'mqtt'): cv.declare_id(mqtt.MQTTFanComponent),
    cv.Optional(CONF_OSCILLATION_STATE_TOPIC): cv.All(cv.requires_component('mqtt'),
                                                      cv.publish_topic),
    cv.Optional(CONF_OSCILLATION_COMMAND_TOPIC): cv.All(cv.requires_component('mqtt'),
                                                        cv.subscribe_topic),
})


@coroutine
def setup_fan_core_(var, config):
    cg.add(var.set_name(config[CONF_NAME]))
    if CONF_INTERNAL in config:
        cg.add(var.set_internal(config[CONF_INTERNAL]))

    if CONF_MQTT_ID in config:
        mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
        yield mqtt.register_mqtt_component(mqtt_, config)
Exemple #4
0
FilterOutValueFilter = sensor_ns.class_('FilterOutValueFilter', Filter)
FilterOutNANFilter = sensor_ns.class_('FilterOutNANFilter', Filter)
ThrottleFilter = sensor_ns.class_('ThrottleFilter', Filter)
DebounceFilter = sensor_ns.class_('DebounceFilter', Filter, Component)
HeartbeatFilter = sensor_ns.class_('HeartbeatFilter', Filter, Component)
DeltaFilter = sensor_ns.class_('DeltaFilter', Filter)
OrFilter = sensor_ns.class_('OrFilter', Filter)
UniqueFilter = sensor_ns.class_('UniqueFilter', Filter)
SensorInRangeCondition = sensor_ns.class_('SensorInRangeCondition', Filter)

SENSOR_SCHEMA = cv.MQTT_COMPONENT_SCHEMA.extend({
    cv.GenerateID(CONF_MQTT_ID): cv.declare_variable_id(MQTTSensorComponent),
    vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string_strict,
    vol.Optional(CONF_ICON): cv.icon,
    vol.Optional(CONF_ACCURACY_DECIMALS): vol.Coerce(int),
    vol.Optional(CONF_EXPIRE_AFTER): vol.All(cv.requires_component('mqtt'),
                                             vol.Any(None, cv.positive_time_period_milliseconds)),
    vol.Optional(CONF_FILTERS): FILTERS_SCHEMA,
    vol.Optional(CONF_ON_VALUE): automation.validate_automation({
        cv.GenerateID(CONF_TRIGGER_ID): cv.declare_variable_id(SensorStateTrigger),
    }),
    vol.Optional(CONF_ON_RAW_VALUE): automation.validate_automation({
        cv.GenerateID(CONF_TRIGGER_ID): cv.declare_variable_id(SensorRawStateTrigger),
    }),
    vol.Optional(CONF_ON_VALUE_RANGE): automation.validate_automation({
        cv.GenerateID(CONF_TRIGGER_ID): cv.declare_variable_id(ValueRangeTrigger),
        vol.Optional(CONF_ABOVE): cv.float_,
        vol.Optional(CONF_BELOW): cv.float_,
    }, cv.has_at_least_one_key(CONF_ABOVE, CONF_BELOW)),
})
Exemple #5
0
CoverClosedTrigger = cover_ns.class_("CoverClosedTrigger",
                                     automation.Trigger.template())

CONF_ON_OPEN = "on_open"
CONF_ON_CLOSED = "on_closed"

COVER_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(
    cv.MQTT_COMMAND_COMPONENT_SCHEMA).extend({
        cv.GenerateID():
        cv.declare_id(Cover),
        cv.OnlyWith(CONF_MQTT_ID, "mqtt"):
        cv.declare_id(mqtt.MQTTCoverComponent),
        cv.Optional(CONF_DEVICE_CLASS):
        cv.one_of(*DEVICE_CLASSES, lower=True),
        cv.Optional(CONF_POSITION_COMMAND_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.subscribe_topic),
        cv.Optional(CONF_POSITION_STATE_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.subscribe_topic),
        cv.Optional(CONF_TILT_COMMAND_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.subscribe_topic),
        cv.Optional(CONF_TILT_STATE_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.subscribe_topic),
        cv.Optional(CONF_ON_OPEN):
        automation.validate_automation({
            cv.GenerateID(CONF_TRIGGER_ID):
            cv.declare_id(CoverOpenTrigger),
        }),
        cv.Optional(CONF_ON_CLOSED):
        automation.validate_automation({
            cv.GenerateID(CONF_TRIGGER_ID):
            cv.declare_id(CoverClosedTrigger),
Exemple #6
0
accuracy_decimals = cv.int_
icon = cv.icon

SENSOR_SCHEMA = cv.MQTT_COMPONENT_SCHEMA.extend({
    cv.OnlyWith(CONF_MQTT_ID, 'mqtt'):
    cv.declare_id(mqtt.MQTTSensorComponent),
    cv.GenerateID():
    cv.declare_id(Sensor),
    cv.Optional(CONF_UNIT_OF_MEASUREMENT):
    unit_of_measurement,
    cv.Optional(CONF_ICON):
    icon,
    cv.Optional(CONF_ACCURACY_DECIMALS):
    accuracy_decimals,
    cv.Optional(CONF_EXPIRE_AFTER):
    cv.All(cv.requires_component('mqtt'),
           cv.Any(None, cv.positive_time_period_milliseconds)),
    cv.Optional(CONF_FILTERS):
    validate_filters,
    cv.Optional(CONF_ON_VALUE):
    automation.validate_automation({
        cv.GenerateID(CONF_TRIGGER_ID):
        cv.declare_id(SensorStateTrigger),
    }),
    cv.Optional(CONF_ON_RAW_VALUE):
    automation.validate_automation({
        cv.GenerateID(CONF_TRIGGER_ID):
        cv.declare_id(SensorRawStateTrigger),
    }),
    cv.Optional(CONF_ON_VALUE_RANGE):
    automation.validate_automation(
Exemple #7
0
StateTrigger = climate_ns.class_("StateTrigger", automation.Trigger.template())

CLIMATE_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(
    cv.MQTT_COMMAND_COMPONENT_SCHEMA).extend({
        cv.GenerateID():
        cv.declare_id(Climate),
        cv.OnlyWith(CONF_MQTT_ID, "mqtt"):
        cv.declare_id(mqtt.MQTTClimateComponent),
        cv.Optional(CONF_VISUAL, default={}):
        cv.Schema({
            cv.Optional(CONF_MIN_TEMPERATURE): cv.temperature,
            cv.Optional(CONF_MAX_TEMPERATURE): cv.temperature,
            cv.Optional(CONF_TEMPERATURE_STEP): cv.temperature,
        }),
        cv.Optional(CONF_ACTION_STATE_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.publish_topic),
        cv.Optional(CONF_AWAY_COMMAND_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.publish_topic),
        cv.Optional(CONF_AWAY_STATE_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.publish_topic),
        cv.Optional(CONF_CURRENT_TEMPERATURE_STATE_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.publish_topic),
        cv.Optional(CONF_FAN_MODE_COMMAND_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.publish_topic),
        cv.Optional(CONF_FAN_MODE_STATE_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.publish_topic),
        cv.Optional(CONF_MODE_COMMAND_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.publish_topic),
        cv.Optional(CONF_MODE_STATE_TOPIC):
        cv.All(cv.requires_component("mqtt"), cv.publish_topic),
        cv.Optional(CONF_SWING_MODE_COMMAND_TOPIC):