Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitschaltuhren ein- und ausschalten

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

    Zeitschaltuhren ein- und ausschalten

    Servus zusammen,

    ich suche schon ein paar Tage nach einer Lösung, eine rule ein- und auszuschalten.

    Folgendes einfaches Szenario:
    Ich habe meine Zeitschaltuhren (rules), (z.B. für Steckdosen Weihnachtsbeleuchtung) definiert und würde diese komplette rule nun während des Jahres deaktivieren. Natürlich geht das einfach, indem man die Datei aus dem Ordner herausnimmt, schöner finde ich es aber, die Zeitschaltautomatik mit einer Switch ein und ausschalten zu können.
    Könnt ihr mir dabei helfen?

    Welche items muss ich anlegen?
    Wie muss die sitemap aussehen?

    Gruß
    Carsten

    #2
    Hallo Carsten,

    die Frage hast du dir ja selbst beantwortet.

    Lege eine Switch-ITEM an z.B.:

    Code:
    Switch w-beleuchtung_automatik
    Den Switch einfach in die Sitemap einbinden.
    Und noch deine Rule anpassen:
    Code:
    if (w-beleuchtung_automatik.state == ON)
        {
            Der Befehl zum einschalten der Beleuchtung.
        }
        end

    Kommentar


      #3
      Man, das war doch gar nicht so schwer! Aber da ich noch lerne, wird es mein Ego verschmerzen!

      Besten Dank dafür!!!

      Kommentar


        #4
        Speziell für die Weihnachtsbeleuchtung bietet es sich an, die Automatik entsprechend zu erweitern. Erster Tag ist der 1. Advent, letzter Tag ist der 6. Januar (wahlweise könnte man auch Maria Lichtmess per Formel bestimmen, kommt ja auch ein bisschen auf die Region an...)

        Ich habe das folgendermaßen gelöst:
        Code:
        var long intStAdvent
        
        rule "Feiertage"
        when
            Time cron "0 0 0 * * ?" or
            System started
        then
            intStAdvent = parse(now.getYear + "-12-25").minusDays(((parse(now.getYear + "-12-25").getDayOfWeek) + 21)).getDayOfYear - 1
        end
        
        rule "Weihnachtslicht Timer 1"
        when
            Time cron "0 0 6 * * ?"
        then
        if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent) {
            logDebug("Christmas","Regel 1")
            // Licht an...
            }
        end
        EDIT: Zur Formel: Der 4. Advent ist der Sonntag vor dem 25.12. (getDayOfWeek liefert 1 für Montag und 7 für Sonntag), der 1. Advent ist 21 Tage vor dem 4. Advent.
        Zuletzt geändert von udo1toni; 09.02.2017, 12:58.

        Kommentar


          #5
          Schöne Lösung!
          Ich hab es nicht so genau genommen und die Abfrage einmal täglich so drin und frage dann in der Rule den State von xmas_time ab:
          Code:
              // Weihnachtszeit
              if ((now.getMonthOfYear() == 11 && now.getDayOfMonth() > 20) ||
              now.getMonthOfYear() == 12 ||
              (now.getMonthOfYear() == 1 && now.getDayOfMonth() < 10))
                  xmas_time.state = ON
              else
                  xmas_time.state = OFF
          ...
          
           if (xmas_time.state==ON)
              { ....
          Holger

          Kommentar

          Lädt...
          X