Seite 5 von 6

Re: Mal wieder eine "rule" Frage

Verfasst: 14. Aug 2019 16:08
von eiGelbGeek
Ich denke ich habe den Fehler ;-) Verstehen tue ich es trotzdem nicht ;-)

Ersetze ich var Number nlum = 0 durch var nLum = 0, dann springt er in case 1 !!

Code: Alles auswählen

16:06:05.473 [INFO ] [smarthome.event.ItemStateChangedEvent] - Licht_Buero changed from OFF to ON
16:06:05.918 [INFO ] [lipse.smarthome.model.script.luminanz] - nLUM Zähler! nLum: 1
16:06:05.951 [INFO ] [lipse.smarthome.model.script.luminanz] - case 1!
16:06:05.983 [INFO ] [lipse.smarthome.model.script.luminanz] - Rule ist beendet!

Re: Mal wieder eine "rule" Frage

Verfasst: 14. Aug 2019 16:11
von eiGelbGeek
So funktioniert es .... vielleicht kann Udo sich ja erklärten warum es nur geht wenn die Variable nicht als Number deklariert ist....
Ich schätze mal mit gefährlichen Halbwissen, das switch nLum { ... keinen Number Wert erwartet... aber welchen dann ?!? String ?!?

Code: Alles auswählen

var Timer tLum = null 
var nLum = 0


rule "Luminanz"
when
    Item Licht_Buero changed from OFF to ON
then
    logInfo("luminanz","Rule getriggert!")
    if (tLum === null) {
        logInfo("luminanz","Timer wird angelegt!")
        nLum = 0
        tLum = createTimer(now.plusSeconds(1), [|
            logInfo("luminanz","Timer wird ausgeführt! nLum: {}",nLum)
            var Number nTime = 1
            nLum += 1
            logInfo("luminanz","nLUM Zähler! nLum: {}",nLum)
            switch nLum {
                case 1: {
                    logInfo("luminanz","case 1!")
                }
                case 2: {
                    logInfo("luminanz","case 2!")
                }
                case 3: {
                    logInfo("luminanz","case 3!")
                }
                default: {
                    nTime = 0
                    logInfo("luminanz","case default!")
                }
            }
            if(nTime > 0)
                tLum.reschedule(now.plusSeconds(nTime))
            else {
                tLum = null
                logInfo("luminanz","Rule ist beendet!")
            }
        ])
    }
end

Code: Alles auswählen

16:09:49.832 [INFO ] [smarthome.event.ItemStateChangedEvent] - Licht_Buero changed from OFF to ON
16:09:50.895 [INFO ] [lipse.smarthome.model.script.luminanz] - Rule getriggert!
16:09:50.928 [INFO ] [lipse.smarthome.model.script.luminanz] - Timer wird angelegt!
16:09:51.971 [INFO ] [lipse.smarthome.model.script.luminanz] - Timer wird ausgeführt! nLum: 0
16:09:52.031 [INFO ] [lipse.smarthome.model.script.luminanz] - nLUM Zähler! nLum: 1
16:09:52.085 [INFO ] [lipse.smarthome.model.script.luminanz] - case 1!
16:09:53.121 [INFO ] [lipse.smarthome.model.script.luminanz] - Timer wird ausgeführt! nLum: 1
16:09:53.182 [INFO ] [lipse.smarthome.model.script.luminanz] - nLUM Zähler! nLum: 2
16:09:53.233 [INFO ] [lipse.smarthome.model.script.luminanz] - case 2!
16:09:54.275 [INFO ] [lipse.smarthome.model.script.luminanz] - Timer wird ausgeführt! nLum: 2
16:09:54.330 [INFO ] [lipse.smarthome.model.script.luminanz] - nLUM Zähler! nLum: 3
16:09:54.363 [INFO ] [lipse.smarthome.model.script.luminanz] - case 3!
16:09:55.403 [INFO ] [lipse.smarthome.model.script.luminanz] - Timer wird ausgeführt! nLum: 3
16:09:55.450 [INFO ] [lipse.smarthome.model.script.luminanz] - nLUM Zähler! nLum: 4
16:09:55.484 [INFO ] [lipse.smarthome.model.script.luminanz] - case default!
16:09:55.509 [INFO ] [lipse.smarthome.model.script.luminanz] - Rule ist beendet!

Re: Mal wieder eine "rule" Frage

Verfasst: 14. Aug 2019 16:57
von atk69
mal eine ganz unproduktive Bemerkung:
Hier kommt ja leben in die Bude :D :D :D

Nee, Scherz beiseite.
Habe die Änerung mal bei mir reingenommen und simuliert.
Zumindest der erste Befehl

Code: Alles auswählen

 case 1: {
                    logInfo("luminanz_test","1 Status Markise: {}",Markise.state)             // test 
                    Markise.sendCommand(DOWN)
                    nTime = 60
wird ausgeführt. Also Markise wird eingefahren. Dannach aber nichts mehr.
logfile:

Code: Alles auswählen

2019-08-14 17:03:38.521 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'WZ_WI_ROLL_LUM.rules'
2019-08-14 17:04:48.414 [INFO ] [smarthome.model.script.luminanz_test] - Rule getriggert!
2019-08-14 17:04:48.419 [INFO ] [smarthome.model.script.luminanz_test] - dataLum: 93; tLum: null
2019-08-14 17:04:48.430 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird angelegt!
2019-08-14 17:04:48.446 [INFO ] [smarthome.model.script.luminanz_test] -  Ende der Rule
2019-08-14 17:04:49.435 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird ausgeführt! nLum: 1
2019-08-14 17:04:49.440 [INFO ] [smarthome.model.script.luminanz_test] - 1 Status Markise: 100
2019-08-14 17:04:49.450 [ERROR] [org.quartz.core.JobRunShell         ] - Job DEFAULT.2019-08-14T17:04:49.432+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
  var nLum
  <XFeatureCallImplCustom> += <XNumberLiteralImpl>
  logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>,<XFeatureCallImplCustom>)
  org.eclipse.xtext.xbase.impl.XSwitchExpressionImpl@921b82
  org.eclipse.xtext.xbase.impl.XIfExpressionImpl@370f16
} ] threw an unhandled Exception: 
java.lang.IllegalArgumentException: Couldn't invoke 'assignValueTo' for feature JvmVoid:  (eProxyURI: WZ_WI_ROLL_LUM.rules#|::0.2.0.2.0.3.1.0.2.7.6.1.1.0.3.1.0.1.0.2::0::/1)
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.assignValueTo(XbaseInterpreter.java:1225) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:1213) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:216) ~[?:?]
	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._doEvaluate(XbaseInterpreter.java:484) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:256) ~[?:?]
	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.$Proxy152.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]
