summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--node.d/fronius.node.js11
-rw-r--r--tests/node.d/fronius.chart.spec.js2
-rw-r--r--tests/node.d/fronius.parse.spec.js26
3 files changed, 37 insertions, 2 deletions
diff --git a/node.d/fronius.node.js b/node.d/fronius.node.js
index 7aa2c13b71..bb83099cdf 100644
--- a/node.d/fronius.node.js
+++ b/node.d/fronius.node.js
@@ -24,6 +24,7 @@ var fronius = {
consumptionLoadId: "p_load",
autonomyId: "rel_autonomy",
consumptionSelfId: "rel_selfconsumption",
+ solarConsumptionId: "solar_consumption",
energyTodayId: "e_day",
energyYearId: "e_year",
@@ -101,6 +102,7 @@ var fronius = {
var dim = {};
dim[fronius.autonomyId] = this.createBasicDimension(fronius.autonomyId, "autonomy", 1);
dim[fronius.consumptionSelfId] = this.createBasicDimension(fronius.consumptionSelfId, "self_consumption", 1);
+ dim[fronius.solarConsumptionId] = this.createBasicDimension(fronius.solarConsumptionId, "solar_consumption", 1);
chart = {
id: id, // the unique id of the chart
@@ -255,10 +257,17 @@ var fronius = {
parseAutonomyChart: function (service, site) {
var selfConsumption = site.rel_SelfConsumption;
+ var solarConsumption = 0;
+ var load = Math.abs(site.P_Load);
+ var power= Math.max(site.P_PV, 0);
+ if (load >= power) solarConsumption = 100;
+ else if (power <= 0) solarConsumption = 0;
+ else solarConsumption = 100 / power * load;
return this.getChart(this.getSiteAutonomyChart(service, "autonomy"),
[
this.getDimension(this.autonomyId, Math.round(site.rel_Autonomy)),
- this.getDimension(this.consumptionSelfId, Math.round(selfConsumption === null ? 100 : selfConsumption))
+ this.getDimension(this.consumptionSelfId, Math.round(selfConsumption === null ? 100 : selfConsumption)),
+ this.getDimension(this.solarConsumptionId, Math.round(solarConsumption))
]
);
},
diff --git a/tests/node.d/fronius.chart.spec.js b/tests/node.d/fronius.chart.spec.js
index 5404e82f58..2d2b57cded 100644
--- a/tests/node.d/fronius.chart.spec.js
+++ b/tests/node.d/fronius.chart.spec.js
@@ -68,7 +68,7 @@ describe("fronius chart creation", function () {
expect(result.type).toBe(netdata.chartTypes.area);
expect(result.family).toBe("autonomy");
expect(result.context).toBe("fronius.autonomy");
- expect(Object.keys(result.dimensions).length).toBe(2);
+ expect(Object.keys(result.dimensions).length).toBe(3);
expect(result.dimensions[subject.autonomyId].name).toBe("autonomy");
expect(result.dimensions[subject.consumptionSelfId].name).toBe("self_consumption");
});
diff --git a/tests/node.d/fronius.parse.spec.js b/tests/node.d/fronius.parse.spec.js
index 9c371ad98a..facd9ce041 100644
--- a/tests/node.d/fronius.parse.spec.js
+++ b/tests/node.d/fronius.parse.spec.js
@@ -234,6 +234,32 @@ describe("fronius parsing for autonomy", function () {
expect(result.name).toBe(subject.consumptionSelfId);
expect(result.value).toBe(0);
});
+
+ it("should return 0 for solarConsumption if PV is null", function () {
+ site.P_PV = null;
+ var result = subject.parseAutonomyChart(service, site).dimensions[2];
+
+ expect(result.name).toBe(subject.solarConsumptionId);
+ expect(result.value).toBe(0);
+ });
+
+ it("should return 100 for solarConsumption if Load is higher than solar power", function () {
+ site.P_PV = 500;
+ site.P_Load = -1500;
+ var result = subject.parseAutonomyChart(service, site).dimensions[2];
+
+ expect(result.name).toBe(subject.solarConsumptionId);
+ expect(result.value).toBe(100);
+ });
+
+ it("should return 50 for solarConsumption if Load is half than solar power", function () {
+ site.P_PV = 3000;
+ site.P_Load = -1500;
+ var result = subject.parseAutonomyChart(service, site).dimensions[2];
+
+ expect(result.name).toBe(subject.solarConsumptionId);
+ expect(result.value).toBe(50);
+ });
});
describe("fronius parsing for energy", function () {