Ankündigung

Einklappen
Keine Ankündigung bisher.

Funktion day()

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

    Funktion day()

    Hallo,

    ich möchte zu jedem Monatswechsel die Uhrzeit zur Synchronisation meines Zeitgebers in eine Gruppenadresse speichern und auch die Zählerstände für Strom und Gas auf eine weitere Variable übertragen.

    Leider lösen meine Befehle keine Aktion aus.
    Befehl in meinem Programm: if (day(1)) then write("Uhrzeit-8/1/0"t24,settime()) endif
    Befehl aus dem Handbuch: if (day(1)) then write(„Wanduhr-4/3/5“t24,settime()) endif

    Auch dieser Befehl wurde nicht wie erwartet beim Monatswechsel vom 31.01. aus den 01.02. ausgeführt.
    if after(day(1),1000u64) then {
    Zaehlerstand_vorletzter_Monat = Zaehlerstand_letzter_Monat;
    Zaehlerstand_Einspeisung_vorletzter_Monat = Zaehlerstand_Einspeisung_letzter_Monat;
    Gas_Zaehlerstand_vorletzter_Monat = Gas_Zaehlerstand_letzter_Monat
    } endif

    Ich habe einen alten Beitrag von 2012 gefunden, der leider nicht so richtig beantwortet wurde. Habe die gleiche Frage bzgl. "day(1)"
    https://knx-user-forum.de/forum/supp...-immer-auf-ein

    Kann man die Funktion "day()" bzgl. ihres aktuellen Wertes "0" oder "1" prüfen? (wahrscheinlich könnte man den Wert in eine Variable schreiben)

    Danke!

    #2
    Ja, das im Handbuch ist an dieser Stelle zwar syntaktisch richtig, aber nicht funktionell . Die Lösung wäre
    Code:
    if day(1) and !day(2) then...  endif
    Hintergrund: day(x) geht am Tag x des Monats auf 1 und bleibt da bis zu Ende. Ist dann beim ersten Tag natürlich immer 1.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Zitat von enertegus Beitrag anzeigen
      Handbuch
      Wird mit den nächsten Update korrigiert.

      Kommentar


        #4
        Hallo foobar0815,

        danke für die, wie immer, schnelle Rückmeldung. Schoen das sich das Thema somit geklärt hat. Erstaunlich wie lange das Problem ungeklärt blieb. Auch mir ist der Fehler bzgl. der Zeit-Synchronisierung lange nicht aufgefallen. Erst als ich den Code auch für den Übertrag meiner Zählerstände nutzen wollte.

        Kannst Du sagen, wie lange das update braucht und ob es überhaupt noch für den EibPC bereitgestellt wird? Der Bugfix hätte ja jetzt einen Monat Zeit

        Will jetzt nicht unnötig ändern und dann nach dem Bugfix nochmal.

        Danke!

        Kommentar


          #5
          Mit Update war das Handbuch gemeint. Die Firmwarefunktion macht genau das, was sie soll - auch wenn sie ohne weitere Einschränkung (also zB and !(day(2)) natürlich keinen Sinn macht.

          Also wie oben anpassen und schon sollten die Zählerstandsspeicher auch gehen.

          Kommentar


            #6
            Zitat von enertegus Beitrag anzeigen
            Code:

            if day(1) and !day(2) then... endif
            dann kann man doch auch einfach nur

            if !day(2) then... endif

            schreiben, weil day (1) ja eh immer true ist, oder?

            Kommentar


              #7
              Zitat von Latias1990 Beitrag anzeigen
              schreiben, weil day (1) ja eh immer true ist, oder?
              Ja. Wenn man aber nur während des 5. des Monats ein EIN haben will, müsste man
              Code:
              uTag5Monat = day(5) and !day(6)
              coden.
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                jetzt muss ich auch mal fragen....
                wenn ich also nur den z.B. 5.7. schalten will, dann

                uTag507 = month(5,7) and !month(6,7)?
                never fummel a running system...

                Kommentar


                  #9
                  month(5,7) ist ab dem 5.7 auf EIN
                  !month(6,7) ist ab dem 6.7 auf AUS
                  Die Verknüpfung ist also während des einen Tages auf EIN.
                  if month(5,7) then XYZ() endif
                  wird aber trotzdem nur einmal ausgeführt (wegen dem Validierungskonzept)
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar

                  Lädt...
                  X