Skip to content

Instantly share code, notes, and snippets.

@stritti
Last active June 21, 2023 06:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stritti/ed73210dbe3073bceab63288304b0654 to your computer and use it in GitHub Desktop.
Save stritti/ed73210dbe3073bceab63288304b0654 to your computer and use it in GitHub Desktop.
Script to upload Kostal Plenticore Data from openHAB to PVoutput
var { QuantityType } = require("@runtime");
var HttpUtil = Java.type("org.openhab.core.io.net.http.HttpUtil");
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
var headerProperty = Java.type("java.util.Properties");
var pvoutputApiKey = "[xxx]";
var pvoutputSystemId = "[xxx]";
var itemName = "KOSTALPLENTICOREPlus85withBattery";
var url ="https://pvoutput.org/service/r2/addoutput.jsp";
var contentType = "application/x-www-form-urlencoded";
var generated = Math.round(Number.parseFloat(items.getItem("KOSTALPLENTICOREPlus85withBattery_YieldDay").state) * 1000);
var consumption = Math.round(Number.parseFloat(items.getItem("KOSTALPLENTICOREPlus85withBattery_HomeConsumptionDay").state) * 1000);
var consumption_grid = Math.round(Number.parseFloat(items.getItem("KOSTALPLENTICOREPlus85withBattery_HomeConsumptionGridDay").state) * 1000);
var consumption_battery = Math.round(Number.parseFloat(items.getItem("KOSTALPLENTICOREPlus85withBattery_HomeConsumptionBatteryDay").state) * 1000);
var consumption_pv = Math.round(Number.parseFloat(items.getItem("KOSTALPLENTICOREPlus85withBattery_HomeConsumptionPVDay").state) * 1000);
var exported = Math.round(generated - consumption_pv - consumption_battery);
logger.warn('PVOutput: Generated: ' + generated + ' Export: ' + exported + ' Consumption=' + consumption);
var headerProperty = new headerProperty();
headerProperty.put("X-Pvoutput-Apikey", pvoutputApiKey);
headerProperty.put("X-Pvoutput-SystemId", pvoutputSystemId);
var rightNow = new Date();
var d = rightNow.toISOString().slice(0,10).replace(/-/g,"");
var content = "data=" + d + "," + generated + "," + exported + ",,,,,,OpenHAB Script," + consumption_grid + ",,,," + consumption;
logger.warn("PVOutput: Content: " + content);
var inputStream = new java.io.ByteArrayInputStream(content.getBytes("UTF-8"));
var output = HttpUtil.executeUrl("POST", url, headerProperty, inputStream, contentType, 10000);
logger.warn("PVOutput: HTTP response: " + output);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment