Source code for pyisy.constants

"""Constants for the PyISY Module."""

from __future__ import annotations

import datetime
from enum import StrEnum

UPDATE_INTERVAL = 0.5

# Time Constants / Strings
EMPTY_TIME = datetime.datetime(year=1, month=1, day=1)
ISY_EPOCH_OFFSET = 36524
MILITARY_TIME = "%Y/%m/%d %H:%M:%S"
STANDARD_TIME = "%Y/%m/%d %I:%M:%S %p"
XML_STRPTIME = "%Y%m%d %H:%M:%S"
XML_STRPTIME_YY = "%y%m%d %H:%M:%S"
XML_TRUE = "true"
XML_FALSE = "false"
XML_ON = "<on />"
XML_OFF = "<off />"

POLL_TIME = 10
RECONNECT_DELAY = 60
SOCKET_BUFFER_SIZE = 4096
THREAD_SLEEP_TIME = 30.0


[docs] class EventStreamStatus(StrEnum): """Connection / lifecycle status values published on `ISY.connection_events`.""" LOST_STREAM_CONNECTION = "lost_stream_connection" CONNECTED = "connected" DISCONNECTED = "disconnected" START_UPDATES = "start_updates" STOP_UPDATES = "stop_updates" INITIALIZING = "stream_initializing" LOADED = "stream_loaded" RECONNECT_FAILED = "reconnect_failed" RECONNECTING = "reconnecting" DISCONNECTING = "stream_disconnecting" NOT_STARTED = "not_started"
# Back-compat module-level aliases. Home Assistant Core and other downstream # consumers import these names directly; the StrEnum members compare equal to # their string values, so existing `== ES_CONNECTED` checks keep working. ES_LOST_STREAM_CONNECTION = EventStreamStatus.LOST_STREAM_CONNECTION ES_CONNECTED = EventStreamStatus.CONNECTED ES_DISCONNECTED = EventStreamStatus.DISCONNECTED ES_START_UPDATES = EventStreamStatus.START_UPDATES ES_STOP_UPDATES = EventStreamStatus.STOP_UPDATES ES_INITIALIZING = EventStreamStatus.INITIALIZING ES_LOADED = EventStreamStatus.LOADED ES_RECONNECT_FAILED = EventStreamStatus.RECONNECT_FAILED ES_RECONNECTING = EventStreamStatus.RECONNECTING ES_DISCONNECTING = EventStreamStatus.DISCONNECTING ES_NOT_STARTED = EventStreamStatus.NOT_STARTED ISY_VALUE_UNKNOWN = -1 * float("inf") ISY_PROP_NOT_SET = "-1" # Dictionary of X10 commands. X10_COMMANDS = {"all_off": 1, "all_on": 4, "on": 3, "off": 11, "bright": 7, "dim": 15} ACTION_EVENT_STATUS = "0" ACTION_GET_STATUS = "1" ACTION_KEY_CHANGED = "2" ACTION_INFO_STRING = "3" ACTION_IR_LEARN = "4" ACTION_SCHEDULE = "5" ACTION_VAR_STATUS = "6" ACTION_VAR_INIT = "7" ACTION_KEY = "8" ATTR_ACTION = "action" ATTR_CONTROL = "control" ATTR_DESC = "desc" ATTR_FLAG = "flag" ATTR_FORMATTED = "formatted" ATTR_ID = "id" ATTR_INIT = "init" ATTR_INSTANCE = "instance" ATTR_LAST_CHANGED = "last_changed" ATTR_LAST_UPDATE = "last_update" ATTR_NODE_DEF_ID = "nodeDefId" ATTR_PARENT = "parentId" ATTR_PRECISION = "prec" ATTR_SET = "set" ATTR_STATUS = "status" ATTR_STREAM_ID = "sid" ATTR_TS = "ts" ATTR_UNIT_OF_MEASURE = "uom" ATTR_VAL = "val" # Used for Variables. ATTR_VALUE = "value" # Used for everything else. ATTR_VAR = "var" DEFAULT_PRECISION = "0" DEFAULT_UNIT_OF_MEASURE = "" CONFIG_NETWORKING = "Networking Module" CONFIG_PORTAL = "Portal Integration - UDI" TAG_ADDRESS = "address" TAG_CATEGORY = "cat" TAG_CONFIG = "config" TAG_DESC = "desc" TAG_DESCRIPTION = "description" TAG_DEVICE_TYPE = "devtype" TAG_DST = "DST" TAG_ENABLED = "enabled" TAG_EVENT_INFO = "eventInfo" TAG_FAMILY = "family" TAG_FEATURE = "feature" TAG_FIRMWARE = "app_full_version" TAG_FOLDER = "folder" TAG_FORMATTED = "fmtAct" TAG_GENERIC = "gen" TAG_GROUP = "group" TAG_INSTALLED = "isInstalled" TAG_IS_LOAD = "isLoad" TAG_LATITUDE = "Lat" TAG_LINK = "link" TAG_LOCATION = "location" TAG_LONGITUDE = "Long" TAG_MFG = "mfg" TAG_MILIATRY_TIME = "IsMilitary" TAG_NAME = "name" TAG_NET_RULE = "NetRule" TAG_NODE = "node" TAG_NODE_DEFS = "nodedefs" TAG_NTP = "NTP" TAG_PARENT = "parent" TAG_PARAMETER = "parameter" TAG_PRGM_FINISH = "f" TAG_PRGM_RUN = "r" TAG_PRGM_RUNNING = "running" TAG_PRGM_STATUS = "s" TAG_PRIMARY_NODE = "pnode" TAG_PRODUCT = "product" TAG_PROGRAM = "program" TAG_PROPERTY = "property" TAG_ROOT = "root" TAG_SIZE = "size" TAG_SPOKEN = "spoken" TAG_SUNRISE = "Sunrise" TAG_SUNSET = "Sunset" TAG_TYPE = "type" TAG_TZ_OFFSET = "TMZOffset" TAG_VALUE = "value" TAG_VARIABLE = "e" TAG_VARIABLES = "variables" PROTO_FOLDER = "program_folder" PROTO_GROUP = "group" PROTO_INSTEON = "insteon" PROTO_INT_VAR = "integer_variable" PROTO_ISY = "isy" PROTO_NETWORK = "network" PROTO_NODE_SERVER = "node_server" PROTO_PROGRAM = "program" PROTO_STATE_VAR = "state_variable" PROTO_ZIGBEE = "zigbee" PROTO_ZWAVE = "zwave" FAMILY_CORE = "0" FAMILY_INSTEON = "1" FAMILY_UPB = "2" FAMILY_RCS = "3" FAMILY_ZWAVE = "4" FAMILY_AUTO = "5" FAMILY_GENERIC = "6" FAMILY_UDI = "7" FAMILY_BRULTECH = "8" FAMILY_NCD = "9" FAMILY_NODESERVER = "10" FAMILY_ZMATTER_ZWAVE = "12" PROP_BATTERY_LEVEL = "BATLVL" PROP_BUSY = "BUSY" PROP_COMMS_ERROR = "ERR" PROP_ENERGY_MODE = "CLIEMD" PROP_HEAT_COOL_STATE = "CLIHCS" PROP_HUMIDITY = "CLIHUM" PROP_ON_LEVEL = "OL" PROP_RAMP_RATE = "RR" PROP_SCHEDULE_MODE = "CLISMD" PROP_SETPOINT_COOL = "CLISPC" PROP_SETPOINT_HEAT = "CLISPH" PROP_STATUS = "ST" PROP_TEMPERATURE = "CLITEMP" PROP_UOM = "UOM" PROP_ZWAVE_PREFIX = "ZW_" METHOD_COMMAND = "cmd" METHOD_GET = "get" METHOD_SET = "set" URL_CHANGE = "change" URL_CLOCK = "time" URL_CONFIG = "config" URL_DEFINITIONS = "definitions" URL_MEMBERS = "members" URL_NETWORK = "networking" URL_NODE = "node" URL_NODES = "nodes" URL_NOTES = "notes" URL_PING = "ping" URL_PROGRAMS = "programs" URL_QUERY = "query" URL_RESOURCES = "resources" URL_STATUS = "status" URL_SUBFOLDERS = "subfolders" URL_VARIABLES = "vars" URL_ZWAVE = "zwave" URL_PROFILE_NS = "profiles/ns" URL_ZMATTER_ZWAVE = "zmatter/zwave" VAR_INTEGER = "1" VAR_STATE = "2" CLIMATE_SETPOINT_MIN_GAP = 2 CMD_BACKLIGHT = "BL" CMD_BEEP = "BEEP" CMD_BRIGHTEN = "BRT" CMD_CLIMATE_FAN_SETTING = "CLIFS" CMD_CLIMATE_MODE = "CLIMD" CMD_DIM = "DIM" CMD_DISABLE = "disable" CMD_DISABLE_RUN_AT_STARTUP = "disableRunAtStartup" CMD_ENABLE = "enable" CMD_ENABLE_RUN_AT_STARTUP = "enableRunAtStartup" CMD_FADE_DOWN = "FDDOWN" CMD_FADE_STOP = "FDSTOP" CMD_FADE_UP = "FDUP" CMD_MANUAL_DIM_BEGIN = "BMAN" # Depreciated, use Fade CMD_MANUAL_DIM_STOP = "SMAN" # Depreciated, use Fade CMD_MODE = "MODE" CMD_OFF = "DOF" CMD_OFF_FAST = "DFOF" CMD_ON = "DON" CMD_ON_FAST = "DFON" CMD_RESET = "RESET" CMD_RUN = "run" CMD_RUN_ELSE = "runElse" CMD_RUN_THEN = "runThen" CMD_SECURE = "SECMD" CMD_STOP = "stop" CMD_X10 = "X10" COMMAND_FRIENDLY_NAME = { "ADRPST": "auto_dr_processing_state", "AIRFLOW": "air_flow", "ALARM": "alarm", "ANGLE": "angle_position", "ANGLPOS": "angle_position", "ATMPRES": "atmospheric_pressure", "AWAKE": "awake", "BARPRES": "barometric_pressure", "CC": "current", "CLIFRS": "fan_running_state", "CLIFSO": "fan_setting_override", "CO2LVL": "co2_level", "CPW": "power", "CTL": "controller_action", "CV": "voltage", "DELAY": "delay", "DEWPT": "dew_point", "DISTANC": "distance", "DOF3": "off_3x_key_presses", "DOF4": "off_4x_key_presses", "DOF5": "off_5x_key_presses", "DON3": "on_3x_key_presses", "DON4": "on_4x_key_presses", "DON5": "on_5x_key_presses", "ELECCON": "electrical_conductivity", "ELECRES": "electrical_resistivity", PROP_COMMS_ERROR: "device_communication_errors", "ETO": "evapotranspiration", "FATM": "fat_mass", "FREQ": "frequency", "GPV": "general_purpose", "GUST": "gust", "GV0": "custom_control_0", "GV1": "custom_control_1", "GV2": "custom_control_2", "GV3": "custom_control_3", "GV4": "custom_control_4", "GV5": "custom_control_5", "GV6": "custom_control_6", "GV7": "custom_control_7", "GV8": "custom_control_8", "GV9": "custom_control_9", "GV10": "custom_control_10", "GV11": "custom_control_11", "GV12": "custom_control_12", "GV13": "custom_control_13", "GV14": "custom_control_14", "GV15": "custom_control_15", "GV16": "custom_control_16", "GV17": "custom_control_17", "GV18": "custom_control_18", "GV19": "custom_control_19", "GV20": "custom_control_20", "GV21": "custom_control_21", "GV22": "custom_control_22", "GV23": "custom_control_23", "GV24": "custom_control_24", "GV25": "custom_control_25", "GV26": "custom_control_26", "GV27": "custom_control_27", "GV28": "custom_control_28", "GV29": "custom_control_29", "GV30": "custom_control_30", "GVOL": "gas_volume", "HAIL": "hail", "HEATIX": "heat_index", "HR": "heart_rate", "LUMIN": "luminance", "METHANE": "methane_density", "MOIST": "moisture", "MOON": "moon_phase", "MUSCLEM": "muscle_mass", "OZONE": "ozone", "PCNT": "pulse_count", "PF": "power_factor", "PM10": "particulate_matter_10", "PM25": "particulate_matter_2.5", "POP": "percent_chance_of_precipitation", "PPW": "polarized_power", "PRECIP": "precipitation", "PULSCNT": "pulse_count", "RADON": "radon_concentration", "RAINRT": "rain_rate", "RELMOD": "relative_modulation_level", "RESPR": "respiratory_rate", "RFSS": "rf_signal_strength", "ROTATE": "rotation", "RR": "ramp_rate", "SEISINT": "seismic_intensity", "SEISMAG": "seismic_magnitude", "SMOKED": "smoke_density", "SOILH": "soil_humidity", "SOILR": "soil_reactivity", "SOILS": "soil_salinity", "SOILT": "soil_temperature", "SOLRAD": "solar_radiation", "SPEED": "speed", "SVOL": "sound_volume", "TANKCAP": "tank_capacity", "TEMPEXH": "exhaust_temperature", "TEMPOUT": "outside_temperature", "TIDELVL": "tide_level", "TIME": "time", "TIMEREM": "time_remaining", "TPW": "total_energy_used", "UAC": "user_number", "USRNUM": "user_number", "UV": "uv_light", "VOCLVL": "voc_level", "WATERF": "water_flow", "WATERP": "water_pressure", "WATERT": "water_temperature", "WATERTB": "boiler_water_temperature", "WATERTD": "domestic_hot_water_temperature", "WEIGHT": "weight", "WINDCH": "wind_chill", "WINDDIR": "wind_direction", "WVOL": "water_volume", CMD_BACKLIGHT: "backlight", CMD_BEEP: "beep", CMD_BRIGHTEN: "bright", CMD_CLIMATE_FAN_SETTING: "fan_state", CMD_CLIMATE_MODE: "climate_mode", CMD_DIM: "dim", CMD_FADE_DOWN: "fade_down", CMD_FADE_STOP: "fade_stop", CMD_FADE_UP: "fade_up", CMD_MANUAL_DIM_BEGIN: "brighten_manual", CMD_MANUAL_DIM_STOP: "stop_manual", CMD_MODE: "mode", CMD_OFF: "off", CMD_OFF_FAST: "fastoff", CMD_ON: "on", CMD_ON_FAST: "faston", CMD_RESET: "reset", CMD_SECURE: "secure", CMD_X10: "x10_command", PROP_BATTERY_LEVEL: "battery_level", PROP_BUSY: "busy", PROP_ENERGY_MODE: "energy_saving_mode", PROP_HEAT_COOL_STATE: "heat_cool_state", PROP_HUMIDITY: "humidity", PROP_ON_LEVEL: "on_level", PROP_SCHEDULE_MODE: "schedule_mode", PROP_SETPOINT_COOL: "cool_setpoint", PROP_SETPOINT_HEAT: "heat_setpoint", PROP_STATUS: "status", PROP_TEMPERATURE: "temperature", PROP_UOM: "unit_of_measure", } EVENT_PROPS_IGNORED = [ CMD_BEEP, CMD_BRIGHTEN, CMD_DIM, CMD_MANUAL_DIM_BEGIN, CMD_MANUAL_DIM_STOP, CMD_FADE_UP, CMD_FADE_DOWN, CMD_FADE_STOP, CMD_OFF, CMD_OFF_FAST, CMD_ON, CMD_ON_FAST, CMD_RESET, CMD_X10, PROP_BUSY, PROP_STATUS, ] COMMAND_NAME = {val: key for key, val in COMMAND_FRIENDLY_NAME.items()} # Referenced from ISY-WSDK-5.0.4\WSDL\family.xsd NODE_FAMILY_ID = { FAMILY_CORE: "Default", FAMILY_INSTEON: "Insteon", FAMILY_UPB: "UPB", FAMILY_RCS: "RCS", FAMILY_ZWAVE: "Z-Wave", FAMILY_AUTO: "Auto_DR", FAMILY_GENERIC: "Group", FAMILY_UDI: "UDI", FAMILY_BRULTECH: "Brultech", FAMILY_NCD: "NCD", FAMILY_NODESERVER: "Node_Server", FAMILY_ZMATTER_ZWAVE: "ZMatter_Z-Wave", } UOM_CLIMATE_MODES = "98" UOM_CLIMATE_MODES_ZWAVE = "67" UOM_DOUBLE_TEMP = "101" UOM_FAN_MODES = "99" UOM_INDEX = "25" UOM_PERCENTAGE = "51" UOM_SECONDS = "57" UOM_FRIENDLY_NAME = { "1": "A", "2": "", # Binary / On-Off "3": "btu/h", "4": "°C", "5": "cm", "6": "ft³", "7": "ft³/min", "8": "m³", "9": "day", "10": "days", "12": "dB", "13": "dB A", "14": "°", "16": "macroseismic", "17": "°F", "18": "ft", "19": "hour", "20": "hours", "21": "%AH", "22": "%RH", "23": "inHg", "24": "in/hr", UOM_INDEX: "index", "26": "K", "27": "keyword", "28": "kg", "29": "kV", "30": "kW", "31": "kPa", "32": "KPH", "33": "kWh", "34": "liedu", "35": "L", "36": "lx", "37": "mercalli", "38": "m", "39": "m³/hr", "40": "m/s", "41": "mA", "42": "ms", "43": "mV", "44": "min", "45": "min", "46": "mm/hr", "47": "month", "48": "MPH", "49": "m/s", "50": "Ω", UOM_PERCENTAGE: "%", "52": "lbs", "53": "pf", "54": "ppm", "55": "pulse count", "57": "s", "58": "s", "59": "S/m", "60": "m_b", "61": "M_L", "62": "M_w", "63": "M_S", "64": "shindo", "65": "SML", "69": "gal", "71": "UV index", "72": "V", "73": "W", "74": "W/m²", "75": "weekday", "76": "°", "77": "year", "82": "mm", "83": "km", "85": "Ω", "86": "kΩ", "87": "m³/m³", "88": "Water activity", "89": "RPM", "90": "Hz", "91": "°", "92": "° South", "100": "", "101": "° (x2)", "102": "kWs", "103": "$", "104": "¢", "105": "in", "106": "mm/day", "107": "", # raw 1-byte unsigned value "108": "", # raw 2-byte unsigned value "109": "", # raw 3-byte unsigned value "110": "", # raw 4-byte unsigned value "111": "", # raw 1-byte signed value "112": "", # raw 2-byte signed value "113": "", # raw 3-byte signed value "114": "", # raw 4-byte signed value "116": "mi", "117": "mbar", "118": "hPa", "119": "Wh", "120": "in/day", } UOM_TO_STATES = { "11": { # Deadbolt Status "0": "unlocked", "100": "locked", "101": "unknown", "102": "problem", }, "15": { # Door Lock Alarm "1": "master code changed", "2": "tamper code entry limit", "3": "escutcheon removed", "4": "key-manually locked", "5": "locked by touch", "6": "key-manually unlocked", "7": "remote locking jammed bolt", "8": "remotely locked", "9": "remotely unlocked", "10": "deadbolt jammed", "11": "battery too low to operate", "12": "critical low battery", "13": "low battery", "14": "automatically locked", "15": "automatic locking jammed bolt", "16": "remotely power cycled", "17": "lock handling complete", "19": "user deleted", "20": "user added", "21": "duplicate pin", "22": "jammed bolt by locking with keypad", "23": "locked by keypad", "24": "unlocked by keypad", "25": "keypad attempt outside schedule", "26": "hardware failure", "27": "factory reset", "28": "manually not fully locked", "29": "all user codes deleted", "30": "new user code not added-duplicate code", "31": "keypad temporarily disabled", "32": "keypad busy", "33": "new program code entered", "34": "rf unlock with invalid user code", "35": "rf lock with invalid user codes", "36": "window-door is open", "37": "window-door is closed", "38": "window-door handle is open", "39": "window-door handle is closed", "40": "user code entered on keypad", "41": "power cycled", }, "66": { # Thermostat Heat/Cool State "0": "idle", "1": "heating", "2": "cooling", "3": "fan_only", "4": "pending heat", "5": "pending cool", "6": "vent", "7": "aux heat", "8": "2nd stage heating", "9": "2nd stage cooling", "10": "2nd stage aux heat", "11": "3rd stage aux heat", }, "67": { # Thermostat Mode "0": "off", "1": "heat", "2": "cool", "3": "auto", "4": "aux/emergency heat", "5": "resume", "6": "fan_only", "7": "furnace", "8": "dry air", "9": "moist air", "10": "auto changeover", "11": "energy save heat", "12": "energy save cool", "13": "away", "14": "program auto", "15": "program heat", "16": "program cool", }, "68": { # Thermostat Fan Mode "0": "auto", "1": "on", "2": "auto high", "3": "high", "4": "auto medium", "5": "medium", "6": "circulation", "7": "humidity circulation", "8": "left-right circulation", "9": "up-down circulation", "10": "quiet", }, "78": {"0": "off", "100": "on"}, # 0-Off 100-On "79": {"0": "open", "100": "closed"}, # 0-Open 100-Close "80": { # Thermostat Fan Run State "0": "off", "1": "on", "2": "on high", "3": "on medium", "4": "circulation", "5": "humidity circulation", "6": "right/left circulation", "7": "up/down circulation", "8": "quiet circulation", }, "84": {"0": "unlock", "1": "lock"}, # Secure Mode "93": { # Power Management Alarm "1": "power applied", "2": "ac mains disconnected", "3": "ac mains reconnected", "4": "surge detection", "5": "volt drop or drift", "6": "over current detected", "7": "over voltage detected", "8": "over load detected", "9": "load error", "10": "replace battery soon", "11": "replace battery now", "12": "battery is charging", "13": "battery is fully charged", "14": "charge battery soon", "15": "charge battery now", }, "94": { # Appliance Alarm "1": "program started", "2": "program in progress", "3": "program completed", "4": "replace main filter", "5": "failure to set target temperature", "6": "supplying water", "7": "water supply failure", "8": "boiling", "9": "boiling failure", "10": "washing", "11": "washing failure", "12": "rinsing", "13": "rinsing failure", "14": "draining", "15": "draining failure", "16": "spinning", "17": "spinning failure", "18": "drying", "19": "drying failure", "20": "fan failure", "21": "compressor failure", }, "95": { # Home Health Alarm "1": "leaving bed", "2": "sitting on bed", "3": "lying on bed", "4": "posture changed", "5": "sitting on edge of bed", }, "96": { # VOC Level "1": "clean", "2": "slightly polluted", "3": "moderately polluted", "4": "highly polluted", }, "97": { # Barrier Status "0": "closed", "100": "open", "101": "unknown", "102": "stopped", "103": "closing", "104": "opening", **{str(b): f"{b} %" for a, b in enumerate(list(range(1, 100)))}, # 1-99 are percentage open }, "98": { # Insteon Thermostat Mode "0": "off", "1": "heat", "2": "cool", "3": "auto", "4": "fan_only", "5": "program_auto", "6": "program_heat", "7": "program_cool", }, "99": {"7": "on", "8": "auto"}, # Insteon Thermostat Fan Mode "115": { # Most recent On style action taken for lamp control "0": "on", "1": "off", "2": "fade up", "3": "fade down", "4": "fade stop", "5": "fast on", "6": "fast off", "7": "triple press on", "8": "triple press off", "9": "4x press on", "10": "4x press off", "11": "5x press on", "12": "5x press off", }, } # Translate the "RR" Property to Seconds INSTEON_RAMP_RATES = { "0": 540, "1": 480, "2": 420, "3": 360, "4": 300, "5": 270, "6": 240, "7": 210, "8": 180, "9": 150, "10": 120, "11": 90, "12": 60, "13": 47, "14": 43, "15": 38.5, "16": 34, "17": 32, "18": 30, "19": 28, "20": 26, "21": 23.5, "22": 21.5, "23": 19, "24": 8.5, "25": 6.5, "26": 4.5, "27": 2, "28": 0.5, "29": 0.3, "30": 0.2, "31": 0.1, } # Thermostat Types/Categories. 4.8 Trane, 5.3 venstar, 5.10 Insteon Wireless, # 5.0x0B, 0x0F, 0x10, 0x13, 0x14, 0x15 - Insteon (alt. frequencies) INSTEON_TYPE_THERMOSTAT = [ "4.8", "5.3", "5.10", "5.11", "5.14", "5.15", "5.16", "5.17", "5.18", "5.19", "5.20", "5.21", ] INSTEON_TYPE_THERMOSTAT_TUP = tuple(INSTEON_TYPE_THERMOSTAT) ZWAVE_CAT_THERMOSTAT = ["140"] # Other special categories or types INSTEON_TYPE_LOCK = ["15.", "4.64"] INSTEON_TYPE_LOCK_TUP = tuple(INSTEON_TYPE_LOCK) ZWAVE_CAT_LOCK = ["111"] INSTEON_TYPE_DIMMABLE = ["1."] INSTEON_TYPE_DIMMABLE_TUP = tuple(INSTEON_TYPE_DIMMABLE) INSTEON_SUBNODE_DIMMABLE = " 1" ZWAVE_CAT_DIMMABLE = ["109", "119", "186"] # Insteon Battery Devices - States are ignored when checking the status of a group. INSTEON_STATELESS_TYPE = ["0.16.", "0.17.", "0.18.", "16."] # Not Used INSTEON_STATELESS_NODEDEFID = [ "BinaryAlarm", "BinaryAlarm_ADV", "BinaryControl", "BinaryControl_ADV", "RemoteLinc2", "RemoteLinc2_ADV", "DimmerSwitchOnly", ] # Referenced from ISY-WSDK 4_fam.xml # Included for user translations in external modules. # This is the Node.zwave_props.category property. DEVTYPE_CATEGORIES = { "0": "uninitialized", "101": "unknown", "102": "alarm", "103": "av control point", "104": "binary sensor", "105": "class a motor control", "106": "class b motor control", "107": "class c motor control", "108": "controller", "109": "dimmer switch", "110": "display", "111": "door lock", "112": "doorbell", "113": "entry control", "114": "gateway", "115": "installer tool", "116": "motor multiposition", "117": "climate sensor", "118": "multilevel sensor", "119": "multilevel switch", "120": "on/off power strip", "121": "on/off power switch", "122": "on/off scene switch", "123": "open/close valve", "124": "pc controller", "125": "remote", "126": "remote control", "127": "av remote control", "128": "simple remote control", "129": "repeater", "130": "residential hrv", "131": "satellite receiver", "132": "satellite receiver", "133": "scene controller", "134": "scene switch", "135": "security panel", "136": "set-top box", "137": "siren", "138": "smoke alarm", "139": "subsystem controller", "140": "thermostat", "141": "toggle", "142": "television", "143": "energy meter", "144": "pulse meter", "145": "water meter", "146": "gas meter", "147": "binary switch", "148": "binary alarm", "149": "aux alarm", "150": "co2 alarm", "151": "co alarm", "152": "freeze alarm", "153": "glass break alarm", "154": "heat alarm", "155": "motion sensor", "156": "smoke alarm", "157": "tamper alarm", "158": "tilt alarm", "159": "water alarm", "160": "door/window alarm", "161": "test alarm", "162": "low battery alarm", "163": "co end of life alarm", "164": "malfunction alarm", "165": "heartbeat", "166": "overheat alarm", "167": "rapid temp rise alarm", "168": "underheat alarm", "169": "leak detected alarm", "170": "level drop alarm", "171": "replace filter alarm", "172": "intrusion alarm", "173": "tamper code alarm", "174": "hardware failure alarm", "175": "software failure alarm", "176": "contact police alarm", "177": "contact fire alarm", "178": "contact medical alarm", "179": "wakeup alarm", "180": "timer", "181": "power management", "182": "appliance", "183": "home health", "184": "barrier", "185": "notification sensor", "186": "color switch", "187": "multilevel switch off on", "188": "multilevel switch down up", "189": "multilevel switch close open", "190": "multilevel switch ccw cw", "191": "multilevel switch left right", "192": "multilevel switch reverse forward", "193": "multilevel switch pull push", "194": "basic set", "195": "wall controller", "196": "barrier handle", "197": "sound switch", } # Referenced from ISY-WSDK cat.xml # Included for user translations in external modules. # This is the first part of the Node.type property (before the first ".") NODE_CATEGORIES = { "0": "generic controller", "1": "dimming control", "2": "switch/relay control", "3": "network bridge", "4": "irrigation control", "5": "climate control", "6": "pool control", "7": "sensors/actuators", "8": "home entertainment", "9": "energy management", "10": "appliance control", "11": "plumbing", "12": "communications", "13": "computer", "14": "windows/shades", "15": "access control", "16": "security/health/safety", "17": "surveillance", "18": "automotive", "19": "pet care", "20": "toys", "21": "timers/clocks", "22": "holiday", "113": "a10/x10", "127": "virtual", "254": "unknown", } # Node Change Actions NC_CLEAR_ERROR = "CE" NC_FOLDER_ADDED = "FD" NC_FOLDER_REMOVED = "FR" NC_FOLDER_RENAMED = "FN" NC_GROUP_ADDED = "GD" NC_GROUP_REMOVED = "GR" NC_GROUP_RENAMED = "GN" NC_NET_RENAMED = "WR" NC_NODE_ADDED = "ND" NC_NODE_ENABLED = "EN" NC_NODE_ERROR = "NE" NC_NODE_MOVED = "MV" NC_NODE_REMOVE_FROM_GROUP = "RG" NC_NODE_REMOVED = "NR" NC_NODE_RENAMED = "NN" NC_NODE_REVISED = "RV" NC_PARENT_CHANGED = "PC" NC_PENDING_DEVICE_OP = "WH" NC_PROGRAMMING_DEVICE = "WD" DEV_WRITING = "_7A" DEV_MEMORY = "_7M" # Node Change Code: (Description, EventInfo Tags) NODE_CHANGED_ACTIONS = { NC_CLEAR_ERROR: ("Node Comm. Errors Cleared", []), NC_FOLDER_ADDED: ("Folder Added", []), NC_FOLDER_REMOVED: ("Folder Removed", []), NC_FOLDER_RENAMED: ("Folder Renamed", ["newName"]), NC_GROUP_ADDED: ("Group Added", ["groupName", "groupType"]), NC_GROUP_REMOVED: ("Group Removed", []), NC_GROUP_RENAMED: ("Group Renamed", ["newName"]), NC_NET_RENAMED: ("Network Renamed", []), NC_NODE_ADDED: ("Node Added", ["nodeName", "nodeType"]), NC_NODE_ENABLED: ("Enabled/Disabled", ["enabled"]), NC_NODE_ERROR: ("Node Comm. Errors", []), NC_NODE_MOVED: ("Node moved into a Scene", ["movedNode", "linkType"]), NC_NODE_REMOVE_FROM_GROUP: ("Removed from Group (Scene)", ["removedNode"]), NC_NODE_REMOVED: ("Node Removed", []), NC_NODE_RENAMED: ("Node Renamed", ["newName"]), NC_NODE_REVISED: ("Node Revised (UPB)", []), NC_PARENT_CHANGED: ("Parent Changed", ["node", "nodeType", "parent", "parentType"]), NC_PENDING_DEVICE_OP: ("Pending Device Operation", []), NC_PROGRAMMING_DEVICE: ("Programming Device", []), DEV_WRITING: ("Progress Report", ["message"]), DEV_MEMORY: ("Memory Write", ["memory", "cmd1", "cmd2", "value"]), } SYSTEM_NOT_BUSY = "0" SYSTEM_BUSY = "1" SYSTEM_IDLE = "2" SYSTEM_SAFE_MODE = "3" SYSTEM_STATUS = { SYSTEM_NOT_BUSY: "Not Busy", SYSTEM_BUSY: "Busy", SYSTEM_IDLE: "Idle", SYSTEM_SAFE_MODE: "Safe Mode", } # Node Link Types NODE_IS_CONTROLLER = 0x10 # Node operations flags NODE_IS_INIT = 0x01 # needs to be initialized NODE_TO_SCAN = 0x02 # needs to be scanned NODE_IS_A_GROUP = 0x04 # it’s a group! NODE_IS_ROOT = 0x08 # it’s the root group NODE_IS_IN_ERR = 0x10 # it’s in error! NODE_IS_NEW = 0x20 # brand new node NODE_TO_DELETE = 0x40 # has to be deleted later NODE_IS_DEVICE_ROOT = 0x80 # root device such as KPL load DEV_CMD_MEMORY_WRITE = "0x2E" DEV_BL_ADDR = "0x0264" DEV_OL_ADDR = "0x0032" DEV_RR_ADDR = "0x0021" BACKLIGHT_SUPPORT = { "DimmerMotorSwitch": UOM_PERCENTAGE, "DimmerMotorSwitch_ADV": UOM_PERCENTAGE, "DimmerLampSwitch": UOM_PERCENTAGE, "DimmerLampSwitch_ADV": UOM_PERCENTAGE, "DimmerSwitchOnly": UOM_PERCENTAGE, "DimmerSwitchOnly_ADV": UOM_PERCENTAGE, "KeypadDimmer": UOM_INDEX, "KeypadDimmer_ADV": UOM_INDEX, "RelayLampSwitch": UOM_PERCENTAGE, "RelayLampSwitch_ADV": UOM_PERCENTAGE, "RelaySwitchOnlyPlusQuery": UOM_PERCENTAGE, "RelaySwitchOnlyPlusQuery_ADV": UOM_PERCENTAGE, "RelaySwitchOnly": UOM_PERCENTAGE, "RelaySwitchOnly_ADV": UOM_PERCENTAGE, "KeypadRelay": UOM_INDEX, "KeypadRelay_ADV": UOM_INDEX, "KeypadButton": UOM_INDEX, "KeypadButton_ADV": UOM_INDEX, } BACKLIGHT_INDEX = [ "On 0 / Off 0", "On 1 / Off 0", "On 2 / Off 0", "On 3 / Off 0", "On 4 / Off 0", "On 5 / Off 0", "On 6 / Off 0", "On 7 / Off 0", "On 8 / Off 0", "On 9 / Off 0", "On 10 / Off 0", "On 11 / Off 0", "On 12 / Off 0", "On 13 / Off 0", "On 14 / Off 0", "On 15 / Off 0", "On 0 / Off 1", "On 1 / Off 1", "On 2 / Off 1", "On 3 / Off 1", "On 4 / Off 1", "On 5 / Off 1", "On 6 / Off 1", "On 7 / Off 1", "On 8 / Off 1", "On 9 / Off 1", "On 10 / Off 1", "On 11 / Off 1", "On 12 / Off 1", "On 13 / Off 1", "On 14 / Off 1", "On 15 / Off 1", "On 0 / Off 2", "On 1 / Off 2", "On 2 / Off 2", "On 3 / Off 2", "On 4 / Off 2", "On 5 / Off 2", "On 6 / Off 2", "On 7 / Off 2", "On 8 / Off 2", "On 9 / Off 2", "On 10 / Off 2", "On 11 / Off 2", "On 12 / Off 2", "On 13 / Off 2", "On 14 / Off 2", "On 15 / Off 2", "On 0 / Off 3", "On 1 / Off 3", "On 2 / Off 3", "On 3 / Off 3", "On 4 / Off 3", "On 5 / Off 3", "On 6 / Off 3", "On 7 / Off 3", "On 8 / Off 3", "On 9 / Off 3", "On 10 / Off 3", "On 11 / Off 3", "On 12 / Off 3", "On 13 / Off 3", "On 14 / Off 3", "On 15 / Off 3", "On 0 / Off 4", "On 1 / Off 4", "On 2 / Off 4", "On 3 / Off 4", "On 4 / Off 4", "On 5 / Off 4", "On 6 / Off 4", "On 7 / Off 4", "On 8 / Off 4", "On 9 / Off 4", "On 10 / Off 4", "On 11 / Off 4", "On 12 / Off 4", "On 13 / Off 4", "On 14 / Off 4", "On 15 / Off 4", "On 0 / Off 5", "On 1 / Off 5", "On 2 / Off 5", "On 3 / Off 5", "On 4 / Off 5", "On 5 / Off 5", "On 6 / Off 5", "On 7 / Off 5", "On 8 / Off 5", "On 9 / Off 5", "On 10 / Off 5", "On 11 / Off 5", "On 12 / Off 5", "On 13 / Off 5", "On 14 / Off 5", "On 15 / Off 5", "On 0 / Off 6", "On 1 / Off 6", "On 2 / Off 6", "On 3 / Off 6", "On 4 / Off 6", "On 5 / Off 6", "On 6 / Off 6", "On 7 / Off 6", "On 8 / Off 6", "On 9 / Off 6", "On 10 / Off 6", "On 11 / Off 6", "On 12 / Off 6", "On 13 / Off 6", "On 14 / Off 6", "On 15 / Off 6", "On 0 / Off 7", "On 1 / Off 7", "On 2 / Off 7", "On 3 / Off 7", "On 4 / Off 7", "On 5 / Off 7", "On 6 / Off 7", "On 7 / Off 7", "On 8 / Off 7", "On 9 / Off 7", "On 10 / Off 7", "On 11 / Off 7", "On 12 / Off 7", "On 13 / Off 7", "On 14 / Off 7", "On 15 / Off 7", ]