Last active
June 21, 2023 06:03
-
-
Save stritti/ed73210dbe3073bceab63288304b0654 to your computer and use it in GitHub Desktop.
Script to upload Kostal Plenticore Data from openHAB to PVoutput
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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