Ankündigung

Einklappen
Keine Ankündigung bisher.

Regel für begrenzte Zeit ohne viel Klimbim

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

    Regel für begrenzte Zeit ohne viel Klimbim

    Hi,

    ich versuche Folgendes:
    • Taster im Flur öffnet Haustür und macht das Flurlicht an (funktioniert)
    • Das Flurlicht soll beim Schließen der Tür nach 15s aus gehen


    Hier meine Regel
    Code:
    rule "Dielenschalter"
    when
      Item Diele received command ON
    then
      // Tür aufziehen
      sendCommand(Frontdoor, 16)
    
      // Wenn dunkel, Licht an
      if (Dark.state == ON) {
        sendCommand(L_Flur, ON)
      }
    
      // AV leiser
      if (onkyoPower.state == ON)
        if (onkyoVol.state > 30)
          sendCommand(onkyoVol, 30)
    end
    Jetzt bräuchte ich ein: "Wenn diese Regel lief, soll der Türkontakt 15s nach dem Schließen das Licht wieder aus machen".

    Ich weiß, dass das mit einer zusätzlichen Regel und einem Switch-Item als "Speicher" funktioniert - ich würde das aber gern so schlank wie möglich - Vorschläge?

    #2
    Du brauchst nicht unbedingt einen weiteren Switch, eine Variable, die außerhalb der Rule definiert ist, reicht vollkommen.
    Du könntest also in Deiner Rule die Variable setzen und dann in einer zweiten Rule (getriggert vom Türkontakt) die Variable prüfen.

    Kommentar


      #3
      Ich bin nicht sicher, ob ich dich richtig verstehe, aber warum startest Du nicht einfach einen Timer der das Licht wieder aus macht?

      Kommentar


        #4
        Zitat von Jockel Beitrag anzeigen
        warum startest Du nicht einfach einen Timer der das Licht wieder aus macht?
        Theoretisch gar keine schlechte Idee:
        Timer (pseudo):
        Code:
        if (Contact.state == CLOSED) {
          Licht aus
          Timer abschalten
        }
        else
        {
          Timer wieder in 5s feuern
        }
        Ich bastele mal und poste die Lösung hier

        Kommentar


          #5
          Klingt gut - poste doch deine Lösung auch im openHAB Samples Wiki - da lässt sich es dann später leichter wieder finden.

          Kommentar


            #6
            Andersrum wird für mich eher ein Schuh draus:

            Code:
            var Timer flurAusTimer = null
            
            Rule "licht aus"
            when
                 Item Tuerkontakt received update
            then
                if (L_Flur.state==ON) {
                     if (Tuerkontakt.state==CLOSED) {
                          flurAusTimer = createTimer(now.plusSeconds(15)) [|
                               L_Flur.sendCommand(OFF)
                          ]
                     }
                     else {
                          flurAusTimer.cancel()
                     }
                 }
            end
            Wenn das Licht an ist und die Tür schließt, startet der Timer. Wenn die Tür innerhalb der 15 Sec. wieder geöffnet wird, bleibt das Licht an. Sobald die Tür geschlossen wird, läuft der Timer wieder los. Bleibt die Tür geschlossen, schaltet der Timer nach 15 Sec. das Licht aus.
            Soll die Licht-aus-Automatik nur dann laufen, wenn die Tür über die andere Rule geöffnet wurde, müsstest Du das noch mit einer weiteren Variablen abfangen.

            Kommentar


              #7
              Hi,

              Zitat von udo1toni Beitrag anzeigen
              Andersrum wird für mich eher ein Schuh draus
              das Beispiel von udo1toni sieht für mich gut aus (danke)!

              Habt ihr es schon ausprobiert? Funktioniert nun alles wie gewünscht?

              Gruß,

              Thomas E.-E.
              Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

              Kommentar

              Lädt...
              X