コード例 #1
0
ファイル: RegisterNetwork.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var networks = context.Networks;
            var streamStore = context.StreamStore;
            var ip = context.ReadParameter("IP").Value;

            var appDataRepository = new AppDataRepository(streamStore);
            var appData = appDataRepository.Load();

            if (string.IsNullOrEmpty(ip))
            {
                interpreter.WriteEvent("Searching for Hue bridge...");

                ip = FindIp();
                interpreter.WriteEvent("Found " + ip);
            }

            var networkContext = new HomeAutomationNetworkContext(context.Engine, context.ThreadPool);
            var network = new Q42HueNetwork(networkContext, ip, appData, () => interpreter.WriteEvent("Press the link button on the Hue bridge."));
            networks.Add(network);

            appDataRepository.Save(appData);

            interpreter.WriteEvent("Done.");
        }
コード例 #2
0
ファイル: ConnectDevice.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationNetworkDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var network = context.Network as WeMoNetwork;
            var ip = context.ReadParameter("IP").Value;

            network.Connect(ip);
        }
コード例 #3
0
ファイル: PushNames.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationNetworkDefinition(HomeAutomationCommandContext context)
        {
            var network = context.Network as Q42HueNetwork;

            foreach (var device in network.Devices)
            {
                PushName(device as Q42HueDevice);
            }
        }
コード例 #4
0
ファイル: ResetNetwork.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationNetworkDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var network = context.Network as OpenZWaveNetwork;

            interpreter.WriteEvent("Resetting Network " + network);

            network.Reset();

            interpreter.WriteEvent("Done");
        }
コード例 #5
0
ファイル: ShutDownTasks.cs プロジェクト: Mavtak/roomie
        protected override void Execute_Definition(RoomieCommandContext context)
        {
            var homeAutomationContext = new HomeAutomationCommandContext(context);
            var zWaveNetworks = homeAutomationContext.Networks.OfType<ZWaveNetwork>();
            var workQueues = zWaveNetworks.Select(x => x.WorkQueue);

            foreach (var workQueue in workQueues)
            {
                workQueue.ShutDown();
            }
        }
コード例 #6
0
ファイル: RegisterNetwork.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var networks = context.Networks;

            interpreter.WriteEvent("Searching for Z-Wave network adapater...");

            var network = new ZWaveNetwork(new HomeAutomationNetworkContext(context.Engine, context.ThreadPool));
            networks.Add(network);

            interpreter.WriteEvent("Done.");
        }
コード例 #7
0
ファイル: RegisterNetwork.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var networks = context.Networks;

            var networkContext = new HomeAutomationNetworkContext(context.Engine, context.ThreadPool);
            var network = new WeMoNetwork(networkContext);

            networks.Add(network);

            interpreter.WriteEvent("Done.");
        }
コード例 #8
0
ファイル: OptimizeNetwork.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationNetworkDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var network = context.Network as OpenZWaveNetwork;
            var returnRoute = context.ReadParameter(ReturnRouteKey).ToBoolean();

            interpreter.WriteEvent("Optimizing " + network);

            network.OptimizePaths(returnRoute);

            interpreter.WriteEvent("Done");
        }
コード例 #9
0
ファイル: RegisterNetwork.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var networks = context.Networks;

            var address = context.ReadParameter("Address").Value;

            interpreter.WriteEvent("Searching for PiEngineering devices");

            var network = new PiEngineeringNetwork(new HomeAutomationNetworkContext(context.Engine, context.ThreadPool), address);
            networks.Add(network);

            interpreter.WriteEvent("Done.");
        }
コード例 #10
0
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var originalXml = context.OriginalCommand;
            var networks    = context.Networks;

            if (networks.Count == 0)
            {
                throw new HomeAutomationException("No home automation networks registered");
            }

            var networkName = context.ReadParameter("Network").Value;

            Network network;

            if (networkName == "<default>")
            {
                if (networks.Count() == 1)
                {
                    network = networks.First();
                }
                else
                {
                    throw new HomeAutomationException("Network must be specified, because there are multiple registered.");
                }
            }
            else if (!networks.Contains(networkName))
            {
                throw new NetworkNotRegisteredException(networkName);
            }
            else
            {
                network = networks.GetNetwork(networkName);
            }

            try
            {
                var greaterContext = new HomeAutomationCommandContext(context)
                {
                    Network = network
                };
                Execute_HomeAutomationNetworkDefinition(greaterContext);
            }
            catch (HomeAutomationException e)
            {
                throw new HomeAutomationException(e.Message);
            }
        }
