Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    #46
    Hallo Thomas,

    kann es sein, dass manual_break_default nicht aus der plugin.conf genommen wird sondern immer fest auf 3600 steht?
    Hatte den Wert bei mir mal auf 1800 gestellt und trotzdem wird immer eine Stunde pausiert.

    Gruß,
    Jörg

    Kommentar


      #47
      Hallo Thomas,

      also ich habe mir jetzt mal den master aus dem git genommen um zu schauen ob damit die 1800 Sekunden funktionieren (hatte bisher die Dateien aus der dropbox verwendet). Leider ist der master-branch aktuell wohl defekt.
      Code:
      Exception in thread autoblind:
      Traceback (most recent call last):
        File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
          self.run()
        File "/usr/local/smarthome/lib/plugin.py", line 84, in run
          self.plugin.run()
        File "/usr/local/smarthome/plugins/autoblind/__init__.py", line 90, in run
          self.update_positions()
        File "/usr/local/smarthome/plugins/autoblind/__init__.py", line 108, in update_positions
          self._items[item].update_position(condition_checker)
        File "/usr/local/smarthome/plugins/autoblind/AutoBlindItem.py", line 184, in update_position
          if not condition_checker.can_leave(position):
        File "/usr/local/smarthome/plugins/autoblind/AutoBlindConditionChecker.py", line 172, in can_leave
          conditions = position.getLeaveConditions()
      AttributeError: 'AbPosition' object has no attribute 'getLeaveConditions'
      Habe dann jetzt den develop-branch genommen. Der startet und das mit den 1800 Sekunden funktioniert auch.
      Da im develop auch deine Anpassung mit den Tagen drin ist werde ich wohl erstmal dabei bleiben und das ein wenig ausprobieren.

      Danke und Gruß,
      Jörg

      Kommentar


        #48
        Hallo Jörg,

        Zitat von Intruder73 Beitrag anzeigen
        also mit so wenig Zeit hatte ich doch nicht gerechnet.
        Eine ungeplante Unterbrechung der Nachtruhe, nach der es sich nicht mehr gelohnt hat nochmal ins Bett zu gehen hat's möglich gemacht ...

        Zitat von Intruder73 Beitrag anzeigen
        kann es sein, dass manual_break_default nicht aus der plugin.conf genommen wird sondern immer fest auf 3600 steht?
        Ja, der Wert wird (in der master-Version) nicht korrekt weitergegeben

        Zitat von Intruder73 Beitrag anzeigen
        Leider ist der master-branch aktuell wohl defekt.
        In der Tat fehlen im master einige Änderungen, die im develop enthalten sind. Da aber Develop gut ausschaut und funktioniert, werde ich den develop bei nächster Gelegenheit in den master mergen und dann passt das wieder.

        Grüße
        Thomas

        Kommentar


          #49
          Hallo zusammen,

          es gab noch einen Bug, das die Items zu den generischen Bedingungen nicht korrekt ermittelt wurden, wenn man zu einem AutoBlind-Objekt alternative Bedingungssets definiert hat, die Basiskonfiguration zu diesem Objekt aber über "use" aus anderen Bedingungen ermittelt hat. Ein Fix ist im develop-Zweig auf Github.
          Vor dem Merge von develop in master werde ich noch verzögern und noch ein wenig testen ...

          Grüße
          Thomas

          Kommentar


            #50
            Hi offline,

            vielen Dank für das Plugin - es sieht sehr gut aus.

            Ich versuche gerade, meine existierende script-Sammlung durch Dein Plugin abzulösen - derzeit allerdings nur theoretisch, da ich im Urlaub bin. Ich vermisse eigentlich nur eine Sache: Ich würde gerne auch ereignisgesteuert bestimmte Zustände anspringen können (und nicht nur alle n Sekunden).
            Das kann man auf mehrere Weisen erreichen, z.b. indem man in den Zustands-Items noch einen trigger einbaut oder indem man eine (bzw. mehrere, wie beim eval_trigger) Trigger-Bedingung(en) am "AutoBlind"-Item zuläßt, die einfach eine erneute Auswertung der Regeln "außer der Reihe" erzwingen (fände ich am besten). Man hätte dann einfach ein passendes Zustands-Item, dass die Trigger-Bedingung auch mit evaluiert und so könnte man bestimmte Zustände anspringen.

            Derzeit behelfe ich mir mit einem solchen Zustands-Item (das dann ja auch nach spätestens 5 Minuten angesprungen wird) und schicke zusätzlich die entsprechende Position an den Aktor, sobald das Ereignis erfolgt - allerdings kollidiert das mit der manuellen Bedienung, so dass dafür wieder Sonderlogik und extra-Items nötig sind (und was nicht nötig wäre, wenn alles durch Deinen Zustandsautomaten geht).

            Langer Rede kurzer Sinn: Könntest Du noch eine Art "eval_trigger" an das AutoBlind-Item basteln, das dann die Zustände neu evaluiert?

            Wäre toll,
            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #51
              Hi Waldemar,

              über eine solche Funktion habe ich mir auch schon Gedanken gemacht gehabt. Ich habe mal was gebaut und auf GitHub im Branch "feature-watch-trigger" eingestellt. Mit der Erweiterung kann im AutoBlind-Item über das Attribut "watch_trigger" eine Reihe von Items angegeben werden, die ein Update des jeweiligen AutoBlind-Objekts auslöst. Das reguläre Update wird dabei im Moment nicht beeinflusst, dass heist, dass ggf. das reguläre Update kurz darauf nochmal läuft.

              Grüße
              Thomas

              Kommentar


                #52
                Cool - und irre schnell - DANKE!

                Allerdings kann ich das erst kommende Woche ausprobieren, ich bin - wie schon erwähnt - noch im Urlaub...
                Das der watch_trigger die Zeit für das reguläre Update nicht ändert, sollte ja bei einem Zustandsautomaten kein Problem sein...

                Ich werde das mal austesten und Dir kommende Woche Feedback geben,
                Danke nochmal, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #53
                  @offline
                  Ich habe bei mir die Rolladensteuerung auch mit vielen kleinen Logiken realisiert, deshalb wäre es interessant für mich dies mit deinem Plugin zu lösen.
                  Was ich beim Lesen der Doku noch nicht sehen konnte ist, wie ich am Besten meine Tür-/Fensterkontakte (geschlossen/offen/gekippt) einbinden kann. Damit meine ich, Rollladen hoch, wenn z.B. eine Tür geöffnet ist/wird oder Nachts wenn das Fenster gekippt ist, den Rollladen auf 90% fahren statt ganz nach unten.

                  Ist sowas mit deinem Plugin möglich?

                  Kommentar


                    #54
                    Hi panzaeron,

                    unter Anderem dafür wollte ich die ereignisgetriggerte Auswertung der Zustände haben: Beim Fenster öffnen (Ereignis) sofort die Zustandsauswertung - und dann muss es eben einen Zustand offen geben, der dann die Position 0,0 anfährt. Alles andere, was Du geschrieben hast, sollte auch schon vorher gegangen sein.

                    @offline:
                    Lieber Thomas, Dein plugin wird mir wunderbar auch bei meiner Lüftungssteuerung helfen, das ist nämlich mit einem Zustandsautomaten wesentlich übersichtlicher zu schaffen als Ereignisgesteuert mit vielen kleinen scripts. Vielleicht solltest Du Dein Plugin aufteilen: Allemeiner Zustandsautomat und darauf aufbauend die Verschattungssteuerung...

                    Vielen Dank für Deine Arbeit,
                    Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      #55
                      OK, danke für die Info, ich werde mich demnächst mal genauer mit dem Plugin auseinander setzen.

                      Kommentar


                        #56
                        Hi panzaeron,

                        also ich habe sicherheitsrelevante Funktionen wie z. B. das Hochfahren/Obenbleiben der Raffstores bei geöffneter Tür oder auch den Windalarm direkt im Aktor realisiert. Solche Funktionen sollten meiner Meinung nach nicht in irgendeiner Programmierung versteckt sein, sondern so einfach wie möglich implementiert sein.

                        Für die Rolladensteuerung bei geöffnetem Fenster brauchst du zwei Positions-Items für Nacht-Positionen. Über eine generische Bedingung kannst du dabei den Fensterkontakt einbauen. Verkürzt kann das etwa so ausschauen:
                        Code:
                        [[[AutoBlind]]]
                            item_fensterkontakt = item.fuer.fensterkonakt
                            [[[[active]]]]
                                (...)
                            [[[[lastpos_id]]]]
                                (...)
                            [[[[lastpos_name]]]]
                                (...)  
                            [[[[nacht_fensterzu]]]]
                                type = foo
                                name = Nacht und Fenster zu
                                position = 100,0
                                [[[[[enter]]]]]
                                    value_fensterkontakt = False
                                    (weitere Nachbedingungen)
                            [[[[nacht_fensterauf]]]]
                                type = foo
                                name = Nacht und Fenster auf
                                position = 90,0
                                [[[[[enter]]]]]
                                    value_fensterkontakt = True
                                    (weitere Nachbedingungen)
                            [[[[tag]]]]
                                type = foo
                                name = Tag
                                position = 0,0
                                [[[[[enter]]]]]
                                    (Tagbedingungen)
                        @mumpf:
                        Mit dem Gedanken spiele ich auch schon länger. Ich bin nur am überlegen wie ich das genau realisiere. Ich möchte die Konfiguration nicht unnötig verkomplizieren.

                        Grüße
                        Thomas

                        Kommentar


                          #57
                          offline Danke für die Info, mit dem Fenster hoch hast du recht, sollte im Aktor passieren. Bei mir habe ich aber zwei Kontakte die ausgewertet werden müssen um sicher drehgeöffnet zu erkennen, daher habe ich das mit einer Logik gelöst.

                          Kommentar


                            #58
                            Etwas schnell abgeschickt, danke für das Beispiel, ich schaue mir das demnächst genauer an.

                            Kommentar


                              #59
                              Hallo Thomas,

                              ich habe Dein Plugin jetzt mal ausprobiert, bin gerade dabei, es für alle Rollläden im Haus zu adaptieren. Das mit watch_trigger passt prima, danke für Deinen Support.
                              Du solltest vielleicht noch in die Doku aufnehmen, dass bei generischen Conditions alle Werte nummerisch oder bool sein müssen... ich hatte auch ein String-Item dabei, und dann initialisiert sich AutoBlind nicht, schreibt nicht ins log (weder das eigene noch das von sh.py) und ich habe ziemlich lange suchen müssen, um die Fehlerursache zu finden.

                              Danke nochmal,
                              Gruß, Waldemar
                              OpenKNX www.openknx.de

                              Kommentar


                                #60
                                Hallo Waldemar,

                                freut mich, wenn es bei dir funktioniert. Wie hast du dass mit den Rolläden gemacht, hast du wie ich mal vorgeschlagen hatte einfach ein Dummy-Item für die Lamellenstellung genommen?
                                Das mit den String-Conditions sollte jetzt auch funktionieren. Ich habe die beiden Feature-Branches für den watch_trigger und die delay-Condition in den develop-Branch gemerged und noch den Fix für die String-Conditions eingebaut.

                                Grüße
                                Thomas

                                Kommentar

                                Lädt...
                                X