Skip to content

Commit d1819ad

Browse files
committed
add enum description for 3PInverterData - and fix bug
int -> decimal for datatypes
1 parent b9d3505 commit d1819ad

File tree

5 files changed

+45
-14
lines changed

5 files changed

+45
-14
lines changed

FroniusSolarClient/Entities/SolarAPI/V1/InverterRealtimeData/CommonInverterData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class CommonInverterData
1313
/// AC power
1414
/// </summary>
1515
[JsonProperty("PAC")]
16-
public UnitValue<int> AcPower { get; set; }
16+
public UnitValue<decimal> AcPower { get; set; }
1717

1818
/// <summary>
1919
/// AC current

FroniusSolarClient/Entities/SolarAPI/V1/InverterRealtimeData/CumulationInverterData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class CumulationInverterData
1515
/// AC power
1616
/// </summary>
1717
[JsonProperty("PAC")]
18-
public UnitValue<int> AcPower { get; set; }
18+
public UnitValue<decimal> AcPower { get; set; }
1919

2020
/// <summary>
2121
/// Energy generated on current day

FroniusSolarClient/Entities/SolarAPI/V1/InverterRealtimeData/DataCollection.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.ComponentModel;
34
using System.Text;
45

56
namespace FroniusSolarClient.Entities.SolarAPI.V1.InverterRealtimeData
@@ -9,6 +10,10 @@ public enum DataCollection
910
CumulationInverterData,
1011
CommonInverterData,
1112
MinMaxInverterData,
13+
/// <summary>
14+
/// 3PInverterData, but Enum cannot start with number.
15+
/// </summary>
16+
[Description("3PInverterData")]
1217
P3InverterData
1318
}
1419
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using System.ComponentModel;
3+
4+
namespace FroniusSolarClient.Extensions
5+
{
6+
public static class EnumHelper
7+
{
8+
public static string GetDescription<T>(this T enumValue)
9+
where T : struct, IConvertible
10+
{
11+
if (!typeof(T).IsEnum)
12+
return null;
13+
14+
var description = enumValue.ToString();
15+
var fieldInfo = enumValue.GetType().GetField(enumValue.ToString());
16+
17+
if (fieldInfo != null)
18+
{
19+
var attrs = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), true);
20+
if (attrs != null && attrs.Length > 0)
21+
{
22+
description = ((DescriptionAttribute)attrs[0]).Description;
23+
}
24+
}
25+
26+
return description;
27+
}
28+
}
29+
}
Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
using FroniusSolarClient.Entities.SolarAPI.V1;
22
using FroniusSolarClient.Entities.SolarAPI.V1.InverterRealtimeData;
3+
using FroniusSolarClient.Extensions;
34
using System;
4-
using System.Collections.Generic;
5-
using System.Text;
65

76
namespace FroniusSolarClient.Services
87
{
@@ -13,12 +12,11 @@ internal class InverterRealtimeDataService : BaseDataService
1312
{
1413
private readonly string _cgi = "GetInverterRealtimeData.cgi";
1514

16-
public InverterRealtimeDataService(RestClient restClient)
15+
public InverterRealtimeDataService(RestClient restClient)
1716
: base(restClient)
1817
{
1918
}
2019

21-
2220
/// <summary>
2321
/// Builds the query string for the request
2422
/// </summary>
@@ -27,35 +25,34 @@ public InverterRealtimeDataService(RestClient restClient)
2725
protected string BuildQueryString(int deviceId, Scope scope, DataCollection dataCollection)
2826
{
2927
//TODO: Support list of string dictionary to build HTTP query string
30-
return $"?Scope={scope}&DeviceId={deviceId}&DataCollection={dataCollection}";
28+
return $"?Scope={scope}&DeviceId={deviceId}&DataCollection={dataCollection.GetDescription()}";
3129
}
3230

3331
public Response<CumulationInverterData> GetCumulationInverterData(int deviceId = 1, Scope scope = Scope.Device)
3432
{
35-
string baseEndpointURL = _cgi + BuildQueryString(deviceId, scope, DataCollection.CumulationInverterData);
33+
string baseEndpointURL = _cgi + BuildQueryString(deviceId, scope, DataCollection.CumulationInverterData);
3634
return GetDataServiceResponse<CumulationInverterData>(baseEndpointURL);
3735
}
3836

3937
public Response<CommonInverterData> GetCommonInverterData(int deviceId = 1, Scope scope = Scope.Device)
4038
{
4139
string baseEndpointURL = _cgi + BuildQueryString(deviceId, scope, DataCollection.CommonInverterData);
42-
return GetDataServiceResponse<CommonInverterData>(baseEndpointURL);
40+
return GetDataServiceResponse<CommonInverterData>(baseEndpointURL);
4341
}
4442

45-
46-
public Response<P3InverterData> GetP3InverterData(int deviceId = 1, Scope scope = Scope.Device)
43+
public Response<P3InverterData> Get3PInverterData(int deviceId = 1, Scope scope = Scope.Device)
4744
{
48-
string param = $"?Scope={scope.ToString()}&DeviceId={deviceId}&DataCollection=P3InverterData";
49-
string baseEndpointURL = _cgi + param;
45+
string baseEndpointURL = _cgi + BuildQueryString(deviceId, scope, DataCollection.P3InverterData);
5046
return GetDataServiceResponse<P3InverterData>(baseEndpointURL);
5147
}
5248

49+
[Obsolete("use Get3PInverterData")]
50+
public Response<P3InverterData> GetP3InverterData(int deviceId = 1, Scope scope = Scope.Device) => Get3PInverterData(deviceId, scope);
5351

5452
public Response<MinMaxInverterData> GetMinMaxInverterData(int deviceId = 1, Scope scope = Scope.Device)
5553
{
5654
string baseEndpointURL = _cgi + BuildQueryString(deviceId, scope, DataCollection.MinMaxInverterData);
5755
return GetDataServiceResponse<MinMaxInverterData>(baseEndpointURL);
5856
}
59-
6057
}
6158
}

0 commit comments

Comments
 (0)