@@ -3001,3 +3001,89 @@ def test_lock_with_empty_data(test_case: AdvTestCase) -> None:
3001
3001
rssi = - 97 ,
3002
3002
active = True ,
3003
3003
)
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