Skip to content

Commit a3485d2

Browse files
committed
Updated FroniusSolarClient and added GetPowerFlowRealtimeData
1 parent 93fef41 commit a3485d2

File tree

9 files changed

+91
-7
lines changed

9 files changed

+91
-7
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using CommandLine;
2+
using CommandLine.Text;
3+
using FroniusSolarClient.Entities.SolarAPI.V1;
4+
using FroniusSolarClient.Entities.SolarAPI.V1.InverterRealtimeData;
5+
using System.Collections.Generic;
6+
7+
namespace FroniusSolarApi.Poller.CLI
8+
{
9+
[Verb("fetchPowerFlow", HelpText = "Provides detailed information about the local energy grid.")]
10+
internal class FetchPowerFlowRealtimeDataOptions : Options
11+
{
12+
[Option('s', longName: "Store", HelpText = "Where to save the data.", Required = true)]
13+
public DataStore Store { get; set; }
14+
15+
[Usage(ApplicationAlias = "poller")]
16+
public static IEnumerable<Example> Examples
17+
{
18+
get
19+
{
20+
return new List<Example>() {
21+
new Example("Fetch GetPowerFlowRealtimeData and output to the console", new FetchPowerFlowRealtimeDataOptions { Store = DataStore.Console })
22+
};
23+
}
24+
}
25+
}
26+
}

FroniusSolarApi.Poller/FroniusSolarApi.Poller.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
<OutputType>Exe</OutputType>
55
<TargetFramework>netcoreapp2.2</TargetFramework>
66
<StartupObject>FroniusSolarApi.Poller.Program</StartupObject>
7-
<AssemblyVersion>0.0.2.1</AssemblyVersion>
8-
<FileVersion>0.0.2.1</FileVersion>
9-
<Version>0.0.2</Version>
7+
<AssemblyVersion>0.0.3.0</AssemblyVersion>
8+
<FileVersion>0.0.3.0</FileVersion>
9+
<Version>0.0.3</Version>
1010
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
1111
<AssemblyName>SolarApiPoller</AssemblyName>
1212
</PropertyGroup>
1313

1414
<ItemGroup>
1515
<PackageReference Include="CommandLineParser" Version="2.5.0" />
16-
<PackageReference Include="FroniusSolarClient.Core" Version="0.2.0" />
16+
<PackageReference Include="FroniusSolarClient.Core" Version="0.3.0" />
1717
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
1818
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" />
1919
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />

FroniusSolarApi.Poller/PollerApp.cs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,5 +154,40 @@ public int FetchAndSaveArchiveData(FetchInverterArchiveDataOptions opt)
154154
return 1;
155155
}
156156
}
157-
}
157+
158+
public int FetchAndSavePowerFlowRealtimeData(FetchPowerFlowRealtimeDataOptions opt)
159+
{
160+
if (ConfigureRepository(opt.Store))
161+
{
162+
bool result = false;
163+
try
164+
{
165+
var powerFlowRealtimeDataResponse = _solarClient.GetPowerFlowRealtimeData();
166+
_logger.LogInformation($"Fetched PowerFlowRealtimeData - Status: {powerFlowRealtimeDataResponse.Head.Status.Code} at {powerFlowRealtimeDataResponse.Head.Timestamp}");
167+
result = _repositoryService.SaveData(powerFlowRealtimeDataResponse.Body.Data);
168+
169+
if (result)
170+
{
171+
_logger.LogInformation($"Saved successfully");
172+
return 0;
173+
}
174+
else
175+
{
176+
_logger.LogError($"Save was unsuccessful");
177+
return 1;
178+
}
179+
}
180+
catch (Exception ex)
181+
{
182+
_logger.LogError(ex, "An error occured.");
183+
return 1;
184+
}
185+
}
186+
else
187+
{
188+
// Configure repository failed
189+
return 1;
190+
}
191+
}
192+
}
158193
}

FroniusSolarApi.Poller/Program.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,12 @@ static int Main(string[] args)
5454
with.HelpWriter = null;
5555
});
5656

57-
var result = parser.ParseArguments<FetchInverterRealtimeDataOptions, FetchInverterArchiveDataOptions, object>(args);
57+
var result = parser.ParseArguments<FetchInverterRealtimeDataOptions, FetchInverterArchiveDataOptions, FetchPowerFlowRealtimeDataOptions, object>(args);
5858

