Ankündigung

Einklappen
Keine Ankündigung bisher.

Rule in Openhab funktioniert nicht

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

    Rule in Openhab funktioniert nicht

    Hallo zusammen,

    ich habe mir folgende Rule zusammengebastelt um per "Fernsehen an" eine Szene auszulösen. Diese soll in Abhängigkeit der Helligkeitswerte agieren.

    Irgendwie funktioniert das nicht so wie ich das will. Kann vielleicht mal jemand drüber schauen:

    rule "Fernsehen an/aus"
    when
    Item eg_wohnzimmer_harmony_tv received command
    then
    if (eg_wohnzimmer_harmony_tv.state==ON) {

    if (ws_daemmerungswert.state < 30) {

    eg_wohnzimmer_stehlampe.sendCommand(ON)
    eg_wohnzimmer_wohnwand.sendCommand(ON)

    if (ws_daemmerungswert.state > 100) {

    eg_wohnzimmer_links_rol.sendCommand(50)
    eg_wohnzimmer_rechts_rol.sendCommand(50)
    eg_kueche_rol.sendCommand(50)
    eg_kueche_rol_so.sendCommand(ON)
    eg_wohnzimmer_rechts_rol_so.sendCommand(ON)
    eg_wohnzimmer_links_rol_so.sendCommand(ON)

    }
    }

    eg_wohnzimmer_harmony_activity.sendCommand("Fernse hen")

    }
    else {

    if (ws_daemmerungswert.state < 25) {

    eg_kueche_rol_so.sendCommand(OFF)
    eg_wohnzimmer_rechts_rol_so.sendCommand(OFF)
    eg_wohnzimmer_links_rol_so.sendCommand(OFF)

    eg_wohnzimmer_rechts_rol.sendCommand(100)
    eg_kueche_rol.sendCommand(100)
    eg_wohnzimmer_links_rol.sendCommand(100)
    }

    else {
    eg_kueche_rol_so.sendCommand(OFF)
    eg_wohnzimmer_rechts_rol_so.sendCommand(OFF)
    eg_wohnzimmer_links_rol_so.sendCommand(OFF)

    eg_wohnzimmer_rechts_rol.sendCommand(0)
    eg_kueche_rol.sendCommand(0)
    eg_wohnzimmer_links_rol.sendCommand(0)

    }

    eg_wohnzimmer_harmony_activity.sendCommand("PowerO ff")
    }



    end


    Danke und Viele Grüße
    Sascha

    #2
    Auf den ersten Blick sehe ich keine schließende Klammer für
    Code:
    if (ws_daemmerungswert.state < 30) {
    Edit: bzw. an falscher Stelle weiter unten
    Benutze mal bitte die Codetags und eine ordentliche Einrückung.
    "Irgendwie nicht funktioniere" ist auch keine Fehlerbeschreibung.
    Tip: nimm deine Commands erstmal raus und gib eine Logzeile aus, dann siehst du in welche Abfragen er reingeht und kannst die Regel kontrollieren.
    Wenn das läuft kannst du die Commands wieder einfügen.
    Holger
    Zuletzt geändert von HolgerW; 29.05.2018, 07:50.

    Kommentar


      #3
      Hallo,

      wie kann ich denn die Code Tags benutzen?

      Ich möchte mir der oben genannten Rule mit meiner Harmony die Activity "Fernseher" auslösen.

      Es soll aber dann geprüft werden wie hoch die Helligkeit draußen ist. Ist diese unter 30 Lux soll er die Wohnwand und Stehlampe mit anschalten.
      Desweiteren soll geprüft werden ob der Dämmerungswert größer als 100 Lux ist, dann soll er die Rolladen entsprechend anfahren und Sperrobjekte für die Rolladenautomatik setzen.

      Im Else zweig soll dann alles für das ausschalten geprüft werden. Ist die Helligkeit unter 25 Lux dann sollen die Rolladen heruntergefahren werden und vorher die Sperrobjekte auf aus gesetzt werden.

      Falls es noch nicht unter 25 Lux ist, dann die Rolladen wieder hoch und Sperrobjekte entsperren.

      Reicht dir das? Wäre super wenn du mir helfen könntest.

      Viele Grüße
      Sascha



      Kommentar


        #4
        Codetags: Entweder schreibst Du [ code] hier kommt dein code hin [/code] (bitte ohne das Leerzeichen im ersten Tag, das habe ich hier nur rein geschrieben, damit der Tag lesbar bleibt) oder Du klickt im Foreneditor (also da, wo Du das Posting rein schreibst) oben rechts das A an, dann geht ein Tag-Menü auf. dort kannst Du dann das Code-Tag mittels der # auswählen.

        Sieht dann so aus:
        Code:
        rule "Fernsehen an/aus"
        when
            Item eg_wohnzimmer_harmony_tv received command
        then
            if (eg_wohnzimmer_harmony_tv.state==ON) {
                if (ws_daemmerungswert.state < 30) {
                    eg_wohnzimmer_stehlampe.sendCommand(ON)
                    eg_wohnzimmer_wohnwand.sendCommand(ON)
                    if (ws_daemmerungswert.state > 100) {
                        eg_wohnzimmer_links_rol.sendCommand(50)
                        eg_wohnzimmer_rechts_rol.sendCommand(50)
                        eg_kueche_rol.sendCommand(50)
                        eg_kueche_rol_so.sendCommand(ON)
                        eg_wohnzimmer_rechts_rol_so.sendCommand(ON)
                        eg_wohnzimmer_links_rol_so.sendCommand(ON)
                    }
                }
                eg_wohnzimmer_harmony_activity.sendCommand("Fernsehen")
            }
            else {
                if (ws_daemmerungswert.state < 25) {
                    eg_kueche_rol_so.sendCommand(OFF)
                    eg_wohnzimmer_rechts_rol_so.sendCommand(OFF)
                    eg_wohnzimmer_links_rol_so.sendCommand(OFF)
                    eg_wohnzimmer_rechts_rol.sendCommand(100)
                    eg_kueche_rol.sendCommand(100)
                    eg_wohnzimmer_links_rol.sendCommand(100)
                }
                else {
                   eg_kueche_rol_so.sendCommand(OFF)
                   eg_wohnzimmer_rechts_rol_so.sendCommand(OFF)
                   eg_wohnzimmer_links_rol_so.sendCommand(OFF)
                   eg_wohnzimmer_rechts_rol.sendCommand(0)
                   eg_kueche_rol.sendCommand(0)
                   eg_wohnzimmer_links_rol.sendCommand(0)
                }
                eg_wohnzimmer_harmony_activity.sendCommand("PowerOff")
            }
        end
        Allgemein ist es sinnvoll, Dinge, die gleiche Werte bekommen, in Gruppen zusamenzufassen und die Steuerung dann über diese Gruppen zu erledigen (ich meine openHAB Gruppen).

        Auch das mit den Sperrobjekten will überdacht sein. Möchtest Du wirklich keine Möglichkeit haben, die gesetzten Befehle manuell zu übersteuern? Bedenke dabei auch, dass z.B. openHAB stehen bleiben könnte, während die Sperrobjekte aktiv sind. Wenn openHAB ein echtes Problem hat, musst Du dann die Sperrobjekte mittels ETS zurück setzen, falls es keine zusätzlichen Schalter dafür gibt.
        Meine Regierung wäre jedenfalls nicht erfreut, wenn es zu einer solchen Situation käme, während ich nicht zuhause bin...
        Zuletzt geändert von udo1toni; 30.05.2018, 14:25.

        Kommentar


          #5
          Danke für deine Antwort.

          Das Mit den Sperrobjekten ist schon so gewollt, da ich diese an einem Busch Comfort Panel wieder überschreiben kann.

          Sollte das dann so funktionieren wie ich es beschrieben habe?

          Viele Grüße
          Sascha

          Kommentar


            #6
            Hier passt etwas nicht:
            Code:
             if (ws_daemmerungswert.state < 30) {
                  eg_wohnzimmer_stehlampe.sendCommand(ON)
                  eg_wohnzimmer_wohnwand.sendCommand(ON)
                  if (ws_daemmerungswert.state > 100) {
            Die IF Abfrage auf ws_daemmerungswert.state > 100 steht im IF von ws_daemmerungswert.state < 30 Ansonsten nochmal, was geht denn nicht, löst denn die Rule aus, haben die Items die richtigen Werte, gibt es Fehler im Log? Baue doch mal Logausgaben ein mit den Werten, dann siehst du was er macht. Holger

            Kommentar


              #7
              Es hat funktioniert, besten Dank

              Kommentar

              Lädt...
              X