Exemple #1
0
        static async Task Main(string[] args)
        {
            const string fn = "auth.json";

            AuthenticatedDevice cDevice;

            // discover and auth if there's no file
            if (!File.Exists(fn))
            {
                Console.WriteLine("Discovery starting...");
                Console.WriteLine();

                var devices = await DeviceDiscovery.Discover();
                for (var index = 0; index < devices.Count; index++)
                {
                    var device = devices[index];
                    Console.WriteLine($"[{index}] {device}");
                }

                Console.Write("Pick device to auth:");
                var line = Console.ReadLine();
                // ReSharper disable once AssignNullToNotNullAttribute
                var pick = int.Parse(line);

                var authDev = devices[pick];
                Console.WriteLine($"picked {authDev}");
                Console.WriteLine("hold power for 5-7 seconds on device until light starts blinking then press enter to continue");
                Console.ReadLine();

                var asession = AuthenticationSession.CreateFromDiscovery(devices);
                var authedDev = await asession.Authenticate(authDev, "pc");
                Console.WriteLine(authedDev);
                var content = asession.SerializeAuthenticatedDevices();
                File.WriteAllText(fn, content);

                cDevice = authedDev;
            }
            else
            {
                Console.WriteLine("Loading pre-authed devices from file...");
                Console.WriteLine();

                var s = File.ReadAllText(fn);
                var psession = AuthenticationSession.RestoreFromFile(s);

                cDevice = psession.AuthenticatedDevices[0];
            }

            Console.WriteLine("controlling device...");
            Console.WriteLine();

            Console.WriteLine(cDevice);
            Console.WriteLine();

            var loop = true;
            var cs = new ControlSession(cDevice);
            while (loop)
            {
                Console.Write($"Q - exit; A - query on/off; W - turn on; S - turn off: ");
                var line = Console.ReadLine();

                switch (line.ToUpper())
                {
                    case "Q":
                        loop = false;
                        break;
                    case "A":
                        Console.WriteLine(await cs.QueryOnOff());
                        break;
                    case "W":
                        await cs.SetOnOff(true);
                        break;
                    case "S":
                        await cs.SetOnOff(false);
                        break;
                }
            }

            Console.ReadLine();
        }