sendCommand(String, String) - cannot convert; accepts RefreshType

items:

Group:Contact    R_FBTRDevices
Contact          R_FBTRDevice_AvReceiver            (R_FBTRDevices)    {fritzboxtr064="maconline:AA-BB-CC-DD-EE-FF"}
...

Group:Contact    FBTRDevices
Contact          FBTRDevice_AvReceiver              (FBTRDevices)
...

rule:

rule "R_FBTRDevices to FBTRDevices"
    when
        Member of R_FBTRDevices changed
    then
        createTimer(now.plusSeconds(30), [ |
            val mapItem = triggeringItem.name.toString.substring(2, triggeringItem.name.toString.length)

            logInfo("loggerName", mapItem) // FBTRDevice_AvReceiver
            logInfo("loggerName", triggeringItem.state.toString) // OPEN

            sendCommand(mapItem, triggeringItem.state.toString) // [WARN ] [rthome.model.script.actions.BusEvent] - Cannot convert 'OPEN' to a command type which item 'FBTRDevice_AvReceiver' accepts: [RefreshType].
        ])
end

log:

2021-02-14 14:30:38.091 [vent.ItemStateChangedEvent] - R_FBTRDevice_AvReceiver changed from CLOSED to OPEN

2021-02-14 14:31:08.089 [INFO ] [se.smarthome.model.script.loggerName] - FBTRDevice_AvReceiver
2021-02-14 14:31:08.093 [INFO ] [se.smarthome.model.script.loggerName] - OPEN
2021-02-14 14:31:08.098 [WARN ] [rthome.model.script.actions.BusEvent] - Cannot convert 'OPEN' to a command type which item 'FBTRDevice_AvReceiver' accepts: [RefreshType].

What am I missing? Why is it not working?
I can’t find anything usefull about “RefreshType”. Shouldn’t it be OpenClosedType, etc.?

When I’m not using toString inside sendCommand(…), there’s a lot of exception:

2021-02-14 14:48:11.960 [ERROR] [org.quartz.core.JobRunShell         ] - Job DEFAULT.Timer 6318 2021-02-14T14:48:11.947+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
  val mapItem
  logInfo(<XStringLiteralImpl>,<XFeatureCallImplCustom>)
  logInfo(<XStringLiteralImpl>,<XMemberFeatureCallImplCustom>)
  sendCommand(<XFeatureCallImplCustom>,<XMemberFeatureCallImplCustom>)
} ] threw an unhandled Exception: 
java.lang.IllegalStateException: Could not invoke method: org.eclipse.smarthome.model.script.actions.BusEvent.sendCommand(java.lang.String,java.lang.String) on instance: null
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1192) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1150) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1136) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:1081) ~[?:?]
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:991) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:954) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:235) ~[?:?]
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:239) ~[?:?]
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:201) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) ~[?:?]
	at com.sun.proxy.$Proxy4085.apply(Unknown Source) ~[?:?]
	at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:48) ~[?:?]
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [bundleFile:?]
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [bundleFile:?]
Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException@16fef1b
	at sun.reflect.GeneratedMethodAccessor1040.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_252]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_252]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1175) ~[?:?]
	... 20 more

REFRESH is the only type of command that a Contact type Item accepts. You can’t command Contacts, really.

i had the same problem.
The documentation says: Contacts does not accept commands, only status updates.
So in my case i had to use postUpdate instead of sendCommand.

1 Like

Ok, interesting. Thanks.