Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Wecker Regel

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

    - √ - Wecker Regel

    Hallo KNX/OpenHAB Gemeinde!

    Bastle seit einiger Zeit an meiner OpenHAB Installation - derzeit vor allem mit Zwave. Leider musste ich mich vom Raspberry aufgrund der Probleme mit dem Zwave-Binding verabschieden.

    Ich versuche mich derzeit an der Regelerstellung, wobei ich da so meine Schwierigkeiten habe. Folgendes habe ich vor:

    Setpoint Item für die gewünschte Stunde der Weckzeit
    Setpoint Item für die gewünschte Minute der Weckzeit
    (kleiner Schönheitsfehler: die Setpoint Items hören beim eingestellten Max Wert auf und starten nicht wieder bei Min)

    Config:

    Code:
    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]Number[/LEFT]
    [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][SIZE=2][COLOR=#000000]Alarm_Hour [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[U]Wecker[/U] [U]Stunde[/U] [%d]"[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
    [SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]
    [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]Number[/LEFT]
    [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][SIZE=2][COLOR=#000000]Alarm_Minute [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[U]Wecker[/U] Minute [%d]"[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
    [SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]
    [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Switch[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#000000] Alarm_ON [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[U]Wecker[/U] [U]ein[/U]"[/COLOR][/SIZE][/COLOR][/SIZE]
      
    [SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Frame[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]label=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Date"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {[/SIZE][/LEFT]
    [SIZE=2]
     [/SIZE] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Text[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]item=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]Date[/SIZE][/LEFT]
    [SIZE=2]
     [/SIZE] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Setpoint[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]item=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]Alarm_Hour [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]minValue=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]0[/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] maxValue=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]23[/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] step=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]1[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
    [SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]
    [/COLOR][/SIZE][/COLOR][/SIZE] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Setpoint[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]item=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]Alarm_Minute [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]minValue=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]0[/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] maxValue=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]55[/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] step=[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]5[/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
    [SIZE=2]
     } 
    [/SIZE][/COLOR][/SIZE][/COLOR][/SIZE]
    Dazu versuche ich jetzt die Regel zu erstellen und bei Übereinstimmung von unter 5 Minuten, soll die LED Leiste im Schlafzimmer hochdimmen:

    Code:
    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
        [/COLOR][/SIZE][/COLOR][/SIZE][/B][FONT=Calibri]rule "Alarm Clock"[/FONT]
      [FONT=Calibri] [/FONT]
      [FONT=Calibri]when [/FONT]
      [FONT=Calibri]Time cron "* * * * * ?"[/FONT]
      [FONT=Calibri] [/FONT]
      [FONT=Calibri]then[/FONT]
      [FONT=Calibri]var int akt_minuten[/FONT]
      [FONT=Calibri]val int weck_stunde = (Alarm_Minute.state as DecimalType).intValue[/FONT]
      [FONT=Calibri]val int weck_minute = (Alarm_Hour.state as DecimalType).intValue [/FONT]
      [FONT=Calibri]var int weck_zeit[/FONT]
      [FONT=Calibri]var int timer_minuten[/FONT]
      [FONT=Calibri] [/FONT]
      [FONT=Calibri]akt_minuten = (now.getHourOfDay() * 60) + now.getMinuteOfHour[/FONT]
      [FONT=Calibri]weck_zeit = (weck_stunde * 60) + weck_minute [/FONT]
      [FONT=Calibri]timer_minuten = (weck_zeit - akt_minuten)[/FONT]
      [FONT=Calibri]if[/FONT]
      [FONT=Calibri](timer_minuten < 1) {[/FONT]
      [FONT=Calibri]createTimer(now.plusSeconds(45)) [| sendCommand(RGBWControllerAll, 50)][/FONT]
      [FONT=Calibri]createTimer(now.plusSeconds(90)) [| sendCommand(RGBWControllerAll, 75)][/FONT]
      [FONT=Calibri]createTimer(now.plusSeconds(120)) [| sendCommand(RGBWControllerAll, 100)][/FONT]
      [FONT=Calibri]}[/FONT]
      [FONT=Calibri] [/FONT]
      [FONT=Calibri]end[/FONT]
      [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
     [/COLOR][/SIZE][/COLOR][/SIZE][/B]
    Im OpenHAB Designer bekomme ich einige Fehlermeldungen. Im OSGI ist folgende: <XFeatureCallImplCustom>.intValue' connot be resolved to an item or type.
    Fehler habe ich glaube ich definitiv bei den Variablen weck_stunde und weck_minute. Außerdem kapiere ich gerade nicht, wo ich auch die Bedingung, dass der Alarm_ON Button auf ON sein muss integriere.

    UPDATE: der integer Fehler dürfte Weg sein. Zwei Themen hätte ich dazu noch: wie kann ich den Code umschreiben, damit er nicht jede Minute rennen muss? Wie kann ich die Rule unterbrechbar machen (quasi Cancel oder Snooze)?

    Bitte um eure Hilfe!

    Vielen Dank,
    Herbert

    #2
    wie kann ich den Code umschreiben, damit er nicht jede Minute rennen muss?
    Der wird ja sogar sekündlich ausgeführt. ein
    Code:
    [FONT=Calibri]Time cron "30 4/5 * * * ?"[/FONT]
    sollte jeweils die Regel um x:x4:30 und x:x9:30 starten - womit der Timer dann innerhalb des Zeitfensters läge.

    Kommentar


      #3
      Mir ist noch eine Idee zum Setpoint-Schönheitsfehler gekommen:
      1. definierre den Setpoint-Bereich mit min=-1 und max=60 (bzw. 24 für die Stunde)
      2. Erstelle zwei Regeln für Minuten und Stunden, ungefähr so:
      Code:
      rule "Minutes overflow"
      when item Minutes changed
      then
       if Minutes.state = 60 
       Minutes.PostUpdate(0)
      else if Minutes.state = -1
       Minutes.PostUpdate(59)
      end
      Code ist nur ins blaue getippt und ungetestet, aber als Denkansatz... :-)

      Kommentar


        #4
        Deine Regel oben ist schon nicht schlecht.
        Du rechnest die Differenz in Minuten aus, also kannst du die Timer weit im voraus berechnen lassen und diese dann mit now.plusMinutes() setzen.

        Also z.b. die Regel um Mitternacht ausführen lassen und die Timer mit der Differenz in Minuten starten.

        Holger

        Kommentar


          #5
          Hallo Holger,

          vielen Dank für deine Tipps! Die Setpoint Idee schaue ich mir gleich an!

          Aktueller Stand:

          Code:
          [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
                [LEFT]when[/LEFT]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]
          [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]Time[/LEFT]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]cron[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"*/5 * * * * ?"[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
          [SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]
          [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]then[/LEFT]
           [LEFT]var[/LEFT]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#000000] akt_minuten[/COLOR][/SIZE][/LEFT]
          [SIZE=2]
          [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]val[/LEFT]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#000000] weck_stunde = (Alarm_Minute.state [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]as[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#000000] DecimalType).intValue[/COLOR][/SIZE][/LEFT]
          [SIZE=2]
          [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]val[/LEFT]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#000000] weck_minute = (Alarm_Hour.state [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]as[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#000000] DecimalType).intValue [/COLOR][/SIZE][/LEFT]
          [SIZE=2]
          [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var[/LEFT]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#000000] weck_zeit[/COLOR][/SIZE][/LEFT]
          [SIZE=2]
          [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var[/LEFT]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#000000] timer_minuten[/COLOR][/SIZE][/LEFT]
          [SIZE=2]
                 [LEFT]akt_minuten = ([I]now[/I].getHourOfDay() * [/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]60[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) + [I]now[/I].getMinuteOfHour[/SIZE][/LEFT]
          [SIZE=2]
                [LEFT]weck_zeit = (weck_stunde * [/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]60[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) + weck_minute [/SIZE][/LEFT]
          [SIZE=2]
                [LEFT]timer_minuten = (weck_zeit - akt_minuten)[/LEFT]
          [/SIZE] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
          [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] [LEFT](timer_minuten < [/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]5[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) {[/SIZE][/LEFT]
          [SIZE=2]
                [LEFT][I]sendCommand[/I](RGBWControllerR,[/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]10[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE][/LEFT]
          [SIZE=2]
                [LEFT][I]sendCommand[/I](RGBWControllerG,[/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]10[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE][/LEFT]
          [SIZE=2]
                [LEFT][I]sendCommand[/I](RGBWControllerB,[/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]1[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE][/LEFT]
          [SIZE=2]
                [LEFT][I]createTimer[/I]([I]now[/I].plusSeconds([/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]45[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) [| [I]sendCommand[/I](RGBWControllerAll, [/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]50[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])][/SIZE][/LEFT]
          [SIZE=2]
                [LEFT][I]createTimer[/I]([I]now[/I].plusSeconds([/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]90[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) [| [I]sendCommand[/I](RGBWControllerAll, [/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]75[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])][/SIZE][/LEFT]
          [SIZE=2]
                [LEFT][I]createTimer[/I]([I]now[/I].plusSeconds([/LEFT]
          [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]120[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) [| [I]sendCommand[/I](RGBWControllerAll, [/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]100[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])][/SIZE][/LEFT]
          [SIZE=2]
                 [LEFT]}[/LEFT]
          [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]end
           [/COLOR][/SIZE][/COLOR][/SIZE][/B]
          für deinen letzten Vorschlag müsste ich nach dem if "(timer_minuten < 5)" durch "createTimer(now.plusMinutes(timer_minuten)" ersetzen?

          weit im Voraus lasse ich es nicht rechnen, da ich oft zu unterschiedlichsten Zeiten schlafen gehe. Drei Fragen noch:


          • Wie müsste der Cron Job aussehen, dass er alle 5 Minuten zwischen z.B. Mitternacht und 6 Uhr rennt? (geht das?)
          • Wo muss ich einbauen, dass zusätzlich ein Switch item gecheckt wird, ob es auf on ist (Wecker_ON.state == ON)
          • Wie kann ich die Rule abbrechen (über die APP) --> so was wie Snooze

          Habe noch folgendes versucht:
          Ich habe einen Raspberry mit XBian rennen, kann ihn über das XBMC Binding pausieren und starten --> das funktioniert schon mal.

          Jetzt hätte ich noch folgende Frage dazu (oder soll ich einen neuen Thread aufmachen):
          Ich möchte das Radio Addon (Add-on:Radio - Kodi) starten mit einem fix eingestellten Sender. Folgenden Versuch hätte ich gemacht:

          Code:
          [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
              [LEFT]String[/LEFT]
          [/COLOR][/SIZE][/COLOR][/SIZE][/B] [LEFT][SIZE=2][COLOR=#000000]WeckerStation [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"XBMC Player file [%s]"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] { xbmc=[/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]">[192.168.1.30|Player.Open]"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] }[/COLOR][/SIZE][/LEFT]
          [SIZE=2]
          [/SIZE]
          Code:
           
           [FONT=Calibri]sendCommand(WeckerStation, "[URL="http://mp3stream7.apasf.apa.at:8000/"][U][COLOR=#0066cc]http://mp3stream7.apasf.apa.at:8000/[/COLOR][/U][/URL]")[/FONT]
          Ich habe echt null Ahnung, wie ich das Addon mit dem Stream starte....

          Danke schon mal!
          Herbert

          Kommentar


            #6
            Die Setpoint Minimum Werte lassen keine negativen Werte zu - aber in die eine Richtung funktioniert's mit den Regeln schon mal:

            Code:
            rule "Wecker Minuten overflow"
            when Item AlarmMinute changed
            then
             if (AlarmMinute.state == 60)
             AlarmMinute.postUpdate(0)
            
            end
            Sitemap:

            Code:
                    Setpoint item=AlarmHour minValue=0 maxValue=24 step=1
                    Setpoint item=AlarmMinute minValue=0 maxValue=60 step=5
            Danke und Ende für heute!
            Herbert

            Kommentar


              #7
              Update:

              Code:
              [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]ule[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Alarm Clock"[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]
              [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [LEFT][/LEFT]
              [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]when[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][/LEFT][SIZE=2]
              [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]Time[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]cron[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"*/5 * * * * ?"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]or[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
              [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [LEFT][/LEFT][/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]System[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]started[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
              [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [LEFT][/LEFT]
              [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]then[/LEFT]
               [LEFT]var[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] akt_minuten[/COLOR][/SIZE][/LEFT][SIZE=2]
              [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] weck_zeit[/COLOR][/SIZE][/LEFT][SIZE=2]
              [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] timer_minuten[/COLOR][/SIZE][/LEFT][SIZE=2]
              [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] weck_minute = (AlarmHour.state [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]as[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] DecimalType).intValue [/COLOR][/SIZE][/LEFT][SIZE=2]
              [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] weck_stunde = (AlarmMinute.state [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]as[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] DecimalType).intValue[/COLOR][/SIZE][/LEFT][SIZE=2]
               [LEFT][/LEFT]
               [LEFT] [/LEFT]
               [LEFT]akt_minuten = ([I]now[/I].getHourOfDay() * [/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]60[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) + [I]now[/I].getMinuteOfHour[/SIZE][/LEFT][SIZE=2]
               [LEFT]weck_zeit = (weck_stunde * [/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]60[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) + weck_minute [/SIZE][/LEFT][SIZE=2]
               [LEFT]timer_minuten = (weck_zeit - akt_minuten)[/LEFT]
               [LEFT][/LEFT][/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
              [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [LEFT](Alarm_ON.state == ON ) {[/LEFT]
               [LEFT][I]createTimer[/I]([I]now[/I].plusMinutes(timer_minuten)) [| [I]sendCommand[/I](SW_Steckdose3,ON)][/LEFT]
               [LEFT][/LEFT]
               [LEFT]}[/LEFT]
               [LEFT][/LEFT]
              [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]end[/LEFT]
              [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE]
              Problem: irgendwas stimmt mit meiner Timezone nicht, ich habe komplett falsche Werte - Hilfe!

              Kommentar


                #8
                Zitat von hlat Beitrag anzeigen
                Wie müsste der Cron Job aussehen, dass er alle 5 Minuten zwischen z.B. Mitternacht und 6 Uhr rennt? (geht das?)
                laut Tutorial sollte der cron-Eintrag so aussehen: cron "0 0/5 0-5 * * ?"
                0 steht für die volle Minute (also die 0. Sekunde in der Minute)
                0/5 steht für alle 5 Minuten, beginnend bei Minute 0
                0-5 bedeutet wenn die aktuelle Stunde 0 bis 5 Uhr ist
                das erste Sternchen steht für jeden Tag
                das zweite Sternchen steht für jeden Monat
                das Fragezeichen steht für jeden Wochentag

                Wo muss ich einbauen, dass zusätzlich ein Switch item gecheckt wird, ob es auf on ist (Wecker_ON.state == ON)
                nach dem then-statement baust Du einfach ein if (Wecker_ON.state == ON) ein
                Die Setpoint Minimum Werte lassen keine negativen Werte zu
                Mist. Ich erinnere mich dunkel...
                Wenn es ausschließlich für mich wäre, würde ich den Wertebereich einfach verschieben, also 60 statt 0, damit min=0 und max=61, aber ich gebe zu, dass das mehr bäh ist, als von 0 auf 55 zu blättern. Wenn Du eh "nur" 12 Schritte willst, könntest Du eventuell auch mit Select arbeiten, da wählst Du den gewünschten Wert dann aus der Liste aus.

                Eventuell wäre es auch ein Weg, überhaupt nicht ständig zu überprüfen, ob demnächst geweckt werden soll, sondern direkt einen Timer anzulegen, wenn die Zeit geändert wird. Den reschedule kannst Du dann im Weckevent selbst erledigen, und falls Du die Weckzeit änderst, wird der Timer einfach neu rescheduled. Etwas so:
                Code:
                var Timer Wecker = null
                rule "Wecker gestellt"
                when Item Wecker_Stunde changed or Item Wecker_Minute changed
                then
                var int weckzeit
                weckzeit = (Wecker_Stunde.state as decimal).intValue*60+(Wecker_Minute.state as decimal).intValue
                var int jetzt
                jetzt = now.getMinuteOfDay
                if (Wecker!=null) {
                Wecker.cancel
                Wecker = null}
                if (jetzt < weckzeit) 
                then
                Wecker = createTimer(now.plusMinutes(weckzeit - jetzt) [|
                Alarm.sendCommand(1)
                ]
                else if (jetzt > weckzeit) 
                then
                Wecker = createTimer(now.plusMinutes(weckzeit- jetzt + 1440) [|
                Alarm.sendCommand(1)
                ]
                end
                
                rule "Alarm"
                when Item Alarm received Command
                then
                Wecker.reschedule(now.plusHours(24))
                if (Wecker_ON.state == ON) {
                # Lightshow
                }
                end
                wenn ich richtig liege :-) wird der Timer "Wecker" jedesmal auf die eingestelle Zeit gesetzt (entweder am aktuellen Tag oder am nächsten Tag).

                Wenn der Alarm eintritt, wird der Wecker in der zweiten rule auf den nächsten Tag gestellt. Anschließend wirst Du geweckt, falls der Wecker aktiv ist :-)
                Zum Snooze habe ich momentan keine Idee :-(

                Kommentar


                  #9
                  Weltklasse Idee mit dem Status Change --> ich muss mich aber zuerst noch um mein Zeitproblem im Openhab kümmern....hoffe das schaffe ich heute!

                  @Abbruch: kann ich zwischen den Timern für das Hochdimmen des Lichts ein if einbauen (wenn Alarm_on==OFF dann exit oder so?)
                  @XBMC - Radio: ich starte dann mal einen neuen Thread, wenn ich die Rule mal fertig habe und sie rennt ;-)

                  Kommentar


                    #10
                    Geschafft - rennt!
                    Code:
                    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]rule[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[U]Wecker[/U] [U]gestellt[/U]"[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]
                    [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]when[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Item[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] Wecker_Stunde [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]changed[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]or[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Item[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] Wecker_Minute [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]changed[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
                     [LEFT]then[/LEFT]
                     [LEFT]var[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] weckzeit[/COLOR][/SIZE][/LEFT][SIZE=2]
                     [LEFT]weckzeit = (Wecker_Stunde.state [/LEFT][/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]as[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] DecimalType).intValue*[/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]60[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]+(Wecker_Minute.state [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]as[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] DecimalType).intValue[/SIZE][/LEFT][SIZE=2]
                     [LEFT]weckzeit = weckzeit.intValue[/LEFT]
                     [LEFT][/LEFT]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] jetzt[/COLOR][/SIZE][/LEFT][SIZE=2]
                     [LEFT]jetzt = [I]now[/I].getMinuteOfDay[/LEFT]
                     [LEFT]jetzt = jetzt.intValue[/LEFT]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] delta[/COLOR][/SIZE][/LEFT][SIZE=2]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]if[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] (Wecker!=[/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000]) {[/COLOR][/SIZE][/LEFT][SIZE=2]
                     [LEFT]Wecker.cancel[/LEFT]
                     [LEFT]Wecker = [/LEFT][/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]}[/SIZE][/LEFT][SIZE=2]
                     [LEFT]delta = (weckzeit - jetzt)[/LEFT]
                     [LEFT]delta = delta.intValue[/LEFT]
                     [LEFT][/LEFT]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]if[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] (jetzt < weckzeit) [/COLOR][/SIZE][/LEFT][SIZE=2]
                     [LEFT]Wecker = [I]createTimer[/I]([I]now[/I].plusMinutes(delta)) [|Alarm_Wecker.[/LEFT][/SIZE][LEFT][I][SIZE=2][COLOR=#ab3000][SIZE=2][COLOR=#ab3000]sendCommand[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2][COLOR=#ab3000][SIZE=2][COLOR=#ab3000][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]1[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])][/SIZE][/LEFT][SIZE=2]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]else[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] (jetzt > weckzeit) [/COLOR][/SIZE][/LEFT][SIZE=2]
                     [LEFT]Wecker = [I]createTimer[/I]([I]now[/I].plusMinutes(delta+[/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]1440[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) [|Alarm_Wecker.[/SIZE][I][SIZE=2][COLOR=#ab3000][SIZE=2][COLOR=#ab3000]sendCommand[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2][COLOR=#ab3000][SIZE=2][COLOR=#ab3000][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]1[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])][/SIZE][/LEFT][SIZE=2]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]end[/LEFT]
                    [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [LEFT][/LEFT]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]rule[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Alarm"[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]
                    [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]when[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Item[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000] Alarm_Wecker [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]received command[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
                     [LEFT]then[/LEFT]
                    [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [LEFT]Wecker.reschedule([I]now[/I].plusHours([/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]24[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]))[/SIZE][/LEFT][SIZE=2]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]if[/LEFT][/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#000000] (Wecker_ON.state == ON) {[/COLOR][/SIZE][/LEFT][SIZE=2]
                     [LEFT][I]sendCommand[/I](RGBWControllerR,[/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]10[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE][/LEFT][SIZE=2]
                     [LEFT][I]sendCommand[/I](RGBWControllerG,[/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]10[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE][/LEFT][SIZE=2]
                     [LEFT][I]sendCommand[/I](RGBWControllerB,[/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]10[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE][/LEFT][SIZE=2]
                     [LEFT][I]createTimer[/I]([I]now[/I].plusSeconds([/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]45[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) [| [I]sendCommand[/I](RGBWControllerAll, [/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]50[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])]}[/SIZE][/LEFT][SIZE=2]
                     [LEFT][/LEFT][/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (Wecker_ON.state == ON) {[I]createTimer[/I]([I]now[/I].plusSeconds([/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]90[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) [| [I]sendCommand[/I](RGBWControllerAll, [/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]75[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])]}[/SIZE][/LEFT][SIZE=2]
                     [LEFT][/LEFT]
                     [LEFT][/LEFT][/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (Wecker_ON.state == ON) {[I]createTimer[/I]([I]now[/I].plusSeconds([/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]120[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) [| [I]sendCommand[/I](RGBWControllerAll, [/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]100[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])]}[/SIZE][/LEFT][SIZE=2]
                     [LEFT][/LEFT][/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
                    [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [LEFT][I]sendCommand[/I](RGBWControllerAll,[/LEFT][/SIZE][LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]0[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE][/LEFT][SIZE=2]
                    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] end
                    [/COLOR][/SIZE][/COLOR][/SIZE][/B]
                    Neben kleinen Groß- und Kleinschreibeproblemen aus deinem Code hatte er vor allem zu meckern, dass es kein Integer Value ist. Ich denke, das kommt vom Setpoint den ich benutze --> habe jetzt mal alles immer als Integer gemacht.

                    Nur eines funktioniert nicht:
                    Ich wollte zwischen den einzelnen Timern einen Check einbauen, ob der Wecker noch scharfgeschalten ist, irgendwie nimmt er das nicht, wenn ich zwischendurch Wecker_ON auf OFF schalte.

                    Vielen, vielen Dank für eure Hilfe!
                    Herbert

                    Kommentar


                      #11
                      Zitat von hlat Beitrag anzeigen
                      Neben kleinen Groß- und Kleinschreibeproblemen aus deinem Code
                      "Tralalalala... das kommt davon, wenn man den Code nicht im Designer eingibt, sondern direkt im Forum... ~flöt~ ;-)
                      Nur eines funktioniert nicht:
                      Ich wollte zwischen den einzelnen Timern einen Check einbauen, ob der Wecker noch scharfgeschalten ist, irgendwie nimmt er das nicht, wenn ich zwischendurch Wecker_ON auf OFF schalte.
                      Was daran liegt, dass die Timer alle auf einmal gesetzt werden, und zu diesem Zeitpunkt ist der Alarm ja noch eingeschaltet. Du musst also stattdessen eine Rule erstellen, in der Du die Timer zurücksetzt, sobald sich der Zustand von Alarm auf OFF ändert. Dazu musst Du natürlich die Timer im Rule-File zugänglich machen - genauso, wie beim Timer "Wecker" also ungefähr:
                      Code:
                      /Variablen vor der ersten Rule definieren
                      var Timer Stufe1 = null
                      var Timer Stufe2 = null
                      
                      /Ab hier werden Rules definiert
                      
                      rule "Alarm"
                      /.
                      /.Bla
                      /.
                      Stufe1 = CreateTimer...
                      Stufe2 = CreateTimer...
                      /.
                      /.Bla
                      /.
                      end
                      
                      rule "Alarm aus"
                      when Item Alarm changed to OFF
                      then
                      if (Stufe1 != null){
                          Stufe1.cancel
                          Stufe1 = null}
                      if (Stufe2 != null){
                          Stufe2.cancel
                          Stufe2 = null}
                      /.
                      /.Noch mehr Bla ;-)
                      /.
                      end

                      Kommentar

                      Lädt...
                      X