Exemplo n.º 1
0
        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);
        }
Exemplo n.º 4
0
        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();
 }