Ankündigung

Einklappen
Keine Ankündigung bisher.

UZSU - Neue Version von Onkelandy

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #46
    Wir sind Stückchen weiter...
    Hier das Log mit aktivierter Logik:



    Das Item ist diesesmal: EG.Raum5.RolladenAlle.move

    Und ja, es ist immer genau ein Item was nicht aktiviert wird. Meistens ein anderes.

    Aber!
    Nach dem deaktivieren der Logik Haustuerevent, werden alle Uhren aktiviert!
    Mehrfach gestartet und auch noch mehrfach deaktiviert und aktiviert.

    1. Bleibt die Frage, warum sich beim Start, dass durch die Logik durcheinander bringen lässt.

    2. Hast Du schon etwas über die falsche Aussage im Log, wo immer steht die UZSU ist aktiv und hat keine einträge?
    Zuletzt geändert von schuma; 10.10.2018, 16:46.

    Kommentar


      #47
      Kann es sein, dass beim Start die uzsu items eingelesen werden und wenn eine Logik beim Start aktiviert wird in der weitere Item.Timer gesetzt werden diese zur gleichen Zeit laufen und dann von der UZSU deaktiviert werden? ( Onkelandy )

      Oder das durch das gleichzeitige verarbeiten es zu Problemen führt? ( Msinn )

      Kommentar


        #48
        Kannst du das Log/WebIF Problem bitte nochmals nachstellen anhand eines Neustarts und ohne Logik?
        Prinzipiell kommt die Meldung "Item aktiv aber keine Einträge." immer dann, wenn kein Scheduler für das Item aktiv ist. Das wiederum sollte ja nur dann passieren, wenn tatsächlich keine List-Einträge vorhanden sind oder alle Einträge deaktiviert sind.

        Es würde auf jeden Fall Sinn machen, für lib.item auch das DEBUG Log zu aktivieren, am besten auch gleich ins uzsu Log. Und die Logik hier mal posten?

        Kommentar


          #49
          Hier ersteinmal das Log ohne Logik:

          Und die Logik: (Ausgelöst wird hier nur der obere Teil - anwesend)

          Das mit lib.item mache ich noch...
          Zuletzt geändert von schuma; 06.10.2018, 12:51.

          Kommentar


            #50
            Zitat von Onkelandy Beitrag anzeigen
            Prinzipiell kommt die Meldung "Item aktiv aber keine Einträge." immer dann, wenn kein Scheduler für das Item aktiv ist. Das wiederum sollte ja nur dann passieren, wenn tatsächlich keine List-Einträge vorhanden sind oder alle Einträge deaktiviert sind.
            Ja fast, eigendlich sollte diese Meldung kommen wenn keine Listeinträge vorhanden sind aber trotzdem die gesamte UZSU auf aktiv steht. So verstehe ich das jedenfalls.

            Wenn Keine Einträge da sind und die UZSU komplett deaktiviert ist wäre es keine Meldung wert.
            Zuletzt geändert von schuma; 03.10.2018, 19:54.

            Kommentar


              #51
              Gibt es beim „log ohne Logik“ weitere Auffälligkeiten oder gehts nur um die Logmeldung bezüglich inaktiv? Das Verhalten sollte so sein wie du schreibst. Werde das noch checken

              Kommentar


                #52
                Nein, ich denke das war es dann erstmal. Mehr Auffälligkeiten habe ich im Moment nicht.

                Bleibt wie gesagt noch:
                1. Warum verhindert die Logik genau ein ausführen eines Scheduler Eintrages.
                2. Die Meldung bei Schaltuhren die komplett deaktiviert sind.

                Danach könnte ich mir dann mal die neuen Funktionen angucken;-)

                Kommentar


                  #53
                  Msinn Die Logiken werden beim Start von SHNG vor den Plugins gestartet. Wäre es nicht besser die Logiken nach den Plugins zu starten (initialisieren)?
                  Das würde, denke ich, das Problem hier lösen.

                  Andere Frage.... Gibt es eine Möglichkeit eine Logik nicht beim Systemstart auszuführen? Irgend was mit "if != init:" oder so?

                  Kommentar


                    #54
                    Logiken werden per se nicht „gestartet“, sie werden getriggert.

                    Richtig ist, dass die Logiken initialisiert werden, bevor die Plugins gestartet (allerdings nachdem die Plugins initialisiert) werden. Das muss so sein, sonst würden die parse_logic Methoden der Plugins evtl. ins Leere laufen.

                    Logiken werden beim Init (Systemstart) nur getriggert, wenn Du das in der Logik Konfiguration explizit angibst. Wenn Du dass nicht machst, triggert nicht die Initialisierung die Logik, sondern ein anderer vor Dir definierter Trigger.
                    Viele Grüße
                    Martin

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

                    Kommentar


                      #55
                      Zitat von schuma Beitrag anzeigen
                      Danach könnte ich mir dann mal die neuen Funktionen angucken;-)
                      Das kannst du ja auch so schon Das mit der Logik müsstest du dir bitte mal angucken bezüglich Triggern. Wie sieht den die logic.yaml aus? Dann kann ich das hier auch mal versuchen nachzubilden. Blöd ist halt, dass wohl immer ein anderes Item betroffen ist, aber vielleicht finden wir auch hierzu noch eine Lösung. Bei den ersten Problemen waren es immer die Items, die zuletzt gelistet wurden vor dem "going to update X items". Beim letzten Log war das aber nicht mehr der Fall

                      Kommentar


                        #56
                        Die Logik wird getriggert, da das Triggeritem ein Init macht.

                        Aber das ist ja aber nicht wirklich das Problem. Ich würde jetzt dieses Problem mit einer Änderung in der Logik ja nur umschiffen.

                        Trotzdem darf ja eine ausgeführte Logik beim Start nicht verhindern das ein Scheduler Eintrag ausgeführt wird.
                        Ich denke da gibt es noch ein Problem...

                        Onkelandy: Ich mache da erst weiter, wenn ich mir sicher bin, dass ich das Plugin weiter laufen lasse. Ich werde dann nach und nach einige Dinge in einigen Logiken ändern. Die Arbeit mache ich mir erst wenn ich mir sicher bin.
                        Gerade das Aktivieren und deaktivieren einer UZSU mit anschließendem neuen Setzten der Scheduler würde bei mir vieles einfacher machen. (Ich glaube nach einem Neustart gab es da bei der aktuellen Masterversion Probleme)

                        Onkelandy: Die logi.yaml siehr so aus:

                        Code:
                        haustuerevent:
                            filename: haustuer.py
                            visu_acl: 'yes'
                            watch_item:
                                -   EG.Raum1.Tuer.Tuer_abgeschlossen
                                -   EG.Raum1.Tuer.Klingel
                                -   KG.Raum7.Tuer.Tuer_abgeschlossen
                                -   EG.Raum1.Tuer
                                -   AA.Raum0.Praesenzmelder.Auffahrt.Funktion
                        Entscheident für dieses Problem ist nur der Trigger EG.Raum1.Tuer.Tuer_abgeschlossen

                        Zuletzt geändert von schuma; 04.10.2018, 14:31.

                        Kommentar


                          #57
                          Also zum Thema Logik:
                          Die Logik wird beim Start auch zweimal getriggert (einmal Tür EG einmal Tür KG init). Evtl. liegt hier das Problem... Warten auf Abarbeitung zweiter Durchlauf????

                          Ich habe das bei mir durch einen Workaround ersteinmal gelöst mit:

                          Code:
                          if not hasattr(logic, 'systemstart'):
                              logic.systemstart = 0
                          if logic.systemstart == 2:  
                          
                          Logik
                                        
                          if logic.systemstart < 2:
                              logic.systemstart += 1
                          Zuletzt geändert von schuma; 04.10.2018, 15:28.

                          Kommentar


                            #58
                            Löst das das Problem generell oder ist es ausreichend, die Logik nur ein mal zu triggern, um das Problem mit dem Plugin zu bekommen?

                            Kommentar


                              #59
                              Es ist ausreichend die Logik einmal zu triggern um das Problem zu bekommen.
                              Gerade noch einmal getestet...

                              Kommentar


                                #60
                                Onkelandy: Jetzt das erste mal eine neue Funktion getestet....

                                Mit .activate(False) versucht aus einer Logik heraus eine UZSU zu deaktivieren. Im Log erscheint auch:

                                Code:
                                2018-10-05  13:32:45 DEBUG    logics.EG_Raum4_szenen Update Item EG.Raum4.RolladenAlle.move.schaltuhr, Caller UZSU Plugin, Source logic, Dest None.
                                2018-10-05  13:32:45 INFO     logics.EG_Raum4_szenen Item EG.Raum4.Rolladen1.move.schaltuhr is set via logic to: False
                                Im Backend bei Plugin Scheduler ist die UZSU aber immer noch aktiv!
                                2018_10_05_13_45_59_Scheduler_SmartHomeNG.png

                                In der Visu wird die Uhr allerdings auch deaktiviert!

                                Und im WebIf auch deaktiviert!
                                Wenn man sich dann aber das dict dazu im Webif oder Backend anschaut, steht dort active: true
                                Code:
                                {'list': [{'rrule': 'FREQ=WEEKLY;BYDAY=SA', 'active': True, 'timeOffsetType': 'm', 'timeCron': '10:00', 'condition': {'deviceString': '', 'value': '', 'active': False, 'type': 'String'}, 'timeMax': '', 'timeMin': '', 'holiday': {'workday': False, 'weekend': False}, 'value': '0', 'delayedExec': {'deviceString': '', 'value': '', 'active': False, 'type': 'String'}, 'timeOffset': '', 'event': 'time', 'time': '10:00'}, {'rrule': 'FREQ=WEEKLY;BYDAY=SU', 'active': True, 'timeOffsetType': 'm', 'timeCron': '10:30', 'condition': {'deviceString': '', 'value': '', 'active': False, 'type': 'String'}, 'timeMax': '', 'timeMin': '', 'holiday': {'workday': False, 'weekend': False}, 'value': '0', 'delayedExec': {'deviceString': '', 'value': '', 'active': False, 'type': 'String'}, 'timeOffset': '', 'event': 'time', 'time': '10:30'}, {'value': '1', 'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'condition': {'deviceString': '', 'value': '', 'active': False, 'type': 'String'}, 'timeMax': '22:00', 'timeOffsetType': 'm', 'timeMin': '16:00', 'holiday': {'workday': False, 'weekend': False}, 'timeCron': 'sunset', 'delayedExec': {'deviceString': '', 'value': '', 'active': False, 'type': 'String'}, 'calculated': '19:07', 'timeOffset': '22', 'event': 'sunset', 'time': '16:00<sunset+22m<22:00'}, {'value': '0', 'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR', 'condition': {'deviceString': '', 'value': '', 'active': False, 'type': 'String'}, 'timeMax': '09:00', 'timeOffsetType': 'm', 'timeMin': '07:30', 'holiday': {'workday': False, 'weekend': False}, 'timeCron': 'sunrise', 'delayedExec': {'deviceString': '', 'value': '', 'active': False, 'type': 'String'}, 'calculated': '07:30', 'timeOffset': '', 'event': 'sunrise', 'time': '07:30<sunrise<09:00'}], 'sunrise': '07:25', 'active': False, 'interpolation': {'initage': '', 'interval': '', 'type': 'none', 'itemtype': 'num', 'initialized': False}, 'sunset': '18:45'}
                                Nur im Backend steht der Scheduler nach wie vor...
                                Zuletzt geändert von schuma; 05.10.2018, 13:05.

                                Kommentar

                                Lädt...
                                X