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

Logik gesucht -> geklingelt wird -> alle Lampen ein -> wieder aus

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

    Logik gesucht -> geklingelt wird -> alle Lampen ein -> wieder aus

    Hallo ,

    ich suche eine Logik mit der ich ,bei einem Event ( Zentral.Kingel(1), alle Items *.SpotsAlleDimmen durchsuche + Status speichere + auf 50% dimme + auf 0% dimme + Ursprünglichen Status wiederherstellen)

    das habe ich dazu schon ....

    Code:
    #!/usr/bin/env python
    import time
    Lichter = []
    
    logger.info('---------------- Klingel.py -----------------------------')
    
    
    if sh.Zentral.Klingel() :
        logger.info('Klingel an')
    # finen
        for item in sh.match_items('*.SpotsAlleDimmen'):
            Lichter.append(item)
            #Status speichern
    #        xxx
    #auf 50% dimmen
    #    for item in Lichter:
    #        item= 50
    #auf 0% dimmen
    #    for item in Lichter:
    #        item = 0
    # auf gespeicherten Status zurücksetzen
    #    for item in Lichter:
    #        xxx
    
            logger.info("Es sind {0} Lichter an. ( {1})".format(str(sh.Zentral.Klingel()), Lichter))
    
        logger.info('Klingel ist an')
        time.sleep(5)
        sh.Zentral.Klingel(0)
        logger.info('schafte Klingel aus')
    
    else:
        logger.info('Klingel ist aus')
    
    
    logger.info('---------------- Klingel.py -----------------------------')
    Ich hoffe ihr habt Ideen/Tips für die "Lücken".





    hier das Ergebis

    Code:
    #!/usr/bin/env python
    #
    import time
    status = {}
    
    logger.info('---------------- Klingel.py -----------------------------') 
    
    if sh.Zentral.Klingel() :
        logger.info('Klingel an') 
    
    # Lichten finen
        for item in sh.match_items('*.Arbeiten.SpotsAlleDimmen'):
            status[item] =item() #Status speichern
        logger.info("Status: {0}".format( status))
    #auf 50% dimmen
        for item in status.keys(): # Zugriff auf die Keys (items)
            item(50) # setze das item auf 50       
        time.sleep(3) #warten 
    #auf 0% dimmen
        for item in status.keys(): # Zugriff auf die Keys (items)
            item(0) # setze das item auf 0
        time.sleep(3) #warten 
    # auf gespeicherten Status zurücksetzen
        for item, value in status.items():    # Zugriff auf Key's (items) und Values(Werte)
            item(value)     # setzte item auf den in Value gespeicherten Wert
    
    # ausschalten
        time.sleep(5)
        logger.info('schalte Klingel aus') 
        sh.Zentral.Klingel(0) 
    
    else:
        logger.info('Klingel ist aus') 
    
    
    logger.info('---------------- Klingel.py -----------------------------')
    Zuletzt geändert von schlaubi666; 27.12.2016, 01:03. Grund: Ergbniss eingefügt

    #2
    Hallo schlaubi666,

    wie wäre es, wenn Du bei den Items in Deiner .conf-Datei jeweils eine Zusatzinfo (z.B. save_staus = 0) einfügen würdest?
    In der Logik kann diese dann mit item.conf["save_status"] = item.value gesetzt werden und zum Schluss wieder mit item = item.conf["save_status"] zurückgeschrieben werden...

    Ist nicht getestet, sollte aber funktionieren...

    Grüsse vom Bodensee

    Uwe

    Kommentar


      #3
      Klingt kompliziert!
      Zuletzt geändert von schlaubi666; 21.12.2016, 15:11.

      Kommentar


        #4
        Hallo,

        schau dir mal die python-Dictionarys an, damit kannst du einen Schlüssel(Key) z.B. das item und einen Wert(value) zuweisen, z.B. item()

        https://developers.google.com/edu/python/dict-files



        Code:
        [FONT="courier new"]status = {}    # anlegen des dict
        status.update({item : item()})    # Key = das item selber ; Value = Wert vom item()
        
        for item in status.keys(): # Zugriff auf die Keys (items)
            item(50) # setze das item auf 50
        
        for item, value in status.items():    # Zugriff auf Key's (items) und Values(Werte)
            item(value)     # setzte item auf den in Value gespeicherten Wert[/FONT]
        Natürlich wie immer "ohne Gewähr" :-)



        Kommentar


          #5
          Das war der entscheidende Tipp , aber statt
          Code:
           status.update({item : item()})
          ->
          Code:
          status[item] =item()
          verwenden dann klappts

          habe mal den "fertigen" Coder oben eingefügt

          Kommentar

          Lädt...
          X