public Response<Node> GetNode(string nodeId) { var stopWatch = new Stopwatch(); stopWatch.Start(); var response = new Response<Node> {Results = new Dictionary<string, Node>()}; foreach (var serviceType in _things) { var name = serviceType.GetType().FullName; var data = serviceType.GetNode(byte.Parse(nodeId)); if (data == null) continue; var node = new Node { HomeId = data.HomeId, Id = data.Id, Label = data.Label, Location = data.Location, Manufacturer = data.Manufacturer, Name = data.Name, Product = data.Product, Values = data.Values.Select( v => new Value { Properties = new ValueProperties { Help = v.Properties.Help, Value = v.Properties.Value, PollingEnabled = v.Properties.PollingEnabled, Units = v.Properties.Units, Label = v.Properties.Label, CommandClassId = v.Properties.CommandClassId, GenreId = v.Properties.GenreId, HomeId = v.Properties.HomeId, Id = v.Properties.Id, TypeId = v.Properties.TypeId, NodeId = v.Properties.NodeId, Index = v.Properties.Index, Instance = v.Properties.Instance } }).ToList() }; response.Results.Add(name, node); } response.Count = response.Results.Count(); stopWatch.Stop(); response.ResponseTime = stopWatch.ElapsedMilliseconds; return response; }
public IEnumerable<Node> GetNodes() { var nodes = new List<Node>(); if (!_zwave.IsNetworkReady) return null; if (_zwave.Nodes == null) return null; foreach (var node in _zwave.Nodes) { var Node = new Node { HomeId = node.HomeId, Id = node.Id.ToString(), Label = node.Label, Location = node.Location, Manufacturer = node.Manufacturer, Name = node.Name, Product = node.Product }; foreach (var value in node.Values) { if (Node.Values == null) { Node.Values = new List<Value>(); } Node.Values.Add(new Value { Properties = new ValueProperties { Help = value.Properties.Help, Value = value.Properties.Value, PollingEnabled = value.Properties.PollingEnabled, Units = value.Properties.Units, Label = value.Properties.Label, CommandClassId = value.Properties.CommandClassId, GenreId = (ValueProperties.ValueGenre) Enum.Parse(typeof (ValueProperties.ValueGenre), Enum.GetName(typeof (ZWValueID.ValueGenre), value.Properties.Genre)), HomeId = value.Properties.HomeId.ToString(), Id = value.Properties.Id.ToString(), Index = value.Properties.Index, Instance = value.Properties.Instance, NodeId = value.Properties.NodeId, TypeId = (ValueProperties.ValueType) Enum.Parse(typeof (ValueProperties.ValueType), Enum.GetName(typeof (ZWValueID.ValueType), value.Properties.Type)) } }); } nodes.Add(Node); } return nodes; }
private static IEnumerable<Node> LoadThermostats(IEnumerable<Thermostat> thermostats, Dictionary<string, List<string>> groups) { var nodes = new List<Node>(); foreach (var t in thermostats) { var Node = new Node { HomeId = 0, Id = t.Id.ToString(), Label = t.Name, Name = t.Label, Values = new List<Value>() }; foreach (var @group in from @group in groups from id in @group.Value.Where(id => id == Node.Id) select @group) { Node.Location = @group.Key; } Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_SENSOR_MULTILEVEL, Label = "Temperature", Value = t.Value, GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Decimal } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_SENSOR_MULTILEVEL, Label = "Humidity", Value = t.Humidity.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Decimal } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_THERMOSTAT_SETPOINT, Label = "CoolingSetpoint", Value = t.CoolingSetpoint.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Decimal } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_THERMOSTAT_SETPOINT, Label = "HeatingSetpoint", Value = t.HeatingSetpoint.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Decimal } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_THERMOSTAT_SETPOINT, Label = "ThermostatSetpoint", Value = t.ThermostatSetpoint.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Decimal } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_THERMOSTAT_FAN_MODE, Label = "FanMode", Value = t.FanMode.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.String } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_THERMOSTAT_OPERATING_STATE, Label = "OperatingState", Value = t.OperatingState.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.String } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_THERMOSTAT_MODE, Label = "Mode", Value = t.Mode.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.String } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_BATTERY, Value = t.Battery.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Decimal } }); nodes.Add(Node); } return nodes; }
private static IEnumerable<Node> LoadSwitches(IEnumerable<Switch> switches, Dictionary<string, List<string>> groups) { var nodes = new List<Node>(); foreach (var s in switches) { var Node = new Node { HomeId = 0, Id = s.Id.ToString(), Label = s.Name, Name = s.Label, Values = new List<Value>() }; foreach (var @group in from @group in groups from id in @group.Value.Where(id => id == Node.Id) select @group) { Node.Location = @group.Key; } Node.Values.Add(new Value { Properties = new ValueProperties { Id = "", CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_SWITCH_BINARY, Value = s.Value == "on" ? "true" : "false", GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Bool } }); nodes.Add(Node); } return nodes; }
private static IEnumerable<Node> LoadSirens(IEnumerable<Siren> sirens, Dictionary<string, List<string>> groups) { var nodes = new List<Node>(); foreach (var s in sirens) { var Node = new Node { HomeId = 0, Id = s.Id.ToString(), Label = s.Name, Name = s.Label, Values = new List<Value>() }; foreach (var @group in from @group in groups from id in @group.Value.Where(id => id == Node.Id) select @group) { Node.Location = @group.Key; } Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_ALARM, Value = s.Value, GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.String } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_BATTERY, Value = s.Battery.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Decimal } }); nodes.Add(Node); } return nodes; }
private static IEnumerable<Node> LoadMotions(IEnumerable<Motion> motions, Dictionary<string, List<string>> groups) { var nodes = new List<Node>(); foreach (var m in motions) { var Node = new Node { HomeId = 0, Id = m.Id.ToString(), Label = m.Name, Name = m.Label, Values = new List<Value>() }; foreach (var @group in from @group in groups from id in @group.Value.Where(id => id == Node.Id) select @group) { Node.Location = @group.Key; } Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_SENSOR_BINARY, Value = m.Value == "active" ? "true" : "false", GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Bool } }); Node.Values.Add(new Value { Properties = new ValueProperties { CommandClassId = global::Things.Types.Enums.CommandClass.COMMAND_CLASS_BATTERY, Value = m.Battery.ToString(), GenreId = ValueProperties.ValueGenre.User, TypeId = ValueProperties.ValueType.Decimal } }); nodes.Add(Node); } return nodes; }