2019-08-14 17:04:49.910 [ERROR] [org.quartz.core.ErrorLogger         ] - Job (DEFAULT.2019-08-14T17:04:49.432+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
  var nLum
  <XFeatureCallImplCustom> += <XNumberLiteralImpl>
  logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>,<XFeatureCallImplCustom>)
  org.eclipse.xtext.xbase.impl.XSwitchExpressionImpl@921b82
  org.eclipse.xtext.xbase.impl.XIfExpressionImpl@370f16
} ] 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.IllegalArgumentException: Couldn't invoke 'assignValueTo' for feature JvmVoid:  (eProxyURI: WZ_WI_ROLL_LUM.rules#|::0.2.0.2.0.3.1.0.2.7.6.1.1.0.3.1.0.1.0.2::0::/1)
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.assignValueTo(XbaseInterpreter.java:1225) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:1213) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:216) ~[?:?]
	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._doEvaluate(XbaseInterpreter.java:484) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:256) ~[?:?]
	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.$Proxy152.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
2019-08-14 17:06:46.312 [INFO ] [smarthome.model.script.luminanz_test] - Rule getriggert!
2019-08-14 17:06:46.331 [INFO ] [smarthome.model.script.luminanz_test] - dataLum: 85; tLum: org.eclipse.smarthome.model.script.internal.actions.TimerImpl@e7931f
2019-08-14 17:06:46.352 [INFO ] [smarthome.model.script.luminanz_test] -  Ende der Rule
2019-08-14 17:08:46.323 [INFO ] [smarthome.model.script.luminanz_test] - Rule getriggert!
Schwellwert lum = 400

Edit:
Sorry habe den refresh des logfiles vergessen. Daten waren noch von heute morgen. Jetzt ist es richtig.

Re: Mal wieder eine "rule" Frage

Verfasst: 14. Aug 2019 17:30
von peter-pan
Hallo Zusammen,
habe gerade ein kleine Rule gebaut zum Test, bin dabei zum gleichen Ergebnis wie eigelbgeek gekommen:

Code: Alles auswählen

// Globale Variablen immer zu Beginn der Datei definieren!
var Timer tLum = null 
var nLum = 0


rule "Luminanz test"
when
    Item Dummy4 changed