コード例 #11
0
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var originalXml = context.OriginalCommand;
            var networks = context.Networks;

            if (networks.Count == 0)
            {
                throw new HomeAutomationException("No home automation networks registered");
            }

            var networkName = context.ReadParameter("Network").Value;

            Network network;
            if (networkName == "<default>")
            {
                if(networks.Count() == 1)
                {
                    network = networks.First();
                }
                else
                {
                    throw new HomeAutomationException("Network must be specified, because there are multiple registered.");
                }
            }
            else if (!networks.Contains(networkName))
            {
                throw new NetworkNotRegisteredException(networkName);
            }
            else
            {
                network = networks.GetNetwork(networkName);
            }

            try
            {
                var greaterContext = new HomeAutomationCommandContext(context)
                {
                    Network = network
                };
                Execute_HomeAutomationNetworkDefinition(greaterContext);
            }
            catch (HomeAutomationException e)
            {
                throw new HomeAutomationException(e.Message);
            }
        }
コード例 #12
0
ファイル: RegisterNetwork.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var networks = context.Networks;
            var port = context.ReadParameter("Port").Value;

            if (port.StartsWith("COM", StringComparison.InvariantCultureIgnoreCase))
            {
              port = @"\\.\" + port;
            }

            interpreter.WriteEvent("Searching for Z-Wave network adapater at " + port + "...");

            var network = new OpenZWaveNetwork(new HomeAutomationNetworkContext(context.Engine, context.ThreadPool), port);
            networks.Add(network);

            interpreter.WriteEvent("Done.");
        }
コード例 #13
0
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var scope       = context.Scope;
            var networks    = context.Networks;
            var retries     = context.ReadParameter(RetriesParameterAttribute.Key).ToInteger();

            Device device = null;

            if (scope.Local.ContainsVariable("Device"))
            {
                var allDevices = networks.SelectMany(x => x.Devices);
                var address    = context.ReadParameter("Device").ToVirtualAddress();
                device = allDevices.GetDevice(address);
            }

            var greaterContext = new HomeAutomationSingleDeviceContext(context)
            {
                Device = device
            };

            while (true)
            {
                try
                {
                    Execture_HomeAutomationSingleDeviceDefinition(greaterContext);
                    return;
                }
                catch (HomeAutomationException exception)
                {
                    if (retries == 0)
                    {
                        throw;
                    }

                    interpreter.WriteEvent("retrying: " + exception.Message);

                    if (retries > 0)
                    {
                        retries--;
                    }
                }
            }
        }
コード例 #14
0
        protected override void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context)
        {
            var interpreter = context.Interpreter;
            var scope = context.Scope;
            var networks = context.Networks;
            var retries = context.ReadParameter(RetriesParameterAttribute.Key).ToInteger();

            Device device = null;
            if (scope.Local.ContainsVariable("Device"))
            {
                var allDevices = networks.SelectMany(x => x.Devices);
                var address = context.ReadParameter("Device").ToVirtualAddress();
                device = allDevices.GetDevice(address);
            }

            var greaterContext = new HomeAutomationSingleDeviceContext(context)
            {
                Device = device
            };

            while (true)
            {
                try
                {
                    Execture_HomeAutomationSingleDeviceDefinition(greaterContext);
                    return;
                }
                catch (HomeAutomationException exception)
                {
                    if (retries == 0)
                    {
                        throw;
                    }

                    interpreter.WriteEvent("retrying: " + exception.Message);

                    if (retries > 0)
                    {
                        retries--;
                    }
                }
            }
        }
コード例 #15
0
 protected abstract void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context);
コード例 #16
0
        protected override void Execute_Definition(RoomieCommandContext context)
        {
            var greaterContext = new HomeAutomationCommandContext(context);

            Execute_HomeAutomationDefinition(greaterContext);
        }
コード例 #17
0
 protected abstract void Execute_HomeAutomationDefinition(HomeAutomationCommandContext context);
コード例 #18
0
        protected override void Execute_Definition(RoomieCommandContext context)
        {
            var greaterContext = new HomeAutomationCommandContext(context);

            Execute_HomeAutomationDefinition(greaterContext);
        }
コード例 #19
0
ファイル: UpdateList.cs プロジェクト: Mavtak/roomie
        protected override void Execute_HomeAutomationNetworkDefinition(HomeAutomationCommandContext context)
        {
            var network = context.Network as Q42HueNetwork;

            network.UpdateList();
        }
コード例 #20
0
 public HomeAutomationCommandContext(HomeAutomationCommandContext context)
     : this((RoomieCommandContext) context)
 {
     Network = context.Network;
 }
コード例 #21
0
 public HomeAutomationCommandContext(HomeAutomationCommandContext context)
     : this((RoomieCommandContext)context)
 {
     Network = context.Network;
 }