Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei Rules

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

    Hilfe bei Rules

    Liebe Openhab-User

    ich stehe auf dem Schlauch. Ich bekomme meine Regel nicht zum Laufen und weiss nicht wo der Wurm drin steckt. Der Beamerlift und die Leinwand gehen nicht runter, das Licht wird nicht gedimmt. Und gleiches geschieht nicht umgekehrt. Der Beamerlift funktioniert, wenn ich ihn direkt über ein Element der Oberfläche bediene.
    Ich wäre froh und dankbar um einen Hinweis:

    szenen.rules
    Code:
    rule "Kino"
    when
       item Szene_Kino changed
    then
          switch (Szene_Kino.state) {
             case 0: {
                eg_leinwand.sendCommand(UP)
                eg_beamerlift.sendCommand(UP)
                eg_led_wohnzimmer.sendCommand(0)
                eg_led_wohnzimmer_sperren.sendCommand(100)
             }
             case 1: {
                eg_leinwand.sendCommand(DOWN)
                eg_beamerlift.sendCommand(DOWN)
                eg_led_wohnzimmer.sendCommand(30)
                eg_led_wohnzimmer_sperren.sendCommand(1)
             }
             default: {
                logInfo("Szene_Kino","incorrect state: {}",Szene_Kino.state)
             }
          }
    end
    knx.items
    Code:
    //Szenen
    Number      Szene_Kino      "Kino [%s]"
    knx.sitemap
    Code:
    Frame label="Zentral"
    {
       Switch item=Szene_Kino mappings=[0="Aus",1="Ein"]
    }
    Ich danke euch bereits jetzt für eure Hilfe.

    Moadin

    #2
    Gibt es Meldungen im openhab.log?

    Ich gehe mal davon aus, dass alle Geräte bei direkter Steuerung (über UI) korrekt funktionieren. Vermutlich fehlt nur ein kleines Detail:
    Code:
    rule "Kino"
    when
       Item Szene_Kino changed
    then
        switch ((Szene_Kino.state as Number).intValue) {
            case 0: {
                eg_leinwand.sendCommand(UP)
                eg_beamerlift.sendCommand(UP)
                eg_led_wohnzimmer.sendCommand(0)
                eg_led_wohnzimmer_sperren.sendCommand(100)
            }
            case 1: {
                eg_leinwand.sendCommand(DOWN)
                eg_beamerlift.sendCommand(DOWN)
                eg_led_wohnzimmer.sendCommand(30)
                eg_led_wohnzimmer_sperren.sendCommand(1)
            }
            default: {
                logInfo("Szene_Kino","incorrect state: {}",Szene_Kino.state)
            }
        }
    end
    Ein Status ist erst mal ein Status und keine Zahl, weshalb swich case hier evtl. schief geht.
    Zuletzt geändert von udo1toni; 01.02.2021, 01:00.

    Kommentar


      #3
      Lieber Udo1Toni

      die Steuerung der Geräte über die UI funktioniert. Der Beamer und die Leinwand kommen runter. Dein Hinweis hat leider auch nicht funktioniert. Wie Du sagst, es ist bestimmt nur ein kleines Detail das ich übersehe.

      Kommentar


        #4
        Gibt es keine Log-Meldungen?

        Kommentar


          #5
          Und wenn du es mal so versuchst?



          Switch Szene_Kino "Kino [%s]"


          Frame label="Zentral" { Switch item=Szene_Kino mappings=[ON="Aus",OFF="Ein"] }


          switch (Szene_Kino.state.toString) { case "ON": {

          Kommentar


            #6
            Dann müsste das Item auch noch auf Switch angepasst werden. Die Rule sollte exakt so funktionieren, es sei denn, es gäbe da noch einen blöden Fehler...

            Zum Beispiel gern genommer Fehler: Es existiert eine weitere Rule mit identischem Namen (jede Rule muss einen systemweit eindeutigen Namen tragen, es spielt keine Rolle, ob die Rules sich in unterschiedlichen Dateien befinden)

            Kommentar


              #7
              Tut mir leid, dass es wieder so lange gedauert hat bis ich antworten konnte. Ich habe nun mal wieder Zeit gefunden mich dem Problem anzunehmen.

              Es ist scheinbar ein Fehler der "viable":

              Auszug aus openhab.log:
              Code:
              Configuration model 'kino.rules' has errors, therefore ignoring it: [3,4]: no viable alternative at input 'item'
              Aktuell steht in der kino.rules:
              Code:
              rule "Kino"
              when
              item Szene_Kino received update
              then
              if (receivedCommand == ON)
              {
              eg_leinwand.sendCommand(DOWN)
              eg_beamerlift.sendCommand(DOWN)
              }
              else
              {
              eg_leinwand.sendCommand(UP)
              eg_beamerlift.sendCommand(UP)
              }
              end
              Zudem habe ich in der knx.items:
              Code:
              Switch        Szene_Kino            "Kino"                    [ "switchable" ]
              und in der knx.sitemap:
              Code:
              Switch        item=Szene_Kino        icon="projector_benq"
              Ich habe also ein falsches Item oder so etwas in der Art. Die Klammern scheinen in der rule richtig gesetzt zu sein, eine zweite Rule mit dem gleichen Namen existitert nicht.

              Kommentar


                #8
                Ja, im Trigger muss Item groß geschrieben werden... hab's oben verbessert...

                Weiterhin steht die implizite Variable receivedCommand nur in solchen Rules zur verfügung, die auf received command triggern (nicht received update)
                Zuletzt geändert von udo1toni; 01.02.2021, 01:05.

                Kommentar


                  #9
                  Vielen Dank udo1toni, es hat geklappt. Ich habe "Item" gross geschrieben und update durch command ersetzt.

                  Code:
                  rule "Kino"
                  when
                  Item Szene_Kino received command
                  then
                  if (receivedCommand == ON)
                  {
                  eg_leinwand.sendCommand(DOWN)
                  eg_beamerlift.sendCommand(DOWN)
                  }
                  else
                  {
                  eg_leinwand.sendCommand(UP)
                  eg_beamerlift.sendCommand(UP)
                  }
                  end
                  vielen Dank!

                  Kommentar

                  Lädt...
                  X