[SOLVED] Contacts operated by sensors that reset after a minute, visible in habpanel

599/5000

Hello to all.

I have an item that tells me which sensor is activated.
To do this it signals a specific code for each sensor.
In Paper UI I created contacts (I didn’t put the files in hand, I did it from the GUI).
I would like to create in the rules a system that when it reads the activation of the sensor it signals me the opening of the sensor for a minute and then it deactivates it.

In HABPanel always via GUI I would like to see the status of the contacts.

I created both the rule and two widgets, one of type SWITCH and one of type BUTTON, but they do not seem to work.

When a sensor is activated, the contact opens and remains open for a minute, then closes.

Can you help me?

The following is the rule created:

var Timer timer = null
rule "Segnala Presenza Cameretta"

when
   	Item RFGateway_RFSignal changed to 4128960
then
    RF_PIR_Cameretta.postUpdate("OPEN")
    if(timer === null) {
        timer = createTimer(now.plusMinutes(1), [|
            RF_PIR_Cameretta.postUpdate("CLOSE")
            timer = null
        ])
    } else {
        timer.reschedule(now.plusMinutes(1))
    }
end

@rlkoshak is one of the rule experts here…

Please How to use code fences.

Watch the logs for errors and to see the Items changing states and receiving commands.

Add logging to the Rule to verify that it’s triggering.

Hi, thanks for the answers.

I paginated the code with the appropriate style, sorry, I didn’t notice the WYSIWYG editor.
In the log I don’t see any error, now I insert the recording of the status of the contacts inside the rules.

How will I test them I will let you know.

Thanks

If RF_PIR_Cameretta is a Contact type Item, you should send it an open/close state, rather than a string.
RF_PIR_Cameretta.postUpdate(OPEN)

Hi, I modified the postUpdates in OPEN and CLOSE without quotes. Thanks for the tip.

something is not working as it should …

2019-11-14 12:55:08.086 [WARN ] [ome.model.script.Alarm-control.rules] - Imposto PIR CORRIDOIO OPEN
2019-11-14 12:55:15.735 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:55:18.741 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:55:28.446 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:55:49.171 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:55:49.202 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:56:00.130 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:56:01.458 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:56:01.716 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:56:01.951 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:56:02.131 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:56:02.289 [WARN ] [ome.model.script.Alarm-control.rules] - Imposto PIR CORRIDOIO OPEN
2019-11-14 12:56:02.372 [WARN ] [ome.model.script.Alarm-control.rules] - Rilevata Presenza in Corridoio, Allarme disattivo.
2019-11-14 12:56:02.286 [WARN ] [moquette.spi.impl.SessionsRepository] - Session does not exist. CId=mqtt-explorer-4ccf8a9c
2019-11-14 12:56:02.904 [ERROR] [org.quartz.core.JobRunShell         ] - Job DEFAULT.2019-11-14T12:56:02.888+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
  <XFeatureCallImplCustom>.postUpdate(<XFeatureCallImplCustom>)
  logWarn(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
  <null>.timer = <XNullLiteralImplCustom>
} ] threw an unhandled Exception:
java.lang.reflect.UndeclaredThrowableException: null
        at com.sun.proxy.$Proxy153.apply(Unknown Source) ~[?:?]
        at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) ~[?:?]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: The name 'CLOSE' cannot be resolved to an item or type; line 112, column 42, length 5
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:141) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:772) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) ~[?:?]
        ... 4 more
2019-11-14 12:56:03.594 [ERROR] [org.quartz.core.ErrorLogger         ] - Job (DEFAULT.2019-11-14T12:56:02.888+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
  <XFeatureCallImplCustom>.postUpdate(<XFeatureCallImplCustom>)
  logWarn(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
  <null>.timer = <XNullLiteralImplCustom>
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
        at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
Caused by: java.lang.reflect.UndeclaredThrowableException
        at com.sun.proxy.$Proxy153.apply(Unknown Source) ~[?:?]
        at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) ~[?:?]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[?:?]
        ... 1 more
Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: The name 'CLOSE' cannot be resolved to an item or type; line 112, column 42, length 5
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:141) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:772) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
        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.$Proxy153.apply(Unknown Source) ~[?:?]
        at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) ~[?:?]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[?:?]
        ... 1 more

This is an error coming from the timer body. But it might be benign. Does the error happen every time the rule runs or only when the .rules file loads? If it’s the latter, than any existing Timers that were created by that file become orphaned and generate errors when those Timers go off.

fixed, I think it was due to the fact that in the postUpdate I had put CLOSE and not CLOSED:

Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: The name 'CLOSE' cannot be resolved to an item or type; line 112, column 42, length 5

Now it remains to understand how to display the button status in the best way on HABPanel.

Thanks so much for the suggestions!

555/5000

I tried to put a BUTTON type widget, I changed the background color, when it is closed it is transparent, when it is open it is red, I said to show the status.
I get a button with the status that updates, doesn’t change the color, plus it doesn’t just let me view the status, but it is an active component that I can click to change the status of a contact, and this is not good.
In your opinion, what widget can I use that only works as a light that turns on when the contact is OPEN and turns off when the contact is CLOSED?

This looks relevant

so do i have to write a widget?

Any indication, I wouldn’t know where to start!

No idea, I don’t use habpanel. If you want some individualized feature or appearamce, I would think you have to write something.

Have you found the forum search feature?

I searched for a PIR widget, but I didn’t find anything.

Now I have to study how to create a custom widget.

Thanks bye