Ankündigung

Einklappen
Keine Ankündigung bisher.

Logic starten, wenn Bool für x Sekunden auf true steht

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

    Logic starten, wenn Bool für x Sekunden auf true steht

    Hi,

    Ich möchte mich selbst benachrichtigen (SMS), wenn mein Garagentor für 3 Minuten offen steht.

    Wenn das Tor offen ist, bekomme ich ein True Signal per KNX. Nur wie kann ich es machen, dass die Logik für das SMS senden nur dann aufgerufen wird, wenn der Wert x Sekunden durchgehend auf True steht?

    Irgendwie habe ich dazu nichts einfaches gefunden.

    lg,
    Andreas

    #2
    item.age wäre wohl in einer Logik abfragbar...
    Mehr ggf. heute abend.
    Derzeit zwischen Kistenauspacken und Garten anlegen.
    Baublog im Profil.

    Kommentar


      #3
      Hi,

      Habs nun nach etwas tüfteln hinbekommen, hier der Code.

      Verbesserungsvorschläge willkommen.

      PHP-Code:
      #!/usr/bin/env python
      # logics/garagentor.py

      if trigger['by']=='Item' and trigger['source']=='garage.garagentor':
          if 
      trigger['value']==True:
              
      logger.info("Garagentor open, set trigger!")
              
      logic.trigger(dt=(sh.now()+datetime.timedelta(seconds=300)))

      else:
          if 
      trigger['by']=='Logic':
              if 
      sh.garage.garagentor()==True and sh.garage.garagentor.age()>295:
                  
      logger.info("Garagentor open more than 295s, sending SMS")
                  
      strvar "To: 43xxxxxxxxxx 43xxxxxxxxxxx\n\nAchtung, Garagentor zu lange offen, eventuell vergessen?"
                  
      with open("/var/spool/sms/outgoing/sms_Garagentor.txt""w") as text_file:
                      
      text_file.write(strvar
      lg

      Kommentar


        #4
        Ich hätte es so gelöst:

        Code:
        if trigger['by']=='Item' and trigger['source']=='garage.garagentor':
            if trigger['value']==True:
                logger.info("Garagentor open, set trigger!")
                sh.garage.garagentor.benachrichtigung.timer(300, 1)
            if trigger['value']==False:
                sh.garage.garagentor.benachrichtigung.remove_timer()
        
        if trigger['by']=='Item' and trigger['source']=='garage.garagentor.benachrichtigung':
            logger.info("Garagentor open more than 295s, sending SMS")
            strvar = "To: 43xxxxxxxxxx 43xxxxxxxxxxx\n\nAchtung, Garagentor zu lange offen, eventuell vergessen?"
            with open("/var/spool/sms/outgoing/sms_Garagentor.txt", "w") as text_file:
                text_file.write(strvar)
        garage.garagentor.benachrichtigung muss mit enforce_updates = true definiert werden.

        Kommentar

        Lädt...
        X