Ankündigung

Einklappen
Keine Ankündigung bisher.

Dauerschleife Rule

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

    Dauerschleife Rule

    Hallo zusammen,

    ich habe mir in Openhab die folgende Rule gebaut:

    Code:
    rule "Kind schlafen"
    when
        Item all_kind_schlafen received command
    then
             if (all_kind_schlafen.state==ON) {
                
                dg_rol.sendCommand(ON)
                sp_jalousie_automatik_alexa.sendCommand(ON)
            
            }
        else {
    
                dg_rol.sendCommand(OFF)
                sp_jalousie_automatik_alexa.sendCommand(OFF)
    
        }
    end
    Item:
    Code:
    Switch all_kind_schlafen "Kind schlafen" (gSZ,gSZAlltag) ["Switchable"] {channel="knx:device:bridge:generic:th_all_kind_schlafen"}
    Thing:
    Code:
    Type switch-control        : th_all_kind_schlafen       "Kind schlafen"       [ ga="X/X/XX+<X/X/XX",autoupdate="true" ]

    Sobald ich diese Rule per Alexa oder Schalter triggere läuft diese Rule im KNX Monitor in der Dauerschleife ab und hält nicht mehr an ehe ich Openhab beende.
    Ich habe auch andere Rules im Einsatz, die nicht dieses Problem haben.

    dg_rol ist auch eine Rule mit der alle Rolladen im DG heruntergefahren werden.

    Ich sehe in der openhab.log das Folgende:

    Code:
    019-04-18 12:23:33.558 [WARN ] [calimero.link.192.168.XXX.XX:XXXX   ] - negative confirmation of X/X/XX: 2e009de0110d2918010081
    Ich weiß nicht was ich falsch mache, oder was zu der Dauerschleife führt.

    Hier noch ein Auszug aus der event.log die auch in der Dauerschleife das folgende ausführt:
    Code:
    2019-04-18 12:25:39.944 [ome.event.ItemCommandEvent] - Item 'all_kind_schlafen' received command ON
    2019-04-18 12:25:39.951 [nt.ItemStatePredictedEvent] - all_kind_schlafen predicted to become ON
    2019-04-18 12:25:39.971 [ome.event.ItemCommandEvent] - Item 'dg_rol' received command ON
    2019-04-18 12:25:39.984 [ome.event.ItemCommandEvent] - Item 'sp_jalousie_automatik_alexa' received command ON
    2019-04-18 12:25:39.991 [nt.ItemStatePredictedEvent] - dg_rol predicted to become ON
    2019-04-18 12:25:40.002 [nt.ItemStatePredictedEvent] - sp_jalousie_automatik_alexa predicted to become ON
    2019-04-18 12:25:40.010 [ome.event.ItemCommandEvent] - Item 'dg_kinderzimmer2_rol' received command 100
    2019-04-18 12:25:40.014 [ome.event.ItemCommandEvent] - Item 'dg_schlafzimmerrechts_rol' received command 100
    2019-04-18 12:25:40.017 [ome.event.ItemCommandEvent] - Item 'dg_schlafzimmerlinks_rol' received command 100
    2019-04-18 12:25:40.022 [nt.ItemStatePredictedEvent] - dg_kinderzimmer2_rol predicted to become 100
    2019-04-18 12:25:40.024 [nt.ItemStatePredictedEvent] - dg_schlafzimmerrechts_rol predicted to become 100
    2019-04-18 12:25:40.028 [nt.ItemStatePredictedEvent] - dg_schlafzimmerlinks_rol predicted to become 100
    2019-04-18 12:25:40.241 [ome.event.ItemCommandEvent] - Item 'all_kind_schlafen' received command ON



    Zuletzt geändert von SaschaQ; 18.04.2019, 11:27.

    #2
    Ob die Rule in Dauerschleife läuft, kann ich aus dem Log nicht erkennen. Aber ein paar grundsätzliche Anmerkungen:
    1. in der Channeldefinition gibt es keinen Parameter autoupdate="true". autoupdate gehört in das Item.
    2. autoupdate sollte auf "false" gesetzt werden, zumindest, wenn die Rückmeldung des Status korrekt funktioniert.
    3. switch-control als Channel unterstützt keine Read Requests, da per Definition openHAB hier als Aktor auftritt, also ist openHAB für den Status zuständig, allenfalls könnte ein Device vom knx Bus bei openHAB nach dem Status fragen (der wird dann aber über die erste GA an knx gesendet, so wie bei knx allgemein)
    4. Wenn eine Rule auf received command triggert, ist es eine schlechte Idee, den Status des Trigger Items auszulesen, da hier keinerlei Aussage getroffen werden kann, wie dieser Status zustande kommt. command != status!!!
    Die Rule sollte also besser so aussehen:
    Code:
    rule "Kind schlafen"
    when
        Item all_kind_schlafen received command
    then
        if (receivedCommand==ON) {
            dg_rol.sendCommand(ON)
            sp_jalousie_automatik_alexa.sendCommand(ON)
        } else {
            dg_rol.sendCommand(OFF)
            sp_jalousie_automatik_alexa.sendCommand(OFF)
        }
    end
    Um herauszufinden, ob die Rule tatsächlich immer wieder getriggert wird, kannst Du ein logInfo einfügen:
    Code:
    rule "Kind schlafen"
    when
        Item all_kind_schlafen received command
    then
        logInfo("kidSleep","Rule Kind schlafen getriggert durch Kommando {}",receivedCommand)
        if (receivedCommand==ON) {
            dg_rol.sendCommand(ON)
            sp_jalousie_automatik_alexa.sendCommand(ON)
        } else {
            dg_rol.sendCommand(OFF)
            sp_jalousie_automatik_alexa.sendCommand(OFF)
        }
    end
    Zuletzt geändert von udo1toni; 18.04.2019, 19:39.

    Kommentar


      #3
      Dankeschön,hat geklappt

      Kommentar


        #4
        Leider habe ich wieder die Dauerschleife von der Rule.

        Alle anderen Rules sind bei mir ähnlich erstellt und haben dieses Problem nicht.

        Ich habe die Anpassungen von Udo1toni übernommen aber trotzdem wieder Dauerschleife beim Ausführen der Rule.



        Kommentar


          #5
          Wie sieht Deine neue Rule aus? Welche items? Hast Du das logInfo eingebaut?

          Kommentar

          Lädt...
          X