Ankündigung

Einklappen
Keine Ankündigung bisher.

Scheduler: Logic Trigger löschen

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

    Scheduler: Logic Trigger löschen

    Hallo zusammen,

    Ich habe zwei Logiken mit Namen LogicA und LogicB.

    Aus Logik A heraus kann ich Logic B zum Zeitpunkt dt (datetime objekt) triggern:
    Code:
    sh.trigger(name='logics.LogicB', by='logicA', source='something', value=0, dt=start)
    Das funktioniert gut und ist bekannt. Der Scheduler zeigt im Admin Interface unter dem Reiter "trigger" auch einen Scheduler Eintrag mit Namen "trigger.logics.LogicB" an.

    Wie kann ich aus der LogicA heraus
    a) überprüfen, ob so ein Scheduler Eintrag existiert?
    b) diesen ggf. löschen?

    Versucht habe ich das mit
    Code:
    if sh.scheduler.get('logics.LogicB', from_smartplugin=False):
        logger.warning("Scheduler for LogicB already active. Removing.")
        sh.scheduler.remove('logics.LogicB', from_smartplugin=False)
    Auch wenn scheduler.remove ausgeführt wird, löscht das nicht den trigger. Dieser ist immer noch im Admin Interface unter dem Reiter "trigger" zu sehen. Auch ein

    Code:
    sh.scheduler.remove('trigger.logics.LogicB', from_smartplugin=False)
    scheint nicht zu funktionieren.
    Vielmehr scheint mit dem Aufruf
    Code:
    sh.scheduler.remove('logics.LogicB', from_smartplugin=False)
    die LogicB komplett geschlöscht zu werden, so dass man auch mit einem
    Code:
    sh.trigger(name='logics.LogicB', by='logicA', source='something', value=0, dt=start)
    die LogicB nicht mehr in den Scheduler aufnehmen lassen kann.

    Könnt Ihr weiterhelfen?
    Zuletzt geändert von aschwith; 03.03.2022, 21:05.

    #2
    Nutzt einer von Euch aktiv

    sh.scheduler.get

    oder

    sh.scheduler.remove

    und kann bei der obigen Fragestellung weiterhelfen?

    Danke und Gruß

    Kommentar


      #3
      Wenn ein Scheduler gelöscht wurde, ist er weg und kann mit sh.trigger nicht getriggert werden. (sh.trigger erzeugt keinen Scheduler, sondern triggert nur einen existierenden Scheduler).

      Dazu müsstest Du vorher mit scheduler.add einen Scheduler wieder hinzufügen hinzufügen, um ihn anschließend triggern zu können.
      Viele Grüße
      Martin

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

      Kommentar


        #4
        ok, verstehe. Dann präzisiere ich meine Anfrage nochmal:

        Eigentlich will ich den scheduler gar nicht anfassen. Gibt es die Möglichkeit, einen bestehenden Logic Trigger zu löschen, um anschließend einen neuen Trigger für einen anderen Zeitpunkt zu setzen?

        Falls es nur über den Umweg des Löschens und wieder Hinzufügens eines schedulers geht: Wie füge ich denn einen Standard scheduler hinzu, den ich später für das Triggern einer Logic nutzen kann?

        Weiterer Punkt: Wenn ich einen logic Trigger setze und anschließend den logic scheduler lösche, wird der Trigger immer noch im Admin Interface unter schedulers->Trigger angezeigt. Ist das richtig so?

        VG

        Kommentar


          #5
          Zitat von aschwith Beitrag anzeigen
          Gibt es die Möglichkeit, einen bestehenden Logic Trigger zu löschen, um anschließend einen neuen Trigger für einen anderen Zeitpunkt zu setzen?
          Nein, das ist im Scheduler nicht vorgesehen.

          Zitat von aschwith Beitrag anzeigen
          Wie füge ich denn einen Standard scheduler hinzu, den ich später für das Triggern einer Logic nutzen kann?
          Das kann ich so im Moment nicht sagen, da muss ich im Code verschwinden und suchen.

          Zitat von aschwith Beitrag anzeigen
          Weiterer Punkt: Wenn ich einen logic Trigger setze und anschließend den logic scheduler lösche, wird der Trigger immer noch im Admin Interface unter schedulers->Trigger angezeigt. Ist das richtig so?
          Ja, im Admin Interface werden alle existierenden Scheduler angezeigt.
          Viele Grüße
          Martin

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

          Kommentar


            #6
            Es gibt (seit Anbeginn der Zeit) eine scheduler Methode change(). Die ist leider nicht gut dokumentiert. Ich habe einen Teil des Schedulers im Laufe der Zeit nachdokumentiert, zur change Methode bin ich bisher nicht gekommen.

            Wenn Du in der Doku nach scheduler.change suchst, stößt Du auf die Methode (mit der ziemlich übersichtlichen Dokumentation

            Die Parameter der Methode sind vermutlich die gleichen, wie in der add Methode, die genau darüber dokumentiert ist.

            Da es bei Dir um einen Logik Scheduler geht, solltest Du dann besser lib.logic.scheduler.change() benutzen.
            Zuletzt geändert von Msinn; 05.03.2022, 09:49.
            Viele Grüße
            Martin

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

            Kommentar


              #7
              Der Hinweis auf lib.logic.scheduler_change war gut. Allerdings musste ich die Methode erstmal an diversen Stellen anpassen, damit sie wieder nutzbar ist. Allerdings komme ich hiermit auch nicht ans Ziel. Ich kann mit scheduler_change den Trigger nicht ändern. Ich muss eher an neuen Methoden wie trigger_change und trigger_remove überlegen, die einen bestehenden Logic Trigger modifizieren bzw. löschen können.

              Kommentar

              Lädt...
              X