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

wie kann ich diese Logik vereinfachen ?

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

    wie kann ich diese Logik vereinfachen ?

    Ich bin leider nicht so fit in python, aber Ihr !!!!

    Code:
    # test_v1.py
    import time
    
    DimmWertNacht = 10
    DimmWertTag = 60
    now = int(time.strftime("%H"))
    logger.info("Time: {0} Nacht: {1} Tag: {2}".format(now,DimmWertNacht, DimmWertTag ))
    
    # get triggering item
    if trigger['source']:
     trigger_source = trigger['source']
     logger.info("triggered by "+trigger_source)
     trigger_item = sh.return_item(trigger_source)
    
    if sh.IIOG.Bad.SpotsAlleSchalten:
     time.sleep(1)
     if now > 21 or now < 7:
      logger.info("Nacht time: {0} Dimmwert : {1}".format(now,DimmWertNacht))
      sh.IIOG.Bad.SpotsAlleDimmen(DimmWertNacht)
     else:
      logger.info("Tag time: {0} Dimmwert : {1}".format(now,DimmWertTag))
      sh.IIOG.Bad.SpotsAlleDimmen(DimmWertTag)
    
    if sh.IIOG.Schlafen.SpotsAlleSchalten:
     time.sleep(1)
     if now > 21 or now < 7:
      logger.info("Nacht time: {0} Dimmwert : {1}".format(now,DimmWertNacht))
      sh.IIOG.Schlafen.SpotsAlleDimmen(DimmWertNacht)
     else:
      logger.info("Tag time: {0} Dimmwert : {1}".format(now,DimmWertTag))
      sh.IIOG.Schlafen.SpotsAlleDimmen(DimmWertTag)
    ich habe noch 10 weiter solcher if Anweisungen ...


    das klatt doch bestimmt eleganter in einer generischen ..... jemand eine Idee ??
    Zuletzt geändert von schlaubi666; 12.11.2020, 13:23.

    #2
    Vorab ein paar Fragen und Anmerkungen, damit die Vereinfachung auch in die richtige Richtung geht:
    • Wie wird die Logik getriggert?
    • Wäre es nicht sinnvoller je Raum eine Logik zu machen und auch jeweils nur diese zu triggern?
    • In der aktuell geposteten Form kann die Logik nicht funktionieren und muss einen Fehler schmeissen: Hinter Zeile 10 ( if trigger['source']: ) muss eine Einrückung kommen.
    • Wie viele Zeilen hinter dem if sollen eingerückt sein?
    • Wozu bestimmst Du die Variable trigger_item? In der geposteten Logik wird sie nicht genutzt.
    • Was möchtest Du jeweils mit if <item> ( z.B. if sh.IIOG.Bad.SpotsAlleSchalten: ) erreichen?
    • Wozu schickst Du die Logik nach dem Triggern jeweils eine Sekunde schlafen?
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      getriggert wird über watch_item in logik.yaml
      Code:
      test_v1:
      visu_acl: rw
      filename: test_v1.py
      watch_item:
      - EG.Flur.SpotsAlleSchalten
      ....
      Zitat von Msinn Beitrag anzeigen
      Wie viele Zeilen hinter dem if sollen eingerückt sein?
      habe den Code oben korrigiert ....

      ich hatte gehofft über trigger_item mir was zusammenzubasteln was generischer ist , also copy paste und Namen ändern ...

      Zitat von Msinn Beitrag anzeigen
      Was möchtest Du jeweils mit if <item> ( z.B. if sh.IIOG.Bad.SpotsAlleSchalten: ) erreichen?
      das jeweils nur der getrifggerte Spot schaltet
      Zitat von Msinn Beitrag anzeigen
      Wozu schickst Du die Logik nach dem Triggern jeweils eine Sekunde schlafen?
      bei mir hängt Dali gateway drann , der egal welche tageszeit auf einen wert x dimmt, ich warte 1 sec damit ich sicher auf meinen Wunschwert dimme


      evlt kann mal das ganz anders realisieren ?
      mein Ziel ist es urzeitabhängig ( Tag / Nacht ) auf den gewünschten Wert zu dimmen



      Zuletzt geändert von schlaubi666; 13.11.2020, 14:25.

      Kommentar

      Lädt...
      X