public void TestSimpleTwoLevel() { EtsProject p = new EtsProjectParser().ParseEtsFile(GetFile("ETS5_Simple_TwoLevel")); Assert.Equal("ETS5_Simple_TwoLevel", p.Name); Assert.Equal(GroupAddressStyle.TwoLevel, p.GroupAddressStyle); Assert.Equal(32, p.Children.Count); EtsGroup g = p.Children[0] as EtsGroup; Assert.Equal("New main group", g.Name); Assert.Equal(0, g.GroupIndex); Assert.Equal(2047, g.Children.Count); Assert.Equal("", g.Description); for (int j = 0; j < g.Children.Count; j++) { Assert.Equal(j + 1, (g.Children[j] as EtsDatapoint).GroupIndex); } for (int i = 1; i < p.Children.Count; i++) { g = p.Children[i] as EtsGroup; Assert.Equal("New main group", g.Name); Assert.Equal(i, g.GroupIndex); Assert.Equal(2048, g.Children.Count); Assert.Equal("", g.Description); for (int j = 0; j < g.Children.Count; j++) { Assert.Equal(j, (g.Children[j] as EtsDatapoint).GroupIndex); } } }
internal async Task <IEnumerable <AreaInstance> > ProcessFile(AreaInstance parentInstance, IFormFile formFile) { var targetLocation = ServerInfo.GetTempPath(); var path = Path.Combine(targetLocation, formFile.FileName); // Uncomment to save the file await using (var fileStream = System.IO.File.Create(path)) { formFile.CopyTo(fileStream); } var etsProject = new EtsProjectParser().ParseEtsFile(path, GroupAddressStyle.ThreeLevel); foreach (var b in etsProject.Buildings) { var bInstance = CreateAreaInstance(parentInstance, b); parentInstance.InverseThis2ParentNavigation.Add(bInstance); } return(new List <AreaInstance> { parentInstance }); }
public async Task TestConvert() { var path = GetFile("ETS5_ImportTest"); var p = new EtsProjectParser().ParseEtsFile(path); var knxInterface = CreateNodeInstance(KnxIpDriverFactory.KnxGatway); var nodes = await EtsProjectToNodeConverter.ConvertToNodeInstances(Factory, p, knxInterface); Assert.True(nodes.Count > 0); }
public async Task <IEnumerable <AreaInstance> > Post(Guid parentObjId) { // full path to file in temp location var parentInstance = await DbContext.AreaInstances.SingleOrDefaultAsync(a => a.ObjId == parentObjId); if (parentInstance == null) { return(new List <AreaInstance>()); //TODO error handling } var myFile = Request.Form.Files[0]; var targetLocation = Path.GetTempPath(); try { var path = Path.Combine(targetLocation, myFile.FileName); // Uncomment to save the file using (var fileStream = System.IO.File.Create(path)) { myFile.CopyTo(fileStream); } var etsProject = new EtsProjectParser().ParseEtsFile(path, GroupAddressStyle.ThreeLevel); foreach (var b in etsProject.Buildings) { var bInstance = CreateAreaInstance(parentInstance, b); parentInstance.InverseThis2ParentNavigation.Add(bInstance); } return(new List <AreaInstance> { parentInstance }); } catch { Response.StatusCode = 400; } return(new List <AreaInstance>()); }
public override async Task <IList <NodeInstance> > Import(string fileName) { //if (!DriverContext.LicenseContract.IsFeatureLicensed(EtsImportFeauterName)) //{ // throw new LicenseInvalidException($"KNX.LICENSE.{EtsImportFeauterName.ToUpper()}"); //} var file = Path.Combine(Path.GetTempPath(), fileName); if (!File.Exists(file)) { throw new FileNotFoundException(); } var project = new EtsProjectParser().ParseEtsFile(file, GroupAddressStyle.ThreeLevel); return(await EtsProjectToNodeConverter.ConvertToNodeInstances(DriverContext.NodeTemplateFactory, project, DriverContext.NodeInstance)); }
public void TestBuildingStructureAndFunctions() { var path = GetFile("ETS5_ImportTest"); EtsProject p = new EtsProjectParser().ParseEtsFile(path); Assert.True(p.Buildings.Count == 1); Assert.True(p.Buildings[0].Name == "Haus"); Assert.True(p.Buildings[0].Children[0].Name == "Haus"); Assert.True(p.Buildings[0].Children[0].Children.Count == 2); Assert.True(p.Buildings[0].Children[0].Children[0].Name == "EG"); Assert.True(p.Buildings[0].Children[0].Children[1].Name == "UG"); Assert.True(p.Buildings[0].Children[0].Children[0].Children.Count == 1); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Name == "Raum1"); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions.Count == 2); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[0].EtsFunctionType == EtsFunctionType.LightOnOff); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[0].GroupAddressReferences[0].Datapoint.GetGroupAddress() == "0/0/1"); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[0].GroupAddressReferences[1].Datapoint.GetGroupAddress() == "0/0/2"); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[1].EtsFunctionType == EtsFunctionType.Blinds); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[1].GroupAddressReferences[0].Datapoint.GetGroupAddress() == "0/0/3"); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[1].GroupAddressReferences[1].Datapoint.GetGroupAddress() == "0/0/4"); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[1].GroupAddressReferences[2].Datapoint.GetGroupAddress() == "0/0/5"); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[1].GroupAddressReferences[3].Datapoint.GetGroupAddress() == "0/0/6"); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[1].GroupAddressReferences[4].Datapoint.GetGroupAddress() == "0/0/7"); Assert.True(p.Buildings[0].Children[0].Children[0].Children[0].Functions[1].GroupAddressReferences[5].Datapoint.GetGroupAddress() == "0/0/8"); Assert.True(p.Buildings[0].Children[0].Children[1].Children.Count == 2); Assert.True(p.Buildings[0].Children[0].Children[1].Children[0].Name == "Technik"); Assert.True(p.Buildings[0].Children[0].Children[1].Children[0].Functions.Count == 1); Assert.True(p.Buildings[0].Children[0].Children[1].Children[0].Functions[0].EtsFunctionType == EtsFunctionType.Dimm); Assert.True(p.Buildings[0].Children[0].Children[1].Children[1].Name == "Waschraum"); Assert.True(p.Buildings[0].Children[0].Children[1].Children[1].Functions[0].EtsFunctionType == EtsFunctionType.LightOnOff); }
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); } }