import voluptuous as vol import esphomeyaml.config_validation as cv from esphomeyaml import automation from esphomeyaml.const import CONF_CRON, CONF_DAYS_OF_MONTH, CONF_DAYS_OF_WEEK, CONF_HOURS, \ CONF_MINUTES, CONF_MONTHS, CONF_ON_TIME, CONF_SECONDS, CONF_TIMEZONE, CONF_TRIGGER_ID from esphomeyaml.core import CORE from esphomeyaml.cpp_generator import add, Pvariable, ArrayInitializer from esphomeyaml.cpp_types import esphomelib_ns, Component, NoArg, Trigger, App from esphomeyaml.py_compat import string_types _LOGGER = logging.getLogger(__name__) PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({}) time_ns = esphomelib_ns.namespace('time') RealTimeClockComponent = time_ns.class_('RealTimeClockComponent', Component) CronTrigger = time_ns.class_('CronTrigger', Trigger.template(NoArg), Component) EsphomelibTime = time_ns.struct('EsphomelibTime') def _tz_timedelta(td): offset_hour = int(td.total_seconds() / (60 * 60)) offset_minute = int(abs(td.total_seconds() / 60)) % 60 offset_second = int(abs(td.total_seconds())) % 60 if offset_hour == 0 and offset_minute == 0 and offset_second == 0: return '0' if offset_minute == 0 and offset_second == 0: return '{}'.format(offset_hour) if offset_second == 0: return '{}:{}'.format(offset_hour, offset_minute)
vol.Optional(CONF_QOS, default=0): cv.mqtt_qos, vol.Optional(CONF_RETAIN, default=True): cv.boolean, }) MQTT_MESSAGE_TEMPLATE_SCHEMA = vol.Any(None, MQTT_MESSAGE_BASE, validate_message_just_topic) MQTT_MESSAGE_SCHEMA = vol.Any( None, MQTT_MESSAGE_BASE.extend({ vol.Required(CONF_PAYLOAD): cv.mqtt_payload, })) mqtt_ns = esphomelib_ns.namespace('mqtt') MQTTMessage = mqtt_ns.struct('MQTTMessage') MQTTClientComponent = mqtt_ns.class_('MQTTClientComponent', Component) MQTTPublishAction = mqtt_ns.class_('MQTTPublishAction', Action) MQTTPublishJsonAction = mqtt_ns.class_('MQTTPublishJsonAction', Action) MQTTMessageTrigger = mqtt_ns.class_('MQTTMessageTrigger', Trigger.template(std_string)) MQTTJsonMessageTrigger = mqtt_ns.class_('MQTTJsonMessageTrigger', Trigger.template(JsonObjectConstRef)) MQTTComponent = mqtt_ns.class_('MQTTComponent', Component) def validate_config(value): if CONF_PORT not in value: parts = value[CONF_BROKER].split(u':') if len(parts) == 2:
import voluptuous as vol from esphomeyaml.automation import ACTION_REGISTRY import esphomeyaml.config_validation as cv from esphomeyaml.const import CONF_DATA, CONF_DATA_TEMPLATE, CONF_ID, CONF_PASSWORD, CONF_PORT, \ CONF_SERVICE, CONF_VARIABLES, CONF_REBOOT_TIMEOUT from esphomeyaml.core import CORE from esphomeyaml.cpp_generator import ArrayInitializer, Pvariable, add, get_variable, process_lambda from esphomeyaml.cpp_helpers import setup_component from esphomeyaml.cpp_types import Action, App, Component, StoringController, esphomelib_ns api_ns = esphomelib_ns.namespace('api') APIServer = api_ns.class_('APIServer', Component, StoringController) HomeAssistantServiceCallAction = api_ns.class_( 'HomeAssistantServiceCallAction', Action) KeyValuePair = api_ns.class_('KeyValuePair') TemplatableKeyValuePair = api_ns.class_('TemplatableKeyValuePair') CONFIG_SCHEMA = vol.Schema({ cv.GenerateID(): cv.declare_variable_id(APIServer), vol.Optional(CONF_PORT, default=6053): cv.port, vol.Optional(CONF_PASSWORD, default=''): cv.string_strict, vol.Optional(CONF_REBOOT_TIMEOUT): cv.positive_time_period_milliseconds, }).extend(cv.COMPONENT_SCHEMA.schema) def to_code(config):
CONF_GAMMA_CORRECT, CONF_GREEN, CONF_ID, CONF_INTERNAL, CONF_LAMBDA, CONF_MQTT_ID, CONF_NAME, \ CONF_NUM_LEDS, CONF_RANDOM, CONF_RED, CONF_SPEED, CONF_STATE, CONF_TRANSITION_LENGTH, \ CONF_UPDATE_INTERVAL, CONF_WHITE, CONF_WIDTH, CONF_FLASH_LENGTH, CONF_COLOR_TEMPERATURE, \ CONF_EFFECT from esphomeyaml.core import CORE from esphomeyaml.cpp_generator import process_lambda, Pvariable, add, StructInitializer, \ ArrayInitializer, get_variable, templatable from esphomeyaml.cpp_types import esphomelib_ns, Application, Component, Nameable, Action, uint32, \ float_, std_string PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ }) # Base light_ns = esphomelib_ns.namespace('light') LightState = light_ns.class_('LightState', Nameable, Component) MakeLight = Application.struct('MakeLight') LightOutput = light_ns.class_('LightOutput') AddressableLight = light_ns.class_('AddressableLight') AddressableLightRef = AddressableLight.operator('ref') # Actions ToggleAction = light_ns.class_('ToggleAction', Action) TurnOffAction = light_ns.class_('TurnOffAction', Action) TurnOnAction = light_ns.class_('TurnOnAction', Action) LightColorValues = light_ns.class_('LightColorValues') MQTTJSONLightComponent = light_ns.class_('MQTTJSONLightComponent', mqtt.MQTTComponent)
vol.Optional(CONF_THROTTLE): cv.positive_time_period_milliseconds, vol.Optional(CONF_DELTA): cv.float_, vol.Optional(CONF_UNIQUE): None, vol.Optional(CONF_HEARTBEAT): cv.positive_time_period_milliseconds, vol.Optional(CONF_DEBOUNCE): cv.positive_time_period_milliseconds, vol.Optional(CONF_OR): validate_recursive_filter, }, cv.has_exactly_one_key(*FILTER_KEYS)) # Base sensor_ns = esphomelib_ns.namespace('sensor') Sensor = sensor_ns.class_('Sensor', Nameable) SensorPtr = Sensor.operator('ptr') MQTTSensorComponent = sensor_ns.class_('MQTTSensorComponent', mqtt.MQTTComponent) PollingSensorComponent = sensor_ns.class_('PollingSensorComponent', PollingComponent, Sensor) EmptySensor = sensor_ns.class_('EmptySensor', Sensor) EmptyPollingParentSensor = sensor_ns.class_('EmptyPollingParentSensor', EmptySensor) # Triggers SensorStateTrigger = sensor_ns.class_('SensorStateTrigger', Trigger.template(float_)) SensorRawStateTrigger = sensor_ns.class_('SensorRawStateTrigger',
import voluptuous as vol from esphomeyaml import pins import esphomeyaml.config_validation as cv from esphomeyaml.const import CONF_BUFFER_SIZE, CONF_DUMP, CONF_FILTER, CONF_ID, CONF_IDLE, \ CONF_PIN, CONF_TOLERANCE from esphomeyaml.cpp_generator import Pvariable, add from esphomeyaml.cpp_helpers import gpio_input_pin_expression, setup_component from esphomeyaml.cpp_types import App, Component, esphomelib_ns from esphomeyaml.py_compat import string_types remote_ns = esphomelib_ns.namespace('remote') MULTI_CONF = True RemoteControlComponentBase = remote_ns.class_('RemoteControlComponentBase') RemoteReceiverComponent = remote_ns.class_('RemoteReceiverComponent', RemoteControlComponentBase, Component) RemoteReceiveDumper = remote_ns.class_('RemoteReceiveDumper') DUMPERS = { 'lg': remote_ns.class_('LGDumper', RemoteReceiveDumper), 'nec': remote_ns.class_('NECDumper', RemoteReceiveDumper), 'panasonic': remote_ns.class_('PanasonicDumper', RemoteReceiveDumper), 'raw': remote_ns.class_('RawDumper', RemoteReceiveDumper), 'samsung': remote_ns.class_('SamsungDumper', RemoteReceiveDumper), 'sony': remote_ns.class_('SonyDumper', RemoteReceiveDumper), 'rc_switch': remote_ns.class_('RCSwitchDumper', RemoteReceiveDumper), }
import voluptuous as vol from esphomeyaml.automation import ACTION_REGISTRY import esphomeyaml.config_validation as cv from esphomeyaml.const import CONF_ACCELERATION, CONF_DECELERATION, CONF_ID, CONF_MAX_SPEED, \ CONF_POSITION, CONF_TARGET from esphomeyaml.core import CORE from esphomeyaml.cpp_generator import Pvariable, add, get_variable, templatable from esphomeyaml.cpp_types import Action, esphomelib_ns, int32 PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ }) # pylint: disable=invalid-name stepper_ns = esphomelib_ns.namespace('stepper') Stepper = stepper_ns.class_('Stepper') SetTargetAction = stepper_ns.class_('SetTargetAction', Action) ReportPositionAction = stepper_ns.class_('ReportPositionAction', Action) def validate_acceleration(value): value = cv.string(value) for suffix in ('steps/s^2', 'steps/s*s', 'steps/s/s', 'steps/ss', 'steps/(s*s)'): if value.endswith(suffix): value = value[:-len(suffix)] if value == 'inf': return 1e6
from esphomeyaml.automation import ACTION_REGISTRY, maybe_simple_id from esphomeyaml.components import mqtt from esphomeyaml.components.mqtt import setup_mqtt_component import esphomeyaml.config_validation as cv from esphomeyaml.const import CONF_ID, CONF_INTERNAL, CONF_MQTT_ID, CONF_NAME, CONF_OSCILLATING, \ CONF_OSCILLATION_COMMAND_TOPIC, CONF_OSCILLATION_OUTPUT, CONF_OSCILLATION_STATE_TOPIC, \ CONF_SPEED, CONF_SPEED_COMMAND_TOPIC, CONF_SPEED_STATE_TOPIC from esphomeyaml.cpp_generator import add, Pvariable, get_variable, templatable from esphomeyaml.cpp_types import Application, Component, Nameable, esphomelib_ns, Action, bool_ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ }) fan_ns = esphomelib_ns.namespace('fan') FanState = fan_ns.class_('FanState', Nameable, Component) MQTTFanComponent = fan_ns.class_('MQTTFanComponent', mqtt.MQTTComponent) MakeFan = Application.struct('MakeFan') # Actions TurnOnAction = fan_ns.class_('TurnOnAction', Action) TurnOffAction = fan_ns.class_('TurnOffAction', Action) ToggleAction = fan_ns.class_('ToggleAction', Action) FanSpeed = fan_ns.enum('FanSpeed') FAN_SPEED_OFF = FanSpeed.FAN_SPEED_OFF FAN_SPEED_LOW = FanSpeed.FAN_SPEED_LOW FAN_SPEED_MEDIUM = FanSpeed.FAN_SPEED_MEDIUM FAN_SPEED_HIGH = FanSpeed.FAN_SPEED_HIGH
from esphomeyaml.core import CORE from esphomeyaml.cpp_generator import process_lambda, ArrayInitializer, add, Pvariable, \ StructInitializer, get_variable from esphomeyaml.cpp_types import esphomelib_ns, Nameable, Trigger, NoArg, Component, App, bool_ from esphomeyaml.py_compat import string_types DEVICE_CLASSES = [ '', 'battery', 'cold', 'connectivity', 'door', 'garage_door', 'gas', 'heat', 'light', 'lock', 'moisture', 'motion', 'moving', 'occupancy', 'opening', 'plug', 'power', 'presence', 'problem', 'safety', 'smoke', 'sound', 'vibration', 'window' ] PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({}) binary_sensor_ns = esphomelib_ns.namespace('binary_sensor') BinarySensor = binary_sensor_ns.class_('BinarySensor', Nameable) BinarySensorPtr = BinarySensor.operator('ptr') MQTTBinarySensorComponent = binary_sensor_ns.class_( 'MQTTBinarySensorComponent', mqtt.MQTTComponent) # Triggers PressTrigger = binary_sensor_ns.class_('PressTrigger', Trigger.template(NoArg)) ReleaseTrigger = binary_sensor_ns.class_('ReleaseTrigger', Trigger.template(NoArg)) ClickTrigger = binary_sensor_ns.class_('ClickTrigger', Trigger.template(NoArg)) DoubleClickTrigger = binary_sensor_ns.class_('DoubleClickTrigger', Trigger.template(NoArg)) MultiClickTrigger = binary_sensor_ns.class_('MultiClickTrigger', Trigger.template(NoArg), Component) MultiClickTriggerEvent = binary_sensor_ns.struct('MultiClickTriggerEvent')
import voluptuous as vol from esphomeyaml.automation import ACTION_REGISTRY, maybe_simple_id from esphomeyaml.components import mqtt from esphomeyaml.components.mqtt import setup_mqtt_component import esphomeyaml.config_validation as cv from esphomeyaml.const import CONF_ID, CONF_INTERNAL, CONF_MQTT_ID from esphomeyaml.cpp_generator import Pvariable, add, get_variable from esphomeyaml.cpp_types import Action, Nameable, esphomelib_ns PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({}) cover_ns = esphomelib_ns.namespace('cover') Cover = cover_ns.class_('Cover', Nameable) MQTTCoverComponent = cover_ns.class_('MQTTCoverComponent', mqtt.MQTTComponent) CoverState = cover_ns.class_('CoverState') COVER_OPEN = cover_ns.COVER_OPEN COVER_CLOSED = cover_ns.COVER_CLOSED # Actions OpenAction = cover_ns.class_('OpenAction', Action) CloseAction = cover_ns.class_('CloseAction', Action) StopAction = cover_ns.class_('StopAction', Action) COVER_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ cv.GenerateID(): cv.declare_variable_id(Cover), cv.GenerateID(CONF_MQTT_ID): cv.declare_variable_id(MQTTCoverComponent),
# coding=utf-8 import voluptuous as vol import esphomeyaml.config_validation as cv from esphomeyaml.const import CONF_LAMBDA, CONF_ROTATION, CONF_UPDATE_INTERVAL from esphomeyaml.core import CORE from esphomeyaml.cpp_generator import add from esphomeyaml.cpp_types import esphomelib_ns PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({}) display_ns = esphomelib_ns.namespace('display') DisplayBuffer = display_ns.class_('DisplayBuffer') DisplayBufferRef = DisplayBuffer.operator('ref') DISPLAY_ROTATIONS = { 0: display_ns.DISPLAY_ROTATION_0_DEGREES, 90: display_ns.DISPLAY_ROTATION_90_DEGREES, 180: display_ns.DISPLAY_ROTATION_180_DEGREES, 270: display_ns.DISPLAY_ROTATION_270_DEGREES, } def validate_rotation(value): value = cv.string(value) if value.endswith(u"°"): value = value[:-1] try: value = int(value) except ValueError: raise vol.Invalid(u"Expected integer for rotation")
import voluptuous as vol from esphomeyaml import automation from esphomeyaml.components import mqtt from esphomeyaml.components.mqtt import setup_mqtt_component import esphomeyaml.config_validation as cv from esphomeyaml.const import CONF_ICON, CONF_ID, CONF_INTERNAL, CONF_MQTT_ID, CONF_ON_VALUE, \ CONF_TRIGGER_ID from esphomeyaml.core import CORE from esphomeyaml.cpp_generator import Pvariable, add from esphomeyaml.cpp_types import esphomelib_ns, Nameable, Trigger, std_string, App PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({}) # pylint: disable=invalid-name text_sensor_ns = esphomelib_ns.namespace('text_sensor') TextSensor = text_sensor_ns.class_('TextSensor', Nameable) TextSensorPtr = TextSensor.operator('ptr') MQTTTextSensor = text_sensor_ns.class_('MQTTTextSensor', mqtt.MQTTComponent) TextSensorStateTrigger = text_sensor_ns.class_('TextSensorStateTrigger', Trigger.template(std_string)) TEXT_SENSOR_SCHEMA = cv.MQTT_COMPONENT_SCHEMA.extend({ cv.GenerateID(CONF_MQTT_ID): cv.declare_variable_id(MQTTTextSensor), vol.Optional(CONF_ICON): cv.icon, vol.Optional(CONF_ON_VALUE): automation.validate_automation({ cv.GenerateID(CONF_TRIGGER_ID):