Use black to format hassfest generated files (#78794)
parent
e66f28f3f7
commit
1021c90bb8
|
@ -3,8 +3,6 @@
|
|||
To update, run python3 -m script.hassfest
|
||||
"""
|
||||
|
||||
# fmt: off
|
||||
|
||||
APPLICATION_CREDENTIALS = [
|
||||
"geocaching",
|
||||
"google",
|
||||
|
@ -19,5 +17,5 @@ APPLICATION_CREDENTIALS = [
|
|||
"spotify",
|
||||
"withings",
|
||||
"xbox",
|
||||
"yolink"
|
||||
"yolink",
|
||||
]
|
||||
|
|
|
@ -4,23 +4,21 @@ To update, run python3 -m script.hassfest
|
|||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
# fmt: off
|
||||
|
||||
BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = [
|
||||
{
|
||||
"domain": "bluemaestro",
|
||||
"manufacturer_id": 307,
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "bthome",
|
||||
"connectable": False,
|
||||
"service_data_uuid": "0000181c-0000-1000-8000-00805f9b34fb"
|
||||
"service_data_uuid": "0000181c-0000-1000-8000-00805f9b34fb",
|
||||
},
|
||||
{
|
||||
"domain": "bthome",
|
||||
"connectable": False,
|
||||
"service_data_uuid": "0000181e-0000-1000-8000-00805f9b34fb"
|
||||
"service_data_uuid": "0000181e-0000-1000-8000-00805f9b34fb",
|
||||
},
|
||||
{
|
||||
"domain": "fjaraskupan",
|
||||
|
@ -32,174 +30,174 @@ BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = [
|
|||
70,
|
||||
74,
|
||||
65,
|
||||
82
|
||||
]
|
||||
82,
|
||||
],
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"local_name": "Govee*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"local_name": "GVH5*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"local_name": "B5178*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 6966,
|
||||
"service_uuid": "00008451-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 26589,
|
||||
"service_uuid": "00008351-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 57391,
|
||||
"service_uuid": "00008351-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 18994,
|
||||
"service_uuid": "00008551-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 818,
|
||||
"service_uuid": "00008551-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 59970,
|
||||
"service_uuid": "00008151-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 63585,
|
||||
"service_uuid": "00008151-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 14474,
|
||||
"service_uuid": "00008151-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 10032,
|
||||
"service_uuid": "00008251-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "govee_ble",
|
||||
"manufacturer_id": 19506,
|
||||
"service_uuid": "00001801-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "homekit_controller",
|
||||
"manufacturer_id": 76,
|
||||
"manufacturer_data_start": [
|
||||
6
|
||||
]
|
||||
6,
|
||||
],
|
||||
},
|
||||
{
|
||||
"domain": "inkbird",
|
||||
"local_name": "sps",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "inkbird",
|
||||
"local_name": "Inkbird*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "inkbird",
|
||||
"local_name": "iBBQ*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "inkbird",
|
||||
"local_name": "xBBQ*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "inkbird",
|
||||
"local_name": "tps",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "led_ble",
|
||||
"local_name": "LEDnet*"
|
||||
"local_name": "LEDnet*",
|
||||
},
|
||||
{
|
||||
"domain": "led_ble",
|
||||
"local_name": "BLE-LED*"
|
||||
"local_name": "BLE-LED*",
|
||||
},
|
||||
{
|
||||
"domain": "led_ble",
|
||||
"local_name": "LEDBLE*"
|
||||
"local_name": "LEDBLE*",
|
||||
},
|
||||
{
|
||||
"domain": "led_ble",
|
||||
"local_name": "Triones*"
|
||||
"local_name": "Triones*",
|
||||
},
|
||||
{
|
||||
"domain": "led_ble",
|
||||
"local_name": "LEDBlue*"
|
||||
"local_name": "LEDBlue*",
|
||||
},
|
||||
{
|
||||
"domain": "led_ble",
|
||||
"local_name": "Dream~*"
|
||||
"local_name": "Dream~*",
|
||||
},
|
||||
{
|
||||
"domain": "led_ble",
|
||||
"local_name": "QHM-*"
|
||||
"local_name": "QHM-*",
|
||||
},
|
||||
{
|
||||
"domain": "led_ble",
|
||||
"local_name": "AP-*"
|
||||
"local_name": "AP-*",
|
||||
},
|
||||
{
|
||||
"domain": "melnor",
|
||||
"manufacturer_data_start": [
|
||||
89
|
||||
89,
|
||||
],
|
||||
"manufacturer_id": 13
|
||||
"manufacturer_id": 13,
|
||||
},
|
||||
{
|
||||
"domain": "moat",
|
||||
"local_name": "Moat_S*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "qingping",
|
||||
"local_name": "Qingping*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "qingping",
|
||||
"local_name": "Lee Guitars*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "qingping",
|
||||
"service_data_uuid": "0000fdcd-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "sensorpro",
|
||||
|
@ -208,9 +206,9 @@ BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = [
|
|||
1,
|
||||
1,
|
||||
164,
|
||||
193
|
||||
193,
|
||||
],
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "sensorpro",
|
||||
|
@ -219,79 +217,79 @@ BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = [
|
|||
1,
|
||||
5,
|
||||
164,
|
||||
193
|
||||
193,
|
||||
],
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "sensorpush",
|
||||
"local_name": "SensorPush*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "switchbot",
|
||||
"service_data_uuid": "0000fd3d-0000-1000-8000-00805f9b34fb",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "switchbot",
|
||||
"service_uuid": "cba20d00-224d-11e6-9fb8-0002a5d5c51b",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "thermobeacon",
|
||||
"service_uuid": "0000fff0-0000-1000-8000-00805f9b34fb",
|
||||
"manufacturer_id": 16,
|
||||
"manufacturer_data_start": [
|
||||
0
|
||||
0,
|
||||
],
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "thermobeacon",
|
||||
"service_uuid": "0000fff0-0000-1000-8000-00805f9b34fb",
|
||||
"manufacturer_id": 17,
|
||||
"manufacturer_data_start": [
|
||||
0
|
||||
0,
|
||||
],
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "thermobeacon",
|
||||
"service_uuid": "0000fff0-0000-1000-8000-00805f9b34fb",
|
||||
"manufacturer_id": 21,
|
||||
"manufacturer_data_start": [
|
||||
0
|
||||
0,
|
||||
],
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "thermobeacon",
|
||||
"local_name": "ThermoBeacon",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "thermopro",
|
||||
"local_name": "TP35*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "thermopro",
|
||||
"local_name": "TP39*",
|
||||
"connectable": False
|
||||
"connectable": False,
|
||||
},
|
||||
{
|
||||
"domain": "tilt_ble",
|
||||
"manufacturer_id": 76
|
||||
"manufacturer_id": 76,
|
||||
},
|
||||
{
|
||||
"domain": "xiaomi_ble",
|
||||
"connectable": False,
|
||||
"service_data_uuid": "0000fe95-0000-1000-8000-00805f9b34fb"
|
||||
"service_data_uuid": "0000fe95-0000-1000-8000-00805f9b34fb",
|
||||
},
|
||||
{
|
||||
"domain": "yalexs_ble",
|
||||
"manufacturer_id": 465,
|
||||
"service_uuid": "0000fe24-0000-1000-8000-00805f9b34fb"
|
||||
}
|
||||
"service_uuid": "0000fe24-0000-1000-8000-00805f9b34fb",
|
||||
},
|
||||
]
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
To update, run python3 -m script.hassfest
|
||||
"""
|
||||
|
||||
# fmt: off
|
||||
|
||||
FLOWS = {
|
||||
"integration": [
|
||||
"abode",
|
||||
|
@ -456,7 +454,7 @@ FLOWS = {
|
|||
"zerproc",
|
||||
"zha",
|
||||
"zwave_js",
|
||||
"zwave_me"
|
||||
"zwave_me",
|
||||
],
|
||||
"helper": [
|
||||
"derivative",
|
||||
|
@ -466,6 +464,6 @@ FLOWS = {
|
|||
"switch_as_x",
|
||||
"threshold",
|
||||
"tod",
|
||||
"utility_meter"
|
||||
]
|
||||
"utility_meter",
|
||||
],
|
||||
}
|
||||
|
|
|
@ -4,194 +4,201 @@ To update, run python3 -m script.hassfest
|
|||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
# fmt: off
|
||||
|
||||
DHCP: list[dict[str, str | bool]] = [
|
||||
{'domain': 'august', 'hostname': 'connect', 'macaddress': 'D86162*'},
|
||||
{'domain': 'august', 'hostname': 'connect', 'macaddress': 'B8B7F1*'},
|
||||
{'domain': 'august', 'hostname': 'connect', 'macaddress': '2C9FFB*'},
|
||||
{'domain': 'august', 'hostname': 'august*', 'macaddress': 'E076D0*'},
|
||||
{'domain': 'awair', 'macaddress': '70886B1*'},
|
||||
{'domain': 'axis', 'registered_devices': True},
|
||||
{'domain': 'axis', 'hostname': 'axis-00408c*', 'macaddress': '00408C*'},
|
||||
{'domain': 'axis', 'hostname': 'axis-accc8e*', 'macaddress': 'ACCC8E*'},
|
||||
{'domain': 'axis', 'hostname': 'axis-b8a44f*', 'macaddress': 'B8A44F*'},
|
||||
{'domain': 'blink', 'hostname': 'blink*', 'macaddress': 'B85F98*'},
|
||||
{'domain': 'blink', 'hostname': 'blink*', 'macaddress': '00037F*'},
|
||||
{'domain': 'blink', 'hostname': 'blink*', 'macaddress': '20A171*'},
|
||||
{'domain': 'broadlink', 'registered_devices': True},
|
||||
{'domain': 'broadlink', 'macaddress': '34EA34*'},
|
||||
{'domain': 'broadlink', 'macaddress': '24DFA7*'},
|
||||
{'domain': 'broadlink', 'macaddress': 'A043B0*'},
|
||||
{'domain': 'broadlink', 'macaddress': 'B4430D*'},
|
||||
{'domain': 'broadlink', 'macaddress': 'C8F742*'},
|
||||
{'domain': 'elkm1', 'registered_devices': True},
|
||||
{'domain': 'elkm1', 'macaddress': '00409D*'},
|
||||
{'domain': 'emonitor', 'hostname': 'emonitor*', 'macaddress': '0090C2*'},
|
||||
{'domain': 'emonitor', 'registered_devices': True},
|
||||
{'domain': 'esphome', 'registered_devices': True},
|
||||
{'domain': 'flume', 'hostname': 'flume-gw-*'},
|
||||
{'domain': 'flux_led', 'registered_devices': True},
|
||||
{'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': '18B905*'},
|
||||
{'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': '249494*'},
|
||||
{'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': '7CB94C*'},
|
||||
{'domain': 'flux_led', 'hostname': '[hba][flk]*', 'macaddress': 'ACCF23*'},
|
||||
{'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': 'B4E842*'},
|
||||
{'domain': 'flux_led', 'hostname': '[hba][flk]*', 'macaddress': 'F0FE6B*'},
|
||||
{'domain': 'flux_led', 'hostname': 'lwip*', 'macaddress': '8CCE4E*'},
|
||||
{'domain': 'flux_led', 'hostname': 'hf-lpb100-zj*'},
|
||||
{'domain': 'flux_led', 'hostname': 'zengge_[0-9a-f][0-9a-f]_*'},
|
||||
{'domain': 'flux_led', 'hostname': 'sta*', 'macaddress': 'C82E47*'},
|
||||
{'domain': 'fronius', 'macaddress': '0003AC*'},
|
||||
{'domain': 'fully_kiosk', 'registered_devices': True},
|
||||
{'domain': 'goalzero', 'registered_devices': True},
|
||||
{'domain': 'goalzero', 'hostname': 'yeti*'},
|
||||
{'domain': 'gogogate2', 'hostname': 'ismartgate*'},
|
||||
{'domain': 'guardian', 'hostname': 'gvc*', 'macaddress': '30AEA4*'},
|
||||
{'domain': 'guardian', 'hostname': 'gvc*', 'macaddress': 'B4E62D*'},
|
||||
{'domain': 'guardian', 'hostname': 'guardian*', 'macaddress': '30AEA4*'},
|
||||
{'domain': 'hunterdouglas_powerview', 'registered_devices': True},
|
||||
{'domain': 'hunterdouglas_powerview',
|
||||
'hostname': 'hunter*',
|
||||
'macaddress': '002674*'},
|
||||
{'domain': 'insteon', 'macaddress': '000EF3*'},
|
||||
{'domain': 'insteon', 'registered_devices': True},
|
||||
{'domain': 'intellifire', 'hostname': 'zentrios-*'},
|
||||
{'domain': 'isy994', 'registered_devices': True},
|
||||
{'domain': 'isy994', 'hostname': 'isy*', 'macaddress': '0021B9*'},
|
||||
{'domain': 'isy994', 'hostname': 'polisy*', 'macaddress': '000DB9*'},
|
||||
{'domain': 'lametric', 'registered_devices': True},
|
||||
{'domain': 'lifx', 'macaddress': 'D073D5*'},
|
||||
{'domain': 'lifx', 'registered_devices': True},
|
||||
{'domain': 'litterrobot', 'hostname': 'litter-robot4'},
|
||||
{'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': '48A2E6*'},
|
||||
{'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': 'B82CA0*'},
|
||||
{'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': '00D02D*'},
|
||||
{'domain': 'motion_blinds', 'registered_devices': True},
|
||||
{'domain': 'motion_blinds', 'hostname': 'motion_*'},
|
||||
{'domain': 'motion_blinds', 'hostname': 'brel_*'},
|
||||
{'domain': 'motion_blinds', 'hostname': 'connector_*'},
|
||||
{'domain': 'myq', 'macaddress': '645299*'},
|
||||
{'domain': 'nest', 'macaddress': '18B430*'},
|
||||
{'domain': 'nest', 'macaddress': '641666*'},
|
||||
{'domain': 'nest', 'macaddress': 'D8EB46*'},
|
||||
{'domain': 'nexia', 'hostname': 'xl857-*', 'macaddress': '000231*'},
|
||||
{'domain': 'nuheat', 'hostname': 'nuheat', 'macaddress': '002338*'},
|
||||
{'domain': 'nuki', 'hostname': 'nuki_bridge_*'},
|
||||
{'domain': 'oncue', 'hostname': 'kohlergen*', 'macaddress': '00146F*'},
|
||||
{'domain': 'overkiz', 'hostname': 'gateway*', 'macaddress': 'F8811A*'},
|
||||
{'domain': 'powerwall', 'hostname': '1118431-*'},
|
||||
{'domain': 'prusalink', 'macaddress': '109C70*'},
|
||||
{'domain': 'qnap_qsw', 'macaddress': '245EBE*'},
|
||||
{'domain': 'rachio', 'hostname': 'rachio-*', 'macaddress': '009D6B*'},
|
||||
{'domain': 'rachio', 'hostname': 'rachio-*', 'macaddress': 'F0038C*'},
|
||||
{'domain': 'rachio', 'hostname': 'rachio-*', 'macaddress': '74C63B*'},
|
||||
{'domain': 'radiotherm', 'hostname': 'thermostat*', 'macaddress': '5CDAD4*'},
|
||||
{'domain': 'radiotherm', 'registered_devices': True},
|
||||
{'domain': 'rainforest_eagle', 'macaddress': 'D8D5B9*'},
|
||||
{'domain': 'ring', 'hostname': 'ring*', 'macaddress': '0CAE7D*'},
|
||||
{'domain': 'roomba', 'hostname': 'irobot-*', 'macaddress': '501479*'},
|
||||
{'domain': 'roomba', 'hostname': 'roomba-*', 'macaddress': '80A589*'},
|
||||
{'domain': 'roomba', 'hostname': 'roomba-*', 'macaddress': 'DCF505*'},
|
||||
{'domain': 'samsungtv', 'registered_devices': True},
|
||||
{'domain': 'samsungtv', 'hostname': 'tizen*'},
|
||||
{'domain': 'samsungtv', 'macaddress': '4844F7*'},
|
||||
{'domain': 'samsungtv', 'macaddress': '606BBD*'},
|
||||
{'domain': 'samsungtv', 'macaddress': '641CB0*'},
|
||||
{'domain': 'samsungtv', 'macaddress': '8CC8CD*'},
|
||||
{'domain': 'samsungtv', 'macaddress': '8CEA48*'},
|
||||
{'domain': 'samsungtv', 'macaddress': 'F47B5E*'},
|
||||
{'domain': 'screenlogic', 'registered_devices': True},
|
||||
{'domain': 'screenlogic', 'hostname': 'pentair*', 'macaddress': '00C033*'},
|
||||
{'domain': 'sense', 'hostname': 'sense-*', 'macaddress': '009D6B*'},
|
||||
{'domain': 'sense', 'hostname': 'sense-*', 'macaddress': 'DCEFCA*'},
|
||||
{'domain': 'sense', 'hostname': 'sense-*', 'macaddress': 'A4D578*'},
|
||||
{'domain': 'senseme', 'registered_devices': True},
|
||||
{'domain': 'senseme', 'macaddress': '20F85E*'},
|
||||
{'domain': 'sensibo', 'hostname': 'sensibo*'},
|
||||
{'domain': 'simplisafe', 'hostname': 'simplisafe*', 'macaddress': '30AEA4*'},
|
||||
{'domain': 'sleepiq', 'macaddress': '64DBA0*'},
|
||||
{'domain': 'smartthings', 'hostname': 'st*', 'macaddress': '24FD5B*'},
|
||||
{'domain': 'smartthings', 'hostname': 'smartthings*', 'macaddress': '24FD5B*'},
|
||||
{'domain': 'smartthings', 'hostname': 'hub*', 'macaddress': '24FD5B*'},
|
||||
{'domain': 'smartthings', 'hostname': 'hub*', 'macaddress': 'D052A8*'},
|
||||
{'domain': 'smartthings', 'hostname': 'hub*', 'macaddress': '286D97*'},
|
||||
{'domain': 'solaredge', 'hostname': 'target', 'macaddress': '002702*'},
|
||||
{'domain': 'somfy_mylink', 'hostname': 'somfy_*', 'macaddress': 'B8B7F1*'},
|
||||
{'domain': 'squeezebox', 'hostname': 'squeezebox*', 'macaddress': '000420*'},
|
||||
{'domain': 'steamist', 'registered_devices': True},
|
||||
{'domain': 'steamist', 'hostname': 'my[45]50*', 'macaddress': '001E0C*'},
|
||||
{'domain': 'tado', 'hostname': 'tado*'},
|
||||
{'domain': 'tesla_wall_connector',
|
||||
'hostname': 'teslawallconnector_*',
|
||||
'macaddress': 'DC44271*'},
|
||||
{'domain': 'tesla_wall_connector',
|
||||
'hostname': 'teslawallconnector_*',
|
||||
'macaddress': '98ED5C*'},
|
||||
{'domain': 'tesla_wall_connector',
|
||||
'hostname': 'teslawallconnector_*',
|
||||
'macaddress': '4CFCAA*'},
|
||||
{'domain': 'tolo', 'hostname': 'usr-tcp232-ed2'},
|
||||
{'domain': 'toon', 'hostname': 'eneco-*', 'macaddress': '74C63B*'},
|
||||
{'domain': 'tplink', 'registered_devices': True},
|
||||
{'domain': 'tplink', 'hostname': 'es*', 'macaddress': '54AF97*'},
|
||||
{'domain': 'tplink', 'hostname': 'ep*', 'macaddress': 'E848B8*'},
|
||||
{'domain': 'tplink', 'hostname': 'ep*', 'macaddress': '003192*'},
|
||||
{'domain': 'tplink', 'hostname': 'hs*', 'macaddress': '1C3BF3*'},
|
||||
{'domain': 'tplink', 'hostname': 'hs*', 'macaddress': '50C7BF*'},
|
||||
{'domain': 'tplink', 'hostname': 'hs*', 'macaddress': '68FF7B*'},
|
||||
{'domain': 'tplink', 'hostname': 'hs*', 'macaddress': '98DAC4*'},
|
||||
{'domain': 'tplink', 'hostname': 'hs*', 'macaddress': 'B09575*'},
|
||||
{'domain': 'tplink', 'hostname': 'hs*', 'macaddress': 'C006C3*'},
|
||||
{'domain': 'tplink', 'hostname': 'lb*', 'macaddress': '1C3BF3*'},
|
||||
{'domain': 'tplink', 'hostname': 'lb*', 'macaddress': '50C7BF*'},
|
||||
{'domain': 'tplink', 'hostname': 'lb*', 'macaddress': '68FF7B*'},
|
||||
{'domain': 'tplink', 'hostname': 'lb*', 'macaddress': '98DAC4*'},
|
||||
{'domain': 'tplink', 'hostname': 'lb*', 'macaddress': 'B09575*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '60A4B7*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '005F67*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '1027F5*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'B0A7B9*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '403F8C*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'C0C9E3*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '909A4A*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'E848B8*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '003192*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '1C3BF3*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '50C7BF*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '68FF7B*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '98DAC4*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'B09575*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'C006C3*'},
|
||||
{'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '6C5AB0*'},
|
||||
{'domain': 'tuya', 'macaddress': '105A17*'},
|
||||
{'domain': 'tuya', 'macaddress': '10D561*'},
|
||||
{'domain': 'tuya', 'macaddress': '1869D8*'},
|
||||
{'domain': 'tuya', 'macaddress': '381F8D*'},
|
||||
{'domain': 'tuya', 'macaddress': '508A06*'},
|
||||
{'domain': 'tuya', 'macaddress': '68572D*'},
|
||||
{'domain': 'tuya', 'macaddress': '708976*'},
|
||||
{'domain': 'tuya', 'macaddress': '7CF666*'},
|
||||
{'domain': 'tuya', 'macaddress': '84E342*'},
|
||||
{'domain': 'tuya', 'macaddress': 'D4A651*'},
|
||||
{'domain': 'tuya', 'macaddress': 'D81F12*'},
|
||||
{'domain': 'twinkly', 'hostname': 'twinkly_*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': 'B4FBE4*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': '802AA8*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': 'F09FC2*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': '68D79A*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': '18E829*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': '245A4C*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': '784558*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': 'E063DA*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': '265A4C*'},
|
||||
{'domain': 'unifiprotect', 'macaddress': '74ACB9*'},
|
||||
{'domain': 'verisure', 'macaddress': '0023C1*'},
|
||||
{'domain': 'vicare', 'macaddress': 'B87424*'},
|
||||
{'domain': 'wiz', 'registered_devices': True},
|
||||
{'domain': 'wiz', 'macaddress': 'A8BB50*'},
|
||||
{'domain': 'wiz', 'macaddress': 'D8A011*'},
|
||||
{'domain': 'wiz', 'macaddress': '444F8E*'},
|
||||
{'domain': 'wiz', 'macaddress': '6C2990*'},
|
||||
{'domain': 'wiz', 'hostname': 'wiz_*'},
|
||||
{'domain': 'yeelight', 'hostname': 'yeelink-*'}]
|
||||
{"domain": "august", "hostname": "connect", "macaddress": "D86162*"},
|
||||
{"domain": "august", "hostname": "connect", "macaddress": "B8B7F1*"},
|
||||
{"domain": "august", "hostname": "connect", "macaddress": "2C9FFB*"},
|
||||
{"domain": "august", "hostname": "august*", "macaddress": "E076D0*"},
|
||||
{"domain": "awair", "macaddress": "70886B1*"},
|
||||
{"domain": "axis", "registered_devices": True},
|
||||
{"domain": "axis", "hostname": "axis-00408c*", "macaddress": "00408C*"},
|
||||
{"domain": "axis", "hostname": "axis-accc8e*", "macaddress": "ACCC8E*"},
|
||||
{"domain": "axis", "hostname": "axis-b8a44f*", "macaddress": "B8A44F*"},
|
||||
{"domain": "blink", "hostname": "blink*", "macaddress": "B85F98*"},
|
||||
{"domain": "blink", "hostname": "blink*", "macaddress": "00037F*"},
|
||||
{"domain": "blink", "hostname": "blink*", "macaddress": "20A171*"},
|
||||
{"domain": "broadlink", "registered_devices": True},
|
||||
{"domain": "broadlink", "macaddress": "34EA34*"},
|
||||
{"domain": "broadlink", "macaddress": "24DFA7*"},
|
||||
{"domain": "broadlink", "macaddress": "A043B0*"},
|
||||
{"domain": "broadlink", "macaddress": "B4430D*"},
|
||||
{"domain": "broadlink", "macaddress": "C8F742*"},
|
||||
{"domain": "elkm1", "registered_devices": True},
|
||||
{"domain": "elkm1", "macaddress": "00409D*"},
|
||||
{"domain": "emonitor", "hostname": "emonitor*", "macaddress": "0090C2*"},
|
||||
{"domain": "emonitor", "registered_devices": True},
|
||||
{"domain": "esphome", "registered_devices": True},
|
||||
{"domain": "flume", "hostname": "flume-gw-*"},
|
||||
{"domain": "flux_led", "registered_devices": True},
|
||||
{"domain": "flux_led", "macaddress": "18B905*", "hostname": "[ba][lk]*"},
|
||||
{"domain": "flux_led", "macaddress": "249494*", "hostname": "[ba][lk]*"},
|
||||
{"domain": "flux_led", "macaddress": "7CB94C*", "hostname": "[ba][lk]*"},
|
||||
{"domain": "flux_led", "macaddress": "ACCF23*", "hostname": "[hba][flk]*"},
|
||||
{"domain": "flux_led", "macaddress": "B4E842*", "hostname": "[ba][lk]*"},
|
||||
{"domain": "flux_led", "macaddress": "F0FE6B*", "hostname": "[hba][flk]*"},
|
||||
{"domain": "flux_led", "macaddress": "8CCE4E*", "hostname": "lwip*"},
|
||||
{"domain": "flux_led", "hostname": "hf-lpb100-zj*"},
|
||||
{"domain": "flux_led", "hostname": "zengge_[0-9a-f][0-9a-f]_*"},
|
||||
{"domain": "flux_led", "macaddress": "C82E47*", "hostname": "sta*"},
|
||||
{"domain": "fronius", "macaddress": "0003AC*"},
|
||||
{"domain": "fully_kiosk", "registered_devices": True},
|
||||
{"domain": "goalzero", "registered_devices": True},
|
||||
{"domain": "goalzero", "hostname": "yeti*"},
|
||||
{"domain": "gogogate2", "hostname": "ismartgate*"},
|
||||
{"domain": "guardian", "hostname": "gvc*", "macaddress": "30AEA4*"},
|
||||
{"domain": "guardian", "hostname": "gvc*", "macaddress": "B4E62D*"},
|
||||
{"domain": "guardian", "hostname": "guardian*", "macaddress": "30AEA4*"},
|
||||
{"domain": "hunterdouglas_powerview", "registered_devices": True},
|
||||
{
|
||||
"domain": "hunterdouglas_powerview",
|
||||
"hostname": "hunter*",
|
||||
"macaddress": "002674*",
|
||||
},
|
||||
{"domain": "insteon", "macaddress": "000EF3*"},
|
||||
{"domain": "insteon", "registered_devices": True},
|
||||
{"domain": "intellifire", "hostname": "zentrios-*"},
|
||||
{"domain": "isy994", "registered_devices": True},
|
||||
{"domain": "isy994", "hostname": "isy*", "macaddress": "0021B9*"},
|
||||
{"domain": "isy994", "hostname": "polisy*", "macaddress": "000DB9*"},
|
||||
{"domain": "lametric", "registered_devices": True},
|
||||
{"domain": "lifx", "macaddress": "D073D5*"},
|
||||
{"domain": "lifx", "registered_devices": True},
|
||||
{"domain": "litterrobot", "hostname": "litter-robot4"},
|
||||
{"domain": "lyric", "hostname": "lyric-*", "macaddress": "48A2E6*"},
|
||||
{"domain": "lyric", "hostname": "lyric-*", "macaddress": "B82CA0*"},
|
||||
{"domain": "lyric", "hostname": "lyric-*", "macaddress": "00D02D*"},
|
||||
{"domain": "motion_blinds", "registered_devices": True},
|
||||
{"domain": "motion_blinds", "hostname": "motion_*"},
|
||||
{"domain": "motion_blinds", "hostname": "brel_*"},
|
||||
{"domain": "motion_blinds", "hostname": "connector_*"},
|
||||
{"domain": "myq", "macaddress": "645299*"},
|
||||
{"domain": "nest", "macaddress": "18B430*"},
|
||||
{"domain": "nest", "macaddress": "641666*"},
|
||||
{"domain": "nest", "macaddress": "D8EB46*"},
|
||||
{"domain": "nexia", "hostname": "xl857-*", "macaddress": "000231*"},
|
||||
{"domain": "nuheat", "hostname": "nuheat", "macaddress": "002338*"},
|
||||
{"domain": "nuki", "hostname": "nuki_bridge_*"},
|
||||
{"domain": "oncue", "hostname": "kohlergen*", "macaddress": "00146F*"},
|
||||
{"domain": "overkiz", "hostname": "gateway*", "macaddress": "F8811A*"},
|
||||
{"domain": "powerwall", "hostname": "1118431-*"},
|
||||
{"domain": "prusalink", "macaddress": "109C70*"},
|
||||
{"domain": "qnap_qsw", "macaddress": "245EBE*"},
|
||||
{"domain": "rachio", "hostname": "rachio-*", "macaddress": "009D6B*"},
|
||||
{"domain": "rachio", "hostname": "rachio-*", "macaddress": "F0038C*"},
|
||||
{"domain": "rachio", "hostname": "rachio-*", "macaddress": "74C63B*"},
|
||||
{"domain": "radiotherm", "hostname": "thermostat*", "macaddress": "5CDAD4*"},
|
||||
{"domain": "radiotherm", "registered_devices": True},
|
||||
{"domain": "rainforest_eagle", "macaddress": "D8D5B9*"},
|
||||
{"domain": "ring", "hostname": "ring*", "macaddress": "0CAE7D*"},
|
||||
{"domain": "roomba", "hostname": "irobot-*", "macaddress": "501479*"},
|
||||
{"domain": "roomba", "hostname": "roomba-*", "macaddress": "80A589*"},
|
||||
{"domain": "roomba", "hostname": "roomba-*", "macaddress": "DCF505*"},
|
||||
{"domain": "samsungtv", "registered_devices": True},
|
||||
{"domain": "samsungtv", "hostname": "tizen*"},
|
||||
{"domain": "samsungtv", "macaddress": "4844F7*"},
|
||||
{"domain": "samsungtv", "macaddress": "606BBD*"},
|
||||
{"domain": "samsungtv", "macaddress": "641CB0*"},
|
||||
{"domain": "samsungtv", "macaddress": "8CC8CD*"},
|
||||
{"domain": "samsungtv", "macaddress": "8CEA48*"},
|
||||
{"domain": "samsungtv", "macaddress": "F47B5E*"},
|
||||
{"domain": "screenlogic", "registered_devices": True},
|
||||
{"domain": "screenlogic", "hostname": "pentair*", "macaddress": "00C033*"},
|
||||
{"domain": "sense", "hostname": "sense-*", "macaddress": "009D6B*"},
|
||||
{"domain": "sense", "hostname": "sense-*", "macaddress": "DCEFCA*"},
|
||||
{"domain": "sense", "hostname": "sense-*", "macaddress": "A4D578*"},
|
||||
{"domain": "senseme", "registered_devices": True},
|
||||
{"domain": "senseme", "macaddress": "20F85E*"},
|
||||
{"domain": "sensibo", "hostname": "sensibo*"},
|
||||
{"domain": "simplisafe", "hostname": "simplisafe*", "macaddress": "30AEA4*"},
|
||||
{"domain": "sleepiq", "macaddress": "64DBA0*"},
|
||||
{"domain": "smartthings", "hostname": "st*", "macaddress": "24FD5B*"},
|
||||
{"domain": "smartthings", "hostname": "smartthings*", "macaddress": "24FD5B*"},
|
||||
{"domain": "smartthings", "hostname": "hub*", "macaddress": "24FD5B*"},
|
||||
{"domain": "smartthings", "hostname": "hub*", "macaddress": "D052A8*"},
|
||||
{"domain": "smartthings", "hostname": "hub*", "macaddress": "286D97*"},
|
||||
{"domain": "solaredge", "hostname": "target", "macaddress": "002702*"},
|
||||
{"domain": "somfy_mylink", "hostname": "somfy_*", "macaddress": "B8B7F1*"},
|
||||
{"domain": "squeezebox", "hostname": "squeezebox*", "macaddress": "000420*"},
|
||||
{"domain": "steamist", "registered_devices": True},
|
||||
{"domain": "steamist", "macaddress": "001E0C*", "hostname": "my[45]50*"},
|
||||
{"domain": "tado", "hostname": "tado*"},
|
||||
{
|
||||
"domain": "tesla_wall_connector",
|
||||
"hostname": "teslawallconnector_*",
|
||||
"macaddress": "DC44271*",
|
||||
},
|
||||
{
|
||||
"domain": "tesla_wall_connector",
|
||||
"hostname": "teslawallconnector_*",
|
||||
"macaddress": "98ED5C*",
|
||||
},
|
||||
{
|
||||
"domain": "tesla_wall_connector",
|
||||
"hostname": "teslawallconnector_*",
|
||||
"macaddress": "4CFCAA*",
|
||||
},
|
||||
{"domain": "tolo", "hostname": "usr-tcp232-ed2"},
|
||||
{"domain": "toon", "hostname": "eneco-*", "macaddress": "74C63B*"},
|
||||
{"domain": "tplink", "registered_devices": True},
|
||||
{"domain": "tplink", "hostname": "es*", "macaddress": "54AF97*"},
|
||||
{"domain": "tplink", "hostname": "ep*", "macaddress": "E848B8*"},
|
||||
{"domain": "tplink", "hostname": "ep*", "macaddress": "003192*"},
|
||||
{"domain": "tplink", "hostname": "hs*", "macaddress": "1C3BF3*"},
|
||||
{"domain": "tplink", "hostname": "hs*", "macaddress": "50C7BF*"},
|
||||
{"domain": "tplink", "hostname": "hs*", "macaddress": "68FF7B*"},
|
||||
{"domain": "tplink", "hostname": "hs*", "macaddress": "98DAC4*"},
|
||||
{"domain": "tplink", "hostname": "hs*", "macaddress": "B09575*"},
|
||||
{"domain": "tplink", "hostname": "hs*", "macaddress": "C006C3*"},
|
||||
{"domain": "tplink", "hostname": "lb*", "macaddress": "1C3BF3*"},
|
||||
{"domain": "tplink", "hostname": "lb*", "macaddress": "50C7BF*"},
|
||||
{"domain": "tplink", "hostname": "lb*", "macaddress": "68FF7B*"},
|
||||
{"domain": "tplink", "hostname": "lb*", "macaddress": "98DAC4*"},
|
||||
{"domain": "tplink", "hostname": "lb*", "macaddress": "B09575*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "60A4B7*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "005F67*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "1027F5*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "B0A7B9*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "403F8C*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "C0C9E3*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "909A4A*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "E848B8*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "003192*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "1C3BF3*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "50C7BF*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "68FF7B*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "98DAC4*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "B09575*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "C006C3*"},
|
||||
{"domain": "tplink", "hostname": "k[lp]*", "macaddress": "6C5AB0*"},
|
||||
{"domain": "tuya", "macaddress": "105A17*"},
|
||||
{"domain": "tuya", "macaddress": "10D561*"},
|
||||
{"domain": "tuya", "macaddress": "1869D8*"},
|
||||
{"domain": "tuya", "macaddress": "381F8D*"},
|
||||
{"domain": "tuya", "macaddress": "508A06*"},
|
||||
{"domain": "tuya", "macaddress": "68572D*"},
|
||||
{"domain": "tuya", "macaddress": "708976*"},
|
||||
{"domain": "tuya", "macaddress": "7CF666*"},
|
||||
{"domain": "tuya", "macaddress": "84E342*"},
|
||||
{"domain": "tuya", "macaddress": "D4A651*"},
|
||||
{"domain": "tuya", "macaddress": "D81F12*"},
|
||||
{"domain": "twinkly", "hostname": "twinkly_*"},
|
||||
{"domain": "unifiprotect", "macaddress": "B4FBE4*"},
|
||||
{"domain": "unifiprotect", "macaddress": "802AA8*"},
|
||||
{"domain": "unifiprotect", "macaddress": "F09FC2*"},
|
||||
{"domain": "unifiprotect", "macaddress": "68D79A*"},
|
||||
{"domain": "unifiprotect", "macaddress": "18E829*"},
|
||||
{"domain": "unifiprotect", "macaddress": "245A4C*"},
|
||||
{"domain": "unifiprotect", "macaddress": "784558*"},
|
||||
{"domain": "unifiprotect", "macaddress": "E063DA*"},
|
||||
{"domain": "unifiprotect", "macaddress": "265A4C*"},
|
||||
{"domain": "unifiprotect", "macaddress": "74ACB9*"},
|
||||
{"domain": "verisure", "macaddress": "0023C1*"},
|
||||
{"domain": "vicare", "macaddress": "B87424*"},
|
||||
{"domain": "wiz", "registered_devices": True},
|
||||
{"domain": "wiz", "macaddress": "A8BB50*"},
|
||||
{"domain": "wiz", "macaddress": "D8A011*"},
|
||||
{"domain": "wiz", "macaddress": "444F8E*"},
|
||||
{"domain": "wiz", "macaddress": "6C2990*"},
|
||||
{"domain": "wiz", "hostname": "wiz_*"},
|
||||
{"domain": "yeelight", "hostname": "yeelink-*"},
|
||||
]
|
||||
|
|
|
@ -3,10 +3,8 @@
|
|||
To update, run python3 -m script.hassfest
|
||||
"""
|
||||
|
||||
# fmt: off
|
||||
|
||||
MQTT = {
|
||||
"tasmota": [
|
||||
"tasmota/discovery/#"
|
||||
]
|
||||
"tasmota/discovery/#",
|
||||
],
|
||||
}
|
||||
|
|
|
@ -3,324 +3,322 @@
|
|||
To update, run python3 -m script.hassfest
|
||||
"""
|
||||
|
||||
# fmt: off
|
||||
|
||||
SSDP = {
|
||||
"arcam_fmj": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
"manufacturer": "ARCAM"
|
||||
}
|
||||
"manufacturer": "ARCAM",
|
||||
},
|
||||
],
|
||||
"axis": [
|
||||
{
|
||||
"manufacturer": "AXIS"
|
||||
}
|
||||
"manufacturer": "AXIS",
|
||||
},
|
||||
],
|
||||
"control4": [
|
||||
{
|
||||
"st": "c4:director"
|
||||
}
|
||||
"st": "c4:director",
|
||||
},
|
||||
],
|
||||
"deconz": [
|
||||
{
|
||||
"manufacturer": "Royal Philips Electronics",
|
||||
"manufacturerURL": "http://www.dresden-elektronik.de"
|
||||
}
|
||||
"manufacturerURL": "http://www.dresden-elektronik.de",
|
||||
},
|
||||
],
|
||||
"denonavr": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
"manufacturer": "Denon"
|
||||
"manufacturer": "Denon",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
"manufacturer": "DENON"
|
||||
"manufacturer": "DENON",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
"manufacturer": "DENON PROFESSIONAL"
|
||||
"manufacturer": "DENON PROFESSIONAL",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
"manufacturer": "Marantz"
|
||||
"manufacturer": "Marantz",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
|
||||
"manufacturer": "Denon"
|
||||
"manufacturer": "Denon",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
|
||||
"manufacturer": "DENON"
|
||||
"manufacturer": "DENON",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
|
||||
"manufacturer": "DENON PROFESSIONAL"
|
||||
"manufacturer": "DENON PROFESSIONAL",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
|
||||
"manufacturer": "Marantz"
|
||||
"manufacturer": "Marantz",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-denon-com:device:AiosDevice:1",
|
||||
"manufacturer": "Denon"
|
||||
"manufacturer": "Denon",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-denon-com:device:AiosDevice:1",
|
||||
"manufacturer": "DENON"
|
||||
"manufacturer": "DENON",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-denon-com:device:AiosDevice:1",
|
||||
"manufacturer": "DENON PROFESSIONAL"
|
||||
"manufacturer": "DENON PROFESSIONAL",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-denon-com:device:AiosDevice:1",
|
||||
"manufacturer": "Marantz"
|
||||
}
|
||||
"manufacturer": "Marantz",
|
||||
},
|
||||
],
|
||||
"directv": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
|
||||
"manufacturer": "DIRECTV"
|
||||
}
|
||||
"manufacturer": "DIRECTV",
|
||||
},
|
||||
],
|
||||
"dlna_dmr": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
"st": "urn:schemas-upnp-org:device:MediaRenderer:1"
|
||||
"st": "urn:schemas-upnp-org:device:MediaRenderer:1",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:2",
|
||||
"st": "urn:schemas-upnp-org:device:MediaRenderer:2"
|
||||
"st": "urn:schemas-upnp-org:device:MediaRenderer:2",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
||||
"st": "urn:schemas-upnp-org:device:MediaRenderer:3"
|
||||
}
|
||||
"st": "urn:schemas-upnp-org:device:MediaRenderer:3",
|
||||
},
|
||||
],
|
||||
"dlna_dms": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:1",
|
||||
"st": "urn:schemas-upnp-org:device:MediaServer:1"
|
||||
"st": "urn:schemas-upnp-org:device:MediaServer:1",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:2",
|
||||
"st": "urn:schemas-upnp-org:device:MediaServer:2"
|
||||
"st": "urn:schemas-upnp-org:device:MediaServer:2",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:3",
|
||||
"st": "urn:schemas-upnp-org:device:MediaServer:3"
|
||||
"st": "urn:schemas-upnp-org:device:MediaServer:3",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:MediaServer:4",
|
||||
"st": "urn:schemas-upnp-org:device:MediaServer:4"
|
||||
}
|
||||
"st": "urn:schemas-upnp-org:device:MediaServer:4",
|
||||
},
|
||||
],
|
||||
"fritz": [
|
||||
{
|
||||
"st": "urn:schemas-upnp-org:device:fritzbox:1"
|
||||
}
|
||||
"st": "urn:schemas-upnp-org:device:fritzbox:1",
|
||||
},
|
||||
],
|
||||
"fritzbox": [
|
||||
{
|
||||
"st": "urn:schemas-upnp-org:device:fritzbox:1"
|
||||
}
|
||||
"st": "urn:schemas-upnp-org:device:fritzbox:1",
|
||||
},
|
||||
],
|
||||
"harmony": [
|
||||
{
|
||||
"deviceType": "urn:myharmony-com:device:harmony:1",
|
||||
"manufacturer": "Logitech"
|
||||
}
|
||||
"manufacturer": "Logitech",
|
||||
},
|
||||
],
|
||||
"heos": [
|
||||
{
|
||||
"st": "urn:schemas-denon-com:device:ACT-Denon:1"
|
||||
}
|
||||
"st": "urn:schemas-denon-com:device:ACT-Denon:1",
|
||||
},
|
||||
],
|
||||
"huawei_lte": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
|
||||
"manufacturer": "Huawei"
|
||||
}
|
||||
"manufacturer": "Huawei",
|
||||
},
|
||||
],
|
||||
"hue": [
|
||||
{
|
||||
"manufacturer": "Royal Philips Electronics",
|
||||
"modelName": "Philips hue bridge 2012"
|
||||
"modelName": "Philips hue bridge 2012",
|
||||
},
|
||||
{
|
||||
"manufacturer": "Royal Philips Electronics",
|
||||
"modelName": "Philips hue bridge 2015"
|
||||
"modelName": "Philips hue bridge 2015",
|
||||
},
|
||||
{
|
||||
"manufacturer": "Signify",
|
||||
"modelName": "Philips hue bridge 2015"
|
||||
}
|
||||
"modelName": "Philips hue bridge 2015",
|
||||
},
|
||||
],
|
||||
"hyperion": [
|
||||
{
|
||||
"manufacturer": "Hyperion Open Source Ambient Lighting",
|
||||
"st": "urn:hyperion-project.org:device:basic:1"
|
||||
}
|
||||
"st": "urn:hyperion-project.org:device:basic:1",
|
||||
},
|
||||
],
|
||||
"isy994": [
|
||||
{
|
||||
"deviceType": "urn:udi-com:device:X_Insteon_Lighting_Device:1",
|
||||
"manufacturer": "Universal Devices Inc."
|
||||
}
|
||||
"manufacturer": "Universal Devices Inc.",
|
||||
},
|
||||
],
|
||||
"kaleidescape": [
|
||||
{
|
||||
"deviceType": "schemas-upnp-org:device:Basic:1",
|
||||
"manufacturer": "Kaleidescape, Inc."
|
||||
}
|
||||
"manufacturer": "Kaleidescape, Inc.",
|
||||
},
|
||||
],
|
||||
"keenetic_ndms2": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
|
||||
"manufacturer": "Keenetic Ltd."
|
||||
"manufacturer": "Keenetic Ltd.",
|
||||
},
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
|
||||
"manufacturer": "ZyXEL Communications Corp."
|
||||
}
|
||||
"manufacturer": "ZyXEL Communications Corp.",
|
||||
},
|
||||
],
|
||||
"konnected": [
|
||||
{
|
||||
"manufacturer": "konnected.io"
|
||||
}
|
||||
"manufacturer": "konnected.io",
|
||||
},
|
||||
],
|
||||
"lametric": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:LaMetric:1"
|
||||
}
|
||||
"deviceType": "urn:schemas-upnp-org:device:LaMetric:1",
|
||||
},
|
||||
],
|
||||
"nanoleaf": [
|
||||
{
|
||||
"st": "Nanoleaf_aurora:light"
|
||||
"st": "Nanoleaf_aurora:light",
|
||||
},
|
||||
{
|
||||
"st": "nanoleaf:nl29"
|
||||
"st": "nanoleaf:nl29",
|
||||
},
|
||||
{
|
||||
"st": "nanoleaf:nl42"
|
||||
"st": "nanoleaf:nl42",
|
||||
},
|
||||
{
|
||||
"st": "nanoleaf:nl52"
|
||||
}
|
||||
"st": "nanoleaf:nl52",
|
||||
},
|
||||
],
|
||||
"netgear": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
|
||||
"manufacturer": "NETGEAR, Inc."
|
||||
}
|
||||
"manufacturer": "NETGEAR, Inc.",
|
||||
},
|
||||
],
|
||||
"octoprint": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:Basic:1",
|
||||
"manufacturer": "The OctoPrint Project"
|
||||
}
|
||||
"manufacturer": "The OctoPrint Project",
|
||||
},
|
||||
],
|
||||
"roku": [
|
||||
{
|
||||
"deviceType": "urn:roku-com:device:player:1-0",
|
||||
"manufacturer": "Roku",
|
||||
"st": "roku:ecp"
|
||||
}
|
||||
"st": "roku:ecp",
|
||||
},
|
||||
],
|
||||
"samsungtv": [
|
||||
{
|
||||
"st": "urn:samsung.com:device:RemoteControlReceiver:1"
|
||||
"st": "urn:samsung.com:device:RemoteControlReceiver:1",
|
||||
},
|
||||
{
|
||||
"st": "urn:samsung.com:service:MainTVAgent2:1"
|
||||
"st": "urn:samsung.com:service:MainTVAgent2:1",
|
||||
},
|
||||
{
|
||||
"manufacturer": "Samsung",
|
||||
"st": "urn:schemas-upnp-org:service:RenderingControl:1"
|
||||
"st": "urn:schemas-upnp-org:service:RenderingControl:1",
|
||||
},
|
||||
{
|
||||
"manufacturer": "Samsung Electronics",
|
||||
"st": "urn:schemas-upnp-org:service:RenderingControl:1"
|
||||
}
|
||||
"st": "urn:schemas-upnp-org:service:RenderingControl:1",
|
||||
},
|
||||
],
|
||||
"songpal": [
|
||||
{
|
||||
"manufacturer": "Sony Corporation",
|
||||
"st": "urn:schemas-sony-com:service:ScalarWebAPI:1"
|
||||
}
|
||||
"st": "urn:schemas-sony-com:service:ScalarWebAPI:1",
|
||||
},
|
||||
],
|
||||
"sonos": [
|
||||
{
|
||||
"st": "urn:schemas-upnp-org:device:ZonePlayer:1"
|
||||
}
|
||||
"st": "urn:schemas-upnp-org:device:ZonePlayer:1",
|
||||
},
|
||||
],
|
||||
"syncthru": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:Printer:1",
|
||||
"manufacturer": "Samsung Electronics"
|
||||
}
|
||||
"manufacturer": "Samsung Electronics",
|
||||
},
|
||||
],
|
||||
"synology_dsm": [
|
||||
{
|
||||
"deviceType": "urn:schemas-upnp-org:device:Basic:1",
|
||||
"manufacturer": "Synology"
|
||||
}
|
||||
"manufacturer": "Synology",
|
||||
},
|
||||
],
|
||||
"unifi": [
|
||||
{
|
||||
"manufacturer": "Ubiquiti Networks",
|
||||
"modelDescription": "UniFi Dream Machine"
|
||||
"modelDescription": "UniFi Dream Machine",
|
||||
},
|
||||
{
|
||||
"manufacturer": "Ubiquiti Networks",
|
||||
"modelDescription": "UniFi Dream Machine Pro"
|
||||
"modelDescription": "UniFi Dream Machine Pro",
|
||||
},
|
||||
{
|
||||
"manufacturer": "Ubiquiti Networks",
|
||||
"modelDescription": "UniFi Dream Machine SE"
|
||||
}
|
||||
"modelDescription": "UniFi Dream Machine SE",
|
||||
},
|
||||
],
|
||||
"unifiprotect": [
|
||||
{
|
||||
"manufacturer": "Ubiquiti Networks",
|
||||
"modelDescription": "UniFi Dream Machine"
|
||||
"modelDescription": "UniFi Dream Machine",
|
||||
},
|
||||
{
|
||||
"manufacturer": "Ubiquiti Networks",
|
||||
"modelDescription": "UniFi Dream Machine Pro"
|
||||
"modelDescription": "UniFi Dream Machine Pro",
|
||||
},
|
||||
{
|
||||
"manufacturer": "Ubiquiti Networks",
|
||||
"modelDescription": "UniFi Dream Machine SE"
|
||||
}
|
||||
"modelDescription": "UniFi Dream Machine SE",
|
||||
},
|
||||
],
|
||||
"upnp": [
|
||||
{
|
||||
"st": "urn:schemas-upnp-org:device:InternetGatewayDevice:1"
|
||||
"st": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
|
||||
},
|
||||
{
|
||||
"st": "urn:schemas-upnp-org:device:InternetGatewayDevice:2"
|
||||
}
|
||||
"st": "urn:schemas-upnp-org:device:InternetGatewayDevice:2",
|
||||
},
|
||||
],
|
||||
"webostv": [
|
||||
{
|
||||
"st": "urn:lge-com:service:webos-second-screen:1"
|
||||
}
|
||||
"st": "urn:lge-com:service:webos-second-screen:1",
|
||||
},
|
||||
],
|
||||
"wemo": [
|
||||
{
|
||||
"manufacturer": "Belkin International Inc."
|
||||
}
|
||||
"manufacturer": "Belkin International Inc.",
|
||||
},
|
||||
],
|
||||
"wilight": [
|
||||
{
|
||||
"manufacturer": "All Automacao Ltda"
|
||||
}
|
||||
"manufacturer": "All Automacao Ltda",
|
||||
},
|
||||
],
|
||||
"yamaha_musiccast": [
|
||||
{
|
||||
"manufacturer": "Yamaha Corporation"
|
||||
}
|
||||
]
|
||||
"manufacturer": "Yamaha Corporation",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
To update, run python3 -m script.hassfest
|
||||
"""
|
||||
|
||||
# fmt: off
|
||||
|
||||
HAS_SUPPORTED_BRANDS = (
|
||||
HAS_SUPPORTED_BRANDS = [
|
||||
"denonavr",
|
||||
"hunterdouglas_powerview",
|
||||
"inkbird",
|
||||
|
@ -15,5 +13,5 @@ HAS_SUPPORTED_BRANDS = (
|
|||
"thermobeacon",
|
||||
"wemo",
|
||||
"yalexs_ble",
|
||||
"zwave_js"
|
||||
)
|
||||
"zwave_js",
|
||||
]
|
||||
|
|
|
@ -3,113 +3,111 @@
|
|||
To update, run python3 -m script.hassfest
|
||||
"""
|
||||
|
||||
# fmt: off
|
||||
|
||||
USB = [
|
||||
{
|
||||
"domain": "insteon",
|
||||
"vid": "10BF"
|
||||
"vid": "10BF",
|
||||
},
|
||||
{
|
||||
"domain": "modem_callerid",
|
||||
"vid": "0572",
|
||||
"pid": "1340"
|
||||
"pid": "1340",
|
||||
},
|
||||
{
|
||||
"domain": "velbus",
|
||||
"vid": "10CF",
|
||||
"pid": "0B1B"
|
||||
"pid": "0B1B",
|
||||
},
|
||||
{
|
||||
"domain": "velbus",
|
||||
"vid": "10CF",
|
||||
"pid": "0516"
|
||||
"pid": "0516",
|
||||
},
|
||||
{
|
||||
"domain": "velbus",
|
||||
"vid": "10CF",
|
||||
"pid": "0517"
|
||||
"pid": "0517",
|
||||
},
|
||||
{
|
||||
"domain": "velbus",
|
||||
"vid": "10CF",
|
||||
"pid": "0518"
|
||||
"pid": "0518",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "10C4",
|
||||
"pid": "EA60",
|
||||
"description": "*2652*"
|
||||
"description": "*2652*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "1A86",
|
||||
"pid": "55D4",
|
||||
"description": "*sonoff*plus*"
|
||||
"description": "*sonoff*plus*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "10C4",
|
||||
"pid": "EA60",
|
||||
"description": "*sonoff*plus*"
|
||||
"description": "*sonoff*plus*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "10C4",
|
||||
"pid": "EA60",
|
||||
"description": "*tubeszb*"
|
||||
"description": "*tubeszb*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "1A86",
|
||||
"pid": "7523",
|
||||
"description": "*tubeszb*"
|
||||
"description": "*tubeszb*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "1A86",
|
||||
"pid": "7523",
|
||||
"description": "*zigstar*"
|
||||
"description": "*zigstar*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "1CF1",
|
||||
"pid": "0030",
|
||||
"description": "*conbee*"
|
||||
"description": "*conbee*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "10C4",
|
||||
"pid": "8A2A",
|
||||
"description": "*zigbee*"
|
||||
"description": "*zigbee*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "0403",
|
||||
"pid": "6015",
|
||||
"description": "*zigate*"
|
||||
"description": "*zigate*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "10C4",
|
||||
"pid": "EA60",
|
||||
"description": "*zigate*"
|
||||
"description": "*zigate*",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"vid": "10C4",
|
||||
"pid": "8B34",
|
||||
"description": "*bv 2010/10*"
|
||||
"description": "*bv 2010/10*",
|
||||
},
|
||||
{
|
||||
"domain": "zwave_js",
|
||||
"vid": "0658",
|
||||
"pid": "0200"
|
||||
"pid": "0200",
|
||||
},
|
||||
{
|
||||
"domain": "zwave_js",
|
||||
"vid": "10C4",
|
||||
"pid": "8A2A",
|
||||
"description": "*z-wave*"
|
||||
}
|
||||
"description": "*z-wave*",
|
||||
},
|
||||
]
|
||||
|
|
|
@ -3,425 +3,423 @@
|
|||
To update, run python3 -m script.hassfest
|
||||
"""
|
||||
|
||||
# fmt: off
|
||||
|
||||
ZEROCONF = {
|
||||
"_Volumio._tcp.local.": [
|
||||
{
|
||||
"domain": "volumio"
|
||||
}
|
||||
"domain": "volumio",
|
||||
},
|
||||
],
|
||||
"_airplay._tcp.local.": [
|
||||
{
|
||||
"domain": "apple_tv",
|
||||
"properties": {
|
||||
"model": "appletv*"
|
||||
}
|
||||
"model": "appletv*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "apple_tv",
|
||||
"properties": {
|
||||
"model": "audioaccessory*"
|
||||
}
|
||||
"model": "audioaccessory*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "apple_tv",
|
||||
"properties": {
|
||||
"am": "airport*"
|
||||
}
|
||||
"am": "airport*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "samsungtv",
|
||||
"properties": {
|
||||
"manufacturer": "samsung*"
|
||||
}
|
||||
}
|
||||
"manufacturer": "samsung*",
|
||||
},
|
||||
},
|
||||
],
|
||||
"_airport._tcp.local.": [
|
||||
{
|
||||
"domain": "apple_tv"
|
||||
}
|
||||
"domain": "apple_tv",
|
||||
},
|
||||
],
|
||||
"_api._tcp.local.": [
|
||||
{
|
||||
"domain": "baf",
|
||||
"properties": {
|
||||
"model": "haiku*"
|
||||
}
|
||||
"model": "haiku*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "baf",
|
||||
"properties": {
|
||||
"model": "i6*"
|
||||
}
|
||||
}
|
||||
"model": "i6*",
|
||||
},
|
||||
},
|
||||
],
|
||||
"_api._udp.local.": [
|
||||
{
|
||||
"domain": "guardian"
|
||||
}
|
||||
"domain": "guardian",
|
||||
},
|
||||
],
|
||||
"_appletv-v2._tcp.local.": [
|
||||
{
|
||||
"domain": "apple_tv"
|
||||
}
|
||||
"domain": "apple_tv",
|
||||
},
|
||||
],
|
||||
"_axis-video._tcp.local.": [
|
||||
{
|
||||
"domain": "axis",
|
||||
"properties": {
|
||||
"macaddress": "00408c*"
|
||||
}
|
||||
"macaddress": "00408c*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "axis",
|
||||
"properties": {
|
||||
"macaddress": "accc8e*"
|
||||
}
|
||||
"macaddress": "accc8e*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "axis",
|
||||
"properties": {
|
||||
"macaddress": "b8a44f*"
|
||||
}
|
||||
"macaddress": "b8a44f*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "doorbird",
|
||||
"properties": {
|
||||
"macaddress": "1ccae3*"
|
||||
}
|
||||
}
|
||||
"macaddress": "1ccae3*",
|
||||
},
|
||||
},
|
||||
],
|
||||
"_bond._tcp.local.": [
|
||||
{
|
||||
"domain": "bond"
|
||||
}
|
||||
"domain": "bond",
|
||||
},
|
||||
],
|
||||
"_companion-link._tcp.local.": [
|
||||
{
|
||||
"domain": "apple_tv"
|
||||
}
|
||||
"domain": "apple_tv",
|
||||
},
|
||||
],
|
||||
"_daap._tcp.local.": [
|
||||
{
|
||||
"domain": "forked_daapd"
|
||||
}
|
||||
"domain": "forked_daapd",
|
||||
},
|
||||
],
|
||||
"_dkapi._tcp.local.": [
|
||||
{
|
||||
"domain": "daikin"
|
||||
}
|
||||
"domain": "daikin",
|
||||
},
|
||||
],
|
||||
"_dvl-deviceapi._tcp.local.": [
|
||||
{
|
||||
"domain": "devolo_home_control"
|
||||
"domain": "devolo_home_control",
|
||||
},
|
||||
{
|
||||
"domain": "devolo_home_network",
|
||||
"properties": {
|
||||
"MT": "*"
|
||||
}
|
||||
}
|
||||
"MT": "*",
|
||||
},
|
||||
},
|
||||
],
|
||||
"_easylink._tcp.local.": [
|
||||
{
|
||||
"domain": "modern_forms",
|
||||
"name": "wac*"
|
||||
}
|
||||
"name": "wac*",
|
||||
},
|
||||
],
|
||||
"_elg._tcp.local.": [
|
||||
{
|
||||
"domain": "elgato"
|
||||
}
|
||||
"domain": "elgato",
|
||||
},
|
||||
],
|
||||
"_enphase-envoy._tcp.local.": [
|
||||
{
|
||||
"domain": "enphase_envoy"
|
||||
}
|
||||
"domain": "enphase_envoy",
|
||||
},
|
||||
],
|
||||
"_esphomelib._tcp.local.": [
|
||||
{
|
||||
"domain": "esphome"
|
||||
"domain": "esphome",
|
||||
},
|
||||
{
|
||||
"domain": "zha",
|
||||
"name": "tube*"
|
||||
}
|
||||
"name": "tube*",
|
||||
},
|
||||
],
|
||||
"_fbx-api._tcp.local.": [
|
||||
{
|
||||
"domain": "freebox"
|
||||
}
|
||||
"domain": "freebox",
|
||||
},
|
||||
],
|
||||
"_googlecast._tcp.local.": [
|
||||
{
|
||||
"domain": "cast"
|
||||
}
|
||||
"domain": "cast",
|
||||
},
|
||||
],
|
||||
"_hap._tcp.local.": [
|
||||
{
|
||||
"domain": "homekit_controller"
|
||||
"domain": "homekit_controller",
|
||||
},
|
||||
{
|
||||
"domain": "zwave_me",
|
||||
"name": "*z.wave-me*"
|
||||
}
|
||||
"name": "*z.wave-me*",
|
||||
},
|
||||
],
|
||||
"_hap._udp.local.": [
|
||||
{
|
||||
"domain": "homekit_controller"
|
||||
}
|
||||
"domain": "homekit_controller",
|
||||
},
|
||||
],
|
||||
"_homekit._tcp.local.": [
|
||||
{
|
||||
"domain": "homekit"
|
||||
}
|
||||
"domain": "homekit",
|
||||
},
|
||||
],
|
||||
"_hscp._tcp.local.": [
|
||||
{
|
||||
"domain": "apple_tv"
|
||||
}
|
||||
"domain": "apple_tv",
|
||||
},
|
||||
],
|
||||
"_http._tcp.local.": [
|
||||
{
|
||||
"domain": "awair",
|
||||
"name": "awair*"
|
||||
"name": "awair*",
|
||||
},
|
||||
{
|
||||
"domain": "bosch_shc",
|
||||
"name": "bosch shc*"
|
||||
"name": "bosch shc*",
|
||||
},
|
||||
{
|
||||
"domain": "nam",
|
||||
"name": "nam-*"
|
||||
"name": "nam-*",
|
||||
},
|
||||
{
|
||||
"domain": "nam",
|
||||
"properties": {
|
||||
"manufacturer": "nettigo"
|
||||
}
|
||||
"manufacturer": "nettigo",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "pure_energie",
|
||||
"name": "smartbridge*"
|
||||
"name": "smartbridge*",
|
||||
},
|
||||
{
|
||||
"domain": "rachio",
|
||||
"name": "rachio*"
|
||||
"name": "rachio*",
|
||||
},
|
||||
{
|
||||
"domain": "rainmachine",
|
||||
"name": "rainmachine*"
|
||||
"name": "rainmachine*",
|
||||
},
|
||||
{
|
||||
"domain": "shelly",
|
||||
"name": "shelly*"
|
||||
}
|
||||
"name": "shelly*",
|
||||
},
|
||||
],
|
||||
"_hue._tcp.local.": [
|
||||
{
|
||||
"domain": "hue"
|
||||
}
|
||||
"domain": "hue",
|
||||
},
|
||||
],
|
||||
"_hwenergy._tcp.local.": [
|
||||
{
|
||||
"domain": "homewizard"
|
||||
}
|
||||
"domain": "homewizard",
|
||||
},
|
||||
],
|
||||
"_ipp._tcp.local.": [
|
||||
{
|
||||
"domain": "ipp"
|
||||
}
|
||||
"domain": "ipp",
|
||||
},
|
||||
],
|
||||
"_ipps._tcp.local.": [
|
||||
{
|
||||
"domain": "ipp"
|
||||
}
|
||||
"domain": "ipp",
|
||||
},
|
||||
],
|
||||
"_kizbox._tcp.local.": [
|
||||
{
|
||||
"domain": "overkiz",
|
||||
"name": "gateway*"
|
||||
}
|
||||
"name": "gateway*",
|
||||
},
|
||||
],
|
||||
"_leap._tcp.local.": [
|
||||
{
|
||||
"domain": "lutron_caseta"
|
||||
}
|
||||
"domain": "lutron_caseta",
|
||||
},
|
||||
],
|
||||
"_lookin._tcp.local.": [
|
||||
{
|
||||
"domain": "lookin"
|
||||
}
|
||||
"domain": "lookin",
|
||||
},
|
||||
],
|
||||
"_mediaremotetv._tcp.local.": [
|
||||
{
|
||||
"domain": "apple_tv"
|
||||
}
|
||||
"domain": "apple_tv",
|
||||
},
|
||||
],
|
||||
"_miio._udp.local.": [
|
||||
{
|
||||
"domain": "xiaomi_aqara"
|
||||
"domain": "xiaomi_aqara",
|
||||
},
|
||||
{
|
||||
"domain": "xiaomi_miio"
|
||||
"domain": "xiaomi_miio",
|
||||
},
|
||||
{
|
||||
"domain": "yeelight",
|
||||
"name": "yeelink-*"
|
||||
}
|
||||
"name": "yeelink-*",
|
||||
},
|
||||
],
|
||||
"_nanoleafapi._tcp.local.": [
|
||||
{
|
||||
"domain": "nanoleaf"
|
||||
}
|
||||
"domain": "nanoleaf",
|
||||
},
|
||||
],
|
||||
"_nanoleafms._tcp.local.": [
|
||||
{
|
||||
"domain": "nanoleaf"
|
||||
}
|
||||
"domain": "nanoleaf",
|
||||
},
|
||||
],
|
||||
"_nut._tcp.local.": [
|
||||
{
|
||||
"domain": "nut"
|
||||
}
|
||||
"domain": "nut",
|
||||
},
|
||||
],
|
||||
"_octoprint._tcp.local.": [
|
||||
{
|
||||
"domain": "octoprint"
|
||||
}
|
||||
"domain": "octoprint",
|
||||
},
|
||||
],
|
||||
"_plexmediasvr._tcp.local.": [
|
||||
{
|
||||
"domain": "plex"
|
||||
}
|
||||
"domain": "plex",
|
||||
},
|
||||
],
|
||||
"_plugwise._tcp.local.": [
|
||||
{
|
||||
"domain": "plugwise"
|
||||
}
|
||||
"domain": "plugwise",
|
||||
},
|
||||
],
|
||||
"_powerview._tcp.local.": [
|
||||
{
|
||||
"domain": "hunterdouglas_powerview"
|
||||
}
|
||||
"domain": "hunterdouglas_powerview",
|
||||
},
|
||||
],
|
||||
"_printer._tcp.local.": [
|
||||
{
|
||||
"domain": "brother",
|
||||
"name": "brother*"
|
||||
}
|
||||
"name": "brother*",
|
||||
},
|
||||
],
|
||||
"_raop._tcp.local.": [
|
||||
{
|
||||
"domain": "apple_tv",
|
||||
"properties": {
|
||||
"am": "appletv*"
|
||||
}
|
||||
"am": "appletv*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "apple_tv",
|
||||
"properties": {
|
||||
"am": "audioaccessory*"
|
||||
}
|
||||
"am": "audioaccessory*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "apple_tv",
|
||||
"properties": {
|
||||
"am": "airport*"
|
||||
}
|
||||
}
|
||||
"am": "airport*",
|
||||
},
|
||||
},
|
||||
],
|
||||
"_sideplay._tcp.local.": [
|
||||
{
|
||||
"domain": "ecobee",
|
||||
"properties": {
|
||||
"mdl": "eb-*"
|
||||
}
|
||||
"mdl": "eb-*",
|
||||
},
|
||||
},
|
||||
{
|
||||
"domain": "ecobee",
|
||||
"properties": {
|
||||
"mdl": "ecobee*"
|
||||
}
|
||||
}
|
||||
"mdl": "ecobee*",
|
||||
},
|
||||
},
|
||||
],
|
||||
"_sleep-proxy._udp.local.": [
|
||||
{
|
||||
"domain": "apple_tv"
|
||||
}
|
||||
"domain": "apple_tv",
|
||||
},
|
||||
],
|
||||
"_sonos._tcp.local.": [
|
||||
{
|
||||
"domain": "sonos"
|
||||
}
|
||||
"domain": "sonos",
|
||||
},
|
||||
],
|
||||
"_soundtouch._tcp.local.": [
|
||||
{
|
||||
"domain": "soundtouch"
|
||||
}
|
||||
"domain": "soundtouch",
|
||||
},
|
||||
],
|
||||
"_spotify-connect._tcp.local.": [
|
||||
{
|
||||
"domain": "spotify"
|
||||
}
|
||||
"domain": "spotify",
|
||||
},
|
||||
],
|
||||
"_ssh._tcp.local.": [
|
||||
{
|
||||
"domain": "smappee",
|
||||
"name": "smappee1*"
|
||||
"name": "smappee1*",
|
||||
},
|
||||
{
|
||||
"domain": "smappee",
|
||||
"name": "smappee2*"
|
||||
"name": "smappee2*",
|
||||
},
|
||||
{
|
||||
"domain": "smappee",
|
||||
"name": "smappee50*"
|
||||
}
|
||||
"name": "smappee50*",
|
||||
},
|
||||
],
|
||||
"_system-bridge._tcp.local.": [
|
||||
{
|
||||
"domain": "system_bridge"
|
||||
}
|
||||
"domain": "system_bridge",
|
||||
},
|
||||
],
|
||||
"_touch-able._tcp.local.": [
|
||||
{
|
||||
"domain": "apple_tv"
|
||||
}
|
||||
"domain": "apple_tv",
|
||||
},
|
||||
],
|
||||
"_viziocast._tcp.local.": [
|
||||
{
|
||||
"domain": "vizio"
|
||||
}
|
||||
"domain": "vizio",
|
||||
},
|
||||
],
|
||||
"_wled._tcp.local.": [
|
||||
{
|
||||
"domain": "wled"
|
||||
}
|
||||
"domain": "wled",
|
||||
},
|
||||
],
|
||||
"_xbmc-jsonrpc-h._tcp.local.": [
|
||||
{
|
||||
"domain": "kodi"
|
||||
}
|
||||
"domain": "kodi",
|
||||
},
|
||||
],
|
||||
"_zigate-zigbee-gateway._tcp.local.": [
|
||||
{
|
||||
"domain": "zha",
|
||||
"name": "*zigate*"
|
||||
}
|
||||
"name": "*zigate*",
|
||||
},
|
||||
],
|
||||
"_zigstar_gw._tcp.local.": [
|
||||
{
|
||||
"domain": "zha",
|
||||
"name": "*zigstar*"
|
||||
}
|
||||
"name": "*zigstar*",
|
||||
},
|
||||
],
|
||||
"_zwave-js-server._tcp.local.": [
|
||||
{
|
||||
"domain": "zwave_js"
|
||||
}
|
||||
]
|
||||
"domain": "zwave_js",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
HOMEKIT = {
|
||||
|
@ -483,5 +481,5 @@ HOMEKIT = {
|
|||
"ecobee*": "ecobee",
|
||||
"iSmartGate": "gogogate2",
|
||||
"iZone": "izone",
|
||||
"tado": "tado"
|
||||
"tado": "tado",
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
"""Generate application_credentials data."""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import black
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import to_string
|
||||
|
||||
BASE = """
|
||||
\"\"\"Automatically generated by hassfest.
|
||||
|
@ -11,8 +12,6 @@ BASE = """
|
|||
To update, run python3 -m script.hassfest
|
||||
\"\"\"
|
||||
|
||||
# fmt: off
|
||||
|
||||
APPLICATION_CREDENTIALS = {}
|
||||
""".strip()
|
||||
|
||||
|
@ -30,7 +29,7 @@ def generate_and_validate(integrations: dict[str, Integration], config: Config)
|
|||
|
||||
match_list.append(domain)
|
||||
|
||||
return BASE.format(json.dumps(match_list, indent=4))
|
||||
return black.format_str(BASE.format(to_string(match_list)), mode=black.Mode())
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config) -> None:
|
||||
|
@ -45,7 +44,7 @@ def validate(integrations: dict[str, Integration], config: Config) -> None:
|
|||
if config.specific_integrations:
|
||||
return
|
||||
|
||||
if application_credentials_path.read_text(encoding="utf-8").strip() != content:
|
||||
if application_credentials_path.read_text(encoding="utf-8") != content:
|
||||
config.add_error(
|
||||
"application_credentials",
|
||||
"File application_credentials.py is not up to date. Run python3 -m script.hassfest",
|
||||
|
@ -59,5 +58,5 @@ def generate(integrations: dict[str, Integration], config: Config):
|
|||
config.root / "homeassistant/generated/application_credentials.py"
|
||||
)
|
||||
application_credentials_path.write_text(
|
||||
f"{config.cache['application_credentials']}\n", encoding="utf-8"
|
||||
f"{config.cache['application_credentials']}", encoding="utf-8"
|
||||
)
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
"""Generate bluetooth file."""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import black
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import to_string
|
||||
|
||||
BASE = """
|
||||
\"\"\"Automatically generated by hassfest.
|
||||
|
@ -12,8 +13,6 @@ To update, run python3 -m script.hassfest
|
|||
\"\"\"
|
||||
from __future__ import annotations
|
||||
|
||||
# fmt: off
|
||||
|
||||
BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = {}
|
||||
""".strip()
|
||||
|
||||
|
@ -36,11 +35,7 @@ def generate_and_validate(integrations: list[dict[str, str]]):
|
|||
for entry in match_types:
|
||||
match_list.append({"domain": domain, **entry})
|
||||
|
||||
return BASE.format(
|
||||
json.dumps(match_list, indent=4)
|
||||
.replace('": true', '": True')
|
||||
.replace('": false', '": False')
|
||||
)
|
||||
return black.format_str(BASE.format(to_string(match_list)), mode=black.Mode())
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config):
|
||||
|
@ -52,7 +47,7 @@ def validate(integrations: dict[str, Integration], config: Config):
|
|||
return
|
||||
|
||||
with open(str(bluetooth_path)) as fp:
|
||||
current = fp.read().strip()
|
||||
current = fp.read()
|
||||
if current != content:
|
||||
config.add_error(
|
||||
"bluetooth",
|
||||
|
@ -66,4 +61,4 @@ def generate(integrations: dict[str, Integration], config: Config):
|
|||
"""Generate bluetooth file."""
|
||||
bluetooth_path = config.root / "homeassistant/generated/bluetooth.py"
|
||||
with open(str(bluetooth_path), "w") as fp:
|
||||
fp.write(f"{config.cache['bluetooth']}\n")
|
||||
fp.write(f"{config.cache['bluetooth']}")
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
"""Generate config flow file."""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import black
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import to_string
|
||||
|
||||
BASE = """
|
||||
\"\"\"Automatically generated by hassfest.
|
||||
|
@ -11,8 +12,6 @@ BASE = """
|
|||
To update, run python3 -m script.hassfest
|
||||
\"\"\"
|
||||
|
||||
# fmt: off
|
||||
|
||||
FLOWS = {}
|
||||
""".strip()
|
||||
|
||||
|
@ -85,7 +84,7 @@ def generate_and_validate(integrations: dict[str, Integration], config: Config):
|
|||
|
||||
domains[integration.integration_type].append(domain)
|
||||
|
||||
return BASE.format(json.dumps(domains, indent=4))
|
||||
return black.format_str(BASE.format(to_string(domains)), mode=black.Mode())
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config):
|
||||
|
@ -97,7 +96,7 @@ def validate(integrations: dict[str, Integration], config: Config):
|
|||
return
|
||||
|
||||
with open(str(config_flow_path)) as fp:
|
||||
if fp.read().strip() != content:
|
||||
if fp.read() != content:
|
||||
config.add_error(
|
||||
"config_flow",
|
||||
"File config_flows.py is not up to date. "
|
||||
|
@ -111,4 +110,4 @@ def generate(integrations: dict[str, Integration], config: Config):
|
|||
"""Generate config flow file."""
|
||||
config_flow_path = config.root / "homeassistant/generated/config_flows.py"
|
||||
with open(str(config_flow_path), "w") as fp:
|
||||
fp.write(f"{config.cache['config_flow']}\n")
|
||||
fp.write(f"{config.cache['config_flow']}")
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
"""Generate dhcp file."""
|
||||
from __future__ import annotations
|
||||
|
||||
import pprint
|
||||
import re
|
||||
import black
|
||||
|
||||
from .model import Config, Integration
|
||||
|
||||
|
@ -13,8 +12,6 @@ To update, run python3 -m script.hassfest
|
|||
\"\"\"
|
||||
from __future__ import annotations
|
||||
|
||||
# fmt: off
|
||||
|
||||
DHCP: list[dict[str, str | bool]] = {}
|
||||
""".strip()
|
||||
|
||||
|
@ -37,14 +34,7 @@ def generate_and_validate(integrations: list[dict[str, str]]):
|
|||
for entry in match_types:
|
||||
match_list.append({"domain": domain, **entry})
|
||||
|
||||
# JSON will format `True` as `true`
|
||||
# re.sub for flake8 E128
|
||||
formatted = pprint.pformat(match_list)
|
||||
formatted_aligned_continuation = re.sub(r"^\[\{", "[\n {", formatted)
|
||||
formatted_align_indent = re.sub(
|
||||
r"(?m)^ ", " ", formatted_aligned_continuation, flags=re.MULTILINE, count=0
|
||||
)
|
||||
return BASE.format(formatted_align_indent)
|
||||
return black.format_str(BASE.format(str(match_list)), mode=black.Mode())
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config):
|
||||
|
@ -56,7 +46,7 @@ def validate(integrations: dict[str, Integration], config: Config):
|
|||
return
|
||||
|
||||
with open(str(dhcp_path)) as fp:
|
||||
current = fp.read().strip()
|
||||
current = fp.read()
|
||||
if current != content:
|
||||
config.add_error(
|
||||
"dhcp",
|
||||
|
@ -70,4 +60,4 @@ def generate(integrations: dict[str, Integration], config: Config):
|
|||
"""Generate dhcp file."""
|
||||
dhcp_path = config.root / "homeassistant/generated/dhcp.py"
|
||||
with open(str(dhcp_path), "w") as fp:
|
||||
fp.write(f"{config.cache['dhcp']}\n")
|
||||
fp.write(f"{config.cache['dhcp']}")
|
||||
|
|
|
@ -2,9 +2,11 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from collections import defaultdict
|
||||
import json
|
||||
|
||||
import black
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import to_string
|
||||
|
||||
BASE = """
|
||||
\"\"\"Automatically generated by hassfest.
|
||||
|
@ -12,8 +14,6 @@ BASE = """
|
|||
To update, run python3 -m script.hassfest
|
||||
\"\"\"
|
||||
|
||||
# fmt: off
|
||||
|
||||
MQTT = {}
|
||||
""".strip()
|
||||
|
||||
|
@ -37,7 +37,7 @@ def generate_and_validate(integrations: dict[str, Integration]):
|
|||
for topic in mqtt:
|
||||
data[domain].append(topic)
|
||||
|
||||
return BASE.format(json.dumps(data, indent=4))
|
||||
return black.format_str(BASE.format(to_string(data)), mode=black.Mode())
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config):
|
||||
|
@ -49,7 +49,7 @@ def validate(integrations: dict[str, Integration], config: Config):
|
|||
return
|
||||
|
||||
with open(str(mqtt_path)) as fp:
|
||||
if fp.read().strip() != content:
|
||||
if fp.read() != content:
|
||||
config.add_error(
|
||||
"mqtt",
|
||||
"File mqtt.py is not up to date. Run python3 -m script.hassfest",
|
||||
|
@ -62,4 +62,4 @@ def generate(integrations: dict[str, Integration], config: Config):
|
|||
"""Generate MQTT file."""
|
||||
mqtt_path = config.root / "homeassistant/generated/mqtt.py"
|
||||
with open(str(mqtt_path), "w") as fp:
|
||||
fp.write(f"{config.cache['mqtt']}\n")
|
||||
fp.write(f"{config.cache['mqtt']}")
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
"""Hassfest utils."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
def _dict_to_str(data: dict) -> str:
|
||||
"""Return a string representation of a dict."""
|
||||
items = [f"'{key}':{to_string(value)}" for key, value in data.items()]
|
||||
result = "{"
|
||||
for item in items:
|
||||
result += str(item)
|
||||
result += ","
|
||||
result += "}"
|
||||
return result
|
||||
|
||||
|
||||
def _list_to_str(data: dict) -> str:
|
||||
"""Return a string representation of a list."""
|
||||
items = [to_string(value) for value in data]
|
||||
result = "["
|
||||
for item in items:
|
||||
result += str(item)
|
||||
result += ","
|
||||
result += "]"
|
||||
return result
|
||||
|
||||
|
||||
def to_string(data: Any) -> str:
|
||||
"""Return a string representation of the input."""
|
||||
if isinstance(data, dict):
|
||||
return _dict_to_str(data)
|
||||
if isinstance(data, list):
|
||||
return _list_to_str(data)
|
||||
if isinstance(data, str):
|
||||
return "'" + data + "'"
|
||||
return data
|
|
@ -1,10 +1,12 @@
|
|||
"""Generate ssdp file."""
|
||||
from __future__ import annotations
|
||||
|
||||
from collections import OrderedDict, defaultdict
|
||||
import json
|
||||
from collections import defaultdict
|
||||
|
||||
import black
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import to_string
|
||||
|
||||
BASE = """
|
||||
\"\"\"Automatically generated by hassfest.
|
||||
|
@ -12,15 +14,13 @@ BASE = """
|
|||
To update, run python3 -m script.hassfest
|
||||
\"\"\"
|
||||
|
||||
# fmt: off
|
||||
|
||||
SSDP = {}
|
||||
""".strip()
|
||||
|
||||
|
||||
def sort_dict(value):
|
||||
"""Sort a dictionary."""
|
||||
return OrderedDict((key, value[key]) for key in sorted(value))
|
||||
return {key: value[key] for key in sorted(value)}
|
||||
|
||||
|
||||
def generate_and_validate(integrations: dict[str, Integration]):
|
||||
|
@ -42,7 +42,7 @@ def generate_and_validate(integrations: dict[str, Integration]):
|
|||
for matcher in ssdp:
|
||||
data[domain].append(sort_dict(matcher))
|
||||
|
||||
return BASE.format(json.dumps(data, indent=4))
|
||||
return black.format_str(BASE.format(to_string(data)), mode=black.Mode())
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config):
|
||||
|
@ -54,7 +54,7 @@ def validate(integrations: dict[str, Integration], config: Config):
|
|||
return
|
||||
|
||||
with open(str(ssdp_path)) as fp:
|
||||
if fp.read().strip() != content:
|
||||
if fp.read() != content:
|
||||
config.add_error(
|
||||
"ssdp",
|
||||
"File ssdp.py is not up to date. Run python3 -m script.hassfest",
|
||||
|
@ -67,4 +67,4 @@ def generate(integrations: dict[str, Integration], config: Config):
|
|||
"""Generate ssdp file."""
|
||||
ssdp_path = config.root / "homeassistant/generated/ssdp.py"
|
||||
with open(str(ssdp_path), "w") as fp:
|
||||
fp.write(f"{config.cache['ssdp']}\n")
|
||||
fp.write(f"{config.cache['ssdp']}")
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
"""Generate supported_brands data."""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import black
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import to_string
|
||||
|
||||
BASE = """
|
||||
\"\"\"Automatically generated by hassfest.
|
||||
|
@ -11,9 +12,7 @@ BASE = """
|
|||
To update, run python3 -m script.hassfest
|
||||
\"\"\"
|
||||
|
||||
# fmt: off
|
||||
|
||||
HAS_SUPPORTED_BRANDS = ({})
|
||||
HAS_SUPPORTED_BRANDS = {}
|
||||
""".strip()
|
||||
|
||||
|
||||
|
@ -26,7 +25,7 @@ def generate_and_validate(integrations: dict[str, Integration], config: Config)
|
|||
if integration.supported_brands
|
||||
]
|
||||
|
||||
return BASE.format(json.dumps(brands, indent=4)[1:-1])
|
||||
return black.format_str(BASE.format(to_string(brands)), mode=black.Mode())
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config) -> None:
|
||||
|
@ -39,7 +38,7 @@ def validate(integrations: dict[str, Integration], config: Config) -> None:
|
|||
if config.specific_integrations:
|
||||
return
|
||||
|
||||
if supported_brands_path.read_text(encoding="utf-8").strip() != content:
|
||||
if supported_brands_path.read_text(encoding="utf-8") != content:
|
||||
config.add_error(
|
||||
"supported_brands",
|
||||
"File supported_brands.py is not up to date. Run python3 -m script.hassfest",
|
||||
|
@ -51,5 +50,5 @@ def generate(integrations: dict[str, Integration], config: Config):
|
|||
"""Generate supported_brands data."""
|
||||
supported_brands_path = config.root / "homeassistant/generated/supported_brands.py"
|
||||
supported_brands_path.write_text(
|
||||
f"{config.cache['supported_brands']}\n", encoding="utf-8"
|
||||
f"{config.cache['supported_brands']}", encoding="utf-8"
|
||||
)
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
"""Generate usb file."""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import black
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import to_string
|
||||
|
||||
BASE = """
|
||||
\"\"\"Automatically generated by hassfest.
|
||||
|
@ -11,8 +12,6 @@ BASE = """
|
|||
To update, run python3 -m script.hassfest
|
||||
\"\"\"
|
||||
|
||||
# fmt: off
|
||||
|
||||
USB = {}
|
||||
""".strip()
|
||||
|
||||
|
@ -40,7 +39,7 @@ def generate_and_validate(integrations: list[dict[str, str]]) -> str:
|
|||
}
|
||||
)
|
||||
|
||||
return BASE.format(json.dumps(match_list, indent=4))
|
||||
return black.format_str(BASE.format(to_string(match_list)), mode=black.Mode())
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config) -> None:
|
||||
|
@ -52,7 +51,7 @@ def validate(integrations: dict[str, Integration], config: Config) -> None:
|
|||
return
|
||||
|
||||
with open(str(usb_path)) as fp:
|
||||
current = fp.read().strip()
|
||||
current = fp.read()
|
||||
if current != content:
|
||||
config.add_error(
|
||||
"usb",
|
||||
|
@ -66,4 +65,4 @@ def generate(integrations: dict[str, Integration], config: Config) -> None:
|
|||
"""Generate usb file."""
|
||||
usb_path = config.root / "homeassistant/generated/usb.py"
|
||||
with open(str(usb_path), "w") as fp:
|
||||
fp.write(f"{config.cache['usb']}\n")
|
||||
fp.write(f"{config.cache['usb']}")
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
"""Generate zeroconf file."""
|
||||
from __future__ import annotations
|
||||
|
||||
from collections import OrderedDict, defaultdict
|
||||
import json
|
||||
from collections import defaultdict
|
||||
|
||||
import black
|
||||
|
||||
from homeassistant.loader import async_process_zeroconf_match_dict
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import to_string
|
||||
|
||||
BASE = """
|
||||
\"\"\"Automatically generated by hassfest.
|
||||
|
@ -14,8 +16,6 @@ BASE = """
|
|||
To update, run python3 -m script.hassfest
|
||||
\"\"\"
|
||||
|
||||
# fmt: off
|
||||
|
||||
ZEROCONF = {}
|
||||
|
||||
HOMEKIT = {}
|
||||
|
@ -82,12 +82,12 @@ def generate_and_validate(integrations: dict[str, Integration]):
|
|||
warned.add(key_2)
|
||||
break
|
||||
|
||||
zeroconf = OrderedDict(
|
||||
(key, service_type_dict[key]) for key in sorted(service_type_dict)
|
||||
)
|
||||
homekit = OrderedDict((key, homekit_dict[key]) for key in sorted(homekit_dict))
|
||||
zeroconf = {key: service_type_dict[key] for key in sorted(service_type_dict)}
|
||||
homekit = {key: homekit_dict[key] for key in sorted(homekit_dict)}
|
||||
|
||||
return BASE.format(json.dumps(zeroconf, indent=4), json.dumps(homekit, indent=4))
|
||||
return black.format_str(
|
||||
BASE.format(to_string(zeroconf), to_string(homekit)), mode=black.Mode()
|
||||
)
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config):
|
||||
|
@ -99,7 +99,7 @@ def validate(integrations: dict[str, Integration], config: Config):
|
|||
return
|
||||
|
||||
with open(str(zeroconf_path)) as fp:
|
||||
current = fp.read().strip()
|
||||
current = fp.read()
|
||||
if current != content:
|
||||
config.add_error(
|
||||
"zeroconf",
|
||||
|
@ -113,4 +113,4 @@ def generate(integrations: dict[str, Integration], config: Config):
|
|||
"""Generate zeroconf file."""
|
||||
zeroconf_path = config.root / "homeassistant/generated/zeroconf.py"
|
||||
with open(str(zeroconf_path), "w") as fp:
|
||||
fp.write(f"{config.cache['zeroconf']}\n")
|
||||
fp.write(f"{config.cache['zeroconf']}")
|
||||
|
|
Loading…
Reference in New Issue