Ankündigung

Einklappen
Keine Ankündigung bisher.

Adventberechnung

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

    Adventberechnung

    Hi,
    da ja dieses Wochenende der erste Advent ins Haus steht, und meine Adventbeleuchtung ins Haus steht, wollte ich fragen, wie ihr eure Adventbeleuchtung schaltet, bzw. welche Logik dahinter steckt??

    Schaltet ihr eine Variable Advent manuell oder berech net ihr den 1. Advent im Jahr anhand einer Formel??
    MfG MrKnx

    #2
    Da ich meine Weihnachtsbeleuchtung nur zu Weihnachten installiere, habe ich mir darüber noch keine Gedanken gemacht.
    Ich habe eine Schaltuhr angelegt (allerdings im Mastercontrol von Berker) die ich zur Weihnachtszeit einfach aktiviere und dann wieder deaktiviere um unötiges schalten der Aktoren zu vermeiden.
    Dirk probieren geht über studieren

    Kommentar


      #3
      Bei mir geht die Weihnachtszeit vom 25. Nov. bis 9. Jan. In diesem Zeitraum werden die Aussensteckdosen nicht abhängig vom Riegelschlosskontakt der Haustüre, sondern nach Helligkeit und Uhrzeit geschaltet. Also etwa abends unter 5 lx ein, um Mitternacht aus, um 06:00 wieder ein und bei 50 lx wieder aus.

      Kommentar


        #4
        Danke euch, hätte gedacht ihr löst es vielleicht smarter als ich
        Sowas wie:
        Advent = (24.12) - 4 x (Sonntag)

        Gibt es hierfür eine Formel die man anwenden könnte??
        MfG MrKnx

        Kommentar


          #5
          Augen auf im Straßenverkehr. Wenn Du rückwärts rechnen willst musst Du vom 25.12. aus vier Sonntage rechnen weil wenn der 24.12. auf einen Sonntag fällt gibt es genau genommen keinen 4. Advent weil hl. Abend am gleichen Tag Vorrang hat (d.h. in dem Fall gibt es nur 1.-3. Advent und hl. Abend).

          Sicherer ist es, den ersten Sonntag nach dem 26.11. zu berechnen, das ist dann der 1. Advent.

          Vielleicht erfreut uns Enertex irgendwann mal mit einer Bibliothek die übers ganze Jahr die Feiertage berechnet.

          Kommentar


            #6
            Schaltjahr und Ostersonntag

            Biete hier mal den Ostersonntag und Schaltjahr. Weitere Routinen mache ich erst, wenn die UTC-Befehle wirkliche UTC können...

            [Highlight=epc]
            /*--------------- Schaltjahr? -----------------------------------------------------------*/
            :begin isLeapYear(Jahr)
            :info $Gibt zurück, ob ein Schaltjahr vorliegt$\\
            $Jahr [u16]$

            :var mod4@
            :var notmod100@
            :var mod400@
            :var result@

            mod4@ = mod(Jahr, 4u16) == 0u16
            notmod100@ = mod(Jahr,100u16) != 0u16
            mod400@ = mod(Jahr,400u16) == 0u16

            result@ = ((mod4@ and notmod100@) or mod400@) and Jahr > 0u16

            :return result@
            :end

            /*--------------- Gaußsche Osterformel (ergänzt, s.a. Wikipedia) --------------------------*/
            :begin Osterdatum(Jahr)
            :info $Gibt den Ostersonntag als Märzdatum zurück, also 32.März = 01.April...$
            :var Jahr@
            :var A@
            :var K@
            :var M@
            :var D@
            :var S@
            :var R@
            :var OG@
            :var SZ@
            :var OE@
            :var O@
            Jahr@ = convert(Jahr,0u16)
            A@ = mod(Jahr@, 19u16)
            K@ = Jahr@ / 100u16
            M@ = 15u16 + (3u16 * K@ + 3u16) / 4u16 - (8u16 * K@ +13u16) / 25u16
            D@ = mod(19u16 * A@ + M@, 30u16)
            S@ = 2u16 - (3u16 * K@ + 3u16) / 4u16
            R@ = (D@ + A@ / 11u16) / 29u16
            OG@ = 21u16 + D@ - R@
            SZ@ = 7u16 - mod(Jahr@ + Jahr@ / 4u16 + S@, 7u16)
            OE@ = 7u16 - mod(OG@ - SZ@, 7u16)
            O@ = OG@ + OE@
            :return O@
            :end
            [/Highlight]

            Damit können die von Ostern abhängigen Feiertage dann auch berechnet werden...

            Kommentar


              #7
              Stimmt, der Einwand mit dem 25 ist berechtigt!

              Es gibt schon eine Feiertagsberechnung für den EIB Pc, welche ich auch im Einsatz habe und auch bestens funktioniert
              https://knx-user-forum.de/eibpc/2429...rformel-2.html
              MfG MrKnx

              Kommentar


                #8
                Hallo,

                ich werde mal den folgenden Ansatz in meiner Feiertagsberechnung versuchen:

                AnzahlTage von 25.12.xx - OsterSonntag
                Division durch 7 ( ganzzahlig ) - der Rest gibt mir den Wochentag
                => 4. Advent = 25.12. - WochenTag

                ==>> sollte also ohne viel Aufwand in meine Berechnung integrierbar sein ;-)

                Gruss

                Wolfgang
                ETS 6.2 EibPC V3.x

                Kommentar


                  #9
                  Super danke Wolfgang 👏
                  MfG MrKnx

                  Kommentar


                    #10
                    Hier die Adventsberechnung für meine Makros - funktioniert bei mir zumindest in diesem Jahr ;-):

                    Die folgenden globalen Variablen anlegen:

                    [highlight=epc]
                    c_WoTag = 0s32
                    c_Advent1Day = 0s32
                    c_Advent2Day = 0s32
                    c_Advent3Day = 0s32
                    c_Advent4Day = 0s32
                    [/highlight]

                    Und in der Routine mit der einmaligen Berechnung der Feiertage noch
                    nachstehende Code aufnehmen:

                    [highlight=epc]


                    /* Berechnung Advent */;
                    c_WoTag = Mod( c_WeihnachtsDay-c_OsterDay, 7s32 );
                    c_Advent4Day = c_WeihnachtsDay - c_WoTag;
                    c_Advent3Day = c_Advent4Day - 7s32;
                    c_Advent2Day = c_Advent3Day - 7s32;
                    c_Advent1Day = c_Advent2Day - 7s32;
                    /* Berechnung der Strings */
                    WE_DatwertToDate( c_Advent1, c_Advent1Day );
                    WE_DatwertToDate( c_Advent2, c_Advent2Day );
                    WE_DatwertToDate( c_Advent3, c_Advent3Day );
                    WE_DatwertToDate( c_Advent4, c_Advent4Day );

                    [/highlight]

                    Fall Probleme => bitte einfach posten ...

                    Schöne Feiertage zusammen

                    Wolfgang
                    ETS 6.2 EibPC V3.x

                    Kommentar


                      #11
                      Danke dir,
                      würdest du mir jetzt noch verraten, wie ich mit deinem Makro meine Advent GA ab dem 1. Advent auf EIN schalte??
                      Blich grad irgendwie nicht durch....
                      MfG MrKnx

                      Kommentar


                        #12
                        ist realtiv einfach:

                        in meinen Makros gibt es die Variable c_AktAnzTage und c_Advent1Day - diese
                        sind als Zahlenwerte definiert und koennen einen Vergleich definieren:

                        [highlight=epc]
                        c_AktAnzTage = WE_Datwert( c_KalJahr, c_KalMon, c_KalTag )
                        [/highlight]

                        damit kann man dann einen Vegleich aufbauen:

                        [highlight=epc]
                        if c_AktAnzTage = c_Advent1Day then ...... endif
                        [/highlight]
                        Ich persoenlich wuerde eine Variable c_Weihnachtszeit definieren die
                        ein paar Tage vor 1. Advent beginnt und ggf. zu hl. Dreikoenig endet ...

                        Gruss

                        Wolfgang
                        ETS 6.2 EibPC V3.x

                        Kommentar


                          #13
                          Habe es jetzt übrigens so gelöst:

                          Code:
                          c_AdventZeit = AUS
                          //
                          if (c_AktAnzTage >= c_Advent1Day) then c_AdventZeit = EIN endif
                          if (c_AdventZeit) and (c_AktAnzTage == 7s32) then c_AdventZeit = AUS endif
                          Die Variable "c_AdventZeit" versetzt dann unser Heim in die nötige Adventstimmung

                          Danke an alle
                          MfG MrKnx

                          Kommentar

                          Lädt...
                          X