Ankündigung

Einklappen

Sammelbestellung ETS6 Vollversionen aktiv!

Sammelbestellung für ETS6 Vollversionen (Prof., Home, Lite) mit 40% Rabatt aktiv! Infos im Forum!
Mehr anzeigen
Weniger anzeigen

Exception bei historicState

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

    Exception bei historicState

    Hallo,

    Ich bekomme bei meiner folgenden Rule immer den Fehler:

    2021-08-22 14:25:09.400 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'notificationJudo': cannot invoke method public abstract org.eclipse.smarthome.core.types.State org.eclipse.smarthome.core.persistence.HistoricIte m.getState() on null
    Code:
    rule "notificationJudo"
    when
        Item judoeventdate changed
    then
        val String strMessage = judoeventdate.state.toString
        val String strMessage2 = ""
        strMessage2.postUpdate(judoeventdate.historicState(now.minusMinutes(60)).state.toString)
    
        logInfo("judoevent","strMessage enthält: {}", strMessage)
        logInfo("judoevent","strMessage2 enthält: {}", strMessage2)
    
        if(!(strMessage.contains("01.01.1970")) && !(strMessage2.contains("01.01.1970"))) //enthält nicht "if(!(..." den Text 01.01.1970...
        {
        CountNotification.postUpdate(CountNotification.state as Number + 1)
        sendPushoverMessage(
                 pushoverBuilder("Eine Meldung der Enthärtungsanlage ist aufgetreten!")
                 .withDevice("TomHandy")
                 .withTitle("Information")
                 .withPriority(1)            
                )  
        }
        else
        {
           logInfo("judoevent","strMessage enthält: {}", strMessage)
           logInfo("judoevent","strMessage2 enthält: {}", strMessage2)
        }
    end
    Das item "judoeventdate habe ich in meiner influxdb.persist angelegt, also sollte openhab doch auf die zurückliegenden Ereignisse zurückgreifen können oder nicht?
    Gibt es noch eine andere Lösung wie ich das lösen kann?
    Zuletzt geändert von TomW80; 22.08.2021, 17:35.

    #2
    Nun ja, Deine Rule ist falsch

    postUpdate() ist eine Methode, die ausschließlich bei Items zur Verfügung steht.
    Du versuchst, eine lokale Konstante (!) mittels postUpdate zu setzen, das kann nicht funktionieren.

    Was außerdem noch sein könnte, ist, dass influxdb nicht die Default Persistence ist. Das kann man über die UI einstellen. Oder Du gibst die zu befragende Persistence explizit an. Ich habe das als alternative Zeile eingefügt.
    Code:
    rule "notificationJudo"
    when
        Item judoeventdate changed
    then
        val String strMessage  = judoeventdate.state.toString
        val String strMessage2 = judoeventdate.historicState(now.minusMinutes(60)).state.toString
    // alternativ:
    //  val String strMessage2 = judoeventdate.historicState(now.minusMinutes(60),"influxdb").state.toString
    
        if(!(strMessage.contains("01.01.1970")) && !(strMessage2.contains("01.01.1970"))) //enthält nicht "if(!(..." den Text 01.01.1970...
        {
        CountNotification.postUpdate(CountNotification.state as Number + 1)
        sendPushoverMessage(
            pushoverBuilder("Eine Meldung der Enthärtungsanlage ist aufgetreten!")
                .withDevice("TomHandy")
                .withTitle("Information")
                .withPriority(1)
            )
        }
        else
        {
           logInfo("judoevent","strMessage  enthält: {}", strMessage)
           logInfo("judoevent","strMessage2 enthält: {}", strMessage2)
        }
    end

    Kommentar


      #3
      Zitat von udo1toni Beitrag anzeigen
      postUpdate() ist eine Methode, die ausschließlich bei Items zur Verfügung steht.
      Du versuchst, eine lokale Konstante (!) mittels postUpdate zu setzen, das kann nicht funktionieren.
      Das muss man ja auch erstmal wissen.

      Zitat von udo1toni Beitrag anzeigen
      Was außerdem noch sein könnte, ist, dass influxdb nicht die Default Persistence ist. Das kann man über die UI einstellen. Oder Du gibst die zu befragende Persistence explizit an. Ich habe das als alternative Zeile eingefügt.
      Danke, mit der alternativen Zeile funktioniert es.

      Kommentar

      Lädt...
      X