This commit is contained in:
David Štaleker
2024-08-03 13:05:24 +02:00
parent 905ba3d7a6
commit 98bb0ae882
6 changed files with 179 additions and 24 deletions

13
.idea/.idea.ShellyExporter/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/.idea.ShellyExporter.iml
/projectSettingsUpdater.xml
/modules.xml
/contentModel.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -27,6 +27,31 @@ namespace ShellyExporter
public string? Temperature { get; set; } public string? Temperature { get; set; }
public string? Voltage { get; set; } public string? Voltage { get; set; }
public string? Current { get; set; } public string? Current { get; set; }
public string? Emeters1Power { get; set; }
public string? Emeters1Pf { get; set; }
public string? Emeters1Current { get; set; }
public string? Emeters1Voltage { get; set; }
public bool? Emeters1IsValid { get; set; }
public string? Emeters1Total { get; set; }
public string? Emeters1TotalReturned { get; set; }
public string? Emeters2Power { get; set; }
public string? Emeters2Pf { get; set; }
public string? Emeters2Current { get; set; }
public string? Emeters2Voltage { get; set; }
public bool? Emeters2IsValid { get; set; }
public string? Emeters2Total { get; set; }
public string? Emeters2TotalReturned { get; set; }
public string? Emeters3Power { get; set; }
public string? Emeters3Pf { get; set; }
public string? Emeters3Current { get; set; }
public string? Emeters3Voltage { get; set; }
public bool? Emeters3IsValid { get; set; }
public string? Emeters3Total { get; set; }
public string? Emeters3TotalReturned { get; set; }
} }
public static async Task<StringBuilder> Get(string path, string name, Version shellyVersion, Type type) public static async Task<StringBuilder> Get(string path, string name, Version shellyVersion, Type type)
@@ -49,20 +74,16 @@ namespace ShellyExporter
throw new ArgumentOutOfRangeException(nameof(shellyVersion), shellyVersion, null); throw new ArgumentOutOfRangeException(nameof(shellyVersion), shellyVersion, null);
} }
break; break;
//TODO case Type.Em3:
// case Type.Em3: switch (shellyVersion)
// switch (shellyVersion) {
// { case Version.Gen1:
// case Version.Gen1: data = await Get3EmGen1(path);
// data = await GetPlugSGen1(path); break;
// break; default:
// case Version.Gen2: throw new ArgumentOutOfRangeException();
// data = await GetPlugSGen1(path); }
// break; break;
// default:
// throw new ArgumentOutOfRangeException();
// }
// break;
default: default:
throw new ArgumentOutOfRangeException(nameof(type), type, null); throw new ArgumentOutOfRangeException(nameof(type), type, null);
} }
@@ -85,6 +106,51 @@ namespace ShellyExporter
if (data.Temperature != null) if (data.Temperature != null)
sb.AppendLine($"temperature{{item=\"{name}\"}} " + data.Temperature); sb.AppendLine($"temperature{{item=\"{name}\"}} " + data.Temperature);
if (data.Emeters1Power != null)
sb.AppendLine($"emeters_1_power{{item=\"{name}\"}} " + data.Emeters1Power);
if (data.Emeters1Pf != null)
sb.AppendLine($"emeters_1_pf{{item=\"{name}\"}} " + data.Emeters1Pf);
if (data.Emeters1Current != null)
sb.AppendLine($"emeters_1_current{{item=\"{name}\"}} " + data.Emeters1Current);
if (data.Emeters1Voltage != null)
sb.AppendLine($"emeters_1_voltage{{item=\"{name}\"}} " + data.Emeters1Voltage);
if (data.Emeters1IsValid != null)
sb.AppendLine($"emeters_1_is_valid{{item=\"{name}\"}} " + ((bool)data.Emeters1IsValid ? 1 : 0));
if (data.Emeters1Total != null)
sb.AppendLine($"emeters_1_total{{item=\"{name}\"}} " + data.Emeters1Total);
if (data.Emeters1TotalReturned != null)
sb.AppendLine($"emeters_1_total_returned{{item=\"{name}\"}} " + data.Emeters1TotalReturned);
if (data.Emeters2Power != null)
sb.AppendLine($"emeters_2_power{{item=\"{name}\"}} " + data.Emeters2Power);
if (data.Emeters2Pf != null)
sb.AppendLine($"emeters_2_pf{{item=\"{name}\"}} " + data.Emeters2Pf);
if (data.Emeters2Current != null)
sb.AppendLine($"emeters_2_current{{item=\"{name}\"}} " + data.Emeters2Current);
if (data.Emeters2Voltage != null)
sb.AppendLine($"emeters_2_voltage{{item=\"{name}\"}} " + data.Emeters2Voltage);
if (data.Emeters2IsValid != null)
sb.AppendLine($"emeters_2_is_valid{{item=\"{name}\"}} " + ((bool)data.Emeters2IsValid ? 1 : 0));
if (data.Emeters2Total != null)
sb.AppendLine($"emeters_2_total{{item=\"{name}\"}} " + data.Emeters2Total);
if (data.Emeters2TotalReturned != null)
sb.AppendLine($"emeters_2_total_returned{{item=\"{name}\"}} " + data.Emeters2TotalReturned);
if (data.Emeters3Power != null)
sb.AppendLine($"emeters_3_power{{item=\"{name}\"}} " + data.Emeters3Power);
if (data.Emeters3Pf != null)
sb.AppendLine($"emeters_3_pf{{item=\"{name}\"}} " + data.Emeters3Pf);
if (data.Emeters3Current != null)
sb.AppendLine($"emeters_3_current{{item=\"{name}\"}} " + data.Emeters3Current);
if (data.Emeters3Voltage != null)
sb.AppendLine($"emeters_3_voltage{{item=\"{name}\"}} " + data.Emeters3Voltage);
if (data.Emeters3IsValid != null)
sb.AppendLine($"emeters_3_is_valid{{item=\"{name}\"}} " + ((bool)data.Emeters3IsValid ? 1 : 0));
if (data.Emeters3Total != null)
sb.AppendLine($"emeters_3_total{{item=\"{name}\"}} " + data.Emeters3Total);
if (data.Emeters3TotalReturned != null)
sb.AppendLine($"emeters_3_total_returned{{item=\"{name}\"}} " + data.Emeters3TotalReturned);
return sb; return sb;
} }
@@ -116,6 +182,58 @@ namespace ShellyExporter
return data; return data;
} }
private static async Task<Data> Get3EmGen1(string path)
{
var data = new Data();
var client = new HttpClient();
var response = await client.GetStringAsync(path + "/status");
dynamic responseObject = JsonConvert.DeserializeObject<dynamic>(response);
if (responseObject == null)
return data;
if (responseObject.total_power != null)
{
data.Total = responseObject.total_power;
}
if (responseObject.emeters != null)
{
data.Emeters1Power = responseObject.emeters[0].power;
data.Emeters1Pf = responseObject.emeters[0].pf;
data.Emeters1Current = responseObject.emeters[0].current;
data.Emeters1Voltage = responseObject.emeters[0].voltage;
data.Emeters1IsValid = responseObject.emeters[0].is_valid;
data.Emeters1Total = responseObject.emeters[0].total;
data.Emeters1TotalReturned = responseObject.emeters[0].total_returned;
}
if (responseObject.emeters != null)
{
data.Emeters2Power = responseObject.emeters[1].power;
data.Emeters2Pf = responseObject.emeters[1].pf;
data.Emeters2Current = responseObject.emeters[1].current;
data.Emeters2Voltage = responseObject.emeters[1].voltage;
data.Emeters2IsValid = responseObject.emeters[1].is_valid;
data.Emeters2Total = responseObject.emeters[1].total;
data.Emeters2TotalReturned = responseObject.emeters[1].total_returned;
}
if (responseObject.emeters != null)
{
data.Emeters3Power = responseObject.emeters[2].power;
data.Emeters3Pf = responseObject.emeters[2].pf;
data.Emeters3Current = responseObject.emeters[2].current;
data.Emeters3Voltage = responseObject.emeters[2].voltage;
data.Emeters3IsValid = responseObject.emeters[2].is_valid;
data.Emeters3Total = responseObject.emeters[2].total;
data.Emeters3TotalReturned = responseObject.emeters[2].total_returned;
}
return data;
}
private static async Task<Data> GetPlugSGen2(string path) private static async Task<Data> GetPlugSGen2(string path)
{ {
var data = new Data(); var data = new Data();

View File

@@ -10,15 +10,21 @@
"Url": "http://192.168.111.77:5050" "Url": "http://192.168.111.77:5050"
}, },
"Hosts": { "Hosts": {
"server": { //"server": {
"ip": "192.168.1.60", // "ip": "192.168.1.60",
"type": 1, // "type": 1,
"version" : 1 // "version": 1
}, //},
"bojler": { //"bojler": {
"ip": "192.168.1.61", // "ip": "192.168.1.61",
"type": 1, // "type": 1,
"version" : 2 // "version": 2
//},
"pumpa": {
"ip": "192.168.1.64",
"type": 2,
"version": 1
} }
} }
} }