private static NodeInstance CreateNodeTemplateFromEtsDatapoint(EtsDatapoint datapoint, INodeTemplateFactory factory) { if (!datapoint.DatapointTypesSplitted.Any()) { return(null); } var mainDpt = datapoint.DatapointTypesSplitted.First().Item1; var subDpt = datapoint.DatapointTypesSplitted.First().Item2; NodeInstance nodeInstance = null; switch (mainDpt) { case 1: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt1"); nodeInstance.SetProperty("knx-dpt", mainDpt); break; case 2: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt2"); nodeInstance.SetProperty("knx-dpt", mainDpt); break; case 3: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt3"); nodeInstance.SetProperty("knx-dpt", mainDpt); break; case 5: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt5"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 6: if (subDpt == 20) { nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt6"); nodeInstance.SetProperty("knx-dpt", subDpt); } else { nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt6.020"); nodeInstance.SetProperty("knx-dpt", mainDpt); } break; case 7: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt7"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 8: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt8"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 9: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt9"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 10: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt10"); nodeInstance.SetProperty("knx-dpt", subDpt); break; case 11: nodeInstance = factory.CreateNodeInstanceByKey("knx-dpt11"); nodeInstance.SetProperty("knx-dpt", subDpt); break; } if (nodeInstance != null) { nodeInstance.Name = datapoint.Name; nodeInstance.Description = datapoint.Description; nodeInstance.SetProperty("knx-address", datapoint.GetAddress()); } return(nodeInstance); }