You seem to have two batteries bdc1 and bdc2 whose data are alalgamated by the bms battery management system. Can you please explain what is going on?
I have 1 APX Battery System (1 BMS and 4 Modules).
The inverter can handle a second BDC (second APX Battery System) => not installed.
Thats the log data (Trace):
…
\"bdconoffstate\": 1, \"drycontactstate\": 0, \"edischrtoday\": 84, \"edischrtotal\": 2213, \"echrtoday\": 109, \"echrtotal\": 3438, \"eacchrtoday\": 4, \"eacchrtotal\": 70, \"priority\": 0, \"epsfac\": 0, \"epsvac1\": 0, \"epsiac1\": 0, \"epspac1\": 0, \"epsvac2\": 0, \"epsiac2\": 0, \"epspac2\": 0, \"epsvac3\": 0, \"epsiac3\": 0, \"epspac3\": 0, \"epspac\": 0, \"loadpercent\": 0, \"pf\": 10000, \"dcv\": 0, \"bdc1_sysstatemode\": 513, \"bdc1_faultcode\": 0, \"bdc1_warncode\": 0, \"bdc1_vbat\": 6479, \"bdc1_ibat\": 65487, \"bdc1_soc\": 16, \"bdc1_vbus1\": 6479, \"bdc1_vbus2\": 3241, \"bdc1_ibb\": 82, \"bdc1_illc\": 7, \"bdc1_tempa\": 453, \"bdc1_tempb\": 363, \"bdc1_pdischr\": 31980, \"bdc1_pchr\": 0, \"bdc1_edischrtotal\": 2213, \"bdc1_echrtotal\": 3438, \"bdc1_flag\": 3, \"bdc2_sysstatemode\": 17, \"bdc2_faultcode\": 9, \"bdc2_warncode\": 270, \"bdc2_vbat\": 306, \"bdc2_ibat\": 229, \"bdc2_soc\": 19, \"bdc2_vbus1\": 49, \"bdc2_vbus2\": 17, \"bdc2_ibb\": 16, \"bdc2_illc\": 4, \"bdc2_tempa\": 0, \"bdc2_tempb\": 394, \"bdc2_pdischr\": 26214400, \"bdc2_pchr\": 0, \"bdc2_edischrtotal\": 0, \"bdc2_echrtotal\": 720896000, \"bdc2_flag\": 0, \"bms_status\": 2, \"bms_error\": 0, \"bms_warninfo\": 0, \"bms_soc\": 16, \"bms_batteryvolt\": 3706, \"bms_batterycurr\": 65450, \"bms_batterytemp\": 0, \"bms_maxcurr\": 2200, \"bms_deltavolt\": 2200, \"bms_cyclecnt\": 0, \"bms_soh\": 99, \"bms_constantvolt\": 568, \"bms_bms_info\": 464, \"bms_packinfo\": 0, \"bms_usingcap\": 0, \"bms_fw\": 1400, \"bms_mcuversion\": 0, \"bms_commtype\": 1}
Task: Implement growatt.Actions
Code:
rule "MAX_SOC und MIN_SOC Aenderung 01"
when
Time cron "0 10 0 ? * * *"
then
val growattActions = getActions("growatt", "growatt:inverter:111c355902:KLN0D6L034")
logInfo("Rules", "VAL growattActions: {} ",growattActions)
if (growattActions === null)
{
logWarn("Rules", "growattActions is null")
}
else
{
val startTime = "19:45"
val stopTime = "20:00"
val programEnable = true
var targetSOC = 100
if ((Klessow_SOC_Growatt.state as Number).intValue < 23 )
{
targetSOC = (Klessow_SOC_Growatt.state as Number).intValue + 10
growattActions.setupChargingProgram(chargingPower,targetSOC,allowAcCharging, startTime,stopTime,programEnable)
logInfo("Rules", "Setup Charging Program:{chargingPower:" + chargingPower + ", targetSOC:" + targetSOC + ", allowAcCharging:" +
allowAcCharging + ",programEnable:" + programEnable +"}")
}
}
end
Result:
19:42:41.293 [INFO ] [org.openhab.core.model.script.Rules ] - Setup Charging Program:{chargingPower:10, targetSOC:28, allowAcCharging:true,programEnable:true}
19:42:46.092 [INFO ] [org.openhab.core.model.script.Rules ] - VAL growattActions: org.openhab.binding.growatt.internal.action.GrowattActions@762c435c
19:42:46.098 [WARN ] [tty.util.ssl.SslContextFactory.config] - Trusting all certificates configured for Client@7eb1cdff[provider=null,keyStore=null,trustStore=null]
19:42:46.102 [WARN ] [tty.util.ssl.SslContextFactory.config] - No Client EndPointIdentificationAlgorithm configured for Client@7eb1cdff[provider=null,keyStore=null,trustStore=null]
19:42:46.224 [TRACE] [g.growatt.internal.cloud.GrowattCloud] - doHttpRequestInner() response:{"back":{"msg":"","totalData":{},"data":[{"plantId":"2332185","plantName":"PV Klessow"}],"deviceCount":"7","isOpenDeviceList":1,"quality":"0","isCheckUserAuth":true,"isEicUserAddSmartDevice":true,"isOpenDeviceParams":0,"isViewDeviceInfo":false,"success":true,"service":"1","user":{"agentCode":"EARGDB","phoneNum":"01759250199","cpowerToken":"90c462a4be3a23971194e3c1feb480c9","type":2,"vipPoints":10,"approved":false,"password":"f26fb97be71389ffd6c06a42868475c0","rightlevel":1,"isAgent":0,"userIconPath":"","serverUrl":"","inverterList":[],"id":2499747,"lat":"","area":"Europe","lng":"","kind":0,"nickName":"","parentUserId":0,"timeZone":1,"accountName":"DNeumann23","counrty":"Germany","inverterGroup":[],"customerCode":"","registerType":"0","enabled":true,"lastLoginIp":"79.224.144.134","userLanguage":"en","isBigCustomer":0,"uid":"","userDeviceType":-1,"installerEnable":"1","appType":"","company":"","isValiPhone":1,"appAlias":"","email":"DNeumann23@googlemail.com","createDate":"2023-11-11 15:24:01","activeName":"","roleId":0,"smsNotice":false,"wxOpenid":"","noticeType":"","isPhoneNumReg":0,"isValiEmail":1,"token":"","lastLoginTime":"2023-12-30 02:42:46","mailNotice":true,"cpowerAuth":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJjbGllbnQiLCJ1c2VyX2lwIjoiIiwidXNlcl9pZCI6IkROZXVtYW5uMjMiLCJpc3MiOiJxaC5zei50bGQiLCJleHAiOjE3MDM4Nzg5NjYsImlhdCI6MTcwMzg3NTM2NiwibWFjX2lkIjoiIn0.I01amO27pxeYmTPwgCXU0DuS_jJDNlosw6taeTa4wdI","accountNameOss":"DNeumann23","dataAcqList":[],"distributorEnable":"1","codeIndex":1},"isOpenSmartFamily":0,"app_code":"1"}}
19:42:46.255 [WARN ] [ternal.handler.GrowattInverterHandler] - setupChargingProgram() error
org.openhab.binding.growatt.internal.cloud.GrowattApiException: HTTP 500 Server Error
@DirkNeumann to interpret my following answers it may help if you take a look at the SOURCE CODE which shows the synonyms between your inverter field names and the respective channels in OH.
This synonym maps to the Import Power channel (negative means export)
This comes from your inverter field synonym epv1today
Intentionally omitted. Maybe add in step 2.
I will omit that channel. Maybe add another channel in step 2.
Exactly as reported by your inverter synonym field temp4
.
Exactly as reported by your inverter synonym field bms_batterytemp
.
Do you mean your inverter synonym field pvpowerout
? If so, I implemented a work around for the integer overflow. And it maps to the channel is Inverter Power (minus means consumption)
The battery data is complex. If you look at your inverter fields there are bdc1_
, bdc2_
and bms_
fields. The latter bms_
should be the amalgamation of the bdcN_
fields. However in reality it doesn’t amalgamate that well. It is hard to know what to do in your case.
The response is confusing – it contains the following elements "success":true
, "approved":false
but it returned HTTP 500 rather than HTTP 200 (for success) or HTTP 401 (for unauthorized). Can you please check two things.
- If you did indeed have the correct credentials?
- If (notwithstanding the 500 error) the charging parameters did nevertheless get changed?
Otherwise the next step probably will require you to set up a network sniffer to observe an actual successful command from your browser (or the shine app) versus a non successful command from OH. But I warn that this is not a trivial task for you. Or – even less trivial – you might share your credentials with me, and we can perhaps have a voice call where you can talk me through such a test…
Blockquote The battery data is complex. If you look at your inverter fields there are
bdc1_
,bdc2_
andbms_
fields. The latterbms_
should be the amalgamation of thebdcN_
fields. However in reality it doesn’t amalgamate that well. It is hard to know what to do in your case.
Here the correct values for a Growatt MID/MOD/MIN KTL3 XH (BP) System with APX Batteries connected.
Type number : bms_soc "Klessow_SOC" [stateTopic="energy/growatt", transformationPattern="JSONPATH:$.values.bms_soc"] //SOC (Mean Value for complete Battery (4 single modules)
Type number : bdc1_pdischr "BAT_Entladeleistung" [stateTopic="energy/growatt", transformationPattern="JSONPATH:$.values.bdc1_pdischr"]
Type number : bdc1_pchr "BAT_Ladeleistung" [stateTopic="energy/growatt", transformationPattern="JSONPATH:$.values.bdc1_pchr"]
Type number : edischrtoday "BAT_Entladung_Today" [stateTopic="energy/growatt", transformationPattern="JSONPATH:$.values.edischrtoday"] //Discharge energy today
Type number : echrtoday "BAT_Ladung_Today" [stateTopic="energy/growatt", transformationPattern="JSONPATH:$.values.echrtoday"] // Charge energy today Gesamt
Type number : eacchrtoday "BAT_Ladung_Today_AC" [stateTopic="energy/growatt", transformationPattern="JSONPATH:$.values.eacchrtoday"] // Charge energy today aus AC
Type number : edischrtotal "BAT_Entladung_Total" [stateTopic="energy/growatt", transformationPattern="JSONPATH:$.values.edischrtotal"]
Type number : echrtotal "BAT_Ladung_Total" [stateTopic="energy/growatt", transformationPattern="JSONPATH:$.values.echrtotal"]
What is the source of this info?
- If you did indeed have the correct credentials?
Maybe not. As I said your thing ask for 4 different data.
I am not sure about “User Id”
- If (notwithstanding the 500 error) the charging parameters did nevertheless get changed?
No, the Growatt System is not changing its behaviour. I cant’ see any changes in the values at Growatt Server side.
I would like to set BATT_FIRST with SOC_MAX=specified (actual) SOC and LOAD_FIRST with 100% SOC based on rules (like wait for PV power > Load Power etc.)
userId and plantId are numbers that identify you and your plant respectively. So the texts you show in your screenshot are not correct. However they are not required for this application. So that is not the cause of the error.
I compared the HTTP response from your system against mine. The command sequence comprises two HTTP calls: The first call is to login, which succeeds with HTTP 200 and gives the Json response which you posted in your log. The second call is to actually (try to) set the new battery program, and this fails with HTTP 500 and apparently no response content is logged.
@DirkNeumann perhaps you need to declare the variable types specifically in your rule. Below is the working rule from my operative system…
rule "22: Setup Solar Battery Charging Program"
when
Time cron "0 10 0 ? * * *"
then
val growattActions = getActions("growatt", "growatt:inverter:g24:KUM0CLU03Y")
if (growattActions === null) {
logWarn("Rules", "growattActions is null")
} else {
// fixed algorithm parameters
val Integer chargingPower = 23
val boolean allowAcCharging = true
val String startTime = "00:20"
val String stopTime = "07:00"
val boolean programEnable = true
val Integer batteryFull = 6500
val Integer batteryMin = 500
val Integer daylightConsumption = 10000
val Integer maximumSOC = 100
val Integer minimumSOC = 20
// variable algorithm parameters
val Double solarForecast = (ForecastSolar_PV_Whole_Site_Forecast_Today.state as QuantityType<Energy>).toUnit("Wh").doubleValue()
var Double targetSOC = (100 * (batteryMin + daylightConsumption - solarForecast)) / batteryFull
if (targetSOC > maximumSOC) {
targetSOC = maximumSOC
} else if (targetSOC < minimumSOC) {
targetSOC = minimumSOC
}
logInfo("Rules", "Setup Charging Program:{solarForecast:" + solarForecast + ", chargingPower:" + chargingPower + ", targetSOC:" + targetSOC + ", allowAcCharging:" + allowAcCharging + ", startTime:" + startTime + ", stopTime:" + stopTime + ", programEnable:" + programEnable +"}")
growattActions.setupChargingProgram(chargingPower, targetSOC, allowAcCharging, startTime, stopTime, programEnable)
}
end
EDIT @DirkNeumann I also just uploaded a new Jar (same link as before) that improves the logging to possibly help explain the problem.
@DirkNeumann is your inverter an AC coupled inverter or a hybrid mix inverter? If it is the former, then the charging / discharging program set commands probably need to be sent to a different API endpoint.
Hi Andrew,
The APX battery is coupled via DC connection to the MID 15KTL3 XH inverter. Both are Growatt products. CAN 2.0 data connection. DC+, DC- and N electrical connection.
That does not answer my question. There are two types of inverter — namely DC coupled (also known as hybrid or mix inverters) or AC coupled. This has nothing to do with the batteries which are obviously always DC in both cases.
A DC connected/coupled battery requires a „Hybrid“ PV inverter. I also sent you the Growatt naming of this product.
AC power ist 15kW, DC PV power is 850V/15A per MPP and DC depending on connecting batteries (10kW permanent charge/discharge and 20kW Peak for 60seconds (limited by battery chemistry and heat dissipation (0,5C wir 1C peak).
Exactly! I am asking if your inverter is an AC coupled or DC coupled/Hybrid inverter. You battery is (obviously) a DC battery (there can be no such thing as an AC battery). I am not asking that question. I am asking you if the battery inverter core is coupled to the solar inverter core on the internal DC bus or on the AC bus.
EDIT: the reason why I am asking this, is that a DC coupled / hybrid inverter (like mine) has the battery inverter core not directly connected to the AC bus, and therefore when sending a battery charge program the request requires an extra ‘allowAcCharging’ parameter in the HTTP POST command in order to tell it whether or not to allow back charging from the AC supply. And since your test command failed, I am guessing that your system did not like this ‘allowAcCharging’ parameter because its battery inverter core IS directly connected to the AC bus, and therefore such parameter would be inappropriate for such a system (and would probably therefore return an HTTP 500 error).
EDIT 2: but maybe an easier question is whether you see that field in the Shine App or not?
Happy New Year Andrew,
so I tried to declare types of variables as your example gives the following result:
(Does this function is intended to work WITHOUT Grottserver installed (only have Grott installed at the moment)?
Result ist still “500” but maybe it is related to this second warning “No Client EndPoint…”?
16:21:42.289 [INFO ] [org.openhab.core.model.script.Rules ] - VAL growattActions: org.openhab.binding.growatt.internal.action.GrowattActions@529dfc81
16:21:42.298 [WARN ] [tty.util.ssl.SslContextFactory.config] - Trusting all certificates configured for Client@5ee4c4ca[provider=null,keyStore=null,trustStore=null]
16:21:42.304 [WARN ] [tty.util.ssl.SslContextFactory.config] - No Client EndPointIdentificationAlgorithm configured for Client@5ee4c4ca[provider=null,keyStore=null,trustStore=null]
16:21:42.443 [TRACE] [g.growatt.internal.cloud.GrowattCloud] - doHttpRequestInner() response:{"back":{"msg":"","totalData":{},"data":[{"plantId":"2332185","plantName":"PV Klessow"}],"deviceCount":"7","isOpenDeviceList":1,"quality":"0","isCheckUserAuth":true,"isEicUserAddSmartDevice":true,"isOpenDeviceParams":0,"isViewDeviceInfo":false,"success":true,"service":"1","user":{"agentCode":"EARGDB","phoneNum":"01759250199","cpowerToken":"XXXX","type":2,"vipPoints":10,"approved":false,"password":"XXXX","rightlevel":1,"isAgent":0,"userIconPath":"","serverUrl":"","inverterList":[],"id":2499747,"lat":"","area":"Europe","lng":"","kind":0,"nickName":"","parentUserId":0,"timeZone":1,"accountName":"DNeumann23","counrty":"Germany","inverterGroup":[],"customerCode":"","registerType":"0","enabled":true,"lastLoginIp":"79.224.158.161","userLanguage":"en","isBigCustomer":0,"uid":"","userDeviceType":-1,"installerEnable":"1","appType":"","company":"","isValiPhone":1,"appAlias":"","email":"DNeumann23@googlemail.com","createDate":"2023-11-11 15:24:01","activeName":"","roleId":0,"smsNotice":false,"wxOpenid":"","noticeType":"","isPhoneNumReg":0,"isValiEmail":1,"token":"","lastLoginTime":"2024-01-01 23:21:42","mailNotice":true,"cpowerAuth":"XXXXX","accountNameOss":"XXXXXXX","dataAcqList":[],"distributorEnable":"1","codeIndex":1},"isOpenSmartFamily":0,"app_code":"1"}}
16:21:42.474 [WARN ] [ternal.handler.GrowattInverterHandler] - setupChargingProgram() error
Rule code here:
rule "MAX_SOC und MIN_SOC Aenderung 01"
when
Item Growatt_Inverterleistung changed
then
val growattActions = getActions("growatt", "growatt:inverter:111c355902:KLN0D6L034")
logInfo("Rules", "VAL growattActions: {} ",growattActions)
if (growattActions === null)
{
logWarn("Rules", "growattActions is null")
}
else
{
val Integer chargingPower = 10
val boolean allowAcCharging = true
val String startTime = "16:45"
val String stopTime = "23:00"
val boolean programEnable = true
var Double targetSOC = 100
if ((Klessow_SOC_Growatt.state as Number).intValue < 10 )
{
targetSOC = (Klessow_SOC_Growatt.state as Number).intValue + 10
growattActions.setupChargingProgram(chargingPower,targetSOC,allowAcCharging, startTime,stopTime,programEnable)
logInfo("Rules", "Setup Charging Program:{chargingPower:" + chargingPower + ", targetSOC:" + targetSOC + ", allowAcCharging:" +
allowAcCharging + ",programEnable:" + programEnable +"}")
}
}
end
Can you please share the log line which shows the 500 error? NOTE: please use the latest version of the Jar which will given the most details about the HTTP 500 error.
GrottServer is irrelevant.
Here the Trace log:
17:17:22.152 [INFO ] [org.openhab.core.model.script.Rules ] - VAL growattActions: org.openhab.binding.growatt.internal.action.GrowattActions@529dfc81
17:17:22.214 [WARN ] [tty.util.ssl.SslContextFactory.config] - Trusting all certificates configured for Client@274abf46[provider=null,keyStore=null,trustStore=null]
17:17:22.219 [WARN ] [tty.util.ssl.SslContextFactory.config] - No Client EndPointIdentificationAlgorithm configured for Client@274abf46[provider=null,keyStore=null,trustStore=null]
17:17:22.356 [TRACE] [g.growatt.internal.cloud.GrowattCloud] - doHttpRequestInner() response:{"back":{"msg":"","totalData":{},"data":[{"plantId":"2332185","plantName":"PV Klessow"}],"deviceCount":"7","isOpenDeviceList":1,"quality":"0","isCheckUserAuth":true,"isEicUserAddSmartDevice":true,"isOpenDeviceParams":0,"isViewDeviceInfo":false,"success":true,"service":"1","user":{"agentCode":"EARGDB","phoneNum":"01759250199","cpowerToken":"XXX","type":2,"vipPoints":10,"approved":false,"password":"XXXX","rightlevel":1,"isAgent":0,"userIconPath":"","serverUrl":"","inverterList":[],"id":2499747,"lat":"","area":"Europe","lng":"","kind":0,"nickName":"","parentUserId":0,"timeZone":1,"accountName":"DNeumann23","counrty":"Germany","inverterGroup":[],"customerCode":"","registerType":"0","enabled":true,"lastLoginIp":"79.224.159.153","userLanguage":"en","isBigCustomer":0,"uid":"","userDeviceType":-1,"installerEnable":"1","appType":"","company":"","isValiPhone":1,"appAlias":"","email":"DNeumann23@googlemail.com","createDate":"2023-11-11 15:24:01","activeName":"","roleId":0,"smsNotice":false,"wxOpenid":"","noticeType":"","isPhoneNumReg":0,"isValiEmail":1,"token":"","lastLoginTime":"2024-01-03 00:17:22","mailNotice":true,"cpowerAuth":"xx","accountNameOss":"xxxx","dataAcqList":[],"distributorEnable":"1","codeIndex":1},"isOpenSmartFamily":0,"app_code":"1"}}
17:17:22.386 [WARN ] [ternal.handler.GrowattInverterHandler] - setupChargingProgram() error
org.openhab.binding.growatt.internal.cloud.GrowattApiException: HTTP 500 Server Error
at org.openhab.binding.growatt.internal.cloud.GrowattCloud.doHttpRequestInner(GrowattCloud.java:201) ~[?:?]
at org.openhab.binding.growatt.internal.cloud.GrowattCloud.doHttpRequest(GrowattCloud.java:164) ~[?:?]
at org.openhab.binding.growatt.internal.cloud.GrowattCloud.setupChargingProgram(GrowattCloud.java:375) ~[?:?]
at org.openhab.binding.growatt.internal.handler.GrowattInverterHandler.setupChargingProgram(GrowattInverterHandler.java:195) ~[?:?]
at org.openhab.binding.growatt.internal.action.GrowattActions.setupChargingProgram(GrowattActions.java:77) ~[?:?]
at org.openhab.binding.growatt.internal.action.GrowattActions.setupChargingProgram(GrowattActions.java:41) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1192) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1167) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1153) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:1098) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:878) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:243) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:475) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:251) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:488) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:267) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:475) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:251) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:492) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:267) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:475) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:251) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:213) ~[?:?]
at org.openhab.core.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:80) ~[?:?]
at org.openhab.core.model.script.runtime.internal.engine.DSLScriptEngine.eval(DSLScriptEngine.java:137) ~[?:?]
at org.openhab.core.automation.module.script.internal.handler.ScriptActionHandler.lambda$0(ScriptActionHandler.java:71) ~[?:?]
at java.util.Optional.ifPresent(Optional.java:178) [?:?]
at org.openhab.core.automation.module.script.internal.handler.ScriptActionHandler.execute(ScriptActionHandler.java:68) [bundleFile:?]
at org.openhab.core.automation.internal.RuleEngineImpl.executeActions(RuleEngineImpl.java:1188) [bundleFile:?]
at org.openhab.core.automation.internal.RuleEngineImpl.runRule(RuleEngineImpl.java:997) [bundleFile:?]
at org.openhab.core.automation.internal.TriggerHandlerCallbackImpl$TriggerData.run(TriggerHandlerCallbackImpl.java:87) [bundleFile:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
at java.lang.Thread.run(Thread.java:840) [?:?]
17:17:22.402 [WARN ] [org.openhab.core.model.script.Rules ] - Setup Charging Program:{chargingPower:100, targetSOC:26, allowAcCharging:true,programEnable:true}
Many thanks @DirkNeumann … but could you please do it with the newest Jar so that we can see the cause of the 500 error?
Source is my own system connected via Grott and MQTT. Data validation done by external AC meter (shelly EM3)