Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Baustein 19997_Kalenderwoche

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

    HS/FS - √ - Baustein 19997_Kalenderwoche

    Hallo Zusammen,

    der Baustein gibt bei mir zur Zeit "KW2" aus, allerdings ist noch KW1. Ist das bei euch auch so ?

    Danke.

    mfg
    philipp80

    #2
    Schreib mal in Excel "=Kalenderwoche(jetzt())" und du bekommst .... "2"

    Excel rechnet (unabhängig von der Spracheinstellung) immer nach der amerikanischen Norm. Wir in D nach DIN 1355. In 2009 war das zufällig gleich; aber in 2010 wird es schwierig.

    Ich habe keinen HS, denke aber es hängt damit zusammen.

    (In Excel kann mit Datum in "A1" die Formel "=KÜRZEN((A1-DATUM(JAHR(A1+3-REST(A1-2;7));1;REST(A1-2;7)-9))/7)" verwendet werden; stimmt dann in jedem Jahr.)

    Kommentar


      #3
      Der Fehler liegt in der Funktion strptime ...
      Ihr wird nur ein Jahreswert übergeben.
      Die fehlenden Daten (Monat,Tag)
      unterschiedlich vorbesetzt.
      Daraus ergeben sich dann unterschiedliche Wochentage.
      Man sollte grundsätzlich alle Werte angeben, dann kann man nicht in solche
      Fallen laufen .....
      (also auch Tag=1 und Monat=1 mit übergeben)
      Gruß Matthias
      EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
      - PN nur für PERSÖNLICHES!

      Kommentar


        #4
        Wunderbar, danke. Hab den Baustein angepasst und jetzt stimmt die Ausgabe.

        Ich habe folgende Zeile
        Code:
        012|0|"1"|"(__import__('time').strptime(str(int(__import__('time').localtime()[0])),"%Y")[6]+2)%7"|""|0|0|1|0
        mit dieser ersetzt:

        Code:
        5012|0|"1"|"(__import__('time').strptime('1 Jan'+str(int(__import__('time').localtime()[0])),'%d %b %Y')[6]+2)%7"|""|0|0|1|0
        Gruss
        philipp80

        Kommentar


          #5
          Vielleicht hilfts ja jemandem,

          hatte das mal in dem Zusammenhang mit dem Fehlverhalten von Tilo's Baustein mal ausprobiert --- ungetestet -- nur in der IDLE Shell
          Code:
          #Zeit auf SN[1]
          5012|0|""|"__import__('time').localtime()"|""|0|0|1|0
          # Woche auf SN[2]
          5012|0|""|"int(__import__('time').strftime("%W",SN[1]))"|""|0|0|2|0
          # Wenn SN[2] =0 dann nochmal mit datum vom 31.12. des Vorjahres wird dann wohl Woche 53 
          5012|0|"SN[2]==0"|"int(__import__('time').strftime("%W",__import__('time').localtime(__import__('time').mktime(int(SN[1][0])-1,12,31,0,0,0,0,0,0)))"|""|0|0|2|0
          # SN[2] auf den Ausgang 1
          5012|0|""|"int(SN[2])"|""|1|0|0|0
          Nils

          aktuelle Bausteine:
          BusAufsicht - ServiceCheck - Pushover - HS-Insight

          Kommentar


            #6
            Zitat von philipp80 Beitrag anzeigen
            mit dieser ersetzt:
            Fast, schmeisst zumindest in der Idle-Shell nen Fehler, ein Leerzeichen mehr:

            Code:
            5012|0|"1"|"(__import__('time').strptime('1 Jan '+str(int(__import__('time').localtime()[0])),'%d %b %Y')[6]+2)%7"|""|0|0|1|0
            Makki
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #7
              Zitat von philipp80 Beitrag anzeigen
              Wunderbar, danke. Hab den Baustein angepasst und jetzt stimmt die Ausgabe.

              mit dieser ersetzt:

              Code:
              5012|0|"1"|"(__import__('time').strptime('1 Jan'+str(int(__import__('time').localtime()[0])),'%d %b %Y')[6]+2)%7"|""|0|0|1|0
              Gruss
              philipp80
              Nicht ganz, KW2 wurde jetzt schon am Sonntag gemeldet, nicht erst am Montag.
              Gruß Matthias
              EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
              - PN nur für PERSÖNLICHES!

              Kommentar


                #8
                Für Nachmacher: NilsSs Code oben ist ganz nah dran : dort fehlt noch eine (vierte) schließende Klammer, und der Kommentar muss ergänzt werden zu 'wird dann Woche 52 oder 53' , Zeile 5001 ändern und eine zweite 5003 einfügen, fertig.

                Ich schreibe Tilo mal an, ob er seinem Originalbaustein ein Update verpasst.
                Gruß, Rainer

                Kommentar


                  #9
                  Zitat von Taxus Beitrag anzeigen
                  Ich schreibe Tilo mal an, ob er seinem Originalbaustein ein Update verpasst.
                  versuch das mal, wenn der keine Zeit haben sollte, kannst du den Code von mir natürlich einfach in einem eigenen Baustein übernehmen
                  Nils

                  aktuelle Bausteine:
                  BusAufsicht - ServiceCheck - Pushover - HS-Insight

                  Kommentar


                    #10
                    danke für den hinweis. ich werde mir das in den nächsten tagen gleich mal anschauen und eine korrigierte version hochladen.

                    ist zum glück nicht so schlimm wie der 2010-ec-karten-bug. das hat mich in den ersten 2 wochen dieses jahres mehr genervt - ist echt toll im ausland im urlaub, wenn keine von 4 geldkarten funktioniert

                    ciao
                    tilo

                    Kommentar


                      #11
                      Hallo Tilo,
                      ich möchte nur kurz nachfragen, ob es bereits eine neue Version des Kalenderwochen- Bausteins gibt?
                      Das würde mir sehr helfen, da ich nicht in der Lage bin einen Baustein umzuschreiben.
                      Schöne Grüße,
                      Niels

                      Kommentar


                        #12
                        Hi,

                        die Änderungen müssen in der Datei

                        C:\Programme\Gira\HS+FS\exp232\DE\logic\19997_Kale nderwoche.hsl

                        vorgenommen werden. Das kann mit einem normalen Editor erfolgen. Innerhalb der Datei sind wohl folgende Änderungen notwendig:

                        1) Zeile
                        Code:
                        5001|1|1|0|1|1
                        durch
                        Code:
                        5001|1|1|0|2|1
                        ersetzen.

                        2) Nach der Zeile
                        Code:
                        5003|1|0|1
                        folgende Zeile einfügen:
                        Code:
                        5003|2|0|1
                        3) Logik anpassen:
                        Alle Zeilen die mit 5012 beginnen aus der Datei entfernen und folgende Zeilen dafür einfügen:

                        Code:
                        #Zeit auf SN[1]
                        5012|0|""|"__import__('time').localtime()"|""|0|0|1|0
                        # Woche auf SN[2]
                        5012|0|""|"int(__import__('time').strftime("%W",SN[1]))"|""|0|0|2|0
                        # Wenn SN[2] =0 dann nochmal mit datum vom 31.12. des Vorjahres wird dann wohl Woche 52 oder 53 
                        5012|0|"SN[2]==0"|"int(__import__('time').strftime("%W",__import__('time').localtime(__import__('time').mktime(int(SN[1][0])-1,12,31,0,0,0,0,0,0))))"|""|0|0|2|0
                        # SN[2] auf den Ausgang 1
                        5012|0|""|"int(SN[2])"|""|1|0|0|0
                        So hab ich zumindest die von NilsS und Taxus angegebenen Hinweise verstanden.

                        Gruss
                        philipp80

                        Kommentar


                          #13
                          so bitteschön, ich hoffe das das in deinem Sinne ist, Tilo

                          Code:
                          ###################################
                          ### (C) 2004, Tilo Kühn, v1.0
                          ###################################
                          ### BS : Kalenderwoche
                          ###################################
                          
                          #5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
                          #5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
                          #5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch
                          #5003|Speicher|Initwert|Remanent
                          #5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch
                          #5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
                          5000|"Tilo\Kalenderwoche"|0|1|"Trigger"|1|"Kalenderwoche"
                          5001|1|1|0|2|1
                          5002|1|0|0 # Trigger
                          5003|1|0|0  # aktuelles Zeitobjekt
                          5003|2|0|0  # jetzige Woche
                          5004|1|0|0|2|0  # KalenderWoche
                          #Zeit auf SN[1]
                          5012|0|""|"__import__('time').localtime()"|""|0|0|1|0
                          # Woche auf SN[2]
                          5012|0|""|"int(__import__('time').strftime('%W',SN[1]))"|""|0|0|2|0
                          # Wenn SN[2] =0 dann nochmal mit datum vom 31.12. des Vorjahres wird dann wohl Woche 52 oder 53 
                          5012|0|"SN[2]==0"|"int(__import__('time').strftime('%W',__import__('time').localtime(__import__('time').mktime(int(SN[1][0])-1,12,31,0,0,0,0,0,0))))"|""|0|0|2|0
                          # SN[2] auf den Ausgang 1
                          5012|0|""|"int(SN[2])"|""|1|0|0|0
                          Nils

                          aktuelle Bausteine:
                          BusAufsicht - ServiceCheck - Pushover - HS-Insight

                          Kommentar


                            #14
                            so bitte noch mal rauskopieren die doppelten Anführungszeichen waren falsch
                            Nils

                            aktuelle Bausteine:
                            BusAufsicht - ServiceCheck - Pushover - HS-Insight

                            Kommentar


                              #15
                              Sorry ich werd alt,
                              jetzt will er aber, man sollte nicht so viele Sachen auf einmal machen.
                              Die 5001er Zeile war die kopierte aus Tilo's Original
                              Nils

                              aktuelle Bausteine:
                              BusAufsicht - ServiceCheck - Pushover - HS-Insight

                              Kommentar

                              Lädt...
                              X