Ankündigung

Einklappen
Keine Ankündigung bisher.

Print Last Update

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

    [Codebeispiel] Print Last Update

    Hallo!

    Bin neu bei OpenHab und entschuldige mich in voraus für mein Deutsch. Bin ein wenig ausser Uebung
    Hab for kurzem angefangen mit diesen software zu spielen. Leider haege schon bein einfache Baispiele. Ich moechet z.b. mal in OpenHab datum und uhrzeit von einen Item ausdruecken. Hab einige mails gefolgt (und das auch in opebhab geschrieben, ohne antwort), aber es funktioniert nicht.
    Das ist mein setup (v 1.6.1):

    items:
    Code:
    Number  node21_DHT22_temp       "DHT22 - [%.1f °C]"       <temperature>   (all,node21)            { mqtt="<[mysensor:MyMQTT/21/4/V_TEMP:state:default]" }
    DateTime        node21_DHT22_tempChangedTime    "Sensor 1 Changed: [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"
    rules:
    Code:
    rule "node21_DHT22_temp Changed"
    when
      Item node21_DHT22_temp received update
    then
      postUpdate(node21_DHT22_tempChangedTime, new DateTimeType())
    end
    
    rule "Check Sensors"
            when
                    Time cron "0 0/5 * * * ?"  // check every 5 minutes
            then
                    // sensor 1 check
                    var DateTimeType sensor1DT = node21_DHT22_tempChangedTime.state as DateTimeType
                    if ((new DateTimeType().calendar.timeInMillis - sensor1DT.calendar.timeInMillis) > 300000){  // 5 minutes
                         // notifyme somehow
                         logInfo( "node21_DHT22_temp", "CRON")
                   }
            end
    sitemap:
    Code:
    Text item=node21_DHT22_tempChangedTime icon="clock"
    Leider erhalte ich folgede Fehler:
    Code:
    [ERROR] [.o.m.r.i.engine.ExecuteRuleJob] - Error during the execution of rule Check Sensors
    java.lang.ClassCastException: Cannot cast org.openhab.core.types.UnDefType to void
            at java.lang.Class.cast(Class.java:3084) ~[na:1.7.0_40]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateCastedExpression(XbaseInterpreter.java:386) ~[na:na]
            at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source) ~[na:na]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_40]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_40]
            at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateVariableDeclaration(XbaseInterpreter.java:601) ~[na:na]
            at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source) ~[na:na]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_40]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_40]
            at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateBlockExpression(XbaseInterpreter.java:321) ~[na:na]
            at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source) ~[na:na]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_40]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_40]
            at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:204) ~[na:na]
            at org.openhab.model.script.internal.engine.ScriptImpl.execute(ScriptImpl.java:59) ~[na:na]
            at org.openhab.model.rule.internal.engine.ExecuteRuleJob.execute(ExecuteRuleJob.java:55) ~[na:na]
            at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz-all-2.1.7.jar:na]
            at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) [quartz-all-2.1.7.jar:na]
    UND

    Code:
    2015-01-26 00:03:37.736 [ERROR] [o.o.c.s.ScriptExecutionThread ] - Error during the execution of rule 'node21_DHT22_temp Changed'
    java.lang.NullPointerException: null
            at org.eclipse.xtext.common.types.util.JavaReflectAccess.getRawType(JavaReflectAccess.java:107) ~[na:na]
            at org.eclipse.xtext.common.types.util.JavaReflectAccess.getConstructor(JavaReflectAccess.java:90) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateConstructorCall(XbaseInterpreter.java:511) ~[na:na]
            at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source) ~[na:na]
    
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_40]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_40]
            at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
    
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:751) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._featureCallOperation(XbaseInterpreter.java:712) ~[na:na]
            at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source) ~[na:na]
    
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_40]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_40]
            at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
    
            at org.openhab.model.script.interpreter.ScriptInterpreter.internalFeatureCallDispatch(ScriptInterpreter.java:69) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateAbstractFeatureCall(XbaseInterpreter.java:658) ~[na:na]
            at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source) ~[na:na]
    
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_40]
            at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_40]
            at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
            at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateBlockExpression(XbaseInterpreter.java:321) ~[na:na]
            at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source
    Soweit ich ferstanden habe sind die zwei rulen unabhaengig.
    rule "node21_DHT22_temp Changed" sollte mir einen item "node21_DHT22_tempChangedTime" updated und hiermit den datum eintragen falls "node21_DHT22_temp" einen neuen Wert bekommt.
    rule "Check Sensors" sollte mir mitteilen falls seit mehr als 5 Minuten vergangen sind von letzten update.
    Aber erhalte die obergenannten Fehler.

    Koennte mir jemand weiterhelfen?

    Vielen Dank in Voraus!

    Simon

    #2
    Hallo Simon,

    befinden sich am Beginn deiner rules-Datei auch die passenden Java-Imports? Speziell die folgenden beiden werden benötigt:
    Code:
    import java.util.Date
    import org.openhab.core.library.types.*
    Tritt der Fehler dann immer noch auf?

    Gruß,
    Alex

    Kommentar


      #3
      Zitat von qwasyx Beitrag anzeigen
      Hallo Simon,

      befinden sich am Beginn deiner rules-Datei auch die passenden Java-Imports? Speziell die folgenden beiden werden benötigt:
      Code:
      import java.util.Date
      import org.openhab.core.library.types.*
      Tritt der Fehler dann immer noch auf?

      Gruß,
      Alex
      Hallo!

      Dank deine Hinweise scheinen keine Fehlermeldungen auf aber gleichzeitig aender sich nichts. Wie kann ich einen DEBUG machen?
      Hier mein logback:

      Code:
      <configuration scan="true">
      
              <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                      <encoder>
                              <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%-30.30logger{36}] - %msg%n</pattern>
                      </encoder>
              </appender>
      
              <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                      <file>${openhab.logdir:-logs}/openhab.log</file>
                      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                              <!-- weekly rollover and archiving -->
                              <fileNamePattern>${openhab.logdir:-logs}/openhab-%d{yyyy-ww}.log.zip</fileNamePattern>
                              <!-- keep 30 days' worth of history -->
                              <maxHistory>30</maxHistory>
                      </rollingPolicy>
                      <encoder>
                              <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%-30.30logger{36}] - %msg%n</pattern>
                      </encoder>
              </appender>
      
              <appender name="EVENTFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                      <file>${openhab.logdir:-logs}/events.log</file>
                      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                              <!-- weekly rollover and archiving -->
                              <fileNamePattern>${openhab.logdir:-logs}/events-%d{yyyy-ww}.log.zip</fileNamePattern>
                              <!-- keep 30 days' worth of history -->
                              <maxHistory>30</maxHistory>
                      </rollingPolicy>
                      <encoder>
                              <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
                      </encoder>
              </appender>
      
              <logger name="runtime.busevents" level="INFO" additivity="false">
                      <appender-ref ref="EVENTFILE" />
                      <appender-ref ref="STDOUT" />
              </logger>
      
              <logger name="org.openhab" level="INFO"/>
              <logger name="org.openhab.binding.mqtt" level="DEBUG" />
              <logger name="org.openhab.io.transport.mqtt" level="DEBUG" />
              <logger name="org.openhab.persistence.rrd4j" level="DEBUG" />
      
              <!-- this class gives an irrelevant warning at startup -->
              <logger name="org.atmosphere.cpr.AtmosphereFramework" level="ERROR" />
      
              <!-- temporary workaround for https://github.com/openhab/jmdns/issues/12 -->
              <logger name="javax.jmdns" level="OFF"/>
      
              <!-- temporary workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=402750 -->
              <logger name="OSGi" level="OFF" />
      
              <!-- temporary workaround to circumvent error messages with any obvious effect -->
              <logger name="org.atmosphere.cpr.AtmosphereFramework" level="OFF" />
      
              <root level="WARN">
                      <appender-ref ref="FILE" />
                      <appender-ref ref="STDOUT" />
              </root>
      
      </configuration>
      Hab logInfo benuetzt aber ich find nichts in openhab.log oder events.log.

      Code:
      // Creates an item that stores the last update time of this item
      rule "node21_DHT22_temp Changed"
      when
        Item node21_DHT22_temp received update
        logInfo( "node21_DHT22_temp", "update")
      then
        postUpdate(node21_DHT22_tempChangedTime, new DateTimeType())
        logInfo( "node21_DHT22_temp", "update-then")
      end
      Danke!

      Simon

      Kommentar

      Lädt...
      X