Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit cycle

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

    Problem mit cycle

    Hallo,

    ich probiere jetzt seit einigen Stunden einer Logic ein "cycle" anzuhängen, aber es funktioniert leider nicht. Ich habe dazu einiges im Forum gefunden, aber es hat leider nicht zum Erfolg geführt

    Code:
    trom_int = 500
    if 'teich_wasserwechsel_trommler_spuelen' in sh.scheduler:
        sh.scheduler.change(name='teich_wasserwechsel_trommler_spuelen', cycle={cycle: trom_int}) # Spülung Trommler alle x Minuten aufrufen
    else:
        sh.scheduler.add(name='teich_wasserwechsel_trommler_spuelen', cycle={cycle: trom_int})
    ich bekomme hier folgenden Fehler:
    Code:
    ERROR    teich_wasserwechsel Logic: teich_wasserwechsel, File: /usr/local/smarthome/logics/teich_wasserwechsel.py, Line: 29, Method: <module>, Exception: name 'cycle' is not defined -- scheduler.py:_task:334
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/scheduler.py", line 327, in _task
        exec(obj.bytecode)
      File "/usr/local/smarthome/logics/teich_wasserwechsel.py", line 29, in <module>
        sh.scheduler.change(name='teich_wasserwechsel_trommler_spuelen', cycle={cycle: trom_int})                  # Spülung Trommler alle x Minuten aufrufen
    NameError: name 'cycle' is not defined
    Muss ich "cycle" noch definieren? Dachte, das ist eine Methode, die automatisch vorhanden ist?

    Folgendes hat leider ebenfalls zu einem Fehler geführt, dass 3 Parameter erforderlich sind:
    Code:
    cycle={trom_int: None}
    Vielen Dank für Eure Hilfe!

    #2
    als Attribut einer Logik kann Cycle meines Wissens nur Zahlen. Ich bin mir nicht sicher, was Du genau machst?!

    Kommentar


      #3
      Hi psilo,

      danke für Deine Antwort!
      trom_int ist ja weiter oben auf 500 gesetzt, somit sollte es ja passen. Denke, dann wäre die Fehlerausgabe auch eine andere, oder?

      Grüße,
      Hahn

      Kommentar


        #4
        was steht denn in der logic.conf?!?

        Kommentar


          #5
          bzgl. dieser Logik?
          Code:
          [teich_wasserwechsel_trommler_spuelen]
          filename = teich_wasserwechsel_trommler_spuelen.py
          Vorher hatte ich sie dort gar nicht drinnen, dann wird in den add-Fall gesprungen, so in den change.
          Meinst Du, ich muß hier schon cycle setzen? Teste ich mal.

          Edit: cycle = none ist wohl kein zulässiger Wert
          Zuletzt geändert von Hahn; 14.04.2017, 18:02.

          Kommentar


            #6
            Hast Du einfach mal sh.scheduler.change(name='teich_wasserwechsel_trom mler_spuelen', cycle=trom_int) ausprobiert?

            Und none müßte wenn dann None heißen

            Kommentar


              #7
              Hi bmx,

              geht leider auch nicht:
              Code:
               ERROR    teich_wasserwechsel Logic: teich_wasserwechsel, File: /usr/local/smarthome/lib/scheduler.py, Line: 271, Method: _next_time, Exception: 'int' object has no attribute 'keys' -- scheduler.py:_task:334
              Traceback (most recent call last):
                File "/usr/local/smarthome/lib/scheduler.py", line 327, in _task
                  exec(obj.bytecode)
                File "/usr/local/smarthome/logics/teich_wasserwechsel.py", line 29, in <module>
                  sh.scheduler.change(name='teich_wasserwechsel_trommler_spuelen', cycle=1000)                  # Spülung Trommler alle x Minuten aufrufen
                File "/usr/local/smarthome/lib/scheduler.py", line 255, in change
                  self._next_time(name)
                File "/usr/local/smarthome/lib/scheduler.py", line 271, in _next_time
                  cycle = list(job['cycle'].keys())[0]
              AttributeError: 'int' object has no attribute 'keys'Exception in thread Scheduler:
              Traceback (most recent call last):
                File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner
                  self.run()
                File "/usr/local/smarthome/lib/scheduler.py", line 143, in run
                  self._next_time(name)
                File "/usr/local/smarthome/lib/scheduler.py", line 271, in _next_time
                  cycle = list(job['cycle'].keys())[0]
              AttributeError: 'int' object has no attribute 'keys'
              Hatte None und none getestet, ging beides nicht.

              Kommentar


                #8
                Mir ist nicht klar was Du mit dem Scheduler machst / maxhen willst.

                Als Standardfunktionalität kann eine Logik zyklosch aufgerufen werden, wenn Du in der logic.conf cycle = xx angibst. Mehr ist eigentlich nicht nötig.
                Viele Grüße
                Martin

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

                Kommentar


                  #9
                  Ich nehme an er will seinen cycle dynamisch durch eine Logik anpassen.

                  Kommentar


                    #10
                    Wenn er den Wert in der Logik fest auf 500 setzt, kann er er doch auch in der logic.conf tun. Oder?
                    Viele Grüße
                    Martin

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

                    Kommentar


                      #11
                      Das ganz ist für meinen Teich. Da muss ab und zu ein Wasserwechsel erfolgen, den ich manuell anstoße. Während dieser Zeit muß dann alle x Minuten der Filter gespült werden. Wenn der Teich wieder voll gelaufen ist, dann soll auch der Spülvorgang beendet werden.
                      Daher brauche ich den cycle eigentlich nur für eine bestimmte Zeit ab einem bestimmten Zeitpunkt.

                      Kommentar


                        #12

                        cycle={'cycle': trom_int} wäre syntaktisch iO.

                        Kommentar

                        Lädt...
                        X