That fixes one error, but when I paste the full script again:
var String holdType = "indefinite"
var Number holdHours = 0
holdType = "holdHours"
holdHours = 2
val hvacMode = "cool"
switch hvacMode {
case "cool" :{
if (ecobee_userCool.state instanceof QuantityType) {
var QuantityType<Temperature> ecobee_desiredHeatTemp
if (ecobee_desiredHeat.state instanceof QuantityType) {
ecobee_desiredHeatTemp = ecobee_desiredHeat.state as QuantityType<Temperature>
} else {
ecobee_desiredHeatTemp = new QuantityType<Temperature>(90)
}
val params = newLinkedHashMap(
'coolHoldTemp' -> ecobee_userCool.state,
'heatHoldTemp' -> ecobee_desiredHeatTemp)
val ecobeeActions = getActions("ecobee","ecobee:thermostat:7008022299:8664a14ebf")
if (holdHours != 0){
logInfo("ecobee","Setting cool to " + ecobee_userCool.state + " for " + holdHours + " hours")
ecobeeActions.setHold( params, holdType, holdHours, null, null)
}else{
logInfo("ecobee","Setting cool to " + ecobee_userCool.state + " for " + holdType)
ecobeeActions.setHold( params, holdType, null, null, null)
}
}
}
case "heat" : {
logWarn("ecobee", "HVAC mode is heat, temperature hold ignored")
return
}
case "auto" : {
if (ecobee_userCool.state instanceof QuantityType && ecobee_userHeat.state instanceof QuantityType) {
val params = newLinkedHashMap(
'coolHoldTemp' -> ecobee_userCool.state,
'heatHoldTemp' -> ecobee_userHeat.state)
val ecobeeActions = getActions("ecobee","ecobee:thermostat:7008022299:8664a14ebf")
if (holdHours != 0){
logInfo("ecobee","Setting auto heat to " + ecobee_userHeat.state + " and cool to " + ecobee_userCool.state + " for " + holdHours + " hours")
ecobeeActions.setHold( params, holdType, holdHours, null, null)
}else{
logInfo("ecobee","Setting auto heat to " + ecobee_userHeat.state + " and cool to " + ecobee_userCool.state + " for " + holdType)
ecobeeActions.setHold( params, holdType, null, null, null)
}
}
}
case "off" : {
logWarn("ecobee", "HVAC mode is off, temperature hold ignored")
return
}
case "default" : {
logWarn("ecobee", "HVAC mode '{}' is unknown, temperature hold ignored", hvacMode)
}
}
..I still get the remaining errors:
23:25:59.762 [ERROR] (OH-rule-2564f0c711-1) [.handler.AbstractScriptModuleHandler] - Script execution of rule with UID '2564f0c711' failed: var String holdType = "indefinite"
var Number holdHours = 0
holdType = "holdHours"
holdHours = 2
val hvacMode = "cool"
switch hvacMode {
case "cool" :{
if (ecobee_userCool.state instanceof QuantityType) {
var QuantityType<Temperature> ecobee_desiredHeatTemp
if (ecobee_desiredHeat.state instanceof QuantityType) {
ecobee_desiredHeatTemp = ecobee_desiredHeat.state as QuantityType<Temperature>
} else {
ecobee_desiredHeatTemp = new QuantityType<Temperature>("90")
}
val params = newLinkedHashMap(
'coolHoldTemp' -> ecobee_userCool.state,
'heatHoldTemp' -> ecobee_desiredHeatTemp)
val ecobeeActions = getActions("ecobee","ecobee:thermostat:7008022299:8664a14ebf")
if (holdHours != 0){
logInfo("ecobee","Setting cool to " + ecobee_userCool.state + " for " + holdHours + " hours")
ecobeeActions.setHold( params, holdType, holdHours, null, null)
}else{
logInfo("ecobee","Setting cool to " + ecobee_userCool.state + " for " + holdType)
ecobeeActions.setHold( params, holdType, null, null, null)
}
}
}
case "heat" : {
logWarn("ecobee", "HVAC mode is heat, temperature hold ignored")
return
}
case "auto" : {
if (ecobee_userCool.state instanceof QuantityType && ecobee_userHeat.state instanceof QuantityType) {
val params = newLinkedHashMap(
'coolHoldTemp' -> ecobee_userCool.state,
'heatHoldTemp' -> ecobee_userHeat.state)
val ecobeeActions = getActions("ecobee","ecobee:thermostat:7008022299:8664a14ebf")
if (holdHours != 0){
logInfo("ecobee","Setting auto heat to " + ecobee_userHeat.state + " and cool to " + ecobee_userCool.state + " for " + holdHours + " hours")
ecobeeActions.setHold( params, holdType, holdHours, null, null)
}else{
logInfo("ecobee","Setting auto heat to " + ecobee_userHeat.state + " and cool to " + ecobee_userCool.state + " for " + holdType)
ecobeeActions.setHold( params, holdType, null, null, null)
}
}
}
case "off" : {
logWarn("ecobee", "HVAC mode is off, temperature hold ignored")
return
}
case "default" : {
logWarn("ecobee", "HVAC mode '{}' is unknown, temperature hold ignored", hvacMode)
}
}
1. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 24, column 851, length 6
2. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 27, column 1015, length 6
3. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 43, column 1688, length 6
4. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 46, column 1899, length 6
javax.script.ScriptException: var String holdType = "indefinite"
var Number holdHours = 0
holdType = "holdHours"
holdHours = 2
val hvacMode = "cool"
switch hvacMode {
case "cool" :{
if (ecobee_userCool.state instanceof QuantityType) {
var QuantityType<Temperature> ecobee_desiredHeatTemp
if (ecobee_desiredHeat.state instanceof QuantityType) {
ecobee_desiredHeatTemp = ecobee_desiredHeat.state as QuantityType<Temperature>
} else {
ecobee_desiredHeatTemp = new QuantityType<Temperature>("90")
}
val params = newLinkedHashMap(
'coolHoldTemp' -> ecobee_userCool.state,
'heatHoldTemp' -> ecobee_desiredHeatTemp)
val ecobeeActions = getActions("ecobee","ecobee:thermostat:7008022299:8664a14ebf")
if (holdHours != 0){
logInfo("ecobee","Setting cool to " + ecobee_userCool.state + " for " + holdHours + " hours")
ecobeeActions.setHold( params, holdType, holdHours, null, null)
}else{
logInfo("ecobee","Setting cool to " + ecobee_userCool.state + " for " + holdType)
ecobeeActions.setHold( params, holdType, null, null, null)
}
}
}
case "heat" : {
logWarn("ecobee", "HVAC mode is heat, temperature hold ignored")
return
}
case "auto" : {
if (ecobee_userCool.state instanceof QuantityType && ecobee_userHeat.state instanceof QuantityType) {
val params = newLinkedHashMap(
'coolHoldTemp' -> ecobee_userCool.state,
'heatHoldTemp' -> ecobee_userHeat.state)
val ecobeeActions = getActions("ecobee","ecobee:thermostat:7008022299:8664a14ebf")
if (holdHours != 0){
logInfo("ecobee","Setting auto heat to " + ecobee_userHeat.state + " and cool to " + ecobee_userCool.state + " for " + holdHours + " hours")
ecobeeActions.setHold( params, holdType, holdHours, null, null)
}else{
logInfo("ecobee","Setting auto heat to " + ecobee_userHeat.state + " and cool to " + ecobee_userCool.state + " for " + holdType)
ecobeeActions.setHold( params, holdType, null, null, null)
}
}
}
case "off" : {
logWarn("ecobee", "HVAC mode is off, temperature hold ignored")
return
}
case "default" : {
logWarn("ecobee", "HVAC mode '{}' is unknown, temperature hold ignored", hvacMode)
}
}
1. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 24, column 851, length 6
2. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 27, column 1015, length 6
3. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 43, column 1688, length 6
4. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 46, column 1899, length 6
at org.openhab.core.model.script.runtime.internal.engine.DSLScriptEngine.eval(DSLScriptEngine.java:146)
at org.openhab.core.automation.module.script.internal.handler.AbstractScriptModuleHandler.eval(AbstractScriptModuleHandler.java:264)
at org.openhab.core.automation.module.script.internal.handler.ScriptActionHandler.execute(ScriptActionHandler.java:116)
at org.openhab.core.automation.internal.RuleEngineImpl.executeActions(RuleEngineImpl.java:1424)
at org.openhab.core.automation.internal.RuleEngineImpl$RunRuleCallable.call(RuleEngineImpl.java:1828)
at org.openhab.core.automation.internal.RuleEngineImpl$RunRuleCallable.call(RuleEngineImpl.java:1)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.openhab.core.model.script.engine.ScriptParsingException: var String holdType = "indefinite"
var Number holdHours = 0
holdType = "holdHours"
holdHours = 2
val hvacMode = "cool"
switch hvacMode {
case "cool" :{
if (ecobee_userCool.state instanceof QuantityType) {
var QuantityType<Temperature> ecobee_desiredHeatTemp
if (ecobee_desiredHeat.state instanceof QuantityType) {
ecobee_desiredHeatTemp = ecobee_desiredHeat.state as QuantityType<Temperature>
} else {
ecobee_desiredHeatTemp = new QuantityType<Temperature>("90")
}
val params = newLinkedHashMap(
'coolHoldTemp' -> ecobee_userCool.state,
'heatHoldTemp' -> ecobee_desiredHeatTemp)
val ecobeeActions = getActions("ecobee","ecobee:thermostat:7008022299:8664a14ebf")
if (holdHours != 0){
logInfo("ecobee","Setting cool to " + ecobee_userCool.state + " for " + holdHours + " hours")
ecobeeActions.setHold( params, holdType, holdHours, null, null)
}else{
logInfo("ecobee","Setting cool to " + ecobee_userCool.state + " for " + holdType)
ecobeeActions.setHold( params, holdType, null, null, null)
}
}
}
case "heat" : {
logWarn("ecobee", "HVAC mode is heat, temperature hold ignored")
return
}
case "auto" : {
if (ecobee_userCool.state instanceof QuantityType && ecobee_userHeat.state instanceof QuantityType) {
val params = newLinkedHashMap(
'coolHoldTemp' -> ecobee_userCool.state,
'heatHoldTemp' -> ecobee_userHeat.state)
val ecobeeActions = getActions("ecobee","ecobee:thermostat:7008022299:8664a14ebf")
if (holdHours != 0){
logInfo("ecobee","Setting auto heat to " + ecobee_userHeat.state + " and cool to " + ecobee_userCool.state + " for " + holdHours + " hours")
ecobeeActions.setHold( params, holdType, holdHours, null, null)
}else{
logInfo("ecobee","Setting auto heat to " + ecobee_userHeat.state + " and cool to " + ecobee_userCool.state + " for " + holdType)
ecobeeActions.setHold( params, holdType, null, null, null)
}
}
}
case "off" : {
logWarn("ecobee", "HVAC mode is off, temperature hold ignored")
return
}
case "default" : {
logWarn("ecobee", "HVAC mode '{}' is unknown, temperature hold ignored", hvacMode)
}
}
1. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 24, column 851, length 6
2. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 27, column 1015, length 6
3. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 43, column 1688, length 6
4. Type mismatch: cannot convert from LinkedHashMap<String, State> to Map<String, Object>; line 46, column 1899, length 6
at org.openhab.core.model.script.runtime.internal.engine.ScriptEngineImpl.parseScriptIntoXTextEObject(ScriptEngineImpl.java:146)
at org.openhab.core.model.script.runtime.internal.engine.ScriptEngineImpl.newScriptFromString(ScriptEngineImpl.java:110)
at org.openhab.core.model.script.runtime.internal.engine.DSLScriptEngine.eval(DSLScriptEngine.java:137)
... 10 more
I makes no sense to me, here is the method signature from the Java code:
public static boolean setHold(ThingActions actions, @Nullable Map<String, Object> params, @Nullable String holdType,
@Nullable Number holdHours, @Nullable Date startDateTime, @Nullable Date endDateTime) {
return ((EcobeeActions) actions).setHold(params, holdType, holdHours, startDateTime, endDateTime);
}