Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    offline
    Noch in kurze Frage zu einem Feature, das es vermutlich nicht gibt.. Ist es möglich, bei einzelnen Bedingungen auch eine ODER Abfrage zu machen? Mit eval wird das vermutlich nicht gehen oder doch?

    Als Beispiel:
    Man hat eine Bedingungsgruppe mit sagen wir 10 verschiedenen Bedingungen. Eine davon kann aber beispielsweise 3, 4 unterschiedliche Werte aufweisen, um in dn entsprechenden Zustand zu kommen. Jetzt wäre es deutlich übersichtlicher, wenn man für diese eine Bedingung sowas angeben könnte anstatt die ganze Wurst 4 Mal hinzuschreiben und abzuändern:
    Code:
                        [[[[[['enter']]]]]]
                            type = foo
                            as_value_nachtlock = False  
                            [COLOR=#FF0000]as_value_modus = 1 | 4 | 6 | 7[/COLOR]
                            as_value_a_bett = True
                            as_value_b_bett = True
                            as_min_time = item:licht.modus.automatik.settings.night.min_time_off
                            as_max_time = item:licht.modus.automatik.settings.night.max_time_off
                            as_negate_time = True 
                            as_agemin_a_bett = eval:autoblind_eval.get_relative_itemvalue('..settings.night.delay_on') * 60
                            as_agemin_b_bett = eval:autoblind_eval.get_relative_itemvalue('..settings.night.delay_on') * 60
    Oder hat sich sowas noch nie wer gewünscht bzw. gibt's das eh schon auf ne ähnliche Art und Weise? Dankeschöööööön.

    Kommentar


      Hi Onkelandy
      Zitat von Onkelandy Beitrag anzeigen
      offline
      By the way: Super wär's wenn das Plugin ein as_manual_invert = false auch schlucken würd und dann eben nicht automatisch immer den Wert ändert. Das könnte ich gerade für eine Situation gut brauchen - und aktuell wird wohl nur gecheckt, ob das Attribut vorhanden ist, aber nicht welchen Wert es hat. Gerade in Zusammenhang mit as_manual_exclude / include wäre das hilfreich.
      Sowohl as_manual_include/exclude als auch as_manual_invert sorgen lediglich dafür, dass <item>.eval auf einen bestimmten Wert gesetzt wird. Bei as_manual_include/exclude ist das
      Code:
      sh.autoblind_plugin_functions.manual_item_update_eval('<item.id>', caller, source)
      as_manual_invert setzt <item>.eval auf
      Code:
      not sh.<item.id>()
      as_manual_invert selbst wird nicht berücksichtigt, wenn as_manual_include/exclude angegeben ist.
      Diese Attribute dienen im wesentlichen der Vereinfachung. Grundsätzlich kannst du sie weglassen und eine eigene eval-Routine hinterlegen. Dadurch kannst du auch über eigene Routinen steuern, wann eine Wertänderung des Items erfolgt.

      Grüße
      offline

      Kommentar


        Hi jonah64
        Zitat von jonah64 Beitrag anzeigen
        offline:

        Irgendwie bin ich noch zu doof dazu. Klappt bei mir noch nicht. Bei welchem Item genau muß es stehen? Kannst Du ein Beispiel geben bzw. könntest Du as_suspend_time vielleicht noch in das vollständige Beispiel einarbeiten?
        Ich habe das in der Doku ergänzt: https://github.com/i-am-offline/smar...-einstellungen

        Grüße
        offline

        Kommentar


          Zitat von Onkelandy Beitrag anzeigen
          offline
          Noch in kurze Frage zu einem Feature, das es vermutlich nicht gibt.. Ist es möglich, bei einzelnen Bedingungen auch eine ODER Abfrage zu machen? Mit eval wird das vermutlich nicht gehen oder doch?

          Als Beispiel:
          Man hat eine Bedingungsgruppe mit sagen wir 10 verschiedenen Bedingungen. Eine davon kann aber beispielsweise 3, 4 unterschiedliche Werte aufweisen, um in dn entsprechenden Zustand zu kommen. Jetzt wäre es deutlich übersichtlicher, wenn man für diese eine Bedingung sowas angeben könnte anstatt die ganze Wurst 4 Mal hinzuschreiben und abzuändern:
          Code:
          [COLOR=#FF0000]as_value_modus = 1 | 4 | 6 | 7[/COLOR]
          Doch .. genau das gibt's schon (und zwar genauso wie du es oben geschrieben hast). Siehe https://github.com/i-am-offline/smar...estimmter-wert

          Grüße
          offline

          Kommentar


            Hi @Onkelandy
            Zitat von Onkelandy Beitrag anzeigen
            Vielleicht wärs noch möglich, auf die neue logging-Option von SmarthomeNG einzugehen... das wäre cool:
            self.logger = logging.getLogger(__name__) https://knx-user-forum.de/forum/supp...konfigurierbar
            Für das Standard-Logging des Plugins allgemein habe ich das umgesetzt. Push auf GitHub (Develop-Branch) ist erfolgt.
            Für das erweiterte Logging macht das aber in meinen Augen derzeit keinen Sinn. Ich habe keine Möglichkeit gefunden ie Logger so zu definieren, dass jeder Logger in eine eigene Datei schreibt (außer für jedes Autoblind-Item einen eigenen Handler in der YAML-Datei zu definieren ...).

            Grüße
            offline
            Zuletzt geändert von offline; 09.08.2016, 19:46.

            Kommentar


              So, ich hoffe dass ich zu allen relevanten Themen, die wärend meines Urlaubs gepostet wurden, nun meinen Senf dazu gegeben habe. Würstchen die meinen, sie hätten ihren Senf noch nicht abbekommen können sich gerne nochmal melden ;-))

              Grüße
              offline

              Kommentar


                offline vielen Dank für die Antworten. Menno, da hab ich teils die Doku zu wenig genau gecheckt Das mit dem SmartPlugin ist schon mal top, mal sehen, ob das dann funzt. Und ja, die Sonderlogging-Geschichte funktioniert derzeit eh prima wie sie ist.

                Das mit der eigenen Eval-Routine habe ich eh schon testhalber umgesetzt. Mir ist noch nicht ganz klar, wie ich das am besten implementiere, sodass das Ganze unabhängig von deinem Plugin funzt, aber da werd ich schon drauf kommen Eigentlich wäre es generell cool, einfach ein include und exclude in jedes beliebige Item schreiben zu können.

                Kommentar


                  offline

                  Jetzt ist der Fehler doch schon ab und zu aufgetaucht und zwar direkt nach einem Neustart. Ich gehe daher davon aus, dass hier bei der exclude-Routine zu Beginn etwas nicht stimmt. Danach wohl schon. Habe gerade den neuesten develop Release gezogen..

                  Hier das Log
                  Code:
                  2016-08-11 11:13:59.451195 Update state of item jalousien.og.osten_stiegenhaus.automatik.rules ============
                  2016-08-11 11:13:59.452119 Update triggered by Startup Delay (item=jalousien.og.osten_stiegenhaus.automatik.rules source=None dest=None)
                  ...
                  2016-08-11 11:13:59.520768 State can be entered
                  2016-08-11 11:13:59.521335 Staying at jalousien.og.osten_stiegenhaus.automatik.rules.suntrack ('Sonnenstand')
                  2016-08-11 11:13:59.522016     Action 'height': Set 'jalousien.og.osten_stiegenhaus.hoehe' to '100'
                  2016-08-11 11:13:59.773399     Action 'suspend_end': Set 'jalousien.og.osten_stiegenhaus.automatik.autostate_suspend_end' to ''
                  2016-08-11 11:13:59.783361     Action 'suntracking': Set 'jalousien.autoblind.settings.suntracking' to 'True'
                  2016-08-11 11:13:59.793325     Action 'suspend': Set 'jalousien.og.osten_stiegenhaus.automatik.suspend' to 'False'
                  2016-08-11 11:13:59.795813     Executing method 'SunTracking()'
                  2016-08-11 11:13:59.797522         Current sun altitude is 47.70685644673391°
                  2016-08-11 11:13:59.800413         Blinds at right angle to the sun at 42.29314355326609°
                  2016-08-11 11:13:59.801515     Action 'lamella': Set 'jalousien.og.osten_stiegenhaus.lamellen' to '42.29314355326609'
                  2016-08-11 11:14:04.830882 Update state of item jalousien.og.osten_stiegenhaus.automatik.rules ============
                  2016-08-11 11:14:04.832095 Update triggered by Eval (item=jalousien.og.osten_stiegenhaus.automatik.rules source=jalousien.og.osten_stiegenhaus.automatik.manuell dest=None)
                  2016-08-11 11:14:04.833678 Eval initially triggered by KNX (item=jalousien.og.osten_stiegenhaus.lamellen source=1.1.4)
                  2016-08-11 11:14:04.835956 Executing method 'get_relative_itemvalue(..settings.suspendduration)'
                  2016-08-11 11:14:04.837373 Last state: jalousien.og.osten_stiegenhaus.automatik.rules.suntrack ('Sonnenstand')
                  2016-08-11 11:14:04.838128 Check if state 'jalousien.og.osten_stiegenhaus.automatik.rules.suntrack' ('Sonnenstand') can be left:
                  2016-08-11 11:14:04.838780     No condition sets defined -> matching
                  2016-08-11 11:14:04.839341 State can be left
                  ...
                  2016-08-11 11:14:04.881408 Check if state 'jalousien.og.osten_stiegenhaus.automatik.rules.suspend' ('Ausgesetzt') can be entered:
                  2016-08-11 11:14:04.882047     Check condition set 'enter_manuell':
                  2016-08-11 11:14:04.883235         Executing method 'get_relative_itemid(..manuell)'
                  2016-08-11 11:14:04.884511         Condition 'trigger_source': value=jalousien.og.osten_stiegenhaus.automatik.manuell negate=False current=jalousien.og.osten_stiegenhaus.automatik.manuell
                  2016-08-11 11:14:04.885217             OK -> matching
                  2016-08-11 11:14:04.885860         Age of 'trigger_source': No limits given
                  2016-08-11 11:14:04.886438 State can be entered
                  2016-08-11 11:14:04.887046 Changing to jalousien.og.osten_stiegenhaus.automatik.rules.suspend ('Ausgesetzt')
                  2016-08-11 11:14:05.046132     Action 'suspend': Set 'jalousien.og.osten_stiegenhaus.automatik.suspend' to 'True'
                  2016-08-11 11:14:05.050667     Executing method 'insert_suspend_time(..suspend, %X)'
                  2016-08-11 11:14:05.053468         Suspend time is 14400
                  2016-08-11 11:14:05.056803         Suspend item is jalousien.og.osten_stiegenhaus.automatik.suspend
                  2016-08-11 11:14:05.060221         Current suspend age: 0.011843
                  2016-08-11 11:14:05.061268         Remaining suspend time: 14399.988157
                  2016-08-11 11:14:05.064902         Suspend finished at 2016-08-11 15:14:05.051550+02:00
                  2016-08-11 11:14:05.067331     Action 'suspend_end': Set 'jalousien.og.osten_stiegenhaus.automatik.autostate_suspend_end' to '15:14:05'
                  Das Item:
                  Code:
                                  [[[[['manuell']]]]]
                                      type = bool
                                      name = Manuelle Bedienung
                                      as_manual_invert = True
                                      as_manual_exclude = Database:* | KNX:1.1.4
                                      eval_trigger = jalousien.og.osten_stiegenhaus.lz | jalousien.og.osten_stiegenhaus.kz | jalousien.og.osten_stiegenhaus.hoehe | jalousien.og.osten_stiegenhaus.lamellen | jalousien.og.szenen | jalousien.alle | jalousien.og.osten.lz | jalousien.og.osten.kz
                  Bei einer anderen Jalousie, die exakt gleich konfiguriert ist, gab es das Problem nicht..
                  Code:
                  2016-08-11 11:14:01.407966 Update state of item jalousien.og.osten_wohnen.automatik.rules =================
                  2016-08-11 11:14:01.409316 Update triggered by Eval (item=jalousien.og.osten_wohnen.automatik.rules source=jalousien.og.osten_wohnen.automatik.manuell dest=None)
                  2016-08-11 11:14:01.411043 Eval initially triggered by AutoBlind Plugin (item=jalousien.og.osten_wohnen.lamellen source=None)
                  2016-08-11 11:14:01.412041 Ignoring changes from AutoBlind Plugin
                  2016-08-11 11:14:01.466032 Update state of item jalousien.og.osten_wohnen.automatik.rules =================
                  2016-08-11 11:14:01.467073 Update triggered by Eval (item=jalousien.og.osten_wohnen.automatik.rules source=jalousien.og.osten_wohnen.automatik.manuell dest=None)
                  2016-08-11 11:14:01.468559 Eval initially triggered by AutoBlind Plugin (item=jalousien.og.osten_wohnen.lamellen source=None)
                  2016-08-11 11:14:01.469471 Ignoring changes from AutoBlind Plugin
                  2016-08-11 11:15:56.250934 Update state of item jalousien.og.osten_wohnen.automatik.rules =================
                  2016-08-11 11:15:56.258389 Update triggered by Eval (item=jalousien.og.osten_wohnen.automatik.rules source=jalousien.autoblind.jalousietrigger dest=None)
                  2016-08-11 11:15:56.265316 Eval initially triggered by Scheduler (item=jalousien.autoblind.jalousietrigger source=None)
                  Zuletzt geändert von Onkelandy; 11.08.2016, 15:38.

                  Kommentar


                    Hi Onkelandy

                    kannst du mir nochmal kurz sagen, was das Problem ist? Ich sehe vermutlich den Wald vor lauter Bäumen nicht.

                    In deiner Konfiguration des Manuell-Items kannst du die Zeile "as_manual_invert = ..." rausnehmen. Die brauchst du nur, wenn weder as_manual_exclude noch as_manual_include angegeben sind.
                    Wenn du ein Problem bei der Auswertung des Manuell-Items vermutest kannst du in der Konfiguration dieses Items das Attribut
                    Code:
                    as_manual_logitem = <Vollständige Item-Id>
                    angeben. Dadurch wird das erweiterte Logging des Plugins für die Auswertung von as_manual_exclude/_include aktiviert. Du bekommst dann eine weitere Logfile, deren Namen aus dem im Attribut angegebenen Item zusammengesetzt wird. Daher bietet es sich an, bei diesem Attribut einfach nochmal den Namen des Manuell-Items anzugeben.

                    Grüße
                    offline

                    Kommentar


                      Hi offline
                      Das mit dem manual_logitem hab ich jetzt bei manchen Jalousien aktiviert, aber ich konnte das Problem partout aktuell nicht mehr nachbilden. Nichts desto trotz tauchte es bei mir in den letzten Wochen ab und an auf.

                      Eine Jalousie ist im Sonnenstand-Modus. Ich beende SmarthomeNG und starte es dann wieder. Direkt nach dem Start geht die Jalousie brav wieder in den Sonnenstandmodus zurück, allerdings wird wohl durch das leichte Ändern der Lamellen das Manuell-Item getriggert. Und jetzt kommt's - obwohl ich den KNX Aktor (1.1.4) aus dem Manuell Item ausgeschlossen habe, wechselt der Zustand in "Suspend".

                      Ich weiß, dass es das Problem schon mal gab und du da einen Fix eingebaut hast. Offenbar greift dieser Fix auch meistens, aber offenbar nicht immer.. Mehr kann ich dazu leider auch nicht sagen - vielleicht passiert das ja noch irgendwann wieder mit aktiviertem manual_logitem, dann kann ich mehr berichten. Vielleicht fällt dir aber gleich ein, wo damals das Problem lag

                      Kommentar


                        Das sollte in der Tat nicht sein, genau sowas sollte ja über as_manual_exclude ausgeschlossen sein. Was mich dabei aber wundert ist, dass die zweite Statusermittlung (2016-08-11 11:14:04.830882) ziemlich exakt 5 Minuten nach dem Ende der ersten Neuermittlung (2016-08-11 11:13:59.801515) passiert. Das ist entweder ein extremer Zufall, oder es deutet darauf hin, das as_manual_eval eine andere Quelle für die Änderung ermittelt als die Prüfungen im Plugin. Das sollte dann im Log zum manuell-Item sichtbar sein, dass du nun aktiviert hast.

                        Kommentar


                          Hi! Das sind 5 Sekunden und wäre nach meiner Interpretation die Zeit, die der Aktor gebraucht hat, um den aktuellen Lamellenwert zurück zu melden, meinst nicht?

                          Kommentar


                            Sorry 5 Sekunden natürlich. Mich macht es nur stutzig, dass es fast auf die 1/100 Sekunde genau 5 Sekunden sind. Aber auch wenn's direkt vom Aktor kommt, sollte im Log zum manuell-Item erkennbar sein, wie der Wert ermittelt wurde

                            Kommentar


                              Ist mir schon länger aufgefallen: Damit das manuell Item nach den Neustart von shNG in den Suspend-Status geht, muss ich immer erst eine "1" senden. Also Raffstore oder Lamelle "Runter". Wenn ich erst auf Rauf klicke geht es nicht in den Suspend.

                              Das Problem hab ich auch schon hier gefunden: siehe Post 478

                              PHP-Code:
                                  [[SuspendNight]]
                                      
                              #$order = 20
                                      
                              type foo
                                      name 
                              Automatik für eine Zeit ausgesetzt
                                      enforce_updates 
                              True
                                      as_name 
                              = eval: autoblind_eval.insert_suspend_time('..suspend'suspend_text='Ausgesetzt bis %X')
                                      
                              as_set_suspend True
                                      
                              [[[enter_manuell]]]
                                          
                              #$order = 2
                                          
                              as_max_sun_altitude 20
                                          as_max_Daemmerung 
                              200
                                          as_value_trigger_source 
                              = eval: autoblind_eval.get_relative_itemid('..manuell')
                                      [[[
                              enter_stay]]]
                                          
                              #$order = 3
                                          
                              as_value_laststate = var:current.state_id
                                          as_agemax_manuell 
                              = var:item.suspend_time
                                          as_value_suspend 
                              True 
                              PHP-Code:
                                      [[[[[[manuell_positionen]]]]]]
                                                      
                              type bool
                                                      name 
                              Manuelle Bedienung Positionen
                                                      as_manual_include 
                              Visu:*
                                                      
                              as_manual_invert True
                                                      eval_trigger 
                              Dg.Eltern.Jalousie.Fenster.Position Dg.Eltern.Jalousie.Fenster.Lamellenposition
                                                  
                              [[[[[[manuell_taster]]]]]]
                                                      
                              type bool
                                                      name 
                              Manuelle Bedienung über Tasten
                                                      
                              eval = not sh.Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_taster()
                                                      
                              as_manual_invert True
                                                      eval_trigger 
                              Dg.Eltern.Jalousie.Fenster.Auf_ab Dg.Eltern.Jalousie.Fenster.Lamellenverstellung_stop Dg.Eltern.Jalousie.Fenster.ManuellKNX
                                                  
                              [[[[[[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 



                              2016-08-23 23:49:26.924024 running for item 'Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell' source 'Eval' caller 'Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_tast er'
                              2016-08-23 23:49:26.924075 Current value of item Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell is False
                              2016-08-23 23:49:26.924121 get_original_caller(Eval, Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_taste r): changed by Eval, Dg.Eltern.Jalousie.Fenster.Lamellenverstellung_sto p
                              2016-08-23 23:49:26.924165 get_original_caller(Eval, Dg.Eltern.Jalousie.Fenster.Lamellenverstellung_sto p): changed by Init, None
                              2016-08-23 23:49:26.924200 get_original_caller: returning Init, None
                              2016-08-23 23:49:26.924234 original trigger by caller 'Init' source 'None'
                              2016-08-23 23:49:26.924270 checking exclude values: ['Init:*']
                              2016-08-23 23:49:26.924306 Init:*: matching. Writing value False
                              hat das Problem sonst noch jemand? da ich zurzeit öfters sh neu starte (Testen von shNG, svTNG, ...) ist es unangenehm wenn der Suspend-Modus nicht immer aktiviert wird, wenn er sollte..

                              Gruß Ivan
                              Zuletzt geändert von ivande; 23.08.2016, 22:52.

                              Kommentar


                                Hi ivande

                                nach dem Log, das du angehängt hast, sollte er aber die Statusermittlung nicht triggern. Er mekt, dass der aktuelle Wert des Manuell-Items "False" ist, dann ermittelt er "Init" als Auslöser der Änderung. "Init" steht auf der Exclude-Liste also behält er den Wert "False" für das Manuell-Item bei. Da "enforce_updates" nicht für das Manuell-Item nicht gesetzt ist, sollte das nicht zum Triggern führen. Wenn doch müsste ich mir das SHNG-Coding an der Stelle nochmal ansehen, das wäre nämlich nicht richtig.

                                Grüße
                                offline

                                Kommentar

                                Lädt...
                                X