Compare commits

...
10 changed files with 60 additions and 95 deletions

No files matched your search

+4 -8
View File
@@ -174,14 +174,10 @@ def _register_provisioning_source(config: ConfigType) -> ConfigType:
CONF_SUPPORTS_RESPONSE = "supports_response" CONF_SUPPORTS_RESPONSE = "supports_response"
# Enum values in api::enums namespace SupportsResponseType = api_ns.namespace("enums").enum("SupportsResponseType")
enums_ns = api_ns.namespace("enums") SUPPORTS_RESPONSE_OPTIONS = SupportsResponseType.options(
SUPPORTS_RESPONSE_OPTIONS = { "none", "optional", "only", "status", prefix="SUPPORTS_RESPONSE_"
"none": enums_ns.SUPPORTS_RESPONSE_NONE, )
"optional": enums_ns.SUPPORTS_RESPONSE_OPTIONAL,
"only": enums_ns.SUPPORTS_RESPONSE_ONLY,
"status": enums_ns.SUPPORTS_RESPONSE_STATUS,
}
def _auto_detect_supports_response(config: ConfigType) -> ConfigType: def _auto_detect_supports_response(config: ConfigType) -> ConfigType:
+4 -6
View File
@@ -18,13 +18,11 @@ E131AddressableLightEffect = e131_ns.class_(
) )
E131Component = e131_ns.class_("E131Component", cg.Component) E131Component = e131_ns.class_("E131Component", cg.Component)
METHODS = {"UNICAST": e131_ns.E131_UNICAST, "MULTICAST": e131_ns.E131_MULTICAST} E131ListenMethod = e131_ns.enum("E131ListenMethod")
METHODS = E131ListenMethod.options("UNICAST", "MULTICAST", prefix="E131_")
CHANNELS = { E131LightChannels = e131_ns.enum("E131LightChannels")
"MONO": e131_ns.E131_MONO, CHANNELS = E131LightChannels.options("MONO", "RGB", "RGBW", prefix="E131_")
"RGB": e131_ns.E131_RGB,
"RGBW": e131_ns.E131_RGBW,
}
CONF_UNIVERSE = "universe" CONF_UNIVERSE = "universe"
CONF_E131_ID = "e131_id" CONF_E131_ID = "e131_id"
@@ -114,7 +114,8 @@ BLECharacteristicNotifyAction = esp32_ble_server_automations_ns.class_(
"BLECharacteristicNotifyAction", automation.Action "BLECharacteristicNotifyAction", automation.Action
) )
bytebuffer_ns = cg.esphome_ns.namespace("bytebuffer") bytebuffer_ns = cg.esphome_ns.namespace("bytebuffer")
Endianness_ns = bytebuffer_ns.namespace("Endian") # Unscoped in C++; is_class keeps the generated Endian::LITTLE spelling
Endian = bytebuffer_ns.enum("Endian", is_class=True)
PROPERTY_MAP = { PROPERTY_MAP = {
@@ -414,10 +415,7 @@ def value_schema(default_type=UNDEFINED, templatable=True):
), ),
cv.Optional(CONF_STRING_ENCODING, default="utf_8"): validate_encoding, cv.Optional(CONF_STRING_ENCODING, default="utf_8"): validate_encoding,
cv.Optional(CONF_ENDIANNESS, default="LITTLE"): cv.enum( cv.Optional(CONF_ENDIANNESS, default="LITTLE"): cv.enum(
{ Endian.options("LITTLE", "BIG")
"LITTLE": Endianness_ns.LITTLE,
"BIG": Endianness_ns.BIG,
}
), ),
}, },
validate_value_type, validate_value_type,
+13 -17
View File
@@ -54,25 +54,21 @@ CAN_MODES = {
# The supported bit rates differ between ESP32 variants. # The supported bit rates differ between ESP32 variants.
# See ESP-IDF Programming Guide --> API Reference --> Two-Wire Automotive Interface (TWAI) # See ESP-IDF Programming Guide --> API Reference --> Two-Wire Automotive Interface (TWAI)
CAN_SPEEDS_ESP32 = { CAN_SPEEDS_ESP32 = CanSpeed.options(
"20KBPS": CanSpeed.CAN_20KBPS, "20KBPS",
"25KBPS": CanSpeed.CAN_25KBPS, "25KBPS",
"50KBPS": CanSpeed.CAN_50KBPS, "50KBPS",
"100KBPS": CanSpeed.CAN_100KBPS, "100KBPS",
"125KBPS": CanSpeed.CAN_125KBPS, "125KBPS",
"250KBPS": CanSpeed.CAN_250KBPS, "250KBPS",
"500KBPS": CanSpeed.CAN_500KBPS, "500KBPS",
"800KBPS": CanSpeed.CAN_800KBPS, "800KBPS",
"1000KBPS": CanSpeed.CAN_1000KBPS, "1000KBPS",
} prefix="CAN_",
)
CAN_SPEEDS_ESP32_S2 = { CAN_SPEEDS_ESP32_S2 = {
"1KBPS": CanSpeed.CAN_1KBPS, **CanSpeed.options("1KBPS", "5KBPS", "10KBPS", "12K5BPS", "16KBPS", prefix="CAN_"),
"5KBPS": CanSpeed.CAN_5KBPS,
"10KBPS": CanSpeed.CAN_10KBPS,
"12K5BPS": CanSpeed.CAN_12K5BPS,
"16KBPS": CanSpeed.CAN_16KBPS,
"20KBPS": CanSpeed.CAN_20KBPS,
**CAN_SPEEDS_ESP32, **CAN_SPEEDS_ESP32,
} }
+9 -17
View File
@@ -3,7 +3,11 @@ import logging
from esphome import automation from esphome import automation
import esphome.codegen as cg import esphome.codegen as cg
from esphome.components import climate, logger, uart from esphome.components import climate, logger, uart
from esphome.components.climate import ClimateMode, ClimatePreset, ClimateSwingMode from esphome.components.climate import (
CLIMATE_MODES,
CLIMATE_PRESETS,
CLIMATE_SWING_MODES,
)
from esphome.components.logger import DOMAIN as LOGGER_DOMAIN from esphome.components.logger import DOMAIN as LOGGER_DOMAIN
from esphome.components.wifi import DOMAIN as WIFI_DOMAIN from esphome.components.wifi import DOMAIN as WIFI_DOMAIN
import esphome.config_validation as cv import esphome.config_validation as cv
@@ -77,31 +81,19 @@ AIRFLOW_HORIZONTAL_DIRECTION_OPTIONS = AirflowHorizontalDirection.options(
) )
SUPPORTED_SWING_MODES_OPTIONS = { SUPPORTED_SWING_MODES_OPTIONS = {
"OFF": ClimateSwingMode.CLIMATE_SWING_OFF, k: CLIMATE_SWING_MODES[k] for k in ("OFF", "VERTICAL", "HORIZONTAL", "BOTH")
"VERTICAL": ClimateSwingMode.CLIMATE_SWING_VERTICAL,
"HORIZONTAL": ClimateSwingMode.CLIMATE_SWING_HORIZONTAL,
"BOTH": ClimateSwingMode.CLIMATE_SWING_BOTH,
} }
SUPPORTED_CLIMATE_MODES_OPTIONS = { SUPPORTED_CLIMATE_MODES_OPTIONS = {
"OFF": ClimateMode.CLIMATE_MODE_OFF, # always available k: CLIMATE_MODES[k] for k in ("OFF", "HEAT_COOL", "COOL", "HEAT", "DRY", "FAN_ONLY")
"HEAT_COOL": ClimateMode.CLIMATE_MODE_HEAT_COOL, # always available
"COOL": ClimateMode.CLIMATE_MODE_COOL,
"HEAT": ClimateMode.CLIMATE_MODE_HEAT,
"DRY": ClimateMode.CLIMATE_MODE_DRY,
"FAN_ONLY": ClimateMode.CLIMATE_MODE_FAN_ONLY,
} }
SUPPORTED_CLIMATE_PRESETS_SMARTAIR2_OPTIONS = { SUPPORTED_CLIMATE_PRESETS_SMARTAIR2_OPTIONS = {
"AWAY": ClimatePreset.CLIMATE_PRESET_AWAY, k: CLIMATE_PRESETS[k] for k in ("AWAY", "BOOST", "COMFORT")
"BOOST": ClimatePreset.CLIMATE_PRESET_BOOST,
"COMFORT": ClimatePreset.CLIMATE_PRESET_COMFORT,
} }
SUPPORTED_CLIMATE_PRESETS_HON_OPTIONS = { SUPPORTED_CLIMATE_PRESETS_HON_OPTIONS = {
"AWAY": ClimatePreset.CLIMATE_PRESET_AWAY, k: CLIMATE_PRESETS[k] for k in ("AWAY", "BOOST", "SLEEP")
"BOOST": ClimatePreset.CLIMATE_PRESET_BOOST,
"SLEEP": ClimatePreset.CLIMATE_PRESET_SLEEP,
} }
HonControlMethod = haier_ns.enum("HonControlMethod", True) HonControlMethod = haier_ns.enum("HonControlMethod", True)
+1 -4
View File
@@ -41,10 +41,7 @@ RG_MODELS = {
# 1.200 - https://rainsensors.com/wp-content/uploads/sites/3/2022/03/2022.02.17-rev-1.200-rg-9_instructions.pdf # 1.200 - https://rainsensors.com/wp-content/uploads/sites/3/2022/03/2022.02.17-rev-1.200-rg-9_instructions.pdf
} }
RG15_RESOLUTION = { RG15_RESOLUTION = RG15Resolution.options("low", "high", prefix="FORCE_")
"low": RG15Resolution.FORCE_LOW,
"high": RG15Resolution.FORCE_HIGH,
}
SUPPORTED_OPTIONS = { SUPPORTED_OPTIONS = {
CONF_ACC: ["RG_15"], CONF_ACC: ["RG_15"],
+14 -13
View File
@@ -24,19 +24,20 @@ LIS3DHRange = lis3dh_ns.enum("LIS3DHRange")
RANGE_OPTIONS = LIS3DHRange.options("2G", "4G", "8G", "16G", prefix="LIS3DH_RANGE_") RANGE_OPTIONS = LIS3DHRange.options("2G", "4G", "8G", "16G", prefix="LIS3DH_RANGE_")
LIS3DHDataRate = lis3dh_ns.enum("LIS3DHDataRate") LIS3DHDataRate = lis3dh_ns.enum("LIS3DHDataRate")
DATA_RATE_OPTIONS = { # 1620HZ is only available in low-power mode.
"1HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_1HZ, # 1344HZ in normal / high-resolution mode; 5376HZ in low-power mode.
"10HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_10HZ, DATA_RATE_OPTIONS = LIS3DHDataRate.options(
"25HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_25HZ, "1HZ",
"50HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_50HZ, "10HZ",
"100HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_100HZ, "25HZ",
"200HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_200HZ, "50HZ",
"400HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_400HZ, "100HZ",
# 1620HZ is only available in low-power mode. "200HZ",
"1620HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_1620HZ, "400HZ",
# 1344HZ in normal / high-resolution mode; 5376HZ in low-power mode. "1620HZ",
"1344HZ": LIS3DHDataRate.LIS3DH_DATA_RATE_1344HZ, "1344HZ",
} prefix="LIS3DH_DATA_RATE_",
)
# Samples per second for each data rate key; INT1_DURATION counts samples. # Samples per second for each data rate key; INT1_DURATION counts samples.
ODR_HZ = { ODR_HZ = {
+8 -14
View File
@@ -1,7 +1,11 @@
from esphome import automation from esphome import automation
import esphome.codegen as cg import esphome.codegen as cg
from esphome.components import climate, remote_base, remote_transmitter, sensor, uart from esphome.components import climate, remote_base, remote_transmitter, sensor, uart
from esphome.components.climate import ClimateMode, ClimatePreset, ClimateSwingMode from esphome.components.climate import (
CLIMATE_MODES,
CLIMATE_PRESETS,
CLIMATE_SWING_MODES,
)
from esphome.components.remote_base import CONF_TRANSMITTER_ID from esphome.components.remote_base import CONF_TRANSMITTER_ID
import esphome.config_validation as cv import esphome.config_validation as cv
from esphome.const import ( from esphome.const import (
@@ -57,23 +61,13 @@ def templatize(value):
ALLOWED_CLIMATE_MODES = { ALLOWED_CLIMATE_MODES = {
"HEAT_COOL": ClimateMode.CLIMATE_MODE_HEAT_COOL, k: CLIMATE_MODES[k] for k in ("HEAT_COOL", "COOL", "HEAT", "DRY", "FAN_ONLY")
"COOL": ClimateMode.CLIMATE_MODE_COOL,
"HEAT": ClimateMode.CLIMATE_MODE_HEAT,
"DRY": ClimateMode.CLIMATE_MODE_DRY,
"FAN_ONLY": ClimateMode.CLIMATE_MODE_FAN_ONLY,
} }
ALLOWED_CLIMATE_PRESETS = { ALLOWED_CLIMATE_PRESETS = {k: CLIMATE_PRESETS[k] for k in ("ECO", "BOOST", "SLEEP")}
"ECO": ClimatePreset.CLIMATE_PRESET_ECO,
"BOOST": ClimatePreset.CLIMATE_PRESET_BOOST,
"SLEEP": ClimatePreset.CLIMATE_PRESET_SLEEP,
}
ALLOWED_CLIMATE_SWING_MODES = { ALLOWED_CLIMATE_SWING_MODES = {
"BOTH": ClimateSwingMode.CLIMATE_SWING_BOTH, k: CLIMATE_SWING_MODES[k] for k in ("BOTH", "VERTICAL", "HORIZONTAL")
"VERTICAL": ClimateSwingMode.CLIMATE_SWING_VERTICAL,
"HORIZONTAL": ClimateSwingMode.CLIMATE_SWING_HORIZONTAL,
} }
CUSTOM_FAN_MODES = { CUSTOM_FAN_MODES = {
+1 -4
View File
@@ -32,10 +32,7 @@ TextPtr = Text.operator("ptr")
# Conditions # Conditions
TextMode = text_ns.enum("TextMode") TextMode = text_ns.enum("TextMode")
TEXT_MODES = { TEXT_MODES = TextMode.options("TEXT", "PASSWORD", prefix="TEXT_MODE_")
"TEXT": TextMode.TEXT_MODE_TEXT,
"PASSWORD": TextMode.TEXT_MODE_PASSWORD, # to be implemented for keys, passwords, etc.
}
_TEXT_SCHEMA = ( _TEXT_SCHEMA = (
cv.ENTITY_BASE_SCHEMA.extend(web_server.WEBSERVER_SORTING_SCHEMA) cv.ENTITY_BASE_SCHEMA.extend(web_server.WEBSERVER_SORTING_SCHEMA)
+3 -7
View File
@@ -45,13 +45,9 @@ def is_usb_uart_channel(uart_id: ID, full_config: ConfigType) -> bool:
) )
UART_PARITY_OPTIONS = { UART_PARITY_OPTIONS = UARTParityOptions.options(
"NONE": UARTParityOptions.UART_CONFIG_PARITY_NONE, "NONE", "EVEN", "ODD", "MARK", "SPACE", prefix="UART_CONFIG_PARITY_"
"EVEN": UARTParityOptions.UART_CONFIG_PARITY_EVEN, )
"ODD": UARTParityOptions.UART_CONFIG_PARITY_ODD,
"MARK": UARTParityOptions.UART_CONFIG_PARITY_MARK,
"SPACE": UARTParityOptions.UART_CONFIG_PARITY_SPACE,
}
UARTStopBitsOptions = usb_uart_ns.enum("UARTStopBitsOptions") UARTStopBitsOptions = usb_uart_ns.enum("UARTStopBitsOptions")
UART_STOP_BITS_OPTIONS = UARTStopBitsOptions.options( UART_STOP_BITS_OPTIONS = UARTStopBitsOptions.options(