The problems are not gone that way.
val Number vArraySelected = husqvarnaMowerArraySelected.split("},")
Results in (for “husqvarnaMowerArraySelected.split(”},")"):
Type mismatch: cannot convert from String[] to Number
And:
for (Number i: vArraySelected) {
results in (for “vArraySelected”):
Type mismatch: cannot convert from Number to Iterable<? extends Number> | Number[]
Here is the complete rule, perhaps the issue is somwhere else:
// Husqvarna_Status
rule "Husqvarna Map Display"
when
Item HusqvarnaMowerMapDate changed or
Item Husqvarna_PositionMowingString changed or
Item Husqvarna_Position changed
then
if (HusqvarnaMowerMapDate.toString.contains("TODAY")) {
var String timeRangeEnd = now.toString("yyyy-MM-dd'T'HH:mm:ss.SSS").replace(":","%3A")
var String timeRangeStart = now.toString("yyyy-MM-dd'T'" + "00:00:00.000").replace(":","%3A")
// call REST API to get the JSON object for today
var String mowerArraySelected = sendHttpGetRequest("http://127.0.0.1:8082/rest/persistence/items/Husqvarna_PositionMowingString?starttime=" + timeRangeStart + "&endtime=" + timeRangeEnd)
var String husqvarnaMowerArraySelected = transform("REGEX", ".*\\[(.*)\\].*", mowerArraySelected)
husqvarnaMowerArraySelected = transform("REGEX", "(.*)\\}", husqvarnaMowerArraySelected)
val vArraySelected = husqvarnaMowerArraySelected.split("},")
var googleCoordinatesSelected=""
logInfo("DEBUG","vArraySelected: " + vArraySelected.toString)
for (Number i: vArraySelected) {
var String vCoordinateSelected = transform("JSONPATH", "$.state", i + "}")
googleCoordinatesSelected = googleCoordinatesSelected + '{"lat": ' + vCoordinateSelected.replace(',',', "lng": ') + '},'
}
// remove last comma & store to item
googleCoordinatesSelected = transform("REGEX", "(.*)\\,", googleCoordinatesSelected)
HusqvarnaMowerMapArraySelected.postUpdate("[" + googleCoordinatesSelected + "]")
logInfo("DEBUG","googleCoordinatesSelected: " + googleCoordinatesSelected.toString)
logInfo("DEBUG","HusqvarnaMowerMapArraySelected: " + HusqvarnaMowerMapArraySelected.state.toString)
}
if (HusqvarnaMowerMapDate.toString.contains("YESTERDAY")) {
var String timeRangeEnd = now.minusDays(1).toString("yyyy-MM-dd'T'" + "23:59:59.999").replace(":","%3A")
var String timeRangeStart = now.minusDays(1).toString("yyyy-MM-dd'T'" + "00:00:00.000").replace(":","%3A")
// call REST API to get the JSON object for yesterday
var String mowerArraySelected = sendHttpGetRequest("http://127.0.0.1:8082/rest/persistence/items/Husqvarna_PositionMowingString?starttime=" + timeRangeStart + "&endtime=" + timeRangeEnd)
var String husqvarnaMowerArraySelected = transform("REGEX", ".*\\[(.*)\\].*", mowerArraySelected)
husqvarnaMowerArraySelected = transform("REGEX", "(.*)\\}", husqvarnaMowerArraySelected)
val vArraySelected = husqvarnaMowerArraySelected.split("},")
var googleCoordinatesSelected=""
logInfo("DEBUG","vArraySelected: " + vArraySelected.toString)
for (Number i: vArraySelected) {
var String vCoordinateSelected = transform("JSONPATH", "$.state", i + "}")
googleCoordinatesSelected = googleCoordinatesSelected + '{"lat": ' + vCoordinateSelected.replace(',',', "lng": ') + '},'
}
// remove last comma & store to item
googleCoordinatesSelected = transform("REGEX", "(.*)\\,", googleCoordinatesSelected)
HusqvarnaMowerMapArraySelected.postUpdate("[" + googleCoordinatesSelected + "]")
logInfo("DEBUG","googleCoordinatesSelected: " + googleCoordinatesSelected.toString)
logInfo("DEBUG","HusqvarnaMowerMapArraySelected: " + HusqvarnaMowerMapArraySelected.state.toString)
}
if (HusqvarnaMowerMapDate.toString.contains("2DAYSAGO")) {
var String timeRangeEnd = now.minusDays(2).toString("yyyy-MM-dd'T'" + "23:59:59.999").replace(":","%3A")
var String timeRangeStart = now.minusDays(2).toString("yyyy-MM-dd'T'" + "00:00:00.000").replace(":","%3A")
// call REST API to get the JSON object for day before yesterday
var String mowerArraySelected = sendHttpGetRequest("http://127.0.0.1:8082/rest/persistence/items/Husqvarna_PositionMowingString?starttime=" + timeRangeStart + "&endtime=" + timeRangeEnd)
var String husqvarnaMowerArraySelected = transform("REGEX", ".*\\[(.*)\\].*", mowerArraySelected)
husqvarnaMowerArraySelected = transform("REGEX", "(.*)\\}", husqvarnaMowerArraySelected)
val vArraySelected = husqvarnaMowerArraySelected.split("},")
var googleCoordinatesSelected=""
for (Number i: vArraySelected) {
var String vCoordinateSelected = transform("JSONPATH", "$.state", i + "}")
googleCoordinatesSelected = googleCoordinatesSelected + '{"lat": ' + vCoordinateSelected.replace(',',', "lng": ') + '},'
}
// remove last comma & store to item
googleCoordinatesSelected = transform("REGEX", "(.*)\\,", googleCoordinatesSelected)
HusqvarnaMowerMapArraySelected.postUpdate("[" + googleCoordinatesSelected + "]")
}
if (HusqvarnaMowerMapDate.toString.contains("3DAYSAGO")) {
var String timeRangeEnd = now.minusDays(3).toString("yyyy-MM-dd'T'" + "23:59:59.999").replace(":","%3A")
var String timeRangeStart = now.minusDays(3).toString("yyyy-MM-dd'T'" + "00:00:00.000").replace(":","%3A")
// call REST API to get the JSON object for three days ago
var String mowerArraySelected = sendHttpGetRequest("http://127.0.0.1:8082/rest/persistence/items/Husqvarna_PositionMowingString?starttime=" + timeRangeStart + "&endtime=" + timeRangeEnd)
var String husqvarnaMowerArraySelected = transform("REGEX", ".*\\[(.*)\\].*", mowerArraySelected)
husqvarnaMowerArraySelected = transform("REGEX", "(.*)\\}", husqvarnaMowerArraySelected)
val vArraySelected = husqvarnaMowerArraySelected.split("},")
var googleCoordinatesSelected=""
for (Number i: vArraySelected) {
var String vCoordinateSelected = transform("JSONPATH", "$.state", i + "}")
googleCoordinatesSelected = googleCoordinatesSelected + '{"lat": ' + vCoordinateSelected.replace(',',', "lng": ') + '},'
}
// remove last comma & store to item
googleCoordinatesSelected = transform("REGEX", "(.*)\\,", googleCoordinatesSelected)
HusqvarnaMowerMapArraySelected.postUpdate("[" + googleCoordinatesSelected + "]")
}
if (HusqvarnaMowerMapDate.toString.contains("4DAYSAGO")) {
var String timeRangeEnd = now.minusDays(4).toString("yyyy-MM-dd'T'" + "23:59:59.999").replace(":","%3A")
var String timeRangeStart = now.minusDays(4).toString("yyyy-MM-dd'T'" + "00:00:00.000").replace(":","%3A")
// call REST API to get the JSON object for 4 days ago
var String mowerArraySelected = sendHttpGetRequest("http://127.0.0.1:8082/rest/persistence/items/Husqvarna_PositionMowingString?starttime=" + timeRangeStart + "&endtime=" + timeRangeEnd)
var String husqvarnaMowerArraySelected = transform("REGEX", ".*\\[(.*)\\].*", mowerArraySelected)
husqvarnaMowerArraySelected = transform("REGEX", "(.*)\\}", husqvarnaMowerArraySelected)
val vArraySelected = husqvarnaMowerArraySelected.split("},")
var googleCoordinatesSelected=""
for (Number i: vArraySelected) {
var String vCoordinateSelected = transform("JSONPATH", "$.state", i + "}")
googleCoordinatesSelected = googleCoordinatesSelected + '{"lat": ' + vCoordinateSelected.replace(',',', "lng": ') + '},'
}
// remove last comma & store to item
googleCoordinatesSelected = transform("REGEX", "(.*)\\,", googleCoordinatesSelected)
HusqvarnaMowerMapArraySelected.postUpdate("[" + googleCoordinatesSelected + "]")
}
if (HusqvarnaMowerMapDate.toString.contains("LASTWEEK")) {
var String timeRangeEnd = now.toString("yyyy-MM-dd'T'HH:mm:ss.SSS").replace(":","%3A")
var String timeRangeStart = now.minusDays(7).toString("yyyy-MM-dd'T'HH:mm:ss.SSS").replace(":","%3A")
// call REST API to get the JSON object for last 7 days
var String mowerArraySelected = sendHttpGetRequest("http://127.0.0.1:8082/rest/persistence/items/Husqvarna_PositionMowingString?starttime=" + timeRangeStart + "&endtime=" + timeRangeEnd)
var String husqvarnaMowerArraySelected = transform("REGEX", ".*\\[(.*)\\].*", mowerArraySelected)
husqvarnaMowerArraySelected = transform("REGEX", "(.*)\\}", husqvarnaMowerArraySelected)
val vArraySelected = husqvarnaMowerArraySelected.split("},")
var googleCoordinatesSelected=""
for (Number i: vArraySelected) {
var String vCoordinateSelected = transform("JSONPATH", "$.state", i + "}")
googleCoordinatesSelected = googleCoordinatesSelected + '{"lat": ' + vCoordinateSelected.replace(',',', "lng": ') + '},'
}
// remove last comma & store to item
googleCoordinatesSelected = transform("REGEX", "(.*)\\,", googleCoordinatesSelected)
HusqvarnaMowerMapArraySelected.postUpdate("[" + googleCoordinatesSelected + "]")
}
// update URL to let habPanel refresh
postUpdate(HusqvarnaMowerMapUrl, "../static/mowermapEmpty.html")
Thread::sleep(100)
postUpdate(HusqvarnaMowerMapUrl, "../static/mowermap.html")
end