Ankündigung

Einklappen
Keine Ankündigung bisher.

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