Ankündigung

Einklappen
Keine Ankündigung bisher.

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