Beispiel #1
0
def coordinator(app, ieee):
    dev = Device(app, ieee, 0x0000)
    ep = dev.add_endpoint(1)
    ep.profile_id = 0x0104
    ep.device_type = 0xBEEF
    ep.add_output_cluster(security.IasZone.cluster_id)
    return bellows.zigbee.application.EZSPCoordinator(app, ieee, 0x0000, dev)
Beispiel #2
0
def test_ctrl_neutral1():
    """Test ctrl neutral 1 sends correct request."""
    sec = 8
    ieee = 0
    nwk = 1234
    data = b"\x01\x08\x01"
    cluster = 6
    src_ep = 1
    dst_ep = 2

    app = zigpy.application.ControllerApplication()
    app.request = mock.MagicMock()
    app.get_sequence = mock.MagicMock(return_value=sec)

    rep = Device(app, ieee, nwk)
    rep.add_endpoint(1)
    rep.add_endpoint(2)

    dev = CtrlNeutral1(app, ieee, nwk, rep)
    dev[2].in_clusters[cluster].command(1)

    assert app.request.call_args == call(dev,
                                         260,
                                         cluster,
                                         src_ep,
                                         dst_ep,
                                         sec,
                                         data,
                                         expect_reply=True)
    def _device(new=False, zdo_init=False, nwk=t.uint16_t(0x1234)):
        from zigpy.device import Device, Status as DeviceStatus

        ieee, _ = t.EUI64.deserialize(b"\x08\x07\x06\x05\x04\x03\x02\x01")
        dev = Device(app, ieee, nwk)
        if new:
            dev.status = DeviceStatus.NEW
        elif zdo_init:
            dev.status = DeviceStatus.ZDO_INIT
        else:
            dev.status = DeviceStatus.ENDPOINTS_INIT
        return dev
Beispiel #4
0
def fake_get_device(device):
    if device.endpoints.get(1) is not None and device[1].profile_id == 65535:
        return FakeCustomDevice(
            device.application,
            make_ieee(1),
            199,
            Device(device.application, make_ieee(1), 199),
        )
    return device
Beispiel #5
0
def generate_device(manufacturer: str, model: str) -> Optional[Device]:
    """Generate device from quirks. Should be called earlier:
        zhaquirks.setup()

    Or direct import:
        from zhaquirks.xiaomi.mija.sensor_switch import MijaButton

    Used like a Cluster:
        hdr, value = device.deserialize(<endpoint_id>, <cluster_id>, data)
    """
    quirks = zigpy.quirks.get_quirk_list(manufacturer, model)
    if not quirks:
        return None

    device = Device(None, None, 0)
    device.manufacturer = manufacturer
    device.model = model

    quirk: zigpy.quirks.CustomDevice = quirks[0]
    if SIG_ENDPOINTS in quirk.replacement:
        for endpoint_id in quirk.replacement[SIG_ENDPOINTS].keys():
            device.add_endpoint(endpoint_id)

    return quirks[0](None, None, 0, device)
Beispiel #6
0
 def mock_get_device(*args, **kwargs):
     dev = Device(app, mock.sentinel.ieee, mock.sentinel.nwk)
     dev.node_desc = mock.MagicMock()
     dev.node_desc.is_end_device = is_an_end_dev
     return dev