示例#1
0
        private void AssertDatapointType(EtsDatapoint dp, string dpt)
        {
            List <string> dpts = dpt.Any() ? dpt.Split(' ').ToList() : new List <string>();

            Assert.Equal(dpts.Count, dp.DatapointTypes.Count());
            dpts.ForEach(i => Assert.Contains(i, dp.DatapointTypes));
        }
        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);
        }
示例#3
0
        public void TestSimpleThreeLevel()
        {
            EtsProject p = new EtsProjectParser().ParseEtsFile(GetFile("ETS5_Simple_ThreeLevel"));

            Assert.Equal("ETS5_Simple_ThreeLevel", p.Name);
            Assert.Equal(GroupAddressStyle.ThreeLevel, p.GroupAddressStyle);
            Assert.Equal(4, p.Children.Count);

            EtsGroup g0 = p.Children[0] as EtsGroup;

            Assert.Equal("Main Group 0", g0.Name);
            Assert.Equal(0, g0.GroupIndex);
            Assert.Equal(2, g0.Children.Count);
            Assert.Equal("Description main group\r\n0", g0.Description);

            EtsGroup g0_0 = g0.Children[0] as EtsGroup;

            Assert.Equal("Middle Group 0.0", g0_0.Name);
            Assert.Equal(0, g0_0.GroupIndex);
            Assert.Equal(5, g0_0.Children.Count);
            Assert.Equal("Description middle group\r\n0", g0_0.Description);

            EtsDatapoint dp0_0_1 = g0_0.Children[0] as EtsDatapoint;

            Assert.Equal("Group Address 0.0.1 LED 1 Switch", dp0_0_1.Name);
            Assert.Equal(1, dp0_0_1.GroupIndex);
            AssertDatapointType(dp0_0_1, "DPST-1-1");
            Assert.Equal("Description group address\r\n1 'test'", dp0_0_1.Description);
            Assert.True(dp0_0_1.HasDeviceLinked);

            EtsDatapoint dp0_0_2 = g0_0.Children[1] as EtsDatapoint;

            Assert.Equal("Group Address 0.0.2 Temperature", dp0_0_2.Name);
            Assert.Equal(2, dp0_0_2.GroupIndex);
            AssertDatapointType(dp0_0_2, "DPST-9-1");
            Assert.Equal("", dp0_0_2.Description);
            Assert.True(dp0_0_2.HasDeviceLinked);

            EtsDatapoint dp0_0_3 = g0_0.Children[2] as EtsDatapoint;

            Assert.Equal("Group Address 0.0.3 Min/Max Temperature-State", dp0_0_3.Name);
            Assert.Equal(3, dp0_0_3.GroupIndex);
            AssertDatapointType(dp0_0_3, "DPST-1-1");
            Assert.Equal("", dp0_0_3.Description);
            Assert.True(dp0_0_3.HasDeviceLinked);

            EtsDatapoint dp0_0_4 = g0_0.Children[3] as EtsDatapoint;

            Assert.Equal("Group Address 0.0.4 Boolean Control", dp0_0_4.Name);
            Assert.Equal(4, dp0_0_4.GroupIndex);
            AssertDatapointType(dp0_0_4, "DPST-2-2");
            Assert.Equal("", dp0_0_4.Description);
            Assert.False(dp0_0_4.HasDeviceLinked);

            EtsDatapoint dp0_0_5 = g0_0.Children[4] as EtsDatapoint;

            Assert.Equal("Group Address 0.0.5 No Datatype", dp0_0_5.Name);
            Assert.Equal(5, dp0_0_5.GroupIndex);
            AssertDatapointType(dp0_0_5, "");
            Assert.Equal("", dp0_0_5.Description);
            Assert.False(dp0_0_5.HasDeviceLinked);

            EtsGroup g1 = p.Children[1] as EtsGroup;

            Assert.Equal("Main Group 1", g1.Name);
            Assert.Equal(1, g1.GroupIndex);
            Assert.True(g1.Children.Count == 0);
            Assert.Equal("", g1.Description);

            EtsGroup g2 = p.Children[2] as EtsGroup;

            Assert.Equal("Main Group 2", g2.Name);
            Assert.Equal(2, g2.GroupIndex);
            Assert.Equal(2, g2.Children.Count);
            Assert.Equal("", g2.Description);

            EtsGroup g2_0 = g2.Children[0] as EtsGroup;

            Assert.Equal("Middle Group 2.0", g2_0.Name);
            Assert.Equal(0, g2_0.GroupIndex);
            Assert.True(g2_0.Children.Count == 0);
            Assert.Equal("", g2_0.Description);

            EtsGroup g2_1 = g2.Children[1] as EtsGroup;

            Assert.Equal("Middle Group 2.1", g2_1.Name);
            Assert.Equal(1, g2_1.GroupIndex);
            Assert.True(g2_1.Children.Count == 0);
            Assert.Equal("", g2_1.Description);

            EtsGroup g31 = p.Children[3] as EtsGroup;

            Assert.Equal(31, g31.GroupIndex);
            Assert.True(g31.Children.Count == 1);
            Assert.Equal("", g31.Description);

            EtsGroup g31_7 = g31.Children[0] as EtsGroup;

            Assert.Equal("Middle Group 31.7 Filled Up", g31_7.Name);
            Assert.Equal(7, g31_7.GroupIndex);
            Assert.Equal(256, g31_7.Children.Count);
            Assert.Equal("", g31_7.Description);

            for (int i = 0; i < g31_7.Children.Count; i++)
            {
                Assert.Equal(i, (g31_7.Children[i] as EtsDatapoint).GroupIndex);
                Assert.False((g31_7.Children[i] as EtsDatapoint).HasDeviceLinked);
            }
        }