then
    logInfo("luminanz_test","Rule getriggert! Dummy4: {};  tLum: {} ", Dummy4.state,tLum)
    if(!(Dummy4.state instanceof OnOffType)) {
        logWarn("luminanz_test","Dummy4 enthält keinen gültigen Wert!")
        return;
    }
    logInfo("luminanz_test","Dummy4: {}; tLum: {}",Dummy4.state,tLum)

    if (Dummy4.state == ON && now.getHourOfDay > 13 && now.getHourOfDay < 23 && tLum === null) {
        logInfo("luminanz_test","Timer wird angelegt!")
        nLum = 0
        tLum = createTimer(now.plusSeconds(1), [|
            var Number nTime = 1
//            nLum += 1
              nLum = nLum + 1
            logInfo("luminanz_test","Timer wird ausgeführt! nLum: {}",nLum)
            switch nLum {
                case 1 : {
                    logInfo("luminanz_test","1 Status Markise: {}",Dummy4.state)             // test 
//                    Markise.sendCommand(DOWN)
                    nTime = 6
                }
                case 2: {
                    logInfo("luminanz_test","2 Status Roll_WZ_W_li: {}",Dummy4.state)   // test 
//                    Roll_WZ_W_li.sendCommand(DOWN)
                }
                case 3: {
                    logInfo("luminanz_test","3 Status Roll_WZ_W_re: {}",Dummy4.state)   // test 
//                    Roll_WZ_W_re.sendCommand(DOWN)
                }
                case 4: {
                    logInfo("luminanz_test","4 Status Markise: {}",Dummy4.state)             // test 
//                    Markise.sendCommand(DOWN)
                }
                case 5: {
                    logInfo("luminanz_test","5 Status Roll_WZ_W_li: {}",Dummy4.state)   // test 
//                    Roll_WZ_W_li.sendCommand(DOWN)
                }
                case 6: {
                    logInfo("luminanz_test","6 Status Roll_WZ_W_re: {}",Dummy4.state)   // test 
//                    Roll_WZ_W_re.sendCommand(DOWN)
                    nTime = 10
                }
                default: {
                    logInfo("luminanz_test","7 Status nTime: {} Status nLum: {}",nTime, nLum)   // test 
                    nTime = 0
                }
            }
            if(nTime > 0) {
                logInfo("luminanz_test","8 Status nTime Reschedule: {}",nTime)   // test 
                tLum.reschedule(now.plusSeconds(nTime))
             }
            else {
                tLum = null
                logInfo("luminanz_test","9 Status tLum = : {}",tLum)   // test 
            }
        ])
    }
 logInfo("luminanz_test"," Ende der Rule")
end
Der Logger sieht dann so aus:

Code: Alles auswählen

2019-08-14 17:19:28.370 [INFO ] [smarthome.model.script.luminanz_test] - Rule getriggert! Dummy4: ON;  tLum: null 
2019-08-14 17:19:28.384 [INFO ] [smarthome.model.script.luminanz_test] - Dummy4: ON; tLum: null
2019-08-14 17:19:28.416 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird angelegt!
2019-08-14 17:19:28.442 [INFO ] [smarthome.model.script.luminanz_test] -  Ende der Rule
2019-08-14 17:19:29.433 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird ausgeführt! nLum: 1
2019-08-14 17:19:29.442 [INFO ] [smarthome.model.script.luminanz_test] - 1 Status Markise: ON
2019-08-14 17:19:29.454 [INFO ] [smarthome.model.script.luminanz_test] - 8 Status nTime Reschedule: 6
2019-08-14 17:19:35.467 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird ausgeführt! nLum: 2
2019-08-14 17:19:35.477 [INFO ] [smarthome.model.script.luminanz_test] - 2 Status Roll_WZ_W_li: ON
2019-08-14 17:19:35.488 [INFO ] [smarthome.model.script.luminanz_test] - 8 Status nTime Reschedule: 1
2019-08-14 17:19:36.503 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird ausgeführt! nLum: 3
2019-08-14 17:19:36.513 [INFO ] [smarthome.model.script.luminanz_test] - 3 Status Roll_WZ_W_re: ON
2019-08-14 17:19:36.522 [INFO ] [smarthome.model.script.luminanz_test] - 8 Status nTime Reschedule: 1
2019-08-14 17:19:37.539 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird ausgeführt! nLum: 4
2019-08-14 17:19:37.549 [INFO ] [smarthome.model.script.luminanz_test] - 4 Status Markise: ON
2019-08-14 17:19:37.559 [INFO ] [smarthome.model.script.luminanz_test] - 8 Status nTime Reschedule: 1
2019-08-14 17:19:38.574 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird ausgeführt! nLum: 5
2019-08-14 17:19:38.582 [INFO ] [smarthome.model.script.luminanz_test] - 5 Status Roll_WZ_W_li: ON
2019-08-14 17:19:38.591 [INFO ] [smarthome.model.script.luminanz_test] - 8 Status nTime Reschedule: 1
2019-08-14 17:19:39.607 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird ausgeführt! nLum: 6
2019-08-14 17:19:39.617 [INFO ] [smarthome.model.script.luminanz_test] - 6 Status Roll_WZ_W_re: ON
2019-08-14 17:19:39.627 [INFO ] [smarthome.model.script.luminanz_test] - 8 Status nTime Reschedule: 10
2019-08-14 17:19:49.641 [INFO ] [smarthome.model.script.luminanz_test] - Timer wird ausgeführt! nLum: 7
2019-08-14 17:19:49.648 [INFO ] [smarthome.model.script.luminanz_test] - 7 Status nTime: 1 Status nLum: 7
2019-08-14 17:19:49.658 [INFO ] [smarthome.model.script.luminanz_test] - 9 Status tLum = : {}
Ich habe natürlich die Timerzeiten eingekürzt und die Bedingugen etwas abgeändert und natürlich auch keine Rollos gesteuert.

