private BroadlinkDevice CreateBroadlinkDevice(short deviceType) { BroadlinkDevice device; switch (deviceType) { case 0x2712: // RM2 case 0x2737: // RM Mini case 0x273d: // RM Pro Phicomm case 0x2783: // RM2 Home Plus case 0x277c: // RM2 Home Plus GDT case 0x272a: // RM2 Pro Plus case 0x2787: // RM2 Pro Plus2 case 0x278b: // RM2 Pro Plus BL case 0x278f: // RM Mini Shate device = new RMDevice(); break; default: device = new BroadlinkDevice(); break; } device.DeviceType = deviceType; return(device); }
public static RMDevice WaitUntilReady(this RMDevice device) { if (!device.IsEventsReady) { bool ready = false; EventHandler handler = (sen, er) => { ready = true; }; device.OnDeviceReady += handler; //e.OnTemperature += RMDevice_OnTemperature; //e.OnRawData += RMDevice_OnRawData; //e.OnRawRFDataFirst += RMDevice_OnRawRFDataFirst; //e.OnRawRFDataSecond += RMDevice_OnRawRFDataSecond; //e.OnSentDataCallback += RMDevice_OnSentDataCallback; device.IsEventsReady = true; device.AuthorizeAsync().Wait(); for (int i = 0; i < 20 && !ready; i++) { Task.Delay(1000).Wait(); } device.OnDeviceReady -= handler; if (!ready) { Console.WriteLine("Device was not ready in the requested time"); } } return(device); }
public RMDevice DiscoverDevice() { RMDevice discovered = null; EventHandler <BroadlinkDevice> handler = (s, e) => { discovered = e as RMDevice; }; discoverClient.DeviceHandler += handler; discoverClient.DiscoverAsync().Wait(); for (int i = 0; i < DefaultWaitTime; i++) { if (discovered != null) { return(discovered); } Task.Delay(1000).Wait(); } discoverClient.DeviceHandler -= handler; return(discovered); }
public static byte[] GenerateReadTemperaturePacket(RMDevice device) { var payload = new byte[16]; payload[0x00] = 1; var command = (short)0x006a; var packet = GenerateCommandPacket(command, payload, device); return(packet); }
public async Task Search() { EventHandler <BroadlinkDevice> handler = (s, e) => { rmDevice = e as RMDevice; }; discoverClient.DeviceHandler += handler; rmDevice = null; discoverClient.DiscoverAsync().Wait(); for (int i = 0; i < DefaultWaitTime && rmDevice == null; i++) { await Task.Delay(1000); } discoverClient.DeviceHandler -= handler; }
public static void SendCommand(this RMDevice sender, string command) { sender.SendRemoteCommandAsync(command.HexToBytes()).Wait(); }