Fix legacy Hunter Douglas PowerView devices (#35895)

These devices are missing firmware information
as the 1.0 firmware did not provide it.
This commit is contained in:
J. Nick Koston 2020-05-21 02:18:45 -05:00 committed by GitHub
parent c2f8e0bf66
commit b19223cb37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 58 additions and 3 deletions

View File

@ -31,9 +31,15 @@ from .const import (
DEVICE_REVISION,
DEVICE_SERIAL_NUMBER,
DOMAIN,
FIRMWARE_BUILD,
FIRMWARE_IN_USERDATA,
FIRMWARE_SUB_REVISION,
HUB_EXCEPTIONS,
HUB_NAME,
LEGACY_DEVICE_BUILD,
LEGACY_DEVICE_MODEL,
LEGACY_DEVICE_REVISION,
LEGACY_DEVICE_SUB_REVISION,
MAC_ADDRESS_IN_USERDATA,
MAINPROCESSOR_IN_USERDATA_FIRMWARE,
MODEL_IN_MAINPROCESSOR,
@ -159,9 +165,19 @@ async def async_get_device_info(pv_request):
resources = await userdata.get_resources()
userdata_data = resources[USER_DATA]
main_processor_info = userdata_data[FIRMWARE_IN_USERDATA][
MAINPROCESSOR_IN_USERDATA_FIRMWARE
]
if FIRMWARE_IN_USERDATA in userdata_data:
main_processor_info = userdata_data[FIRMWARE_IN_USERDATA][
MAINPROCESSOR_IN_USERDATA_FIRMWARE
]
else:
# Legacy devices
main_processor_info = {
REVISION_IN_MAINPROCESSOR: LEGACY_DEVICE_REVISION,
FIRMWARE_SUB_REVISION: LEGACY_DEVICE_SUB_REVISION,
FIRMWARE_BUILD: LEGACY_DEVICE_BUILD,
MODEL_IN_MAINPROCESSOR: LEGACY_DEVICE_MODEL,
}
return {
DEVICE_NAME: base64_to_unicode(userdata_data[HUB_NAME]),
DEVICE_MAC_ADDRESS: userdata_data[MAC_ADDRESS_IN_USERDATA],

View File

@ -65,3 +65,8 @@ PV_ROOM_DATA = "pv_room_data"
COORDINATOR = "coordinator"
HUB_EXCEPTIONS = (asyncio.TimeoutError, PvApiConnectionError)
LEGACY_DEVICE_SUB_REVISION = 1
LEGACY_DEVICE_REVISION = 0
LEGACY_DEVICE_BUILD = 0
LEGACY_DEVICE_MODEL = "PV Hub1.0"

View File

@ -0,0 +1,34 @@
{
"userData" : {
"enableScheduledEvents" : true,
"staticIp" : false,
"sceneControllerCount" : 0,
"accessPointCount" : 0,
"shadeCount" : 5,
"ip" : "192.168.20.9",
"groupCount" : 9,
"scheduledEventCount" : 0,
"editingEnabled" : true,
"roomCount" : 5,
"setupCompleted" : false,
"sceneCount" : 18,
"sceneControllerMemberCount" : 0,
"mask" : "255.255.255.0",
"hubName" : "UG93ZXJWaWV3IEh1YiBHZW4gMQ==",
"rfID" : "0x8B2A",
"remoteConnectEnabled" : false,
"multiSceneMemberCount" : 0,
"rfStatus" : 0,
"serialNumber" : "REMOVED",
"undefinedShadeCount" : 0,
"sceneMemberCount" : 18,
"unassignedShadeCount" : 0,
"multiSceneCount" : 0,
"addressKind" : "newPrimary",
"gateway" : "192.168.20.1",
"localTimeDataSet" : true,
"dns" : "192.168.20.1",
"macAddress" : "00:00:00:00:00:eb",
"rfIDInt" : 35626
}
}