Es ist tatsächlich das Wörtchen Number, das zu viel war für die Variable. Ich meine auch gelesen zu haben, dass das System in diesm Fall selbst den richtigen Typ festlegt. (Irgendwas mit primitive und int)

Re: Mal wieder eine "rule" Frage

Verfasst: 14. Aug 2019 18:02
von atk69
habe den oberen (letzten) Eintrag korrigiert. Dort sieht man auch, dass die Markise auf 100 geht. Habe plötzlich Java-Fehler ?

Re: Mal wieder eine "rule" Frage

Verfasst: 14. Aug 2019 19:34
von eiGelbGeek
udo1toni hat geschrieben: 8. Aug 2019 13:08

Code: Alles auswählen

nCounter = 0
tMyTimer = createTimer(now.plusSeconds(1), [
    nCounter += 1
    gRoll1.members.sortBy[name].index(nCounter).sendCommand(DOWN)
    if(nCounter < gRoll1.members.size)
        tMyTimer.reschedule(now.plusSeconds(1))
])
Wenn ich diesen Code ersetze:

Code: Alles auswählen

rule "Komplette Beleuchtung einschalten"
when
  Item Komplette_Beleuchtung_EIN changed from OFF to ON
then
  gLight.allMembers.forEach [ item |
    if (item.state != ON) {
      item.sendCommand(ON)
      Thread::sleep(200)
    }
   ]
end
durch diesen Code, dann funktioniert das leider nicht :-(

Code: Alles auswählen

var Timer tMyTimer = null
var nCounter = 0

rule "Komplette Beleuchtung einschalten"
when
  Item Komplette_Beleuchtung_EIN changed from OFF to ON
then
  nCounter = 0
  tMyTimer = createTimer(now.plusSeconds(1), [
      nCounter += 1
      gLight.members.sortBy[name].index(nCounter).sendCommand(ON)
      if(nCounter < gLight.members.size)
          tMyTimer.reschedule(now.plusSeconds(1))
  ])
end

Code: Alles auswählen

19:27:50.496 [ERROR] [org.quartz.core.JobRunShell          ] - Job DEFAULT.2019-08-14T19:27:50.413+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ {
  <XFeatureCallImplCustom> += <XNumberLiteralImpl>
  <XMemberFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
  org.eclipse.xtext.xbase.impl.XIfExpressionImpl@17ad4f3
} ] threw an unhandled Exception:
java.lang.reflect.UndeclaredThrowableException: null
	at com.sun.proxy.$Proxy155.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: 'index' is not a member of 'java.util.List<org.eclipse.smarthome.core.items.Item>'; line 36, column 7, length 43
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:133) ~[?:?]
	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:768) ~[?:?]
	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
19:27:50.587 [ERROR] [org.quartz.core.ErrorLogger          ] - Job (DEFAULT.2019-08-14T19:27:50.413+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ {
  <XFeatureCallImplCustom> += <XNumberLiteralImpl>
  <XMemberFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
  org.eclipse.xtext.xbase.impl.XIfExpressionImpl@17ad4f3
} ] 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.$Proxy155.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: 'index' is not a member of 'java.util.List<org.eclipse.smarthome.core.items.Item>'; line 36, column 7, length 43
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:133) ~[?:?]
	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:768) ~[?:?]
	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.$Proxy155.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

