Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenHab rules if/else

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

    #16
    Hello,

    Vielen Dank!!! Hat nicht gleich geklappt weil noch Klammern gefehlt haben. Das hab ich dank der Logs noch geschafft. Leider bekomm ich im openhab.log folgende Fehlermeldung:

    2018-02-01 21:08:13.070 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Bewegungsmelder': cannot invoke method public abstract boolean org.eclipse.smarthome.model.script.actions.Timer.r eschedule(org.joda.time.base.AbstractInstant) on null

    Das Einschalten funktioniert. Allerdings schaltet er nicht ab. Was fehlt mir noch?

    Den Dimmer02 hab ich bewusst noch deaktiviert.

    Code:
    var Timer tLight = null
    val int cTimeout = 60 // val eine Konstante, deren Wert zur Laufzeit nicht geändert werden kann
    rule "Bewegungsmelder"
    when
    Item FibEye01_Movement changed
    then
    if (FibEye01_Movement.state == ON) {
    if ((Var_Tageszeit.state as Number) == 2)
    Dimmer01_Switch.sendCommand(10)
    else if ((Var_Tageszeit.state as Number) == 3) {
    Dimmer01_Switch.sendCommand(10)
    //Dimmer02_Switch.sendCommand(10)
    }
    if ((Var_Tageszeit.state as Number) == 2 || (Var_Tageszeit.state as Number) == 3) {
    if (tLight !== null) tLight.cancel
    tLight = createTimer(now.plusSeconds(cTimeout), (
    if (FibEye01_Movement.state != ON) {
    Dimmer01_Switch.sendCommand(OFF)
    //Dimmer02_Switch.sendCommand(OFF)
    tLight = null
    }
    else
    tLight.reschedule(now.plusSeconds(cTimeout))
    )
    )
    }}
    else
    tLight.reschedule(now.plusSeconds(cTimeout))
    end

    Kommentar


      #17
      Du hast in der Zeile, in der der Timer erzeugt wird hinten eine runde Klammer stehen, da gehört aber eine eckige Klammer hin. Außerdem gehört auch noch ein senkrechter Strich dahinter (der fehlt in meinem Code auch). Weiterhin muss die zugehörige schließende Klammer geändert werden.
      Code:
      tLight = createTimer(now.plusSeconds(cTimeout), [|
      ...
      ]
      )
      }
      }
      else

      Kommentar

      Lädt...
      X