@@ -1284,3 +1284,72 @@ def test_parsing_lock_passive():
12841284 rssi = - 67 ,
12851285 active = False ,
12861286 )
1287+
1288+ def test_parsing_lock_active_old_firmware ():
1289+ """Test parsing lock with active data. Old firmware."""
1290+ ble_device = generate_ble_device ("aa:bb:cc:dd:ee:ff" , "any" )
1291+ adv_data = generate_advertisement_data (
1292+ manufacturer_data = {2409 : b"\xf1 \t \x9f E\x1a ]\x07 \x83 \x00 " },
1293+ service_data = {"0000fd3d-0000-1000-8000-00805f9b34fb" : b"o\x80 d" },
1294+ rssi = - 67 ,
1295+ )
1296+ result = parse_advertisement_data (ble_device , adv_data )
1297+ assert result == SwitchBotAdvertisement (
1298+ address = "aa:bb:cc:dd:ee:ff" ,
1299+ data = {
1300+ "data" : {
1301+ "auto_lock_paused" : False ,
1302+ "battery" : 100 ,
1303+ "calibration" : True ,
1304+ "door_open" : False ,
1305+ "double_lock_mode" : False ,
1306+ "night_latch" : False ,
1307+ "status" : LockStatus .LOCKED ,
1308+ "unclosed_alarm" : False ,
1309+ "unlocked_alarm" : False ,
1310+ "update_from_secondary_lock" : False ,
1311+ },
1312+ "isEncrypted" : False ,
1313+ "model" : "o" ,
1314+ "modelFriendlyName" : "Lock" ,
1315+ "modelName" : SwitchbotModel .LOCK ,
1316+ "rawAdvData" : b"o\x80 d" ,
1317+ },
1318+ device = ble_device ,
1319+ rssi = - 67 ,
1320+ active = True ,
1321+ )
1322+
1323+
1324+ def test_parsing_lock_passive_old_firmware ():
1325+ """Test parsing lock with active data. Old firmware."""
1326+ ble_device = generate_ble_device ("aa:bb:cc:dd:ee:ff" , "any" )
1327+ adv_data = generate_advertisement_data (
1328+ manufacturer_data = {2409 : b"\xf1 \t \x9f E\x1a ]\x07 \x83 \x00 " }, rssi = - 67
1329+ )
1330+ result = parse_advertisement_data (ble_device , adv_data , SwitchbotModel .LOCK )
1331+ assert result == SwitchBotAdvertisement (
1332+ address = "aa:bb:cc:dd:ee:ff" ,
1333+ data = {
1334+ "data" : {
1335+ "auto_lock_paused" : False ,
1336+ "battery" : None ,
1337+ "calibration" : True ,
1338+ "door_open" : False ,
1339+ "double_lock_mode" : False ,
1340+ "night_latch" : False ,
1341+ "status" : LockStatus .LOCKED ,
1342+ "unclosed_alarm" : False ,
1343+ "unlocked_alarm" : False ,
1344+ "update_from_secondary_lock" : False ,
1345+ },
1346+ "isEncrypted" : False ,
1347+ "model" : "o" ,
1348+ "modelFriendlyName" : "Lock" ,
1349+ "modelName" : SwitchbotModel .LOCK ,
1350+ "rawAdvData" : None ,
1351+ },
1352+ device = ble_device ,
1353+ rssi = - 67 ,
1354+ active = False ,
1355+ )
0 commit comments