- Platform information:
- Hardware: Raspberry Pi
- OS: Openhabian
- Java Runtime Environment: zulu-embedded-8-armhf
- openHAB version: OH 2.4 M7
- Issue of the topic: sendHttpGetRequest not working under OH 2.4 M7
I have the following problem, I updated my Openhabian from version 2.3 stable to 2.4 Snapshot M7 because of problems with homematicbinding. Unfortunately my script for querying the data from my decalcifier no longer works.
Under version 2.3 it worked perfectly
The script is as follows:
val String BENUTZER= "USER"
val String PASSWORD= "PW"
val String GERAETEID= "XXXXXX"
val String JUDOIP= "192.168.178.28"
val String PORT= "8124"
rule "Judo"
when
Item residual_hardness_setpoint changed or
Item watervalveswitch changed or
Time is midnight or
Time is noon
then
logInfo("Judo","1")
var String tokenjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=register&command=login&msgnumber=2&name=login&user=" + BENUTZER + "&password=" + PASSWORD + "&role=customer")
logInfo("Judo","2")
var String TOKEN = transform("JSONPATH", "$.token", tokenjson)
logInfo("Judo","3")
var String loginjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=register&command=connect&msgnumber=5&token=" + TOKEN + "¶meter=i-soft%20plus&serial%20number=" + GERAETEID)
logInfo("Judo","4")
var String LOGINSTATUS = transform("JSONPATH", "$.status", loginjson)
if (LOGINSTATUS == "ok")
{
logInfo("Judo","Login erfolgreich")
var String wcjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=consumption&command=water%20current&msgnumber=1&token=" + TOKEN )
var String var_water_current = transform("JSONPATH", "$.data", wcjson)
water_current.postUpdate(var_water_current)
var String wtjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=consumption&command=water%20total&msgnumber=1&token=" + TOKEN )
var String var_water_total = transform("JSONPATH", "$.data", wtjson)
var Number var_rawwater = Float::parseFloat(var_water_total.split(" ").get(1))
var Number var_decarbonatedwater = Float::parseFloat(var_water_total.split(" ").get(2))
water_total.postUpdate(var_water_total)
rawwater.postUpdate(var_rawwater)
decarbonatedwater.postUpdate(var_decarbonatedwater)
var String wajson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=consumption&command=water%20average&msgnumber=1&token=" + TOKEN )
var String var_water_average = transform("JSONPATH", "$.data", wajson)
water_average.postUpdate(var_water_average)
var String aqjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=consumption&command=actual%20quantity&msgnumber=1&token=" + TOKEN )
var String var_actual_quantity = transform("JSONPATH", "$.data", aqjson)
actual_quantity.postUpdate(var_actual_quantity)
var String sqjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=consumption&command=salt%20quantity&msgnumber=1&token=" + TOKEN )
var String var_salt_quantity = transform("JSONPATH", "$.data", sqjson)
salt_quantity.postUpdate(var_salt_quantity)
var String srjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=consumption&command=salt%20range&msgnumber=1&token=" + TOKEN )
var String var_salt_range = transform("JSONPATH", "$.data", srjson)
salt_range.postUpdate(var_salt_range)
var String rhjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=settings&command=residual%20hardness&msgnumber=1&token=" + TOKEN )
var String var_residual_hardness = transform("JSONPATH", "$.data", rhjson)
residual_hardness.postUpdate(var_residual_hardness)
var String nhjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=settings&command=residual%20hardness&msgnumber=1&token=" + TOKEN )
var String var_natural_hardness = transform("JSONPATH", "$.data", nhjson)
natural_hardness.postUpdate(var_natural_hardness)
var String vajson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=waterstop&command=valve&msgnumber=1&token=" + TOKEN )
var String var_valve = transform("JSONPATH", "$.data", vajson)
valve.postUpdate(var_valve)
var String wwjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=consumption&command=water%20weekly&msgnumber=1&token=" + TOKEN + "&year=%3CYEAR%3E&month=%3CMONTH%3E&day=%3CDAY%3E")
var String var_water_weekly = transform("JSONPATH", "$.data", wwjson)
var Number var_mon = Float::parseFloat(var_water_weekly.split(" ").get(1))
var Number var_tue = Float::parseFloat(var_water_weekly.split(" ").get(2))
var Number var_wed = Float::parseFloat(var_water_weekly.split(" ").get(3))
var Number var_thu = Float::parseFloat(var_water_weekly.split(" ").get(4))
var Number var_fri = Float::parseFloat(var_water_weekly.split(" ").get(5))
var Number var_sat = Float::parseFloat(var_water_weekly.split(" ").get(6))
var Number var_sun = Float::parseFloat(var_water_weekly.split(" ").get(7))
water_weekly.postUpdate(var_water_weekly)
watermon.postUpdate(var_mon)
watertue.postUpdate(var_tue)
waterwed.postUpdate(var_wed)
waterthu.postUpdate(var_thu)
waterfri.postUpdate(var_fri)
watersat.postUpdate(var_sat)
watersun.postUpdate(var_sun)
var String wyjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=consumption&command=water%20yearly&msgnumber=1&token=" + TOKEN + "&year=%3CYEAR%3E")
var String var_water_yearly = transform("JSONPATH", "$.data", wyjson)
var Number var_jan = Float::parseFloat(var_water_yearly.split(" ").get(1))
var Number var_feb = Float::parseFloat(var_water_yearly.split(" ").get(2))
var Number var_mar = Float::parseFloat(var_water_yearly.split(" ").get(3))
var Number var_apr = Float::parseFloat(var_water_yearly.split(" ").get(4))
var Number var_mai = Float::parseFloat(var_water_yearly.split(" ").get(5))
var Number var_jun = Float::parseFloat(var_water_yearly.split(" ").get(6))
var Number var_jul = Float::parseFloat(var_water_yearly.split(" ").get(7))
var Number var_aug = Float::parseFloat(var_water_yearly.split(" ").get(8))
var Number var_sep = Float::parseFloat(var_water_yearly.split(" ").get(9))
var Number var_okt = Float::parseFloat(var_water_yearly.split(" ").get(10))
var Number var_nov = Float::parseFloat(var_water_yearly.split(" ").get(11))
var Number var_dez = Float::parseFloat(var_water_yearly.split(" ").get(12))
water_yearly.postUpdate(var_water_yearly)
waterjan.postUpdate(var_jan)
waterfeb.postUpdate(var_feb)
watermar.postUpdate(var_mar)
waterapr.postUpdate(var_apr)
watermai.postUpdate(var_mai)
waterjun.postUpdate(var_jun)
waterjul.postUpdate(var_jul)
wateraug.postUpdate(var_aug)
watersep.postUpdate(var_sep)
waterokt.postUpdate(var_okt)
waternov.postUpdate(var_nov)
waterdez.postUpdate(var_dez)
if (residual_hardness_setpoint.state != residual_hardness)
{
var String rhsjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=settings&command=residual%20hardness&msgnumber=1&token=" + TOKEN + "¶meter=" + residual_hardness_setpoint.state )
var String var_residual_hardness_status = transform("JSONPATH", "$.status", rhsjson)
if ( var_residual_hardness_status == "ok")
{
var String var_residual_hardness_setpoint = transform("JSONPATH", "$.parameter", rhsjson)
residual_hardness.postUpdate(var_residual_hardness_setpoint)
residual_hardness_setpoint.postUpdate(var_residual_hardness_setpoint)
}
}
if (watervalveswitch.state == ON && valve.state.toString.contains("opened"))
{
var String vsjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=waterstop&command=valve&msgnumber=1&token=" + TOKEN + "¶meter=close")
logInfo("Judo","Wassersperrventil GESCHLOSSEN")
}
if (watervalveswitch.state == OFF && valve.state.toString.contains("closed"))
{
var String vsjson = sendHttpGetRequest("https://"+ JUDOIP +":" + PORT + "?group=waterstop&command=valve&msgnumber=1&token=" + TOKEN + "¶meter=open")
logInfo("Judo","Wassersperrventil OFFEN")
}
}
end
I get the following error message during execution:
2018-12-06 15:57:41.011 [INFO ] [.eclipse.smarthome.model.script.Judo] - 1
2018-12-06 15:57:41.940 [ERROR] [.smarthome.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Delegated task threw Exception/Error
2018-12-06 15:57:41.945 [INFO ] [.eclipse.smarthome.model.script.Judo] - 2
2018-12-06 15:57:41.950 [INFO ] [.eclipse.smarthome.model.script.Judo] - 3
2018-12-06 15:57:42.277 [ERROR] [.smarthome.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Delegated task threw Exception/Error
2018-12-06 15:57:42.280 [INFO ] [.eclipse.smarthome.model.script.Judo] - 4
If I e.g. read the token via the httpbinding it works.
Example item:
String Judotoken "Token der Judoanlage" { http="<[https://192.168.178.28:8124/?group=register&command=login&msgnumber=1&name=login&user=USER&password=PW&role=customer:600000:JSONPATH($.token)]" }
Result in Logs
2018-12-06 16:00:59.256 [vent.ItemStateChangedEvent] - Judotoken changed from 0e9850c6f39da0326903ab02f131c3c41467190b4d2e8c786ac53f0f9b6f1906 to 3f32a97e46408e305658aaa180ca12bd50612e1c0026bd6a34e3566c20aa1cb5
If you fire the link via a Webbroser you will get this result
{"group":"register","command":"login","msgnumber":"1","name":"login","user":"USER","password":"*","role":"customer","status":"ok","token":"f61078d5d8801e19edc01c5e634771f72f9f8b9fb21350579f4b875d8c33cbfb"}