Mal wieder eine "rule" Frage

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Mal wieder eine "rule" Frage

Beitrag 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!

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Mal wieder eine "rule" Frage

Beitrag 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!

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag 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.
Zuletzt geändert von atk69 am 14. Aug 2019 18:00, insgesamt 1-mal geändert.
and IT works ;)

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Mal wieder eine "rule" Frage

Beitrag 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)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag von atk69 »

habe den oberen (letzten) Eintrag korrigiert. Dort sieht man auch, dass die Markise auf 100 geht. Habe plötzlich Java-Fehler ?
and IT works ;)

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Mal wieder eine "rule" Frage

Beitrag 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

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag 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:
and IT works ;)

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Mal wieder eine "rule" Frage

Beitrag von peter-pan »

Das war bestimmt als du die Regel umgestellt hast.
Nochmal probieren. Ggf. mit einem Restart von Openhab.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Mal wieder eine "rule" Frage

Beitrag 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

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Mal wieder eine "rule" Frage

Beitrag 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

Antworten