Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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


    Die Ursache war: "as_manual_exclude = Init:*" war noch im Item, owohl ich es gelöscht hatte, (Hab eine Backup-Datei zurückgespielt, und da war es noch enthalten)

    PHP-Code:
    [[[[[[manuell]]]]]]    
      
    type bool
      name 
    Manuelle Bedienung
      as_manual_logitem 
    Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell
      as_manual_invert 
    True    
      eval_trigger 
    Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_positionen Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_taster
      
    # as_manual_exclude = Init:* # Init muss raus, sonst will der suspend-Modus nicht bei einer gesendeten "0" nach Neustart 

    Danke offline, erst durch Deine Antwort ist mir der Baum im Wald aufgefallen
    Zuletzt geändert von ivande; 24.08.2016, 20:49. Grund: Formatierung

    Kommentar


      Hallo offline,

      hab ich mich zufrüh gefreut. die Sache funktioniert nur im Debug-Modus:

      wenn ich das "as_manual_exclude = Init:*" rausnehme, sind beim Starten vom shNG alle Raffstoren im Suspend-Modus. Starte ich shNG im Debug-Modus (--d), dann ist nach dem Start kein Raffstore im suspend? hmm?

      Gruß Ivan

      Kommentar


        Hallo ivande

        ich habe da eine Vermutung, wie ich das Problem beheben kann ... ich bin aber leider über's Wochenende unterwegs, so dass ich erst nächste Woche dazu kommen werde, das einzubauen. Wenn du Python-technisch bewandert bist, kann ich dir aber auch gerne sagen, wo du testweise mal was einbauen kannst ...

        Grüße
        offline

        Kommentar


          Guten Morgen,

          Python dürfte so weit kein Problem sein, wenn ich nicht selber draufkommen muss was, wo einzubauen ist :-)
          Testen kann ich gerne.

          Gruß Ivan

          Kommentar


            Hi ivande

            Ich habe die Vermutung, dass die Ermittlung des tatsächlichen Auslösers beim Init durcheinander kommt und ggf. gegen alte Werte prüft.

            Das "durchhangeln" durch die evals zum eigentlichen Auslöser passiert in AutoBlindFunctions.py in der Methode get_original_caller ab ca. Zeile 148.
            Baue dort nach den vorhandenen zwei If-Blöcken mal einen dritten ein. Prüfe da dass original_item.age nicht größer als ein paar Sekunden ist. Wenn doch, steige analog zu den beiden anderen Bedingungen aus der Schleife aus.

            Grüße
            offline

            Kommentar


              Hallo offline,



              Code:
              # determine original caller/source
                  # elog: instance of logging class
                  # caller: caller
                  # source: source
                  def get_original_caller(self, elog, caller, source):
                      original_caller = caller
                      original_source = source
                      while original_caller == "Eval":
                          original_item = self.__sh.return_item(original_source)
                          if original_item is None:
                              elog.debug("get_original_caller({0}, {1}): original item not found", original_caller, original_source)
                              break
                          original_changed_by = original_item.changed_by()
                          if ":" not in original_changed_by:
                              text = "get_original_caller({0}, {1}): changed by {2} -> separator missing"
                              elog.debug(text, original_caller, original_source, original_changed_by)
                              break
                          if original_item.age() > 2:
                              elog.debug("get_original_caller({0}, {1}): original item age greater 2 seconds:{3}", original_caller, original_source, original_item.age())
                              break          
                          oc = original_caller
                          os = original_source
                          original_caller, __, original_source = original_changed_by.partition(":")
                          elog.debug("get_original_caller({0}, {1}): changed by {2}, {3}", oc, os, original_caller, original_source)
              
                      elog.debug("get_original_caller: returning {0}, {1}", original_caller, original_source)
                      return original_caller, original_source
              Reaktion ist leider die selbe geblieben.. beim Starten von shNG im Nicht-Debug-Modus gehen alle Raffstoren in den suspend..

              Gruß Ivan

              Kommentar


                Hallo Ivan,

                ich habe nochmal durch's Coding geschaut, aber keine Erklärung für das Verhalten gefunden. Kannst du mal bitte wie in #549 beschrieben, das Logging für die Verarbeitung des Manuell-Items aktivieren und mit die Logausschnitte vom Manuell-Item und vom AutoBlind-Item, wie sie nach dem Restart von Smarthome.py bei dir geschrieben werden, zuschicken?

                Grüße
                offline

                Kommentar


                  Guten Morgen Ivan,

                  danke für die Log- und Conf Files. Kannst du mir noch die Logs vom Erweiterten Logging des AutoBlind Plugins schicken? Relevant wären die vom Objekt-Item sowie von deinen Manuell-Items.

                  In deinem Main-Log ist mir aufgefallen, dass es zwei harte Abbrüche im ClickControl Plugin gibt. Kannst du das ggf. mal testweise deaktivieren? Es ist nicht auszuschließen, dass durch die harten Abbrüche andere Dinge nicht so ausgeführt werden, wie sie sollten ...

                  Grüße
                  offline

                  Kommentar


                    Guten Morgen auch,

                    ich hab ClickControl deaktiviert (da bin ich erst beim Testen - sollte so eine Taster Plugin werden, welches auf einfach, Doppelklick, lange und kurze Betätigung reagiert, und auch erkennt wenn mehrere Tasten gleichzeitig gedrückt sind..)

                    das erweiterte Logging habe ich aktiviert (glaub ich), jedoch wird beim Start keine weitere log-Datei erzeugt? Ich habe Dir sämtliche erzeugten log-Files vom AutoBlind-Log Ordner wieder in den goolgedrive ordner kopiert..

                    muss das attribut as_manual_logitem = ... heissen obwohl das item in der default.conf mit "as_item_manuell = ..manuell" definiet ist? (wie in Deinem Beispiel)

                    PHP-Code:
                    as_manual_logitem Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell 
                    Plugin habe ich die develop-Version

                    Gruß Ivan

                    Kommentar


                      as_manual_logitem passt genauso und funzt, wenn du das Attribut in das entsprechende manuell item in der item.conf schreibst.

                      Kann man man sich das clickcontrol mal ansehen? Klingt cool

                      Kommentar


                        Hi ivande

                        ich glaube ich habe dein Problem gefunden. Die Initialisierung von smarthome.py dauert bei dir scheinbar etwas länger. Daher reicht das per Default vorgegebenen Startup-Delay nicht aus. Nach Ablauf des Startup-Delays laufen immer noch Item-Initialisierungen. Erhöhe mal den Wert von
                        Code:
                        startup_delay_default
                        in der Plugin-Konfiguration. Standardwert sind hier 10 Sekunden, gehe ruhig testweise mal auf 60 Sekunden oder mehr.

                        Grüße
                        offline

                        Kommentar


                          Hallo offline,

                          ich hatte startup_delay_default bereits auf 60.

                          ich habe gemessen, bis Smartvisu nach dem Start von shNG eine Verbindung herstellt, dauert es ca. 45sec. Bereits nach diesen 45sec gehen die Raffstoren in den suspend, obwohl ich nun startup_delay_default = 600 eingestellt haben. Scheint also ein Problem mit startup_delay (bei mir) zu sein. Auch wenn ich im Debug-Modus starte, ist autoblind aktiv bevor die 10 Minuten um sind.. Allerdings gehen dort die Raffstoren, wie gesagt, nicht in den suspend

                          plugin.conf
                          PHP-Code:
                          [autoblind]
                              
                          class_name AutoBlind
                              class_path 
                          plugins.autoblind
                              startup_delay_default 
                          600 #in Sekunden
                              #suspend_time_default = 3600
                              
                          log_level 2
                              log_directory 
                          = var/log/AutoBlind/
                              
                          log_maxage 
                          Gruß Ivan
                          Zuletzt geändert von ivande; 03.09.2016, 12:53.

                          Kommentar


                            Hallo Onkelandy
                            leider läuft das Plugin noch nicht fehlerfrei, und zeitlich bedingt ist das Projekt derzeit in der Warteschleife. Deswegen macht es keinen Sinn wenn ich es zur Verfügung stelle.. (außer jemand hat Lust und Zeit sich ins Projekt zu stürzen)

                            Von den Einstellungen her, lehnt es sich ein ziemlich an das autoblind-Plugin.


                            Code:
                            [Dg]
                                [[Eltern]]
                                    [[[ClickControl]]]
                                        [[[[Rules]]]]
                                            cc_plugin = active
                                            type = bool
                                            eval_trigger = Dg.Eltern.ClickControl.Keys.S1 | Dg.Eltern.ClickControl.Keys.S2 | Dg.Eltern.ClickControl.Keys.S3 | Dg.Eltern.ClickControl.Keys.S4
                                            eval = not sh.Dg.Eltern.ClickControl.Rules()
                                            cc_item_key_S1 = Dg.Eltern.ClickControl.Keys.S1
                                            cc_item_key_S2 = Dg.Eltern.ClickControl.Keys.S2
                                            cc_item_key_S3 = Dg.Eltern.ClickControl.Keys.S3
                                            cc_item_key_S4 = Dg.Eltern.ClickControl.Keys.S4
                                            cc_item_szene = Dg.Eltern.ClickControl.State.Szene
                                            # bei kurzen Tastendruck (min 5ms) auf Taste S1 erhöhe jeweils Szene bis max 5, nach 5 dann wieder 0
                                            [[[[[Zaehler_Szene]]]]]
                                                cc_count_szene = 5
                                                type = num
                                                [[[[[[enter]]]]]]
                                                    cc_pressed_time = 5
                                                    cc_key = S1
                                            # bei langem Tastendruck (min 1000ms) auf Taste S1 setze Szene auf 0 
                                            [[[[[Szene_Aus]]]]]
                                                type = bool
                                                cc_set_szene = 0
                                                [[[[[[enter]]]]]]
                                                    cc_pressed_time = 1000
                                                    cc_key = S1
                                            # bei langem Tastendruck (min 1000ms) auf Taste S1 und S2 gleichzeitig, setze Szene auf 6
                                            [[[[[Szene_Nacht]]]]]
                                                type = bool
                                                cc_set_szene = 6
                                                [[[[[[enter]]]]]]
                                                    cc_pressed_time = 1000
                                                    cc_key = S1 & S2
                                        [[[[State]]]]
                                            [[[[[Szene]]]]]
                                                type = nun
                                                enforce_updates = True
                                                knx_dpt = 5.001
                                                knx_send = 7/2/111
                                                cache = True
                                        [[[[Keys]]]]
                                            [[[[[S1]]]]]
                                                type = bool
                                                knx_dpt = 5
                                                knx_listen = 6/2/111
                                            [[[[[S2]]]]]
                                                type = bool
                                                knx_dpt = 5
                                                knx_listen = 6/2/112
                                            [[[[[S3]]]]]
                                                type = bool
                                                knx_dpt = 5
                                                knx_listen = 6/2/113
                                            [[[[[S4]]]]]
                                                type = bool
                                                knx_dpt = 5
                                                knx_listen = 6/2/114


                            Gruß Ivan

                            Kommentar


                              Hi ivan

                              schau mal bitte, ob die Änderung des startup_delay im Log sichtbar ist, denn im Log, dass du mir geschickt hast, ist der Wert noch auf 10 Sekunden. Ggf. hast du auch beim Item selbst nochmal eine Einstellung. Die default-Einstellung wird nur verwendet, wenn beim Item nichts definiert ist.

                              Code:
                              2016-08-31 08:45:48.123253 Configuration of item Dg Eltern ================================================
                              2016-08-31 08:45:48.123302 Startup Delay: 10
                              Grüße
                              offline

                              Kommentar


                                Ja, das ist mir jetzt aber peinlich..
                                Da ich mit dem suspend schon länger "kämpfe", habe ich das startup_delay schon länger her, bei allen Items versuchsweise eingebaut, und nicht mehr daran gedach..

                                Das Problem bei Start von shNG ist damit natürlich "behoben"- Danke

                                Gruß Ivan

                                Kommentar

                                Lädt...
                                X