Ankündigung

Einklappen
Keine Ankündigung bisher.

Warum funktioniert meine Rule nicht!?

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

    Warum funktioniert meine Rule nicht!?

    Hallo zusammen,

    ich habe vor, dass in einer Rule jede Stunde geprüft wird ob das Wohnzimmerlicht aus ist. Wenn dem so ist dann soll der Rolladen runter fahren und das WLAN ausgemacht werden - so viel zur Theorie. Leider passiert bei dieser Regel gar nix - kann mir jemand sagen warum? (Ich steh gerade auf dem Schlauch)

    Code:
    rule "timings"
    when
    	Time cron "0 0 * * * ?"
    then
    
    if (now.getHourOfDay == 22){
    	if (Wohnzimmer_Licht == 0){
    		 if (Nachtmodus == OFF){ 
    		postUpdate(Nachtmodus, ON)
    		
    } 
    }
    }
    Danke!

    MM

    #2
    Also, die rule wird aufgrund des Crons zwar stündlich aufgerufen, macht aber nur exakt um 22:00 Uhr was (Stunde 22). Wenn sie stündlich was machen soll, solltest du das hier weglassen:

    Code:
    if (now.getHourOfDay == 22){
    Und dann müsste es auch noch wie folgt heissen:

    Code:
    if (Wohnzimmer_Licht == [COLOR=Red]OFF[/COLOR]){
    ....

    Kommentar


      #3
      .state fehlt noch

      If (Wohnzimmer_Licht.state == OFF) {

      Kommentar


        #4
        Zitat von napoleonmm83 Beitrag anzeigen
        .state fehlt noch

        If (Wohnzimmer_Licht.state == OFF) {
        stimmt

        Kommentar


          #5
          Danke für die Rückmeldungen!
          Hab's probiert, klappt aber leider nicht. Ich habe vergessen, dass er sich um eine Dimmer handelt, macht das einen Unterschied?

          Kommentar


            #6
            Zitat von mm1804 Beitrag anzeigen
            Danke für die Rückmeldungen!
            Hab's probiert, klappt aber leider nicht. Ich habe vergessen, dass er sich um eine Dimmer handelt, macht das einen Unterschied?
            Sollte nicht. Probiers halt erst einmal mit einer normal geschalteten Lampe.

            Gruß,
            thoern

            Kommentar


              #7
              if (now.getHourOfDay == 22)
              Ganz weglassen darfst Du das natürlich nicht. Schließlich soll der Nachtmodus auch nur nachts aktiviert werden, und das Licht wird tagsüber nicht eingeschaltet sein. Ich habe eine ähnliche zeitliche Einschränkung so gelöst:
              Code:
              if (now.plusHours(4).getHourOfDay > 10)
              matcht zwischen 7 und 20 Uhr.

              Sollte also dann ungefähr so aussehen:
              Code:
              rule "timings"
               when
                 Time cron "0 0 * * * ?"
               then
                 if (now.plusHours(2).getHourOfDay < 11){ //matcht von 22-8 Uhr
                    if (Wohnzimmer_Licht.state == OFF){
                       if (Nachtmodus.state == OFF){
                          postUpdate(Nachtmodus, ON)
                       }
                    }
                 }
              end

              Kommentar


                #8
                Hi zusammen,
                hatte leider erst jetzt wieder Zeit zum weiter spielen. irgendwie funktioniert das einfach nicht. Leider habe ich nur Dimmer-Schalter und kann es nicht mir einem normalen probieren.

                Über Rest werden diese Werte ausgegeben:

                Code:
                <item>
                <type>DimmerItem</type>
                <name>Wohnzimmer_Licht</name>
                <state>0</state>
                <link>
                http://192.168.178.21:8080/rest/items/Wohnzimmer_Licht
                </link>
                </item>
                Wenn ich aber (Wohnzimmer_Licht.state == 0) abfrage passier nix
                Bin ziemlich ratlos!?

                Kommentar


                  #9
                  Hi udotoni,

                  Deine Regel interessiert mich:
                  Code:
                  if (now.plusHours(2).getHourOfDay < 11){ //matcht von 22-8 Uhr
                  Das funktioniert nur so, wenn nicht das 24h Format genommen wird, oder?
                  Dennoch komme ich bei Deiner Regel dann nur auf ein Intervall 20-8 Uhr. Habe ich einen Denkfehler oder Du Dich vertippt?
                  22 + 2 = 24 => 12 Uhr und damit > 11 Uhr
                  20 + 2 = 22 => 10 Uhr und damit < 11 Uhr

                  Mit Deiner Idee könnte ich bei mir vermutlich einiges eleganter umbauen :-), daher frage ich mal nach.

                  Viele Grüße
                  Michael

                  Kommentar


                    #10
                    Zitat von mm1804 Beitrag anzeigen
                    Code:
                    <item>
                    <type>DimmerItem</type>
                    <name>Wohnzimmer_Licht</name>
                    <state>0</state>
                    <link>
                    http://192.168.178.21:8080/rest/items/Wohnzimmer_Licht
                    </link>
                    </item>
                    Wenn ich aber (Wohnzimmer_Licht.state == 0) abfrage passier nix
                    Bin ziemlich ratlos!?
                    Wie hast Du Deinen Dimmer denn definiert?
                    Wenn wir von KNX reden, sollte der Dimmer so aussehen:
                    Dimmer WannenlichtBad "Wannenlicht Bad [%.0f %%]" (gBeleuchtung,gBad) { knx="1/7/6+<3/7/6, 1/7/7, 1/7/8+<3/7/8" }
                    Die GAs sind in der Reihenfolge: OnOff, IncreaseDecrease, Percent

                    Sprich: Du kannst den Dimmer per ON/OFF ein/ausschalten oder per Wert (0-100%) auf einen Wert dimmen.

                    Gruß Michael

                    Kommentar


                      #11
                      Zitat von staehler Beitrag anzeigen
                      Wie hast Du Deinen Dimmer denn definiert?
                      Wenn wir von KNX reden, sollte der Dimmer so aussehen:

                      Gruß Michael
                      Hallo Michael,

                      nein ist Homematic. Defintion wie folgt:

                      Dimmer Wohnzimmer_Licht "Dimmer [%d %%]" <slider> (GF_Living) {homematic="address=JEQ0204589, channel=1, parameter=LEVEL"}

                      Gruß
                      Markus

                      Kommentar


                        #12
                        Zitat von staehler Beitrag anzeigen
                        Das funktioniert nur so, wenn nicht das 24h Format genommen wird, oder?
                        Nö, funktioniert bei mir (mit einem anderen Interval und in der anderen Richtung) wunderbar.
                        Dennoch komme ich bei Deiner Regel dann nur auf ein Intervall 20-8 Uhr. Habe ich einen Denkfehler oder Du Dich vertippt?
                        22 + 2 = 24 => 12 Uhr und damit > 11 Uhr
                        20 + 2 = 22 => 10 Uhr und damit < 11 Uhr
                        getHourOfDay() liefert den Interval 0 - 23, nicht 1 -24, somit wird aus 22+2 0 und nicht 24. Die angezeigte Zeit (12h/24h) spielt keine Rolle, denn ein Tag hat so oder so 24 Stunden.

                        Kommentar


                          #13
                          Zitat von udo1toni Beitrag anzeigen
                          getHourOfDay() liefert den Interval 0 - 23, nicht 1 -24, somit wird aus 22+2 0 und nicht 24. Die angezeigte Zeit (12h/24h) spielt keine Rolle, denn ein Tag hat so oder so 24 Stunden.
                          Danke, jetzt hab ich es verstanden :-)

                          Kommentar

                          Lädt...
                          X