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);
        }