mirror of
https://github.com/home-assistant/core.git
synced 2025-05-20 05:49:15 +00:00

* Set homekit alarm/sensor/switch state as soon as possible This change is part of a multi-part effort to fix the HomeKit event storms on startup. Previously we would set the states after HomeKit had started up which meant that when the controller client connected it would request the states and get a list of default states so all the initial states would always be wrong. The defaults states generally went unnoticed because we set the state of each HomeKit device soon after which would result in an event storm in the log that looked like the following for every client and every device: Sending event to client: ('192.168.x.x', 58410) Sending event to client: ('192.168.x.x', 53399) Sending event to client: ('192.168.x.x', 53399) To solve this, we now set the state right away when we create the entity in HomeKit, so it is correct on initial sync, which avoids the event storm. Additionally, we now check all states values before sending an update to HomeKit to ensure we do not send events when nothing has changed. * pylint * Fix event storm in covers as well * fix refactoring error in security system * cover positions, now with constants
198 lines
6.2 KiB
Python
198 lines
6.2 KiB
Python
"""Constants used be the HomeKit component."""
|
|
# #### Misc ####
|
|
DEBOUNCE_TIMEOUT = 0.5
|
|
DEVICE_PRECISION_LEEWAY = 6
|
|
DOMAIN = "homekit"
|
|
HOMEKIT_FILE = ".homekit.state"
|
|
HOMEKIT_NOTIFY_ID = 4663548
|
|
|
|
|
|
# #### Attributes ####
|
|
ATTR_DISPLAY_NAME = "display_name"
|
|
ATTR_VALUE = "value"
|
|
|
|
# #### Config ####
|
|
CONF_ADVERTISE_IP = "advertise_ip"
|
|
CONF_AUTO_START = "auto_start"
|
|
CONF_ENTITY_CONFIG = "entity_config"
|
|
CONF_FEATURE = "feature"
|
|
CONF_FEATURE_LIST = "feature_list"
|
|
CONF_FILTER = "filter"
|
|
CONF_LINKED_BATTERY_SENSOR = "linked_battery_sensor"
|
|
CONF_LOW_BATTERY_THRESHOLD = "low_battery_threshold"
|
|
CONF_SAFE_MODE = "safe_mode"
|
|
CONF_ZEROCONF_DEFAULT_INTERFACE = "zeroconf_default_interface"
|
|
|
|
# #### Config Defaults ####
|
|
DEFAULT_AUTO_START = True
|
|
DEFAULT_LOW_BATTERY_THRESHOLD = 20
|
|
DEFAULT_PORT = 51827
|
|
DEFAULT_SAFE_MODE = False
|
|
DEFAULT_ZEROCONF_DEFAULT_INTERFACE = False
|
|
|
|
# #### Features ####
|
|
FEATURE_ON_OFF = "on_off"
|
|
FEATURE_PLAY_PAUSE = "play_pause"
|
|
FEATURE_PLAY_STOP = "play_stop"
|
|
FEATURE_TOGGLE_MUTE = "toggle_mute"
|
|
|
|
# #### HomeKit Component Event ####
|
|
EVENT_HOMEKIT_CHANGED = "homekit_state_change"
|
|
|
|
# #### HomeKit Component Services ####
|
|
SERVICE_HOMEKIT_START = "start"
|
|
SERVICE_HOMEKIT_RESET_ACCESSORY = "reset_accessory"
|
|
|
|
# #### String Constants ####
|
|
BRIDGE_MODEL = "Bridge"
|
|
BRIDGE_NAME = "Home Assistant Bridge"
|
|
BRIDGE_SERIAL_NUMBER = "homekit.bridge"
|
|
MANUFACTURER = "Home Assistant"
|
|
|
|
# #### Switch Types ####
|
|
TYPE_FAUCET = "faucet"
|
|
TYPE_OUTLET = "outlet"
|
|
TYPE_SHOWER = "shower"
|
|
TYPE_SPRINKLER = "sprinkler"
|
|
TYPE_SWITCH = "switch"
|
|
TYPE_VALVE = "valve"
|
|
|
|
# #### Services ####
|
|
SERV_ACCESSORY_INFO = "AccessoryInformation"
|
|
SERV_AIR_QUALITY_SENSOR = "AirQualitySensor"
|
|
SERV_BATTERY_SERVICE = "BatteryService"
|
|
SERV_CARBON_DIOXIDE_SENSOR = "CarbonDioxideSensor"
|
|
SERV_CARBON_MONOXIDE_SENSOR = "CarbonMonoxideSensor"
|
|
SERV_CONTACT_SENSOR = "ContactSensor"
|
|
SERV_FANV2 = "Fanv2"
|
|
SERV_GARAGE_DOOR_OPENER = "GarageDoorOpener"
|
|
SERV_HUMIDITY_SENSOR = "HumiditySensor"
|
|
SERV_INPUT_SOURCE = "InputSource"
|
|
SERV_LEAK_SENSOR = "LeakSensor"
|
|
SERV_LIGHT_SENSOR = "LightSensor"
|
|
SERV_LIGHTBULB = "Lightbulb"
|
|
SERV_LOCK = "LockMechanism"
|
|
SERV_MOTION_SENSOR = "MotionSensor"
|
|
SERV_OCCUPANCY_SENSOR = "OccupancySensor"
|
|
SERV_OUTLET = "Outlet"
|
|
SERV_SECURITY_SYSTEM = "SecuritySystem"
|
|
SERV_SMOKE_SENSOR = "SmokeSensor"
|
|
SERV_SWITCH = "Switch"
|
|
SERV_TELEVISION = "Television"
|
|
SERV_TELEVISION_SPEAKER = "TelevisionSpeaker"
|
|
SERV_TEMPERATURE_SENSOR = "TemperatureSensor"
|
|
SERV_THERMOSTAT = "Thermostat"
|
|
SERV_VALVE = "Valve"
|
|
SERV_WINDOW_COVERING = "WindowCovering"
|
|
|
|
# #### Characteristics ####
|
|
CHAR_ACTIVE = "Active"
|
|
CHAR_ACTIVE_IDENTIFIER = "ActiveIdentifier"
|
|
CHAR_AIR_PARTICULATE_DENSITY = "AirParticulateDensity"
|
|
CHAR_AIR_QUALITY = "AirQuality"
|
|
CHAR_BATTERY_LEVEL = "BatteryLevel"
|
|
CHAR_BRIGHTNESS = "Brightness"
|
|
CHAR_CARBON_DIOXIDE_DETECTED = "CarbonDioxideDetected"
|
|
CHAR_CARBON_DIOXIDE_LEVEL = "CarbonDioxideLevel"
|
|
CHAR_CARBON_DIOXIDE_PEAK_LEVEL = "CarbonDioxidePeakLevel"
|
|
CHAR_CARBON_MONOXIDE_DETECTED = "CarbonMonoxideDetected"
|
|
CHAR_CARBON_MONOXIDE_LEVEL = "CarbonMonoxideLevel"
|
|
CHAR_CARBON_MONOXIDE_PEAK_LEVEL = "CarbonMonoxidePeakLevel"
|
|
CHAR_CHARGING_STATE = "ChargingState"
|
|
CHAR_COLOR_TEMPERATURE = "ColorTemperature"
|
|
CHAR_CONFIGURED_NAME = "ConfiguredName"
|
|
CHAR_CONTACT_SENSOR_STATE = "ContactSensorState"
|
|
CHAR_COOLING_THRESHOLD_TEMPERATURE = "CoolingThresholdTemperature"
|
|
CHAR_CURRENT_AMBIENT_LIGHT_LEVEL = "CurrentAmbientLightLevel"
|
|
CHAR_CURRENT_DOOR_STATE = "CurrentDoorState"
|
|
CHAR_CURRENT_HEATING_COOLING = "CurrentHeatingCoolingState"
|
|
CHAR_CURRENT_POSITION = "CurrentPosition"
|
|
CHAR_CURRENT_HUMIDITY = "CurrentRelativeHumidity"
|
|
CHAR_CURRENT_SECURITY_STATE = "SecuritySystemCurrentState"
|
|
CHAR_CURRENT_TEMPERATURE = "CurrentTemperature"
|
|
CHAR_CURRENT_TILT_ANGLE = "CurrentHorizontalTiltAngle"
|
|
CHAR_CURRENT_VISIBILITY_STATE = "CurrentVisibilityState"
|
|
CHAR_FIRMWARE_REVISION = "FirmwareRevision"
|
|
CHAR_HEATING_THRESHOLD_TEMPERATURE = "HeatingThresholdTemperature"
|
|
CHAR_HUE = "Hue"
|
|
CHAR_IDENTIFIER = "Identifier"
|
|
CHAR_IN_USE = "InUse"
|
|
CHAR_INPUT_SOURCE_TYPE = "InputSourceType"
|
|
CHAR_IS_CONFIGURED = "IsConfigured"
|
|
CHAR_LEAK_DETECTED = "LeakDetected"
|
|
CHAR_LOCK_CURRENT_STATE = "LockCurrentState"
|
|
CHAR_LOCK_TARGET_STATE = "LockTargetState"
|
|
CHAR_LINK_QUALITY = "LinkQuality"
|
|
CHAR_MANUFACTURER = "Manufacturer"
|
|
CHAR_MODEL = "Model"
|
|
CHAR_MOTION_DETECTED = "MotionDetected"
|
|
CHAR_MUTE = "Mute"
|
|
CHAR_NAME = "Name"
|
|
CHAR_OCCUPANCY_DETECTED = "OccupancyDetected"
|
|
CHAR_ON = "On"
|
|
CHAR_OUTLET_IN_USE = "OutletInUse"
|
|
CHAR_POSITION_STATE = "PositionState"
|
|
CHAR_REMOTE_KEY = "RemoteKey"
|
|
CHAR_ROTATION_DIRECTION = "RotationDirection"
|
|
CHAR_ROTATION_SPEED = "RotationSpeed"
|
|
CHAR_SATURATION = "Saturation"
|
|
CHAR_SERIAL_NUMBER = "SerialNumber"
|
|
CHAR_SLEEP_DISCOVER_MODE = "SleepDiscoveryMode"
|
|
CHAR_SMOKE_DETECTED = "SmokeDetected"
|
|
CHAR_STATUS_LOW_BATTERY = "StatusLowBattery"
|
|
CHAR_SWING_MODE = "SwingMode"
|
|
CHAR_TARGET_DOOR_STATE = "TargetDoorState"
|
|
CHAR_TARGET_HEATING_COOLING = "TargetHeatingCoolingState"
|
|
CHAR_TARGET_POSITION = "TargetPosition"
|
|
CHAR_TARGET_HUMIDITY = "TargetRelativeHumidity"
|
|
CHAR_TARGET_SECURITY_STATE = "SecuritySystemTargetState"
|
|
CHAR_TARGET_TEMPERATURE = "TargetTemperature"
|
|
CHAR_TARGET_TILT_ANGLE = "TargetHorizontalTiltAngle"
|
|
CHAR_HOLD_POSITION = "HoldPosition"
|
|
CHAR_TEMP_DISPLAY_UNITS = "TemperatureDisplayUnits"
|
|
CHAR_VALVE_TYPE = "ValveType"
|
|
CHAR_VOLUME = "Volume"
|
|
CHAR_VOLUME_SELECTOR = "VolumeSelector"
|
|
CHAR_VOLUME_CONTROL_TYPE = "VolumeControlType"
|
|
|
|
|
|
# #### Properties ####
|
|
PROP_MAX_VALUE = "maxValue"
|
|
PROP_MIN_VALUE = "minValue"
|
|
PROP_MIN_STEP = "minStep"
|
|
PROP_CELSIUS = {"minValue": -273, "maxValue": 999}
|
|
|
|
# #### Device Classes ####
|
|
DEVICE_CLASS_CO = "co"
|
|
DEVICE_CLASS_CO2 = "co2"
|
|
DEVICE_CLASS_DOOR = "door"
|
|
DEVICE_CLASS_GARAGE_DOOR = "garage_door"
|
|
DEVICE_CLASS_GAS = "gas"
|
|
DEVICE_CLASS_MOISTURE = "moisture"
|
|
DEVICE_CLASS_MOTION = "motion"
|
|
DEVICE_CLASS_OCCUPANCY = "occupancy"
|
|
DEVICE_CLASS_OPENING = "opening"
|
|
DEVICE_CLASS_PM25 = "pm25"
|
|
DEVICE_CLASS_SMOKE = "smoke"
|
|
DEVICE_CLASS_WINDOW = "window"
|
|
|
|
# #### Thresholds ####
|
|
THRESHOLD_CO = 25
|
|
THRESHOLD_CO2 = 1000
|
|
|
|
# #### Default values ####
|
|
DEFAULT_MIN_TEMP_WATER_HEATER = 40 # °C
|
|
DEFAULT_MAX_TEMP_WATER_HEATER = 60 # °C
|
|
|
|
# #### Door states ####
|
|
HK_DOOR_OPEN = 0
|
|
HK_DOOR_CLOSED = 1
|
|
HK_DOOR_OPENING = 2
|
|
HK_DOOR_CLOSING = 3
|
|
HK_DOOR_STOPPED = 4
|
|
|
|
# ### Position State ####
|
|
HK_POSITION_GOING_TO_MIN = 0
|
|
HK_POSITION_GOING_TO_MAX = 1
|
|
HK_POSITION_STOPPED = 2
|