Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

simple Zeitschaltuhr

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

    [Codebeispiel] simple Zeitschaltuhr

    1. in logic.conf eintragen

    PHP-Code:
     [zeitschaltuhr]
       
    filename zeitschaltuhr.py
       cycle     
    60 
    2. in smartvisu.conf Items eintragen

    PHP-Code:
    [Kalender]

       [[
    ZP]]
            
    type        bool
            visu       
    yes
            knx_dpt    
    1
            knx_listen 
    x/x/x
            knx_send   
    x/x/x
            knx_init   
    x/x/x
            visu_acl   
    rw 
    3. als zeitschaltuhr.py in /logics speichern

    PHP-Code:
    #!/usr/bin/env python
    import time

    now         
    time.localtime(time.time())
    Wochentag    now.tm_wday
    h            
    now.tm_hour
    m            
    now.tm_min
    Zeitzone    
    now.tm_isdst
    aktiv        
    0

    #Mo-Fr
    #[Start(h), Start(min)], [End(h), End(min)]
    Mo_Fr = [
        [[ 
    5,0],[ 8,]],
        [[
    15,0],[23,30]]
        ]


    #Sa-So
    Sa_So = [
        [[ 
    6,0],[ 9,]],
        [[
    11,0],[13,]],
        [[
    15,0],[23,30]]
        ]
    #----------------------------------------------------------

    #logger.info(now)
        
    if  (Wochentag >= 0) & (Wochentag 6):
        
    logger.info('Werktag')
        
    Events Mo_Fr
    elif Wochentag 
    5:
        
    logger.info('Wochenende')
        
    Events Sa_So

    for Event in Events:
        
    EStart Event[0]
        
    EEnd   Event[1]
        
    logger.info("Event von {0}:{1} bis {2}:{3}".format(EStart[0], EStart[1], EEnd[0], EEnd[1]))
        if  (
    h+m/60 >= EStart[0]+EStart[1]/60) & (h+m/60 <= EEnd[0]+EEnd[1]/60) :
            
    logger.info('ist aktiv')
            
    aktiv 1
        
    else:
            
    logger.info('ist nicht aktiv')

            
    #Schalten

    sh.Kalender.ZP(aktiv)
    logger.info('schalte sh.Kalender.ZP: {0}'.format(aktiv)) 
    Mo_Fr suchen und Start und Ende setzen, im BSp. 5:00 - 8:00 und 15:00 - 23:30.
    Sa-So ebenfalls.

    viel Spass damit

    P.S. ist meine 1. "Logik"

    #2
    Hallo,

    schöne Übung.
    Die Funktionalität können die Items mittels crontab direkt bieten.

    Bis bald

    Marcus

    Kommentar


      #3
      so
      PHP-Code:
      # etc/logic.conf 
      [dev1]     
      filename dev.py    
       crontab 
      sunset-0 23 * * 
      oder meinst du das anders ?

      dann brauche ich ja 2 1x einschalten , 1x ausschalten, richtig ?

      Kommentar


        #4
        Hi,

        ja, so ungefähr.

        Man kann crontab auch bei Items definieren und einen Wert vorgeben

        Code:
        [item]
         crontab = sunset-4=1 | 0 23 * *=0
        Dann wird das Items morgens auf 1 und nachts auf 0 gesetzt.

        Das kann man auch bei Logiken machen, der Wert steht dann in trigger['value']

        Bis bald

        Marcus

        Kommentar

        Lädt...
        X