Ankündigung

Einklappen
Keine Ankündigung bisher.

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