Re: Mal wieder eine "rule" Frage

Verfasst: 14. Aug 2019 19:55
von atk69
toll, dann bin ich wenigstens nicht der einzige :?
aber auch ohne neustart funktioniert die rule weiter (habs probiert)
der java-fehler ist offenbar nicht sooooo schlimm. :shock:

Re: Mal wieder eine "rule" Frage

Verfasst: 14. Aug 2019 21:40
von peter-pan
Das war bestimmt als du die Regel umgestellt hast.
Nochmal probieren. Ggf. mit einem Restart von Openhab.

Re: Mal wieder eine "rule" Frage

Verfasst: 16. Aug 2019 12:00
von eiGelbGeek
eiGelbGeek hat geschrieben: 14. Aug 2019 19:34
udo1toni hat geschrieben: 8. Aug 2019 13:08

Code: Alles auswählen

nCounter = 0
tMyTimer = createTimer(now.plusSeconds(1), [
    nCounter += 1
    gRoll1.members.sortBy[name].index(nCounter).sendCommand(DOWN)
    if(nCounter < gRoll1.members.size)
        tMyTimer.reschedule(now.plusSeconds(1))
])
Wenn ich diesen Code ersetze:

Code: Alles auswählen

rule "Komplette Beleuchtung einschalten"
when
  Item Komplette_Beleuchtung_EIN changed from OFF to ON
then
  gLight.allMembers.forEach [ item |
    if (item.state != ON) {
      item.sendCommand(ON)
      Thread::sleep(200)
    }
   ]
end
durch diesen Code, dann funktioniert das leider nicht :-(

Code: Alles auswählen

var Timer tMyTimer = null
var nCounter = 0

rule "Komplette Beleuchtung einschalten"
when
  Item Komplette_Beleuchtung_EIN changed from OFF to ON
then
  nCounter = 0
  tMyTimer = createTimer(now.plusSeconds(1), [
      nCounter += 1
      gLight.members.sortBy[name].index(nCounter).sendCommand(ON)
      if(nCounter < gLight.members.size)
          tMyTimer.reschedule(now.plusSeconds(1))
  ])
end

Code: Alles auswählen

19:27:50.496 [ERROR] [org.quartz.core.JobRunShell          ] - Job DEFAULT.2019-08-14T19:27:50.413+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ {
  <XFeatureCallImplCustom> += <XNumberLiteralImpl>
  <XMemberFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
  org.eclipse.xtext.xbase.impl.XIfExpressionImpl@17ad4f3
} ] threw an unhandled Exception:
java.lang.reflect.UndeclaredThrowableException: null
	at com.sun.proxy.$Proxy155.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: 'index' is not a member of 'java.util.List<org.eclipse.smarthome.core.items.Item>'; line 36, column 7, length 43
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:133) ~[?:?]
	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:768) ~[?:?]
	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
19:27:50.587 [ERROR] [org.quartz.core.ErrorLogger          ] - Job (DEFAULT.2019-08-14T19:27:50.413+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ {
  <XFeatureCallImplCustom> += <XNumberLiteralImpl>
  <XMemberFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
  org.eclipse.xtext.xbase.impl.XIfExpressionImpl@17ad4f3
} ] 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.$Proxy155.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: 'index' is not a member of 'java.util.List<org.eclipse.smarthome.core.items.Item>'; line 36, column 7, length 43
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:133) ~[?:?]
	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:768) ~[?:?]
	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.$Proxy155.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
Würde sagen, da liegt der Hase begraben ...

Code: Alles auswählen

Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: 'index' is not a member of 'java.util.List<org.eclipse.smarthome.core.items.Item>'; line 36, column 7, length 43

Re: Mal wieder eine "rule" Frage

Verfasst: 16. Aug 2019 12:44
von eiGelbGeek
Habe die Lösung selbst gefunden für Gruppen Kommandos mit Verzögerung :lol:

Code: Alles auswählen

//####################################//
//Alle Rolladen ohne Ausnhamen öffnen!//
//####################################//

rule "Alle Rolladen ohne Ausnahmen öffnen"
when
  Item <TRIGGER> changed from OFF to ON
then
  gBlinds.members.filter[ blind | blind.state > 0 ].forEach[ blind, i 
                                | createTimer(now.plusMillis(200*i), [ 
                                | blind.sendCommand(0) ])]
end