Ankündigung

Einklappen
Keine Ankündigung bisher.

Typen Joda DateTime

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Typen Joda DateTime

    Hallo zusammen,

    ich hab folgende Regel definiert:

    Code:
    import org.openhab.core.library.types.*
    import java.util.Calendar
    import java.util.Date
    import java.util.TimeZone
    
    val int PorchDelay = 20 //Sekunden
    
    rule "Switch off lamps house when alarm is turned on"
    when
    	Item Alarmanlage_scharf changed from OFF to ON
    then	
                 
                 ...
    
    	//Windfang
    	createTimer(now.plusSeconds(PorchDelay)) [|
    		if ((Alarmanlage_scharf.state == ON) && (Licht_Windfang_Einbaustrahler_Schalten.state == ON)) {
    			sendCommand(Licht_Windfang_Einbaustrahler_Schalten, OFF)
    			logInfo("lampes_house rules", "Switch porch lamp off")
    		}
    	]
    	
    end
    Das hat beim ersten Test auch problemlos funktioniert, seit ein paar Tagen finde ich allerdings den folgenden Fehler im Log (jeweils mit aktuellem Datum natürlich):

    2013-01-16 17:27:36.995 ERROR o.o.c.s.ScriptExecutionThread[:70]- Error during the execution of rule 'Switch off lamps house when alarm is turned on': Could not invoke method: org.joda.time.DateTime.plusSeconds(int) on instance: 2013-01-16T17:27:36.994+01:00
    Geändert habe ich an der Regel zwischenzeitlich aber nichts. Beim Testen habe ich jetzt probeweise den createTimer Aufruf zu createTimer(now.plusSeconds(PorchDelay.intValue)) geändert: Funktioniert.

    Allerdings funktionierte danach auch wieder die Gegenprobe mit der ursprünglichen Variante ohne .intValue. Einen Unterschied sollte das ja eh nicht machen...

    Ich bin da gerade etwas verwirrt, ev. ein Bug?

    Viele Grüße,
    Jockel

    #2
    Hm, schwer zu sagen. Evtl. wurde das Rulefile neu geladen (warum wüsste ich aber auch nicht) und der Wert von PorchDelay war dadurch erstmal wieder null - das könnte zu einem solchen Fehler führen.
    Kleiner Tipp am Rande: Benenne Variablen lieber mit Kleinbuchstaben ("porchDelay"), dann kann man sie auch besser von Items unterscheiden

    Grüße,
    Kai

    Kommentar


      #3
      Hm, schwer zu sagen. Evtl. wurde das Rulefile neu geladen (warum wüsste ich aber auch nicht) und der Wert von PorchDelay war dadurch erstmal wieder null - das könnte zu einem solchen Fehler führen.
      Das kann ich mir eigentlich nur schwer vorstellen, der Fehler war ein paar mal in den Logs, bei dem kurzen Intervall wäre das schon ein extremer Zufall. Außerdem hätte ich dann ja eigentlich einen entsprechenden Logeintrag sehen müssen?!

      Ich hab jetzt den Zahlenwert direkt in den Timeraufruf geschrieben und werde mal beobachten, was passiert!

      Kleiner Tipp am Rande: Benenne Variablen lieber mit Kleinbuchstaben ("porchDelay"), dann kann man sie auch besser von Items unterscheidenv
      Alte Gewohnheiten sind halt schwer abzulegen

      Kommentar


        #4
        So, der Fehler ist wieder aufgetaucht ohne das das Rules-File geändert wurde:

        2013-01-25 16:57:23.101 ERROR o.o.c.s.ScriptExecutionThread[:70]- Error during the execution of rule 'Switch off lamps house when alarm is turned on': Cannot cast org.openhab.core.types.UnDefType to org.openhab.core.library.types.DecimalType
        Inzwischen habe ich sogar einen festen Wert im createTimer()

        Code:
        //Windfang
        	createTimer(now.plusSeconds(20)) [|
        		if ((Alarmanlage_scharf.state == ON) && (Licht_Windfang_Einbaustrahler_Schalten.state == ON)) {
        			sendCommand(Licht_Windfang_Einbaustrahler_Schalten, OFF)
        			logInfo("lampes_house rules", "Switch porch lamp off")
        		}
        	]
        Ev. hängt auch dieses Verhalten mit dem erneuten Laden der Items und/oder Rules zusammen. Was mich allerdings wundert: Ich setze einige Timer ein und dies ist der eintige Aufruf mit diesem Problem.

        Kommentar


          #5
          Sorry, falscher Alarm! Da war zwar ein Laufzeitfehler in der Regel, aber nicht durch den Timer! Ich sollte die Meldungen lieber mal genau lesen...

          Kommentar

          Lädt...
          X