Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu einer Zeit rule

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

    Frage zu einer Zeit rule

    hallo liebe Openhab Freunde, ich bin leider ein totaler Anfänger was so Programmierungen usw. angeht, aber ich bin sehr interessiert und verstehe auch immer mehr über das Programm.

    Ich habe eine rule gefertigt die leider nix zum bewegen bringt. Anhand eines zeit Beispiels hier im Forum sieht das folgendermaßen aus:
    Leider funktioniert es nicht :-(
    wäre echt super wenn mir da jemand weiterhelfen könnte.

    Danke im voraus.

    Code:
    rule "Rolladen-Balkon-Auto"
    when
    Time cron "0 0/15 22-5 * * ?" &&
    Item Fensterkontakt_Balkon changed from OPEN to CLOSED
    then sendCommand(Rollershutter_Balkon, DOWN)
    end
    Zuletzt geändert von Pedro85; 02.12.2015, 10:30.

    #2
    Zitat von Pedro85 Beitrag anzeigen
    Danke im voraus.
    Damit man deine rule überhaupt ohne Augenkrebs zu bekommen lesen kann formatiere diese doch bitte mit dem "Code" Button: Text mit der Maus markieren, dann auf das Doppelkreuz klicken. Denn:

    Code:
    Item Fensterkontakt_Balkon.
    mit einem . (Punkt) am Ende kann schon mal ein Syntaxfehler sein.

    Gruß, Sigi

    Kommentar


      #3
      Der Punkt war ausversehen.
      Hoffe so passt es mit dem Code.

      gruß

      Kommentar


        #4
        Versuchs mal mit nem .state am Ende bei deinem Item.

        Grüße
        mitch

        Kommentar


          #5
          Moin,

          in der Triggerbedibung (WHEN) kannst du kein Und verwenden. Hier funktioniert nur ein Oder. D.h. Du musst eine Bedingung im When definieren z.B. den CRON Teil und dann im Body über ein If die zweite Bedingung prüfen.

          Thomas

          Kommentar


            #6
            Erstmal danke für die schnellen Antworten. Leider kann ich das erst nach Feierabend testen, aber das werde ich dann sofort tun :-).

            Thomas meinst so:

            Code:
            [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]rule "Rolladen-Balkon-Auto"[/SIZE][/FONT][/COLOR]  [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]when [/SIZE][/FONT][/COLOR]
              [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]        Time cron "0 0/15 22-5 * * ?"[/SIZE][/FONT][/COLOR]
              [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]then[/SIZE][/FONT][/COLOR]
              [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]        if Item Fensterkontakt_Balkon changed from OPEN to CLOSED  sendCommand(Rollershutter_Balkon, DOWN) 
              end
             [/SIZE][/FONT][/COLOR]
            das

            Code:
            Item Fensterkontakt_Balkon.state changed from OPEN to CLOSED
            kann ich dann auch mal versuchen.
            Aber sehr gut zu wissen das man in so einer rule kein && verwenden darf. Danke

            Kommentar


              #7
              Das geht schon in die richtige Richtung. In dem If musst Du das .State nutzen und eine Transition von OPEN nach CLOSED kannst Du nicht abfragen. Hier geht nur der reine Status, also OPEN oder CLOSED

              Ist machmal echt tricky.

              Gruß
              Thomas

              Kommentar


                #8
                Code:
                [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]rule "Rolladen-Balkon-Auto"[/SIZE][/FONT][/COLOR]  [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]when [/SIZE][/FONT][/COLOR]
                  [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]        Time cron "0 0/15 22-5 * * ?"[/SIZE][/FONT][/COLOR]
                  [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]then[/SIZE][/FONT][/COLOR]
                  [COLOR=#454545][FONT=UICTFontTextStyleBody][SIZE=17px]        if Item Fensterkontakt_Balkon.state == CLOSED  sendCommand(Rollershutter_Balkon, DOWN)
                  end
                 [/SIZE][/FONT][/COLOR]
                besser?

                Ja das habe ich schon gemerkt, das man da auf alles mögliche achten muss. Ich habe das rolladensystem dank 2 Freunden seit einer Woche im Einsatz und bin total begeistert von den Möglichkeiten die sich durch das Openhab ergeben. Da ist rolladen fahren nur der Anfang :-).

                Gruß Pedro

                Kommentar


                  #9
                  Ich hab mal eine grundsätzliche Frage: Was soll Deine Rule eigentlich genau machen?

                  Kommentar


                    #10
                    Hi udo1toni,
                    10min nach Sonnenuntergang gehen alle Rolladen runter, außer Balkon ( weil meine Frau oft abends zum Rauchen rausgeht).

                    Die rule sollte den Balkonrolladen in der Zeit zwischen 22uhr und 5uhr beim schließen der Balkontüre dann runterfahren.

                    Gruß

                    Kommentar


                      #11
                      Dann schlage ich folgende Herangehensweise vor:
                      Code:
                      import org.joda.time.DateTime //Vor die erste Rule in der Rule-Datei
                      
                      rule "Rolladen-Balkon-Auto"
                      when
                          Item Fensterkontakt_Balkon changed to CLOSED
                      then
                          if(now.minusHours(5).getHourOfDay > 16)
                              sendCommand(Rollershutter_Balkon, DOWN)
                      end
                      Die Rule wird in dem Moment getriggert, wenn die Balkontür geschlossen wird. Anschließend wird überprüft, ob es zwischen 22 Uhr und 5 Uhr ist. Der Trick dabei ist, dass von der aktuellen Uhrzeit 5 Stunden abgezogen werden, um 22:00:00 Uhr ist es also dann 17:00:00 Uhr, um 4:59:59 Uhr ist es dann 23:59:59 Uhr. Deshalb muss nur überprüft werden, ob die Stunde größer als 16 ist.

                      Kommentar


                        #12
                        wow da wäre ich nie drauf gekommen

                        Kommentar


                          #13
                          ich gebe nachher mal bescheid ob es geklappt hat :-)
                          Danke schonmal

                          update: Funktioniert !! DANKE !!
                          Zuletzt geändert von Pedro85; 02.12.2015, 23:23.

                          Kommentar


                            #14
                            Zitat von Pedro85 Beitrag anzeigen
                            wow da wäre ich nie drauf gekommen
                            Man hätte natürlich auch mit
                            Code:
                             if(now.getHourOfDay > 21 || now.getHourOfDay < 6)
                            auf den Zeitraum prüfen können, ich hab keine Ahnung, was jetzt mehr Prozessorzeit benötigt, das Abziehen von 5 Stunden oder das zweifache Abfragen der aktuellen Stunde mit anschließendem verodern...

                            Kommentar


                              #15
                              Sorry das ich erst jetzt schreibe, aber wie gesagt das erste funktioniert super.

                              Danke nochmal

                              Kommentar

                              Lädt...
                              X