Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitfunktionen

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

    Zeitfunktionen

    Hi Michael,

    wie werden nun eigentlich die Zeitfunktionen beim Systemstart gehandhabt?

    Ich habe derzeit eine Abfrage die prüft (einmalig) ob es schon nach 22.00 Uhr ist. Wenn das so ist, dann wird das Licht nur noch minimal gedimmt eingeschaltet. Solange der EibPC läuft, bekommt er das auch mit.

    Nun bin ich aber nach 22.00 Uhr am programmieren, schreibe das neue Programm in den EibPC und dann: Ich komme nach unten in den Flur und das Licht geht volle Pulle an. Frau wacht auf, motzt mich an, WAF im Keller ;-)

    Hast Du einen Lösungsansatz?

    Gruß,
    Bernd


    #2
    Hi Bernd,

    bin zwar nicht Michael, aber...

    dafür gibt es die Funktionen mit dem c vorne, also z.B chtime().
    Die gibt ab dem übergebenen Zeitpunkt bis Mitternacht eine 1b01 aus.

    htime() geht nur an dem Zeitpunkt auf 1b01 und danach wieder auf 0b01.

    Wenn du da nicht jeden Tag machen willst dann cwtime()
    (Es gab vor 1-2 Wochen diese Diskussion über cwtime() und die Probleme mit dem WERKTAGS Parameter)

    Kommentar


      #3
      Dankle Markus!

      das war der springende Punkt der mir den Sinn der c..time Funktionen nahe gebracht hat. Damit konnte ich bisher irgendwie nichts anfangen...

      Gruß,

      Olaf
      ETW mit TS2+, SmartSensor, Winkhaus Fensterkontakte, EibPC, OpenRemote KNX

      Kommentar


        #4
        Hi Markus,

        Code:
        Nachtzeit = AUS
        Party = AUS
        if systemstart() then write("MSG-9/2/0", $Nachtzeit$c14+Convert(Nachtzeit,$$c14)) endif
        
        // WERKTAGS = BUG if cwtime( 06,00,00,WERKTAGS) then Nachtzeit = AUS endif
        if cwtime( 06,00,00,MONTAG) then Nachtzeit = AUS endif
        if cwtime( 06,00,00,DIENSTAG) then Nachtzeit = AUS endif
        if cwtime( 06,00,00,MITTWOCH) then Nachtzeit = AUS endif
        if cwtime( 06,00,00,DONNERSTAG) then Nachtzeit = AUS endif
        if cwtime( 06,00,00,FREITAG) then Nachtzeit = AUS endif
        if cwtime( 08,00,00,WOCHENENDE) then Nachtzeit = AUS endif
        if chtime( 22,00,00) then Nachtzeit = EIN endif
        Als Beispiel mal meinen Code. Wenn der Bug bei Werktags raus ist, kann ich es auch wieder einfacher schreiben ...

        Wenn ich jetzt (also 22:18) das Programm neu aufspiele, ist und bleibt die Nachtzeit auf AUS und geht nicht auf ein. Daher brauche ich eine Lösung für eben solche Fälle, das dieser Zeitpunkt überschritten ist. Ich denke das ist ein Problem des Validierungsschemas und mir fällt derzeit keine Lösung ein.

        Ideen?

        Gruß,
        Bernd

        Kommentar


          #5
          Zitat von bmx Beitrag anzeigen
          Ich komme nach unten in den Flur und das Licht geht volle Pulle an. Frau wacht auf, motzt mich an, WAF im Keller ;-)
          Mein AF wäre auch im Keller wenn ich im Flur pennen müsste
          Vorschlag: Frau in den Keller verfrachten
          Gruss Pio

          Kommentar


            #6
            Hi Michael,

            ich muß den Thread nochmal raufholen: hast Du für das beschriebene Problem eine Idee?

            Code:
            Nachtzeit = AUS
            
            if cwtime( 06,00,00,MONTAG) then Nachtzeit = AUS endif
            if cwtime( 06,00,00,DIENSTAG) then Nachtzeit = AUS endif
            if cwtime( 06,00,00,MITTWOCH) then Nachtzeit = AUS endif
            if cwtime( 06,00,00,DONNERSTAG) then Nachtzeit = AUS endif
            if cwtime( 06,00,00,FREITAG) then Nachtzeit = AUS endif
            if cwtime( 08,00,00,WOCHENENDE) then Nachtzeit = AUS endif
            if chtime( 22,00,00) then Nachtzeit = EIN endif
            Wenn ich jetzt (also 22:18) das Programm neu aufspiele, ist und bleibt die Nachtzeit auf AUS und geht nicht auf ein. Daher brauche ich eine Lösung für eben solche Fälle, das dieser Zeitpunkt überschritten ist. Ich denke das ist ein Problem des Validierungsschemas und mir fällt derzeit keine Lösung ein.

            Gruß,
            Bernd

            Kommentar


              #7
              Zitat von bmx Beitrag anzeigen
              Wenn ich jetzt (also 22:18) das Programm neu aufspiele, ist und bleibt die Nachtzeit auf AUS und geht nicht auf ein. Daher brauche ich eine Lösung für eben solche Fälle, das dieser Zeitpunkt überschritten ist. Ich denke das ist ein Problem des Validierungsschemas und mir fällt derzeit keine Lösung ein.
              Probier doch einfach mal folgendes:
              Code:
              Nachtzeit = AUS
               
              if cwtime( 06,00,00,MONTAG) then Nachtzeit = AUS endif
              if cwtime( 06,00,00,DIENSTAG) then Nachtzeit = AUS endif
              if cwtime( 06,00,00,MITTWOCH) then Nachtzeit = AUS endif
              if cwtime( 06,00,00,DONNERSTAG) then Nachtzeit = AUS endif
              if cwtime( 06,00,00,FREITAG) then Nachtzeit = AUS endif
              if cwtime( 08,00,00,WOCHENENDE) then Nachtzeit = AUS endif
              [COLOR=red][B]if ( after( systemstart(), 60000u16 ) and chtime( 22, 00, 00 ) ) then Nachtzeit = EIN endif[/B][/COLOR]
              if chtime( 22,00,00) then Nachtzeit = EIN endif
              Ich vermute, das Problem ist die Initialisierung von Nachtzeit, die im gleichen Zyklus geschieht, wie die Erkennung "nach 22:00 Uhr".
              Durch das after wird die ensprechende Auswertung zwar verzögert (sollte ja auch mit 1ms funktionieren, aber 1min kann man leichter verifizieren), aber die Auswertung sollte dadurch erneut geschehen.

              Mut zum Ausprobieren ...
              BR
              Marc

              Kommentar


                #8
                Hallo,

                wenn du die Nachtsteuerung einschaltest, solltest du den "c" Timer nehmen. Zum ausschalten nimm aber den normalen Timer.

                Der CTimer für morgens 6Uhr bleibt 1 bis 24.00 und wird erst dann zurückgesetzt, d.h. er schaltet dir abends deine Nachtzeit direkt wieder aus.

                Du kannst besser mit der Sun() Funktion arbeiten.
                Der schöne Niederrhein läßt Grüssen

                Andreas


                Alter Hof mit neuer Technik

                Kommentar


                  #9
                  Zitat von anlo007 Beitrag anzeigen
                  wenn du die Nachtsteuerung einschaltest, solltest du den "c" Timer nehmen. Zum ausschalten nimm aber den normalen Timer.
                  Hm, ich glaube das ändert doch nichts, oder?
                  Der CTimer für morgens 6Uhr bleibt 1 bis 24.00 und wird erst dann zurückgesetzt, d.h. er schaltet dir abends deine Nachtzeit direkt wieder aus.
                  Ohne es ausprobiert zu haben, würde ich das so sehen:

                  Reihenfolge ist vorgegeben (und der eibPC hält sich daran).

                  Es ergibt sich nach obigem Code eine Überlappung der Zeiten.
                  Graphisch dargestellt
                  _Tag : 0:00 ------ 6:00/8:00 tttttttttttttttt 22:00 tt
                  Nacht: -------------------------------------------- nn

                  - = Wert nicht beeinflusst
                  t = Wert als Tag gesetzt
                  n = Wert als Nacht gesetzt

                  Da "Nacht" nach "Tag" gesetzt wird (egal ob die Abfragen nur einmalig beim Wechsel oder zyklisch abgearbeitet werden), ist also ab 22:00 Nacht.

                  Bei dieser Betrachtung wird aber auch ersichtlich, dass von 0:00 bis 6:00/8:00 der Wert scheinbar nicht näher bekannt ist bzw. vom vorangegangenen Tag abhängt. Die Initialisierung mit Nachtzeit = EIN würde dann auch dieses "Problem" beheben. Bernd, probier das doch mal.

                  Du kannst besser mit der Sun() Funktion arbeiten.
                  Wow, das war aber Link , aber stimmt, der Sonnenstand ist ja eh ortsbezogen und somit ungenau (wie wir von Bernd gelernt haben), dann kann man ja mit sun() die 6:00 bzw. 8:00 Uhr annähern. Der Trick funktioniert dann ja auch mit 22:00 Uhr.

                  Man möge mir verzeigen ...
                  BR
                  Marc

                  Kommentar


                    #10
                    @Michael: Ist das Problem mit der 1.090 lösbar?
                    BR
                    Marc

                    Kommentar


                      #11
                      Zitat von saft6luck Beitrag anzeigen
                      @Michael: Ist das Problem mit der 1.090 lösbar?
                      Nein, wir haben noch nicht an der cwtime gearbeitet.
                      Wenn, dann so wie ich dem Bernd schon am Telefon erklärt habe. Man muss über systemstart() eine Variable verriegeln, die dann erst nach einem Tag die Timer freigibt.
                      Aber es steht auf der Liste.
                      Derzeit arbeiten wir an zwei Dingen: Umbau der Verarbeitungsschleife (die Betaversion hat das schon) und noch ein paar Lästigkeiten mit der FT1.2.
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #12
                        Zitat von anlo007 Beitrag anzeigen
                        Der CTimer für morgens 6Uhr bleibt 1 bis 24.00 und wird erst dann zurückgesetzt, d.h. er schaltet dir abends deine Nachtzeit direkt wieder aus.
                        Zitat von saft6luck Beitrag anzeigen
                        Bei dieser Betrachtung wird aber auch ersichtlich, dass von 0:00 bis 6:00/8:00 der Wert scheinbar nicht näher bekannt ist bzw. vom vorangegangenen Tag abhängt.
                        Leider kann man nur den Zeitpunkt bestimmen, ab dem ein "c"-Timer 1 werden soll, der Rücksprung auf 0 ist fix vorgegeben und das ist in einigen Fällen nicht so gut. Wenn ich mit einem "c"-Timer um 22:00 Nacht setzen würde, dann funktioniert das wohl bei Programmierung um 23:55 noch, aber manche von uns mögen ja auch noch um 0:30 mal eine Änderung vornehmen. Was dann?
                        Ich hätte mir deshalb gewünscht, das man bei "c"-Timern zumindest optional auch den Zeitpunkt des Rücksetzens hätte angeben können (oder alternativ als Zeitraum anzugeben). Dann hätte man den Timer von 22:00 bis z.B. 06:00 laufen lassen können und es wäre egal, ob der EibPC um 5 vor oder 5 nach Mitternacht neu starten würde.
                        Abgesehen davon, wie reagiert eigentlich ein "c"-Timer, wenn ich ihn um 0:00 setze?
                        Mfg
                        JH

                        Kommentar


                          #13
                          Zitat von JoeHorn Beitrag anzeigen
                          Ich hätte mir deshalb gewünscht, das man bei "c"-Timern zumindest optional auch den Zeitpunkt des Rücksetzens hätte angeben können (oder alternativ als Zeitraum anzugeben).
                          Gute Idee.
                          Abgesehen davon, wie reagiert eigentlich ein "c"-Timer, wenn ich ihn um 0:00 setze?
                          Er bleibt immer auf EIN.
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #14
                            Zitat von enertegus Beitrag anzeigen
                            Nein, wir haben noch nicht an der cwtime gearbeitet.
                            Wenn, dann so wie ich dem Bernd schon am Telefon erklärt habe. Man muss über systemstart() eine Variable verriegeln, die dann erst nach einem Tag die Timer freigibt.
                            Aber es steht auf der Liste.
                            Abgesehen von "WERKTAGS", welches Problem hat cwtime denn?
                            BR
                            Marc

                            Kommentar


                              #15
                              Als workaround kann man auch die Zeit definieren, die das Licht hell angehen soll, dann hat man keinen Tageswechsel darin:

                              if cwtime( 06,00,00,MONTAG) and !cwtime( 22,00,00,MONTAG) then Tagzeit = EIN endif

                              If (Tagzeit==1) write (Helligkeitswert=100) else write (Helligkeitswert=30) endif

                              viele Wege führen nach ROM.
                              Der schöne Niederrhein läßt Grüssen

                              Andreas


                              Alter Hof mit neuer Technik

                              Kommentar

                              Lädt...
                              X