| 12345678910111213141516171819202122232425262728293031323334353637 |
- import pytest
- from switchbot import SwitchbotModel, parse_advertisement_data
- from .test_adv_parser import generate_advertisement_data, generate_ble_device
- @pytest.mark.parametrize("pairing", [0, 1])
- @pytest.mark.parametrize("network", [0, 0x15, 0x75])
- @pytest.mark.parametrize(("status", "is_on"), [(0x01, False), (0x87, True)])
- @pytest.mark.parametrize("encrypted", [False, True])
- def test_plug_mini_it_advertisement(pairing, network, status, is_on, encrypted):
- service = bytes(
- [0x80 if encrypted else 0, 0, 0, pairing, 0x12, 0x43, 0xC8, network]
- )
- manufacturer = (
- bytes.fromhex("010203040506")
- + bytes([99, status, 0, 0])
- + bytes.fromhex("04e600000000")
- )
- adv = parse_advertisement_data(
- generate_ble_device("01:02:03:04:05:06", "Plug Mini (IT)"),
- generate_advertisement_data(
- manufacturer_data={2409: manufacturer},
- service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": service},
- ),
- )
- assert adv is not None
- assert adv.data["modelName"] == SwitchbotModel.PLUG_MINI_IT
- assert adv.data["modelFriendlyName"] == "Plug Mini (IT)"
- assert adv.data["isEncrypted"] is encrypted
- assert adv.data["data"] == {
- "switchMode": True,
- "sequence_number": 99,
- "isOn": is_on,
- "power": 1254.0,
- }
|