Ankündigung

Einklappen
Keine Ankündigung bisher.

Feiertagstabelle als Ausnahme zu WERKTAGS

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

    [Featurewunsch] Feiertagstabelle als Ausnahme zu WERKTAGS

    Ein frohes neues Jahr 2010 an alle!


    Die Wochenzeitschaltuhren funktionieren gut mit den WERKTAGS und WOCHENENDE-Konstanten...
    ...bis auf die Feiertage, die auf Werktage fallen (Aktuell ist eine gute Testzeit).

    Weihnachten ist zwar vorbei, aber

    Ich hätte gerne eine Tabelle(1) mit den Tagen, an denen sich der EibPC trotz WERKTAGS-Vorgabe wie am WOCHENENDE verhält:

    Eintragen würde ich dort:
    - Bundeseinheitliche & bundeslandspezifische Feiertage
    - Schulferien- & Urlaubstage

    (1)Natürlich frei editierbar, damit der EibPC in allen Ländern funktioniert.


    Falls das schon anders ohne viele if..then..else o.ä. funktioniert bitte ich um Hinweis.

    #2
    Zitat von MarkusL Beitrag anzeigen
    Ein frohes neues Jahr 2010 an alle!
    Schliesse ich mich an.
    Die Wochenzeitschaltuhren funktionieren gut mit den WERKTAGS und WOCHENENDE-Konstanten...
    ...bis auf die Feiertage, die auf Werktage fallen (Aktuell ist eine gute Testzeit).
    Code:
    // Feiertage auswählen
    Feiertag=month(1,1) and month(6,1) and ... 
    // Und nun ganz einfach mit den Schaltuhren verküpfen
    if wtime(....) and !Feiertag then ... endif
    Ich fände dies elegant genug.

    Wenn jemand sich die Mühe macht, die Feiertage einzugeben (am besten als Marko), sollte das mal als Codeschnipsel hochgeladen werden.

    Ähnlich könnte man Schulferien definieren
    Code:
    Schulferien=AUS
    if date(1,1,10) then Schulferien=EIN endif
    if date(7,1,10) then Schulferien=AUS endif
    Michael
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Also falls jemand noch für Niedersachsen die Ferien braucht ...

      Code:
      /// Feriensteuerung
      //     Winterferien     Osterferien     Pfingstferien     Sommerferien     Herbstferien     Weihnachtsferien
      //2007     01.02. + 02.02.     26.03. - 10.04./30.04.     18.05. + 29.05.     19.07. - 29.08.     22.10. - 03.11.     24.12. - 05.01.
      //2008     31.01. + 01.02.     10.03. - 26.03.     02.05. + 13.05.     10.07. - 20.08.     13.10. - 25.10.     22.12. - 06.01.
      //2009     02.02. + 03.02.     30.03. - 15.04.     22.05./02.06.     25.06. - 05.08.     05.10. - 17.10.     *** 23.12. - 06.01.
      //2010     01.02. + 02.02.     19.03. - 06.04.     14.05./25.05.     24.06. - 04.08.     09.10. - 23.10.     22.12. - 05.01.
      //2011     31.01. - 01.02.     16.04. - 30.04.     03.06./14.06.     07.07. - 17.08.     17.10. - 29.10.     23.12. - 04.01.
      //2012     30.01. - 31.01.     26.03. - 11.04./30.04.     18.05./29.05.     23.07. - 31.08.3)     22.10. - 03.11.     24.12. - 05.01.
      //2013     31.01. - 01.02.     16.03. - 02.04.     10.05./21.05.     27.06. - 07.08.     04.10. - 18.10.     23.12. - 03.01.
      //2014     30.01. - 31.01.     03.04. - 22.04./02.05.     30.05./10.06.     31.07. - 10.09.5)     27.10. - 08.11.     22.12. - 05.01.
      //2015     02.02. - 03.02.     25.03. - 10.04.     15.05./26.05.     23.07. - 02.09.     19.10. - 31.10.     23.12. - 06.01.
      //2016     28.01. - 29.01.     18.03. - 02.04.     06.05./17.05.     23.06. - 03.08.     04.10. - 15.10.     21.12. - 06.01.
      //2017     30.01. - 31.01.     10.04. - 22.04.     26.05./06.06.     22.06. - 02.08.
      
      Status_Ferien = AUS
      
      //2009
      if date(23,12,09) then Status_Ferien = EIN endif
      
      //2010
      if date(01,01,10) and !date(07,01,10) then Status_Ferien = EIN endif
      if date(01,02,10) and !date(03,02,10) then Status_Ferien = EIN endif
      if date(19,03,10) and !date(07,04,10) then Status_Ferien = EIN endif
      if date(14,05,10) then Status_Ferien = EIN endif
      if date(25,05,10) then Status_Ferien = EIN endif
      if date(24,06,10) and !date(05,08,10) then Status_Ferien = EIN endif
      if date(09,10,10) and !date(24,10,10) then Status_Ferien = EIN endif
      if date(22,10,10) then Status_Ferien = EIN endif
      
      //2011
      if date(01,01,11) and !date(06,01,11) then Status_Ferien = EIN endif
      if date(31,01,11) and !date(02,02,11) then Status_Ferien = EIN endif
      if date(16,04,11) and !date(01,05,11) then Status_Ferien = EIN endif
      if date(03,06,11) then Status_Ferien = EIN endif
      if date(14,06,11) then Status_Ferien = EIN endif
      if date(07,07,11) and !date(18,08,11) then Status_Ferien = EIN endif
      if date(17,10,11) and !date(29,10,11) then Status_Ferien = EIN endif
      if date(23,10,11) then Status_Ferien = EIN endif
      Gruß,
      Bernd

      Kommentar


        #4
        Zitat von bmx Beitrag anzeigen
        Also falls jemand noch für Niedersachsen die Ferien braucht ...
        Danke, hab ich mal als Codeschnipsel gestellt.

        Michael
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          Zitat von enertegus Beitrag anzeigen
          Danke, hab ich mal als Codeschnipsel gestellt.

          Michael
          Arrg - nicht aufgepasst (hat mich gleich die Steffi angemailt und gescholten).
          EDIT: Die obige Variante war noch richtig, der bessere code siehe unten.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #6
            Zitat von enertegus Beitrag anzeigen
            Ich fände dies elegant genug.
            Ich auch . Danke für die Implementierungsmöglichkeit.

            Ich bastel dann mal ein Macro mit den NRW-Ferien.

            Kommentar


              #7
              Zitat von enertegus Beitrag anzeigen
              Arrg - nicht aufgepasst (hat mich gleich die Steffi angemailt und gescholten). Es muss in der Art
              Code:
              //Feriensteuerung
              Status_Ferien = AUS
              //2010
              if date(01,01,10) or date(01,02,10) or date(19,03,10) then Status_Ferien = EIN endif
              if date(07,01,10) or date(03,02,10) or  date(07,04,10) then Status_Ferien = AUS endif
              //usw.
              gemacht werden, sonst gibts nur noch Ferien...
              Und gleich nochmal (man sollte doch besser nachdenken)
              zu date:
              "Der Ausgang ist 1b01, wenn das Datum erreicht oder bereits verstrichen ist. Liegt das Datum
              vor dem eingestellten Wert, geht der Ausgang auf 0"

              Das wird so also nix, die Variablen zu "odern", da die Variablen nicht mehr wechseln.

              Um einen Zeitraum in einem Jahr festzulegen so wie auf
              S. 48 im Handbuch verfahren:
              Code:
              Ferien=month(1,1) and !month(6,1)
              Will man nun auch das Jahr haben, kann man einfach noch coden
              Code:
              Ferien2010=month(1,1) and !month(6,1)  and date(1,1,10)
              schreiben.

              Michael
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                Zitat von enertegus Beitrag anzeigen
                Ich fände dies elegant genug.
                Insgesamt erscheint mir diese Lösung nicht den Anspruch der einfachen Anwendung zu verfolgen
                • das harte Kodieren der Feiertage, Ferienzeiten, Urlaubstage, "was auch immer für Ausnahmen" zu den Werktagen ist sehr mühsam
                • das Ändern unterbricht den Programmablauf, was immer wieder zur Löschung bereits bekannter Zustände (aktuelle Lichtszenen-Nummer, Statistiken, Verbräuche, Zeitschaltuhren, Tageszeitabhängige Events, etc.) führt.
                • Fehler sind schwer zu finden und fallen im Worst-Case erst auf, wenn es zu spät ist
                • ich möchte nicht in 2 Jahren, wenn der eibPC schon perfekt läuft, wieder wegen der neuen Ferien etc. anfangen im Code zu ändern.
                • Zusätzlich bedeutet die "einmalige" Festlegung des Parameters "WERKTAGS" den zusätzlichen Aufwand, bei jeder Abfrage die zusätzliche Abfrage, ob es nicht doch ein Ausnahme gibt!
                Mein Vorschlag ist:
                • eine Tabelle der Ausnahmen über die Programmieroberfläche änderbar zu machen, ohne den Programmablauf zu stören (besser ein Tabellen-Typ, dessen Inhalt über das EibStudio angepasst werden kann bzw. auch über den WebServer für die Visu)
                • eine Lösung für den Parameter "WERKTAGS" zu finden, der diese Ausnahmen automatisch bzw. programmierbar/dynamisch beachtet. Und hier gibt es nicht nur "WERKTAGS" sondern auch andere Anwendungen, wie z.B. Geburtstage.
                BR
                Marc

                Kommentar


                  #9
                  Zitat von saft6luck Beitrag anzeigen
                  das Ändern unterbricht den Programmablauf, was immer wieder zur Löschung bereits bekannter Zustände (aktuelle Lichtszenen-Nummer, Statistiken, Verbräuche, Zeitschaltuhren, Tageszeitabhängige Events, etc.) führt.
                  Bei einer SPS würde ich sowas mittels Änderungsladen (Deltaladen)
                  machen, aber in der PC Welt ist sowas viel schwieriger zu lösen.

                  Das Hauptproblem ist das Anhalten und Neustarten des EibPC nach
                  Änderungen im Code. So gesehen könnte - wenn die Eingangs- und
                  Ausgangsparameter GLEICH BLEIBEN - alles in einer Art Makro
                  hinterlegt werden. Dieses Makro müßte dann ohne Anhalten des
                  EibPC quasi - on the Fly - überschrieben werden können.
                  Das könnte aber nur gehen, wenn die Schnittstelle zum Restcode
                  gleichbleibt. Da ich mehr von der SPS-Schiene komme, weiß ich
                  natürlich nicht, ob sowas in der Compilerwelt so einfach machbar ist.

                  Gruß

                  Frank
                  Warum eine SPS wenns auch KNX gibt (oder war das umgekehrt???)

                  Kommentar


                    #10
                    Zitat von saft6luck Beitrag anzeigen
                    Insgesamt erscheint mir diese Lösung nicht den Anspruch der einfachen Anwendung zu verfolgen.
                    Meine Meinung hierzu ist: Gerade über die vorhandene Programmierung ist das recht einfach zu machen:
                    Ferien=(month(1,6) and !month(7,1)) or (month(1,2) and !month(2,1))
                    ist für mich verständlich, einfach und genau passend.

                    Ok - man muss die Ferien im Jahr 2010 wieder anpassen, aber so schnell wird man die Programmierung des EibPC nicht vergessen, schließlich ist sie ja einfach gehalten.

                    Eine Ferien-Tabelle über Webinterface ist eine Applikation, die wir sicher nicht auf der Featurelist haben.

                    Michael
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      Zitat von enertegus Beitrag anzeigen
                      Meine Meinung hierzu ist: Gerade über die vorhandene Programmierung ist das recht einfach zu machen:
                      Ferien=(month(1,6) and !month(7,1)) or (month(1,2) and !month(2,1))
                      ist für mich verständlich, einfach und genau passend.
                      Von Ingenieuren, für Ingenieure? Das hat nichts verständliches oder einfaches (siehe "Michaels Kampf mit den Tücken der Bereichserkennung " in diesem Thread).

                      Wenn ich da mein B&J/ABB Zeit-Modul anschaue, gibt es extra eine Applikation für die Konfiguration (mit dem PC ohne ETS, wofür man eine RS232 gerne auch ohne FT1.2 verwenden kann), und das nicht grundlos. Da kann man 'von-bis' festlegen, ohne sich verrenken zu müssen.
                      Ok - man muss die Ferien im Jahr 2010 wieder anpassen, aber so schnell wird man die Programmierung des EibPC nicht vergessen, schließlich ist sie ja einfach gehalten.
                      Nein, man muss die Ferien und Feiertage 2010, 2011, 2012, 2013, 2014, 2015, ... 20xx (wie lange soll der eibPC doch ohne HW Änderung laufen?) anpassen.
                      Den will ich sehen, der da 2015 nicht lieber im EibStudio die Tabelle anpasst würde, sondern mit Begeisterung den Code nach diesen Bereichen durchsucht oder das jährliche Makro Update für die Feiertage einspielt, das er dann noch um die persönlichen Wünsche erweitern darf.
                      Eine Ferien-Tabelle über Webinterface ist eine Applikation, die wir sicher nicht auf der Featurelist haben.
                      Nenn es einfach anders, z.B. Kalender mit Markierungsfunktion.
                      Ist das der einzige Punkt, der für dich wichtig war?

                      Profi (mit zertifiziertem Router) zum Hausbesitzer: " ... und das System hat eine indviduelle Regelung von Rolladen und Heizung für Tage an denen ihre Frau, ihre Kinder oder sie zu Hause sind bzw. keiner zu Hause ist."
                      Hausbesitzer: "Und woher kennt das System meine Arbeitszeiten?"
                      Profi : "Die programmieren sie in einem C-ähnlichen leicht verständlichen Eventcode in Form von if-Abfragen in den eibPC, jährlich, die Feiertage, Ferienzeiten sowie den Urlaub und evtl. Kurzarbeit."
                      Hausbesitzer: "Also, das will ich haben. Das ist viel besser als mein Telefon, das die Feiertage kennt und bei dem ich mit ein paar mal Drücken auf den Bildschirm die Ferientage angebe."
                      BR
                      Marc

                      Kommentar


                        #12
                        Zitat von saft6luck Beitrag anzeigen
                        Von Ingenieuren, für Ingenieure? Das hat nichts verständliches oder einfaches (siehe "Michaels Kampf mit den Tücken der Bereichserkennung " in diesem Thread).
                        Ok,die Tücken liegen natürlich darin, dass man das im Urlaub so am Abend mal eben macht - so viel dazu,
                        Und dann (bevor mich die endlosen Diskussionen noch Zeit kosten):

                        F-000102
                        FEIERTAG und URLAUB als weitere Schaltuhroption. Diese Tage sollen per getrennter Tabelle und ohne den Ablauf des Programms zu stören in den Enertex® EibPC eingespielt werden können

                        Edit: Das ist nicht on top der Features und Fixes - 5 Monate wird es wohl dauern.
                        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                        Enertex Produkte kaufen

                        Kommentar


                          #13
                          Zitat von enertegus Beitrag anzeigen
                          ... Das ist nicht on top der Features und Fixes - 5 Monate wird es wohl dauern.
                          Hoi

                          Ich hol das mal wieder nach oben.

                          Ich weiss, es ist Featurestop. Das find' ich ja auch wirklich gut, damit das Ding endlich mal läuft, so wie es soll

                          Aber nicht dass es wieder heisst, es hat sich ja keiner dafür interessiert...
                          Grüsse Bodo
                          Fragen gehören ins Forum, und nicht in mein Postfach;
                          EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                          Kommentar


                            #14
                            Zitat von Bodo Beitrag anzeigen
                            Hoi
                            Ich hol das mal wieder nach oben.
                            Ich weiss, es ist Featurestop.
                            Ein wichtiger Meilenstein ist die Geschwindigkeitsoptimierung gewesen. Der HTML-Generator hat hier immer noch Potenzial, obwohl der "100-WebSeiten-"Generator" Faktor 20 schneller ist, als der 1-WebSeite-Generator. Er ist jetzt schon im Bereich von CF/EibPC-Homecontrol (~250 ms). Es zeigt sich hier bei Tests, dass wir unter 40 ms erreichen können - so schnell, das z.B. die Busantwort länger braucht, als der dynamische Seitenaufbau. Diese Optimierung wird was für die Zukunft, das wird aber sicher noch realisiert.

                            Im kommenden halben Jahr wird auch mehr die Ertüchtigung für den weniger versierten Anwender mit Hilfe von Beispielprojekten und weiteren (z.T. Trivial-) Makros stehen etc.

                            Insbesondere steht ein Demoprojekt für den Webserver, eine CF-Anbindung und ein EibPC Homecontrol auf dem Plan.

                            Als wichtiges neues Feature soll iETS eingebaut werden.

                            Soviel zum Blick in die nähere Zukunft.
                            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                            Enertex Produkte kaufen

                            Kommentar


                              #15
                              Schaut mal hier: https://knx-user-forum.de/code-schni...nkalender.html
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar

                              Lädt...
                              X