Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitdifferenzen und Abfrageobjekte für SQLite

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

  • fuxl66
    antwortet
    Danke für eure Rückmeldungen. Somit warte ich auf das nächste Release bei dem dieses Thema dann vielleicht Geschichte sein wird. Ich hoffe es ist demnächst soweit. Bin schon grspannt drauf ohne drängeln zu wollen oder gar nach einen Releasetermin zu fragen. ;-)

    Mfg
    Markus

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    ja ich denke auch es liegt am packen. Während dieser Zeit ist die DB ziemlich beschäftigt und antwortet evtl. nicht schnell genug.
    Ich arbeite in dem Bereich aber auch noch an der DB.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Orion
    antwortet
    Hallo Markus,

    habe ich auch. In Develop häufig. Aus meiner Sicht geht dort etwas während dem Kompacting der Datenbank, die normalerweise in diesem Zeitraum läuft durcheinander. Ich weiß nicht, ob bei Marcus das noch ein Thema ist, denn trotz aller Updates war es bei mir noch drin.

    Weiterer Hinweis, dass es dort liegen muß:
    In meiner Variante habe ich alles zum Comapcting herausgeworfen, da ich auf einen Virtuellen Maschine mit fast beliebig Speicher arbeite. Dort speichere ich einfach alles. In dieser Konfiguration ist der Fehler komplett weg !

    Michel

    @Marcus: sind dort noch Themen offen ? Aus meiner Sicht kann es auch daran liegen, dass nach dem Compacting in den Zeitabschnitten keine Werte mehr vorliegen, und daher auch nichts geliefert wird, was dann auch keinen Typ mehr hat. Das wäre dann ein konzeptionelles Thema, was eher grundsätzlicher Natur wäre.

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Hi,

    Ich verwende diese Zeitdifferenzberechnungen in meinen Items zur Stromverbrauchsstatistik.
    Code:
    [EZ]
        [[E_Plus]]
            type = num
            knx_dpt = 13
            knx_cache = 9/0/11
            visu_acl = rw
            sqlite = yes
            cache = yes
            [[[Heute]]]
                type = num
                eval = sh.EZ.E_Plus() - sh.EZ.E_Plus.db('min', sh.minute.since.midnight.dbstr())
                eval_trigger = EZ.E_Plus
                sqlite = yes
                cache = yes
            [[[Gestern]]]
                type = num
                eval = sh.EZ.E_Plus.db('min', sh.minute.since.midnight.dbstr()) - sh.EZ.E_Plus.db('min', str(sh.minute.since.midnight() + 1440) + 'i', sh.minute.since.midnight.dbstr())
                eval_trigger = EZ.E_Plus
                crontab = 1 0 * * = 1
                sqlite = yes
                cache = yes
            [[[Vorgestern]]]
                type = num
                eval = sh.EZ.E_Plus.db('min', str(sh.minute.since.midnight() + 1440) + 'i', sh.minute.since.midnight.dbstr()) - sh.EZ.E_Plus.db('min', str(sh.minute.since.midnight() + 2880) + 'i', str(sh.minute.since.midnight() + 1440) + 'i')
                eval_trigger = EZ.E_Plus
                crontab = 1 0 * * = 1
                sqlite = yes
                cache = yes
            [[[Woche]]]
                type = num
                eval = sh.EZ.E_Plus() - sh.EZ.E_Plus.db('min', sh.minute.since.week.dbstr())
                eval_trigger = EZ.E_Plus
                sqlite = yes
                cache = yes
            [[[Vorwoche]]]
                type = num
                eval = sh.EZ.E_Plus.db('min', sh.minute.since.week.dbstr()) - sh.EZ.E_Plus.db('min', str(sh.minute.since.week() + 10080) + 'i', sh.minute.since.week.dbstr())
                eval_trigger = EZ.E_Plus
                crontab = 1 0 * 6 = 1
                sqlite = yes
                cache = yes
            [[[Monat]]]
                type = num
                eval = sh.EZ.E_Plus() - sh.EZ.E_Plus.db('min', str(sh.hour.since.month()) + 'h')
                eval_trigger = EZ.E_Plus
                sqlite = yes
                cache = yes
            [[[Vormonat]]]
                type = num
                eval = sh.EZ.E_Plus.db('min', str(sh.hour.since.month()) + 'h') - sh.EZ.E_Plus.db('min', str(sh.hour.since.month() + 730) + 'h', str(sh.hour.since.month()) + 'h')
                eval_trigger = EZ.E_Plus
                crontab = 1 0 1 * = 1
                sqlite = yes
                cache = yes
    Grundsätzlich funktiert es auch so und ich bekomme auch Ergebnisse geliefert, jedoch bekomme ich täglich folgende Einträge in mein Log.
    Code:
    2015-03-29 03:02:42 WARNING  EZ.E_Plus.Gestern Item EZ.E_Plus.Gestern: problem evaluating sh.EZ.E_Plus.db('min', sh.minute.since.midnight.dbstr()) - sh.EZ.E_Plus.db('min', str(sh.minute.since.midnight() + 1440) + 'i', sh.minute.since.midnight.dbstr()): unsupported operand type(s) for -: 'float' and 'NoneType'
    2015-03-29 03:02:42 WARNING  EZ.E_Plus.Vorgestern Item EZ.E_Plus.Vorgestern: problem evaluating sh.EZ.E_Plus.db('min', str(sh.minute.since.midnight() + 1440) + 'i', sh.minute.since.midnight.dbstr()) - sh.EZ.E_Plus.db('min', str(sh.minute.since.midnight() + 2880) + 'i', str(sh.minute.since.midnight() + 1440) + 'i'): unsupported operand type(s) for -: 'NoneType' and 'NoneType'
    2015-03-29 03:02:42 WARNING  EZ.E_Plus.Vorwoche Item EZ.E_Plus.Vorwoche: problem evaluating sh.EZ.E_Plus.db('min', sh.minute.since.week.dbstr()) - sh.EZ.E_Plus.db('min', str(sh.minute.since.week() + 10080) + 'i', sh.minute.since.week.dbstr()): unsupported operand type(s) for -: 'float' and 'NoneType'
    2015-03-29 03:02:42 WARNING  EZ.E_Plus.Vormonat Item EZ.E_Plus.Vormonat: problem evaluating sh.EZ.E_Plus.db('min', str(sh.hour.since.month()) + 'h') - sh.EZ.E_Plus.db('min', str(sh.hour.since.month() + 730) + 'h', str(sh.hour.since.month()) + 'h'): unsupported operand type(s) for -: 'float' and 'NoneType'
    Komischerweise immer nur Nachts zw. 3:02 und 3:13.

    Hat jemand eine Idee woran das liegen könnte?
    Ich verwende folgenden Engeriezähler <<klick>>

    mfg
    Markus
    Angehängte Dateien

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    Der Tag wurde doppelt abgezogen. Ich fürchte einige kleine Bugs werden wir noch finden. Probier mal dies hier:

    Code:
    #/logics/zeit.py
    #!/usr/bin/env python
    sh_now = sh.now()
    debug = False
    
    # Funktionen
    
    #def leap_year(year):
    # if (year % 400 == 0) or ((year % 4 == 0) and not (year % 100 == 0)):
    # return True
    # else:
    # return False
    
    def days_of_month(month, year):
    if month in [1, 3, 5, 7, 8, 10, 12]:
    days = 31
    elif month in [4, 6, 9, 11]:
    days = 30
    elif (year % 400 == 0) or ((year % 4 == 0) and not (year % 100 == 0)): #Schaltjahr
    days = 29
    else:
    days = 28
    return days
    
    def days_of_year(year):
    period_end = datetime.datetime(year,12,31)
    days_of_year = (period_end - datetime.datetime(period_end.year, 1, 1)).days + 1
    return(days_of_year)
    
    def day_of_year(year,month,day):
    period_end = datetime.datetime(year,month,day)
    day_of_year = (period_end - datetime.datetime(period_end.year, 1, 1)).days + 1
    return(day_of_year)
    
    if debug == True:
    print("RUNNING LOGIC OF TIME - REMOVE AFTER DEBUG")
    print(sh_now.hour) #Stunde
    print(sh_now.minute) #Minute
    print(sh_now.second) #Sekunde
    print(sh_now.day) #Tag
    print(sh_now.month) #Monat
    print(sh_now.isoweekday()) #Wochentag
    print(sh.now().isocalendar()[1]) #Kalenderwoche
    
    # Sekunde/Minute
    sh.second.since.minute(sh_now.second)
    sh.second.until.minute(60 - sh_now.second - 1)
    
    # Minute/Stunde
    sh.minute.since.hour(sh_now.minute)
    sh.minute.until.hour(60 - sh_now.minute - 1)
    
    # Stunde/Tag
    sh.hour.since.midnight(sh_now.hour)
    sh.hour.until.midnight(24 - sh_now.hour - 1)
    
    # Tag/Woche
    sh.day.since.week(sh_now.isoweekday())
    sh.day.until.week(7 - sh_now.isoweekday())
    
    # Stunde/Woche
    sh.hour.since.week(sh.hour.since.midnight() + (24 * (sh.day.since.week() - 1)))
    sh.hour.until.week(sh.hour.until.midnight() + (24 * sh.day.until.week()))
    
    # Kalenderwoche/Jahr
    sh.week.since.year(sh.now().isocalendar()[1])
    
    # Monat/Jahr
    sh.month.since.year(sh_now.month)
    sh.month.until.year(12-sh_now.month)
    
    # Sekunde/Stunde
    sh.second.since.hour(sh.second.since.minute() + (60 * sh.minute.since.hour()))
    sh.second.until.hour(sh.second.until.minute() + (60 * sh.minute.until.hour()))
    
    # Sekunde/Tag
    sh.second.since.midnight(sh.second.since.minute() + (3600 * sh.hour.since.midnight()))
    sh.second.until.midnight(sh.second.until.minute() + (3600 * sh.hour.until.midnight()))
    
    # Minute/Tag
    sh.minute.since.midnight(sh.minute.since.hour() + (60 * sh.hour.since.midnight()))
    sh.minute.until.midnight(sh.minute.until.hour() + (60 * sh.hour.until.midnight()))
    
    # Minute/Woche
    sh.minute.since.week(sh.minute.since.hour() + (60 * sh.hour.since.week()))
    sh.minute.until.week(sh.minute.until.hour() + (60 * sh.hour.until.week()))
    
    # Sekunde/Woche
    sh.second.since.week(sh.second.since.minute() + (60 * sh.minute.since.week()))
    sh.second.until.week(sh.second.until.minute() + (60 * sh.minute.until.week()))
    
    # Tage/Monat
    sh.day.since.month(sh_now.day - 1)
    sh.day.until.month(days_of_month(sh_now.month,sh_now.year) - sh.day.since.month() - 1)
    
    # Tage/Jahr
    sh.day.since.year(day_of_year(sh_now.year,sh_now.month,sh_now.day) - 1)
    sh.day.until.year(days_of_year(sh_now.year) - sh.day.since.year() - 1)
    
    # Stunde/Monat
    sh.hour.since.month((24 * sh.day.since.month()) + sh.hour.since.midnight())
    sh.hour.until.month((24 * days_of_month(sh_now.month,sh_now.year)) - sh.hour.since.month() - 1)
    
    # Stunde/Jahr
    sh.hour.since.year((24 * sh.day.since.year()) + sh.hour.since.midnight())
    sh.hour.until.year((24 * days_of_year(sh_now.year)) - sh.hour.since.year() - 1)
    
    # Minute/Monat
    sh.minute.since.month((60 * sh.hour.since.month()) + sh.minute.since.hour())
    sh.minute.until.month(sh.minute.since.month() - (60 * sh.hour.until.month()) - 1)
    
    # Minute/Jahr
    sh.minute.since.year((60 * sh.hour.since.year()) + sh.minute.since.hour())
    sh.minute.until.year((60 * sh.hour.until.year()) + sh.minute.until.hour())
    
    # Sekunde/Monat
    sh.second.since.month((60 * sh.minute.since.month()) + sh.second.since.minute())
    sh.second.until.month((60 * sh.minute.until.month()) + sh.second.until.minute())
    
    # Sekunde/Jahr
    sh.second.since.year((60 * sh.minute.since.year()) + sh.second.since.minute())
    sh.second.until.year((60 * sh.minute.until.year()) + sh.second.until.minute())
    Vielen Dank. Nun ist die Ausgabe wieder korrekt.

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Der Tag wurde doppelt abgezogen. Ich fürchte einige kleine Bugs werden wir noch finden. Probier mal dies hier:

    Code:
    #/logics/zeit.py
    #!/usr/bin/env python
    sh_now = sh.now()
    debug = False
    
    # Funktionen                    
    
    #def leap_year(year):
    #    if (year % 400 == 0) or ((year % 4 == 0) and not (year % 100 == 0)):
    #        return True
    #    else:
    #        return False
    
    def days_of_month(month, year):
        if month in [1, 3, 5, 7, 8, 10, 12]:
            days = 31
        elif month in [4, 6, 9, 11]:
            days = 30
        elif (year % 400 == 0) or ((year % 4 == 0) and not (year % 100 == 0)):  #Schaltjahr
            days = 29
        else:
            days = 28
        return days
    
    def days_of_year(year):
        period_end = datetime.datetime(year,12,31)
        days_of_year = (period_end - datetime.datetime(period_end.year, 1, 1)).days + 1
        return(days_of_year)
    
    def day_of_year(year,month,day):
        period_end = datetime.datetime(year,month,day)
        day_of_year = (period_end - datetime.datetime(period_end.year, 1, 1)).days + 1
        return(day_of_year)
    
    if debug == True:
        print("RUNNING LOGIC OF TIME - REMOVE AFTER DEBUG")
        print(sh_now.hour) #Stunde
        print(sh_now.minute) #Minute
        print(sh_now.second) #Sekunde
        print(sh_now.day)  #Tag
        print(sh_now.month) #Monat
        print(sh_now.isoweekday()) #Wochentag
        print(sh.now().isocalendar()[1]) #Kalenderwoche
        
    # Sekunde/Minute
    sh.second.since.minute(sh_now.second)
    sh.second.until.minute(60 - sh_now.second - 1)
    
    # Minute/Stunde
    sh.minute.since.hour(sh_now.minute)
    sh.minute.until.hour(60 - sh_now.minute - 1)
    
    # Stunde/Tag
    sh.hour.since.midnight(sh_now.hour)
    sh.hour.until.midnight(24 - sh_now.hour - 1)
    
    # Tag/Woche
    sh.day.since.week(sh_now.isoweekday())
    sh.day.until.week(7 - sh_now.isoweekday())
    
    # Stunde/Woche
    sh.hour.since.week(sh.hour.since.midnight() + (24 * (sh.day.since.week() - 1)))
    sh.hour.until.week(sh.hour.until.midnight() + (24 * sh.day.until.week()))
    
    # Kalenderwoche/Jahr
    sh.week.since.year(sh.now().isocalendar()[1])
    
    # Monat/Jahr
    sh.month.since.year(sh_now.month)
    sh.month.until.year(12-sh_now.month)
    
    # Sekunde/Stunde
    sh.second.since.hour(sh.second.since.minute() + (60 * sh.minute.since.hour()))
    sh.second.until.hour(sh.second.until.minute() + (60 * sh.minute.until.hour()))
    
    # Sekunde/Tag
    sh.second.since.midnight(sh.second.since.minute() + (3600 * sh.hour.since.midnight()))
    sh.second.until.midnight(sh.second.until.minute() + (3600 * sh.hour.until.midnight()))
    
    # Minute/Tag
    sh.minute.since.midnight(sh.minute.since.hour() + (60 * sh.hour.since.midnight()))
    sh.minute.until.midnight(sh.minute.until.hour() + (60 * sh.hour.until.midnight()))
    
    # Minute/Woche
    sh.minute.since.week(sh.minute.since.hour() + (60 * sh.hour.since.week()))
    sh.minute.until.week(sh.minute.until.hour() + (60 * sh.hour.until.week()))
    
    # Sekunde/Woche
    sh.second.since.week(sh.second.since.minute() + (60 * sh.minute.since.week()))
    sh.second.until.week(sh.second.until.minute() + (60 * sh.minute.until.week()))
    
    # Tage/Monat
    sh.day.since.month(sh_now.day - 1)
    sh.day.until.month(days_of_month(sh_now.month,sh_now.year) - sh.day.since.month() - 1)
    
    # Tage/Jahr
    sh.day.since.year(day_of_year(sh_now.year,sh_now.month,sh_now.day) - 1)
    sh.day.until.year(days_of_year(sh_now.year) - sh.day.since.year() - 1)
    
    # Stunde/Monat
    sh.hour.since.month((24 * sh.day.since.month()) + sh.hour.since.midnight())
    sh.hour.until.month((24 * days_of_month(sh_now.month,sh_now.year)) - sh.hour.since.month() - 1) 
    
    # Stunde/Jahr
    sh.hour.since.year((24 * sh.day.since.year()) + sh.hour.since.midnight())
    sh.hour.until.year((24 * days_of_year(sh_now.year)) - sh.hour.since.year() - 1)
    
    # Minute/Monat
    sh.minute.since.month((60 * sh.hour.since.month()) + sh.minute.since.hour())
    sh.minute.until.month(sh.minute.since.month() - (60 * sh.hour.until.month()) - 1)
    
    # Minute/Jahr
    sh.minute.since.year((60 * sh.hour.since.year()) + sh.minute.since.hour())
    sh.minute.until.year((60 * sh.hour.until.year()) + sh.minute.until.hour())
    
    # Sekunde/Monat
    sh.second.since.month((60 * sh.minute.since.month()) + sh.second.since.minute())
    sh.second.until.month((60 * sh.minute.until.month()) + sh.second.until.minute())
    
    # Sekunde/Jahr
    sh.second.since.year((60 * sh.minute.since.year()) + sh.second.since.minute())
    sh.second.until.year((60 * sh.minute.until.year()) + sh.second.until.minute())
    Zuletzt geändert von JuMi2006; 09.03.2015, 20:55.

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    Ich verstehe das Problem immer noch nicht, hatte aber keine Lust weiter zu suchen.

    Code:
    #/logics/zeit.py
    #!/usr/bin/env python
    sh_now = sh.now()
    debug = False
    
    # Funktionen
    
    def days_of_month(month, year):
    if month in [1, 3, 5, 7, 8, 10, 12]:
    days = 31
    elif month in [4, 6, 9, 11]:
    days = 30
    elif (year % 400 == 0) or ((year % 4 == 0) and not (year % 100 == 0)): #Schaltjahr
    days = 29
    else:
    days = 28
    return days
    
    def days_of_year(year):
    period_end = datetime.datetime(year,12,31)
    days_of_year = (period_end - datetime.datetime(period_end.year, 1, 1)).days + 1
    return(days_of_year)
    
    def day_of_year(year,month,day):
    period_end = datetime.datetime(year,month,day)
    day_of_year = (period_end - datetime.datetime(period_end.year, 1, 1)).days + 1
    return(day_of_year)
    
    if debug == True:
    print("RUNNING LOGIC OF TIME - REMOVE AFTER DEBUG")
    print(sh_now.hour) #Stunde
    print(sh_now.minute) #Minute
    print(sh_now.second) #Sekunde
    print(sh_now.day) #Tag
    print(sh_now.month) #Monat
    print(sh_now.isoweekday()) #Wochentag
    print(sh.now().isocalendar()[1]) #Kalenderwoche
    
    # Sekunde/Minute
    sh.second.since.minute(sh_now.second)
    sh.second.until.minute(60 - sh_now.second - 1)
    
    # Minute/Stunde
    sh.minute.since.hour(sh_now.minute)
    sh.minute.until.hour(60 - sh_now.minute - 1)
    
    # Stunde/Tag
    sh.hour.since.midnight(sh_now.hour)
    sh.hour.until.midnight(24 - sh_now.hour - 1)
    
    # Tag/Woche
    sh.day.since.week(sh_now.isoweekday())
    sh.day.until.week(7 - sh_now.isoweekday())
    
    # Stunde/Woche
    sh.hour.since.week(sh.hour.since.midnight() + (24 * (sh.day.since.week() - 1)))
    sh.hour.until.week(sh.hour.until.midnight() + (24 * sh.day.until.week()))
    
    # Kalenderwoche/Jahr
    sh.week.since.year(sh.now().isocalendar()[1])
    
    # Monat/Jahr
    sh.month.since.year(sh_now.month)
    sh.month.until.year(12-sh_now.month)
    
    # Sekunde/Stunde
    sh.second.since.hour(sh.second.since.minute() + (60 * sh.minute.since.hour()))
    sh.second.until.hour(sh.second.until.minute() + (60 * sh.minute.until.hour()))
    
    # Sekunde/Tag
    sh.second.since.midnight(sh.second.since.minute() + (3600 * sh.hour.since.midnight()))
    sh.second.until.midnight(sh.second.until.minute() + (3600 * sh.hour.until.midnight()))
    
    # Minute/Tag
    sh.minute.since.midnight(sh.minute.since.hour() + (60 * sh.hour.since.midnight()))
    sh.minute.until.midnight(sh.minute.until.hour() + (60 * sh.hour.until.midnight()))
    
    # Minute/Woche
    sh.minute.since.week(sh.minute.since.hour() + (60 * sh.hour.since.week()))
    sh.minute.until.week(sh.minute.until.hour() + (60 * sh.hour.until.week()))
    
    # Sekunde/Woche
    sh.second.since.week(sh.second.since.minute() + (60 * sh.minute.since.week()))
    sh.second.until.week(sh.second.until.minute() + (60 * sh.minute.until.week()))
    
    # Tage/Monat
    sh.day.since.month(sh_now.day - 1)
    sh.day.until.month(days_of_month(sh_now.month,sh_now.year) - sh.day.since.month() - 1)
    
    # Tage/Jahr
    sh.day.since.year(day_of_year(sh_now.year,sh_now.month,sh_now.day) - 1)
    sh.day.until.year(days_of_year(sh_now.year) - sh.day.since.year() - 1)
    
    # Stunde/Monat
    sh.hour.since.month((24 * (sh.day.since.month() - 1)) + sh.hour.since.midnight())
    sh.hour.until.month((24 * days_of_month(sh_now.month,sh_now.year)) - sh.hour.since.month() - 1)
    
    # Stunde/Jahr
    sh.hour.since.year((24 * (sh.day.since.year() -1)) + sh.hour.since.midnight())
    sh.hour.until.year((24 * days_of_year(sh_now.year)) - sh.hour.since.year() - 1)
    
    # Minute/Monat
    sh.minute.since.month((60 * sh.hour.since.month()) + sh.minute.since.hour())
    sh.minute.until.month(sh.minute.since.month() - (60 * sh.hour.until.month()) - 1)
    
    # Minute/Jahr
    sh.minute.since.year((60 * sh.hour.since.year()) + sh.minute.since.hour())
    sh.minute.until.year((60 * sh.hour.until.year()) + sh.minute.until.hour())
    
    # Sekunde/Monat
    sh.second.since.month((60 * sh.minute.since.month()) + sh.second.since.minute())
    sh.second.until.month((60 * sh.minute.until.month()) + sh.second.until.minute())
    
    # Sekunde/Jahr
    sh.second.since.year((60 * sh.minute.since.year()) + sh.second.since.minute())
    sh.second.until.year((60 * sh.minute.until.year()) + sh.second.until.minute())
    Meine Ausgabe liefert fehlerhafte Werte im Bezug auf den Monat.
    Code:
    > ls hour.since
    Items:
    ======
    hour.since
    hour.since.midnight = 20
    hour.since.midnight.dbstr = 20h
    hour.since.week = 20
    hour.since.week.dbstr = 20h
    hour.since.month = 188
    hour.since.month.dbstr = 188h
    hour.since.year = 1604
    hour.since.year.dbstr = 1604h
    Es ist 20:30 am 09.03. somit sollte doch hour.since.month 8x24 + 20 = 212h ergeben. Ich bekomme aber 188h ausgegeben. Also genau 24h zu wenig.
    Liegt es am Vormonat Februar? Hat dieses Problem sonst niemand bzw. gibt es eine Lösung dafür?

    mfg
    Markus

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Weil die Syntax der smartvisu dies einfach nicht zulässt. Das wäre eine Frage für das smartvisu Forum.

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    Hallo,
    mal ne doofe frage, warum funktioniert diese Art der Angabe des zeitpunktes nicht bei nem Plot ?
    das man dann als Zeitangabe schreiben kann 'day.since.month.dbstr()'
    wenn man nur den aktuellen Monat und nicht 30 Tage anzeigen lassen möchte ?

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Zitat von Bonze Beitrag anzeigen
    irgendwie bekomme ich immer die Fehlemeldung "String out of Range" egal was ich als Zeitraum angebe?

    Code:
    pellets.fuellstand.woche Item pellets.fuellstand.woche: problem evaluating sh.pellets.fuellstand.db('max', sh.day.since.week.dbstr(),sh.day.since.week.dbstr()) - sh.pellets.fuellstand(): string index out of range
    der erste wert gibt den startwert, der zweite wert den zeitraum an ?
    Grundsätzlich richtig, jedoch nur wenn du einen zeitraum abfragen willst der nicht bis zur aktuellen zeit laufen soll. Wenn du den Max Wert der aktuellen woche abfragen willst, dann reicht die Angabe der Startwertes.

    Hoffe soweit klar.

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    irgendwie bekomme ich immer die Fehlemeldung "String out of Range" egal was ich als Zeitraum angebe?

    Code:
    pellets.fuellstand.woche Item pellets.fuellstand.woche: problem evaluating sh.pellets.fuellstand.db('max', sh.day.since.week.dbstr(),sh.day.since.week.dbstr()) - sh.pellets.fuellstand(): string index out of range
    der erste wert gibt den startwert, der zweite wert den zeitraum an ?

    Einen Kommentar schreiben:


  • Ferengi
    antwortet
    auch von mir ein Dankeschön!

    Christian

    Einen Kommentar schreiben:


  • Marcov
    antwortet
    danke!

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Ich verstehe das Problem immer noch nicht, hatte aber keine Lust weiter zu suchen.

    Code:
    #/logics/zeit.py
    #!/usr/bin/env python
    sh_now = sh.now()
    debug = False
    
    # Funktionen                    
    
    def days_of_month(month, year):
        if month in [1, 3, 5, 7, 8, 10, 12]:
            days = 31
        elif month in [4, 6, 9, 11]:
            days = 30
        elif (year % 400 == 0) or ((year % 4 == 0) and not (year % 100 == 0)):  #Schaltjahr
            days = 29
        else:
            days = 28
        return days
    
    def days_of_year(year):
        period_end = datetime.datetime(year,12,31)
        days_of_year = (period_end - datetime.datetime(period_end.year, 1, 1)).days + 1
        return(days_of_year)
    
    def day_of_year(year,month,day):
        period_end = datetime.datetime(year,month,day)
        day_of_year = (period_end - datetime.datetime(period_end.year, 1, 1)).days + 1
        return(day_of_year)
    
    if debug == True:
        print("RUNNING LOGIC OF TIME - REMOVE AFTER DEBUG")
        print(sh_now.hour) #Stunde
        print(sh_now.minute) #Minute
        print(sh_now.second) #Sekunde
        print(sh_now.day)  #Tag
        print(sh_now.month) #Monat
        print(sh_now.isoweekday()) #Wochentag
        print(sh.now().isocalendar()[1]) #Kalenderwoche
        
    # Sekunde/Minute
    sh.second.since.minute(sh_now.second)
    sh.second.until.minute(60 - sh_now.second - 1)
    
    # Minute/Stunde
    sh.minute.since.hour(sh_now.minute)
    sh.minute.until.hour(60 - sh_now.minute - 1)
    
    # Stunde/Tag
    sh.hour.since.midnight(sh_now.hour)
    sh.hour.until.midnight(24 - sh_now.hour - 1)
    
    # Tag/Woche
    sh.day.since.week(sh_now.isoweekday())
    sh.day.until.week(7 - sh_now.isoweekday())
    
    # Stunde/Woche
    sh.hour.since.week(sh.hour.since.midnight() + (24 * (sh.day.since.week() - 1)))
    sh.hour.until.week(sh.hour.until.midnight() + (24 * sh.day.until.week()))
    
    # Kalenderwoche/Jahr
    sh.week.since.year(sh.now().isocalendar()[1])
    
    # Monat/Jahr
    sh.month.since.year(sh_now.month)
    sh.month.until.year(12-sh_now.month)
    
    # Sekunde/Stunde
    sh.second.since.hour(sh.second.since.minute() + (60 * sh.minute.since.hour()))
    sh.second.until.hour(sh.second.until.minute() + (60 * sh.minute.until.hour()))
    
    # Sekunde/Tag
    sh.second.since.midnight(sh.second.since.minute() + (3600 * sh.hour.since.midnight()))
    sh.second.until.midnight(sh.second.until.minute() + (3600 * sh.hour.until.midnight()))
    
    # Minute/Tag
    sh.minute.since.midnight(sh.minute.since.hour() + (60 * sh.hour.since.midnight()))
    sh.minute.until.midnight(sh.minute.until.hour() + (60 * sh.hour.until.midnight()))
    
    # Minute/Woche
    sh.minute.since.week(sh.minute.since.hour() + (60 * sh.hour.since.week()))
    sh.minute.until.week(sh.minute.until.hour() + (60 * sh.hour.until.week()))
    
    # Sekunde/Woche
    sh.second.since.week(sh.second.since.minute() + (60 * sh.minute.since.week()))
    sh.second.until.week(sh.second.until.minute() + (60 * sh.minute.until.week()))
    
    # Tage/Monat
    sh.day.since.month(sh_now.day - 1)
    sh.day.until.month(days_of_month(sh_now.month,sh_now.year) - sh.day.since.month() - 1)
    
    # Tage/Jahr
    sh.day.since.year(day_of_year(sh_now.year,sh_now.month,sh_now.day) - 1)
    sh.day.until.year(days_of_year(sh_now.year) - sh.day.since.year() - 1)
    
    # Stunde/Monat
    sh.hour.since.month((24 * (sh.day.since.month() - 1)) + sh.hour.since.midnight())
    sh.hour.until.month((24 * days_of_month(sh_now.month,sh_now.year)) - sh.hour.since.month() - 1) 
    
    # Stunde/Jahr
    sh.hour.since.year((24 * (sh.day.since.year() -1)) + sh.hour.since.midnight())
    sh.hour.until.year((24 * days_of_year(sh_now.year)) - sh.hour.since.year() - 1)
    
    # Minute/Monat
    sh.minute.since.month((60 * sh.hour.since.month()) + sh.minute.since.hour())
    sh.minute.until.month(sh.minute.since.month() - (60 * sh.hour.until.month()) - 1)
    
    # Minute/Jahr
    sh.minute.since.year((60 * sh.hour.since.year()) + sh.minute.since.hour())
    sh.minute.until.year((60 * sh.hour.until.year()) + sh.minute.until.hour())
    
    # Sekunde/Monat
    sh.second.since.month((60 * sh.minute.since.month()) + sh.second.since.minute())
    sh.second.until.month((60 * sh.minute.until.month()) + sh.second.until.minute())
    
    # Sekunde/Jahr
    sh.second.since.year((60 * sh.minute.since.year()) + sh.second.since.minute())
    sh.second.until.year((60 * sh.minute.until.year()) + sh.second.until.minute())

    Einen Kommentar schreiben:


  • Ferengi
    antwortet
    danke für die schnelle Rückmeldung,
    mach dir keinen Stress ist nicht dringend!

    Christian

    Einen Kommentar schreiben:

Lädt...
X