5959
return result.MapResult(
6060
(FetchInverterRealtimeDataOptions opts) => poller.FetchAndSaveInverterRealtimeData(opts),
6161
(FetchInverterArchiveDataOptions opts) => poller.FetchAndSaveArchiveData(opts),
62+
(FetchPowerFlowRealtimeDataOptions opts) => poller.FetchAndSavePowerFlowRealtimeData(opts),
6263
errs => {
6364
var helpText = HelpText.AutoBuild(result, h =>
6465
{

FroniusSolarApi.Repository/Console/ConsoleRepository.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Text;
44
using FroniusSolarClient.Entities.SolarAPI.V1.ArchiveData;
55
using FroniusSolarClient.Entities.SolarAPI.V1.InverterRealtimeData;
6+
using FroniusSolarClient.Entities.SolarAPI.V1.PowerFlowRealtimeData;
67

78
namespace FroniusSolarApi.Repository.ConsoleOut
89
{
@@ -43,5 +44,11 @@ public bool SaveArchiveData(Dictionary<string, ArchiveData> data)
4344
return true;
4445
}
4546

47+
public bool SavePowerFlowRealtimeData(PowerFlowRealtimeData data)
48+
{
49+
var writer = new ConsoleWriter<PowerFlowRealtimeData>();
50+
writer.WriteConsole(data);
51+
return true;
52+
}
4653
}
4754
}

FroniusSolarApi.Repository/Csv/CsvRepository.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Text;
55
using FroniusSolarClient.Entities.SolarAPI.V1.ArchiveData;
66
using FroniusSolarClient.Entities.SolarAPI.V1.InverterRealtimeData;
7+
using FroniusSolarClient.Entities.SolarAPI.V1.PowerFlowRealtimeData;
78
using Microsoft.Extensions.Configuration;
89
using Microsoft.Extensions.Logging;
910

@@ -52,5 +53,10 @@ public bool SaveArchiveData(Dictionary<string, ArchiveData> data)
5253
return writer.WriteCsv(data, _csvConfiguration.GetSaveLocation("ArchiveData"));
5354
}
5455

56+
public bool SavePowerFlowRealtimeData(PowerFlowRealtimeData data)
57+
{
58+
var writer = new CsvWriter<PowerFlowRealtimeData>();
59+
return writer.WriteCsv(data, _csvConfiguration.GetSaveLocation("PowerFlowRealtimeData"));
60+
}
5561
}
5662
}

FroniusSolarApi.Repository/FroniusSolarApi.Repository.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
</PropertyGroup>
66

77
<ItemGroup>
8-
<PackageReference Include="FroniusSolarClient.Core" Version="0.2.0" />
8+
<PackageReference Include="FroniusSolarClient.Core" Version="0.3.0" />
99
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
1010
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
1111
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />

FroniusSolarApi.Repository/IDataRepository.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using FroniusSolarClient.Entities.SolarAPI.V1.ArchiveData;
22
using FroniusSolarClient.Entities.SolarAPI.V1.InverterRealtimeData;
3+
using FroniusSolarClient.Entities.SolarAPI.V1.PowerFlowRealtimeData;
34
using System;
45
using System.Collections.Generic;
56

@@ -16,5 +17,7 @@ public interface IDataRepository
1617
bool SaveMinMaxInverterData(MinMaxInverterData data);
1718

1819
bool SaveArchiveData(Dictionary<string, ArchiveData> data);
20+
21+
bool SavePowerFlowRealtimeData(PowerFlowRealtimeData data);
1922
}
2023
}

FroniusSolarApi.Repository/RepositoryService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using FroniusSolarClient.Entities.SolarAPI.V1.InverterRealtimeData;
22
using FroniusSolarClient.Entities.SolarAPI.V1.ArchiveData;
3+
using FroniusSolarClient.Entities.SolarAPI.V1.PowerFlowRealtimeData;
34
using Microsoft.Extensions.Configuration;
45
using Microsoft.Extensions.Logging;
56
using System;
@@ -41,5 +42,10 @@ public bool SaveData(Dictionary<string, ArchiveData> data)
4142
{
4243
return _dataRepository.SaveArchiveData(data);
4344
}
45+
46+
public bool SaveData(PowerFlowRealtimeData data)
47+
{
48+
return _dataRepository.SavePowerFlowRealtimeData(data);
49+
}
4450
}
4551
}

0 commit comments

Comments
 (0)