Ankündigung

Einklappen
Keine Ankündigung bisher.

Kalenderaktionen

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

    Kalenderaktionen

    Hallo EIBPCler

    Ich hätte da mal ein Problem für das ich momentan keine einfache Lösung habe.

    Ich würde gerne an bestimmten Tagen im Jahr wiederum bestimmte Dinge tun.

    Beispiel:
    Am 19.11 ist Abholtermin für Rundmüll.
    Ich hätte also gerne am 18.11. um 16.30 eine EMail, die mich daran erinnert.

    Wenn ich jetzt schreibe:
    if date(18,11,10) and htime(16,30,00) then sendmail(MAILADDRESS,RUNDMUELLBETREFF,RUNDMUELLNAC HRICHT) endif

    dann bekomme ich ab dem 18.11.2010 jeweils um 16:30 eine entsprechende Mail.

    gibts da nicht einen Einfachen weg.

    Ich könnte das jetzt natürlich aufblasen:

    if (date(18,11,1) and Date(19,11,10)==AUS) then MerkerRundMuell1811=EIN else MerkerRundMuell1811=AUS endif
    if MerkerRundMuell1811 and htime(16,30) then
    sendmail(MAILADDRESS,RUNDMUELLBETREFF,RUNDMUELLNAC HRICHT) endif

    Das könnte funktionieren wird aber bei ca 50 Müllterminen im Jahr schon mal sehr unübersichtlich.

    Übrigens ist die Funktion date() im Handbuch verschieden beschrieben.
    In der Befehlsübersicht steht: date(yyy,mm,dd)
    bei der Funktionserklärung aber : date(dd,mm,yyy)

    Vielleicht kann mir jemand weiter helfen. Ich sehe vor lauter Möglichkeiten, die Eleganz nicht mehr

    Zum Thema passend wäre noch interessant zu wissen, wie ich zum aktuellen Datum einen Tag hinzuzähle. Ich will ja in der EMail Stehen haben, dass der Müll am 19.11.2010 raus muss. Es soll nicht der 18.11.2010 erwähnt werden.

    RUNDMUELLBETREFF =$Müllerinnerung RUND$ + convert(setdate(), $$)

    Gruß Andreas

    PS: Auch wenn ich momentan über solche Dinge stolper, ich bin soooo froh, dass ich den HS endlich los bin und mich mit dem EIBPC vergnügen kann.

    #2
    Serus Andreas,

    Wenn ich jetzt schreibe:
    if date(18,11,10) and htime(16,30,00) then sendmail(MAILADDRESS,RUNDMUELLBETREFF,RUNDMUELLNAC HRICHT) endif

    dann bekomme ich ab dem 18.11.2010 jeweils um 16:30 eine entsprechende Mail.
    Meiner Meinung nach bekommst du damit genau eine e-mail, 1 mal im Jahr und zwar exakt eben zu diesem Zeitpunkt.

    Das hilft dir aber jetzt trotzdem nicht wirklich weiter. Was du dann bräuchtest wären schlauere Funktionen wie ein IncWeek(2) oder so, mit dem du deinen Starttermin um z.B. 2 Wochen für die nächste Erinnerung erhöhen kannst. Solche Datumsarithmetik müßte man sich selber stricken. Ausser die Enertex Mädels und Jungs gehen her und packen es selbst in Makros.

    Grüße,

    Harry

    Kommentar


      #3
      Hallo Harry

      Schön wäre es, wenn ich nur eine EMail bekommen würde.

      Die Funktion date(02,01,10) ist das ganze Jahr außer dem 01 Januar auf TRUE.
      Die Uhrzeit wird aber nur wirklich genau zu der Uhrzeit True, sonst nicht.

      Das ist ja gerade mein Problem.

      Gruß Andreas

      Kommentar


        #4
        Moin, moin Andreas,
        Zitat von Little Bastard Beitrag anzeigen
        Die Funktion date(02,01,10) ist das ganze Jahr außer dem 01 Januar auf TRUE.
        Die Uhrzeit wird aber nur wirklich genau zu der Uhrzeit True, sonst nicht.
        Nimm doch statt htime die chtime Funktion. Die wird einmalig zu der Uhrzeit TRUE und bleibt dann auch so bis Mitternacht...

        Zitat von Handbuch ca. S. 131
        ● chtime(hh,mm,ss) mit:
        ss: Sekunden (0..59)
        mm: Minuten (0..59)
        hh: Stunden (0..23)
        Argumente
        ● 3 Argumente vom Datentyp u08
        Wirkung
        ● Der Rückgabewert ist 0b01, wenn die aktuelle Zeit der Enertex® EibPC-Systemuhr nicht
        gleich hh:mm:ss ist. Wenn der Zeitpunkt eintrifft, geht der Ausgabewert auf 1b01 und bleibt
        auf diesem Wert bis zum nächsten Tag (d.h. 00:00:00 Uhr).
        Datentyp Ergebnis (Rückgabe)
        ● Datentyp b01
        Gruß,
        Bernd

        Kommentar


          #5
          Hallo Bernd

          Leider hast du mich nicht ganz verstanden.

          Mein Problem ist nicht die htime() oder chtime(). Die funktioniert ganz Prima.
          Das Problem ist, das die date() funktion vom 18.11.10 bis Sylvester auf true bleibt und somit jeden Tag zu htime() oder von mir aus auch chtime() eine EMail verschickt wird.

          Ich wünsche mir also vielleicht äquivalent zu htime(),chtime() eine cdate() Funktion, die die aktuelle date() ersetzt und dann eben eine date(), die nur am angegeben Tag ein true besitzt und eben um 24:00 wieder auf false geht.

          vielleicht sollte ich das in die Feature-Liste schreiben.
          Ich hatte gehofft, dass es einen einfachen Weg gibt, den ich noch nicht entdeckt habe.

          Gruß Andreas

          Kommentar


            #6
            Wie wäre es mit:
            if date(18,11,10) and !date(19,11,10) and htime(16,30,00) then sendmail(MAILADDRESS,RUNDMUELLBETREFF,RUNDMUELLNAC HRICHT) endif

            Kommentar


              #7
              Moin Andreas,

              Zitat von Little Bastard Beitrag anzeigen
              Ich wünsche mir also vielleicht äquivalent zu htime(),chtime() eine cdate() Funktion, die die aktuelle date() ersetzt und dann eben eine date(), die nur am angegeben Tag ein true besitzt und eben um 24:00 wieder auf false geht.
              Ja, das ist entweder was für einen Featurewunsch oder aber Du packst das einfach in ein Makro hinein.

              Ich würde das vermutlich einfach mit einem Makro lösen, denn Du kannst das einfach erweitern, falls sich Deine Bedürfnisse mal ändern. z.B. wenn Du dann Deine email stündlich bekommen willst solange Du nicht bestätigt hast das der Eimer auch wirklich an der Straße steht. Oder aber alle 10 minuten ein UDP-Telegramm auf das iPhone, oder aber blinken der Küchenbeleuchtung solange nicht die Bestätigung da ist :-)

              Gruß,
              Bernd

              Kommentar


                #8
                Zitat von bmx Beitrag anzeigen
                Ja, das ist entweder was für einen Featurewunsch oder aber Du packst das einfach in ein Makro hinein.
                Ja, das ist ein Kandidat für ein funktionales Makro, siehe https://knx-user-forum.de/attachment...os-preview.pdf
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #9
                  Danke für die vielen Lösungsansätze.
                  Makro wäre eine tolle Idee, wenn dann ab der nächsten EvaluationsStufe, die Makros im Code stehen können. Die momentane Lösung ist leider sehr unübersichtlich, um nicht zu sagen, für 3te nicht zu lesen.

                  Aber die Lösung von MarkusL gefällt mir eindeutig am besten, ich wusste nicht, dass ein einfaches ! als invertierung funktioniert. Dies hatte ich allerdings auch noch nie ausprobiert. Bisher habe ich dann solche Handstände wie

                  and blabla==0b01;

                  gemacht.

                  Versuch macht aber auch da schienbar klug.

                  Jetzt bleibt noch die Frage, wie ich es schaffe, innerhalb der Mail, das Datum des nächsten Tages anzuzeigen.
                  Also heute ist der 23.11.2010 aber im Header der EMail sollte der 24.11.2010 stehen.

                  Gruß Andreas

                  Kommentar


                    #10
                    Zitat von Little Bastard Beitrag anzeigen
                    Jetzt bleibt noch die Frage, wie ich es schaffe, innerhalb der Mail, das Datum des nächsten Tages anzuzeigen.
                    Also heute ist der 23.11.2010 aber im Header der EMail sollte der 24.11.2010 stehen.
                    Ein String mit dem aktuellem Datum definierst Du so:
                    [highlight=epc]
                    MyDate=convert(setdate(),$$)
                    [/highlight]
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      Zitat von Little Bastard Beitrag anzeigen
                      Jetzt bleibt noch die Frage, wie ich es schaffe, innerhalb der Mail, das Datum des nächsten Tages anzuzeigen.
                      Also heute ist der 23.11.2010 aber im Header der EMail sollte der 24.11.2010 stehen.
                      Ein String mit dem aktuellem Datum definierst Du so:
                      [highlight=epc]
                      MyDate=convert(setdate(),$$)
                      [/highlight]
                      EDIT:
                      Ach ich sehe, Du willst den nächsten Tag, dann müsstest Du Dir den String anders "basteln". Ich muss da mal überlegen, was da das einfachste wäre. Eine Möglichkeit mit einer if-Abfrage, den aktuellen Tag rausfinden (mit day, month, year). Ist nicht schwer, aber ein paar Zeilen Code kämen zusammen.
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #12
                        AHHH

                        Endlich einer der mich versteht. :-)

                        Was für ein Datentyp ist den date?
                        Kann ich nicht irgendetwas dazuzählen.

                        MyDate= convert((setdate()+1), $$) > datum+1tag
                        oder
                        MyDate= convert((setdate()+24), $$) > datum+24Stunden
                        oder
                        MyDate= convert((setdate()+86400), $$) > datum+1TagInSekunden
                        oder
                        MyDate= convert((setdate()+86400000), $$) > datum+1TagInms

                        Gruß Andreas

                        Kommentar


                          #13
                          Zitat von Little Bastard Beitrag anzeigen
                          AHHH
                          Was für ein Datentyp ist den date?
                          Kann ich nicht irgendetwas dazuzählen.
                          Es ist das KNX Datumsformat, 24 Bit. Dazu kannst Du dir mal die Binärdaten mit dem CSV-Export des Telegramms anschauen. Wenn ich mich recht erinnere, ist das einfach ein Byte für Tag/Monat/Datum (siehe Datentypen - KNX/EIB - Lexikon - KNX-User-Forum)

                          Wenn Du diese Daten behandeln willst, müsste man mit stringset arbeiten (also den Inhalt in einen c1400-String binär kopieren). Somit könnte man byteweise arbeiten und den Tag und den Monat direkt "rausholen" bzw. mit stringcast arbeiten.

                          grob skizziert,wie folgt (wobei ich jetzt mal davon ausgehe, dass die Sache mit den 1Byte pro Tag/Monat/Jahr so stimmt)
                          [highlight=epc]
                          myDate=$$
                          Tag=0
                          Monat=0
                          Jahr=0
                          if htime(0,0,0) then {
                          stringset(myDate,stringset(),0u16);
                          Tag=stringcast(myDate,Tag,0u16);
                          Monat=stringcast(myDate,Monat,1u16)
                          Jahr=stringcast(myDate,Jahr,2u16)
                          } endif
                          //
                          // Beim Hochzählen muss man nun noch aufpassen, ob Monatswechsel
                          // oder gar Jahreswechsel. Sollte eine einfache Logik sein...
                          // Also Wenn Januar, dann 31 Tage etc...
                          [/highlight]
                          teste doch mal und berichte ;-)
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar

                          Lädt...
                          X