@@ -3001,3 +3001,89 @@ def test_lock_with_empty_data(test_case: AdvTestCase) -> None:
30013001 rssi = - 97 ,
30023002 active = True ,
30033003 )
3004+
3005+
3006+ def test_blind_tilt_active () -> None :
3007+ """Test parsing blind tilt with active data."""
3008+ ble_device = generate_ble_device ("aa:bb:cc:dd:ee:ff" , "any" )
3009+ adv_data = generate_advertisement_data (
3010+ manufacturer_data = {2409 : b"\xfc (\\ 6l\x7f \x0b '\x00 \xa1 \x84 " },
3011+ service_data = {"0000fd3d-0000-1000-8000-00805f9b34fb" : b"x\x00 H" },
3012+ rssi = - 97 ,
3013+ )
3014+ result = parse_advertisement_data (ble_device , adv_data )
3015+ assert result == SwitchBotAdvertisement (
3016+ address = "aa:bb:cc:dd:ee:ff" ,
3017+ data = {
3018+ "rawAdvData" : b"x\x00 H" ,
3019+ "data" : {
3020+ "sequence_number" : 11 ,
3021+ "battery" : 72 ,
3022+ "tilt" : 0 ,
3023+ "inMotion" : False ,
3024+ "calibration" : True ,
3025+ "lightLevel" : 10 ,
3026+ },
3027+ "isEncrypted" : False ,
3028+ "model" : "x" ,
3029+ "modelFriendlyName" : "Blind Tilt" ,
3030+ "modelName" : SwitchbotModel .BLIND_TILT ,
3031+ },
3032+ device = ble_device ,
3033+ rssi = - 97 ,
3034+ active = True ,
3035+ )
3036+
3037+
3038+ def test_blind_tilt_passive () -> None :
3039+ """Test parsing blind tilt with passive data."""
3040+ ble_device = generate_ble_device ("aa:bb:cc:dd:ee:ff" , "any" )
3041+ adv_data = generate_advertisement_data (
3042+ manufacturer_data = {2409 : b"\xfc (\\ 6l\x7f \x0b '\x00 \xa1 \x84 " },
3043+ rssi = - 97 ,
3044+ )
3045+ result = parse_advertisement_data (ble_device , adv_data , SwitchbotModel .BLIND_TILT )
3046+ assert result == SwitchBotAdvertisement (
3047+ address = "aa:bb:cc:dd:ee:ff" ,
3048+ data = {
3049+ "rawAdvData" : None ,
3050+ "data" : {
3051+ "sequence_number" : 11 ,
3052+ "battery" : None ,
3053+ "tilt" : 0 ,
3054+ "inMotion" : False ,
3055+ "calibration" : True ,
3056+ "lightLevel" : 10 ,
3057+ },
3058+ "isEncrypted" : False ,
3059+ "model" : "x" ,
3060+ "modelFriendlyName" : "Blind Tilt" ,
3061+ "modelName" : SwitchbotModel .BLIND_TILT ,
3062+ },
3063+ device = ble_device ,
3064+ rssi = - 97 ,
3065+ active = False ,
3066+ )
3067+
3068+
3069+ def test_blind_tilt_with_empty_data () -> None :
3070+ """Test parsing blind tilt with empty data."""
3071+ ble_device = generate_ble_device ("aa:bb:cc:dd:ee:ff" , "any" )
3072+ adv_data = generate_advertisement_data (
3073+ manufacturer_data = {2409 : None },
3074+ service_data = {"0000fd3d-0000-1000-8000-00805f9b34fb" : b"x\x00 H" },
3075+ rssi = - 97 ,
3076+ )
3077+ result = parse_advertisement_data (ble_device , adv_data )
3078+ assert result == SwitchBotAdvertisement (
3079+ address = "aa:bb:cc:dd:ee:ff" ,
3080+ data = {
3081+ "rawAdvData" : b"x\x00 H" ,
3082+ "data" : {},
3083+ "isEncrypted" : False ,
3084+ "model" : "x" ,
3085+ },
3086+ device = ble_device ,
3087+ rssi = - 97 ,
3088+ active = True ,
3089+ )
0 commit comments