Ankündigung

Einklappen
Keine Ankündigung bisher.

sh.scheduler.change active=True geht nicht

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

    sh.scheduler.change active=True geht nicht

    Hi zusammen hab hier ein kleines Problem. Vielleicht mache ich ja was falsch aber wie es aussieht klappt die methode sh.scheduler.change nicht richtig.
    Ich versuche in 2 Logiken wechselweise die eine mit der anderen zu aktivieren, während sie sich selbst deaktiviert. Das selbst deaktivieren der Logik geht auch, aber das aktivieren der anderen geht leider nicht.

    Folgende 2 Logiken habe ich:

    DebugDE

    Code:
    if sh.Debug.Temperatur.TWO() < 40:
      sh.scheduler.change('DebugDL', active='True')
      logic.disable()
      if sh.mail: sh.mail('patrickhener@gmx.de', 'Duschwasser laden', 'Duschwasser muss geladen werden')
    DebugDL

    Code:
    if sh.Debug.Temperatur.TWO() > 60:
      sh.scheduler.change('DebugDE', active='True')
      logic.disable()
      if sh.mail: sh.mail('patrickhener@gmx.de', 'Duschwasser geladen', 'Duschwasser wurde erfolgreich geladen')
    Zu Anfang deaktiviere ich händisch DebugDL. Also wartet meine Logic auf eine Trinkwassertemperatur von unter 40 Grad.

    Ich schicke also via Script auf den Bus einen Wert unter 40, die Logic wird getriggert, weil ich ein watch Item auf dieses Item gesetzt habe und dann bekomme ich eine Email ich soll mein Duschwasser laden.

    Nun sollte eigentlich DebugDE deaktiviert werden und DebugDL aktiviert werden. Dann sollte meine Logik darauf warten, dass das Duschwasser wieder über 60 Grad geht und ich sollte eine Email bekommen, dass mein Duschwasser geladen wurde.

    Was aber passiert ist, dass meine Logik DebugDE deaktiviert wird, alledings wird die Logik DebugDL nicht aktiviert. Warum? Ich habe das auch schon versucht mit active=True ohne '', aber das hat auch nicht funktioniert.

    Wie kann ich außerdem definieren, dass die Logik DebugDL von Anfang an deaktiviert ist, wenn ich den smarthome Dienst durchstarte?

    Danke vorab.
    Grüße,
    Patrick
    Zuletzt geändert von patrickgoll; 02.05.2017, 14:07.

    #2
    warum nutzt du nicht enable(), sondern gehst über den scheduler??

    Kommentar


      #3
      Weil enable, so wie ich es verstanden habe nur für die Logik geht in der ich mich befinde. Ich will Aber von Logik 1 die Logik 2 enablen und umgekehrt. Habe ich das falsch verstanden?

      Kommentar


        #4
        patrickgoll im Backend ziehe ich mir die logik ja auch und nutze das
        Code:
            
               if logic in self._sh.return_logics():
                        mylogic = self._sh.return_logic(logic)
                        if mylogic.enabled:
                            mylogic.disable()
                        else:
                            mylogic.enable()
        "logic" sollte einfach der Name der jew. Logik als String sein.
        Zuletzt geändert von psilo; 03.05.2017, 15:37.

        Kommentar


          #5
          Das geht irgendwie auch nicht richtig:

          Fehler:
          Code:
          2017-05-02  18:09:28 ERROR    DebugDE      Logic: DebugDE, File: /usr/local/smarthome/logics/debug_duschwasser_entladen.py, Line: 2, Method: <module>, Exception: name 'DebugDL' is not defined
          Traceback (most recent call last):
            File "/usr/local/smarthome/lib/scheduler.py", line 378, in _task
              exec(obj.bytecode)
            File "/usr/local/smarthome/logics/debug_duschwasser_entladen.py", line 2, in <module>
              DebugDL = self._sh.return_logic(DebugDL)
          NameError: name 'DebugDL' is not defined
          Logik:
          Code:
          if sh.Debug.Temperatur.TWO() < 40:
            DebugDL = self._sh.return_logic(DebugDL)
            DebugDL.enable()
            logic.disable()
            if sh.mail: sh.mail('patrickhener@gmx.de', 'Duschwasser laden', 'Duschwasser muss geladen werden')
          Ergebnis ist Logik wird nicht ausgeführt, keine Mail gesendet, nichts wird aktiviert oder deaktiviert.

          Kommentar


            #6
            Habs hinbekommen. Der Trick war in der Klammer das Argument mit einfachen Anführungszeichen mitzugeben. Geht nun. Kann mir noch jemand verraten, wie ich im Mail Plugin im Text Attribut eine Verkettung aus Text und einer Variablen mache, so nach dem Motto: "Die Temeperatur beträgt: " + Variable + " °C"?

            Kommentar


              #7
              "Die Temperatur beträgt {}°C".format(Variable)

              Siehe auch hier.

              Kommentar


                #8
                Hat geklappt, danke.

                Kommentar


                  #9
                  habe mal ein "als String" eingefügt... dachte das ist klar

                  Kommentar

                  Lädt...
                  X