Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    Perfekt, jetzt klappt's. Danke!

    Kommentar


      Ich hab auch probleme beim suspend modus, dieser wird nicht gesetzt obwohl ich beim manuellen fahren diese meldung im log erhalte
      Code:
      2016-07-15 11:04:40.646158 Update triggered by Eval (item=schlafzimmer.rollladen.automatik.rules source=schlafzimmer.rollladen.fahren dest=None)
      2016-07-15 11:04:40.649375 Eval initially triggered by AutoBlind Plugin (item=schlafzimmer.rollladen.fahren source=None)
      2016-07-15 11:04:40.650211 Ignoring changes from AutoBlind Plugin
      2016-07-15 11:04:41.652948 Update state of item Automatik Schlafzimmer ====================================
      2016-07-15 11:04:41.653865 Update triggered by Eval (item=schlafzimmer.rollladen.automatik.rules source=schlafzimmer.rollladen.automatik.manuell dest=None)
      2016-07-15 11:04:41.654804 Eval initially triggered by AutoBlind Plugin (item=schlafzimmer.rollladen.fahren source=None)
      2016-07-15 11:04:41.655446 Ignoring changes from AutoBlind Plugin

      Kommentar


        Hallo,
        ich habe auch noch meine Probleme beim Suspend.
        Im Logfile erscheint:
        Code:
        2016-07-19 23:41:36.094930 Check if state 'EG.Wohnz.Rollo.Rechts.automatik.rules_steuerung.Suspend' ('Ausgesetzt') can be entered:
        2016-07-19 23:41:36.096642     Check condition set 'enter_manuell':
        2016-07-19 23:41:36.097992         Executing method 'get_relative_itemid(..manuell)'
        2016-07-19 23:41:36.099491         Condition 'trigger_source': value=EG.Wohnz.Rollo.Rechts.automatik.manuell negate=False current=Autoblind.trigger.Rollo.WZ
        2016-07-19 23:41:36.100939             not OK -> not matching
        2016-07-19 23:41:36.102197     Check condition set 'enter_stay':
        2016-07-19 23:41:36.103480         Condition 'laststate': value=EG.Wohnz.Rollo.Rechts.automatik.rules_steuerung.Suspend negate=False current=EG.Wohnz.Rollo.Rechts.automatik.rules_steuerung.Suspend
        2016-07-19 23:41:36.104786             OK -> matching
        2016-07-19 23:41:36.106047         Age of 'laststate': No limits given
        2016-07-19 23:41:36.107109         Condition 'manuell': min=None max=None negate=False current=True
        2016-07-19 23:41:36.107957             no limit given -> matching
        2016-07-19 23:41:36.110134         Age of 'manuell': min=None max=7200 negate=None current=266.342015
        2016-07-19 23:41:36.111039             given age limits ok -> matching
        2016-07-19 23:41:36.112257         Condition 'suspend': value=True negate=False current=True
        2016-07-19 23:41:36.113107             OK -> matching
        2016-07-19 23:41:36.114674         Age of 'suspend': No limits given
        2016-07-19 23:41:36.115575 State can be entered
        2016-07-19 23:41:36.117368 Executing method 'insert_suspend_time(..suspend, Automatik ausgesetzt bis %X)'
        2016-07-19 23:41:36.118324     Suspend time is 3600
        2016-07-19 23:41:36.119617     Suspend item is EG.Wohnz.Rollo.Rechts.automatik.suspend
        2016-07-19 23:41:36.121137     Current suspend age: 2951.45847
        2016-07-19 23:41:36.122331     Remaining suspend time: 648.54153
        2016-07-19 23:41:36.124139     Suspend finished at 2016-07-19 23:52:24.664832+02:00
        2016-07-19 23:41:36.125971 Staying at EG.Wohnz.Rollo.Rechts.automatik.rules_steuerung.Suspend ('Ausgesetzt')
        2016-07-19 23:41:36.126907     Action 'suspend': Set 'EG.Wohnz.Rollo.Rechts.automatik.suspend' to 'True'
        Was mich stört sind die 3600: Ich möchte die Suspend-Zeit auf 7200 einstellen.
        as_agemax_manuell = 7200 habe ich gesetzt.

        Ich vermute die Zeile:
        Code:
        2016-07-19 23:41:36.118324     Suspend time is 3600
        kommt vom Plugin default:
        #suspend_time_default = 3600

        Aber wie kann ich diesen Wert verändern? Da verstehe ich die Doku nicht.

        Auch: wie ist das Verhältnis von suspend_time und as_agmax manuell? Das ist mir unklar.

        Für Hilfe wäre ich dankbar....


        Kommentar


          mit suspend_time = 3600

          wie hast du die items aufgebaut?
          ich habs gemacht wie in dem vollständigen beispiel
          default mit den standart sachen
          Code:
          [autoblind]
          type=foo
              [[trigger]]
                  [[[rollladen]]]
                      type = bool
                      name = Gemeinsamer Trigger für alle Raffstores
                      enforce_updates = yes
                      cycle = 300 = 1
                      
              [[default]]
                  [[[rollladen]]]
                      as_plugin = active
                      as_startup_delay = 30
                      as_repeat_actions = true
                      suspend_time = 3600
                      as_item_brightness = dg.diele.helligkeit                                                # Item für Helligkeit
                      as_item_temperature = Wetter.Temperatur                                                    # Item für Temperatur außen
                      as_item_luftdruck = Wetter.Luftdruck                                                    # Item für Luftdruck aussen
                      as_item_zentral_to_0 = zentral.rollladen.rollladenautomatik                    
                     
                      # Zustand "Sperre über Sperr-Item"
                      [[[[lock]]]]
                          type = foo
                          name = Automatik manuell gesperrt
                          # Aktionen:
                          # - "Suspend"-Item ggf. zurücksetzen               
                          as_set_suspend = False
                          # sonst nichts tun
                          [[[[[enter]]]]]
                              # Einstieg in "Lock": Wenn
                              # - das "Lock"-Item gesetzt ist
                              as_value_lock = True
                              
                      [[[[suspend]]]]
                          type = foo
                          name = Ausgesetzt
                          # Namensermittlung über eval-Funktion
                          as_name = eval: autoblind_eval.insert_suspend_time("...suspend", "Automatik ausgesetzt bis %X")
                          # Aktionen:
                          # - "Suspend"-Item setzen
                          as_set_suspend = True
                          # sonst nichts tun
                          # Einstieg in "Suspend": Wenn
                          [[[[[enter_manuell]]]]]                        
                              # - die Zustandsermittlung über das "Manuell"-Item ausgelöst wurde
                              as_value_trigger_source = eval: autoblind_eval.get_relative_itemid("...manuell")
                          # Verbleib in "Suspend": Wenn   
                          [[[[[enter_stay]]]]]
                              # - wir bereits in "Suspend" sind
                              as_value_laststate = var:current.state_id
                              # - die letzte Änderung des "Manuell"-Items höchstens 3600 Sekunden her ist
                              as_agemax_manuell = 3600
                              # - das "Suspend"-Item nicht von irgendwo anders auf "False" gesetzt wurde
                              as_value_suspend = True
          dann bei meinen items
          Code:
          schlafzimmer]
              name = Schlafzimmer
              sv_page = room
              sv_img = scene_kitchen.png
              [[rollladen]]
                  name = rollladen
                  value = westen
                  [[[auto]]]
                      type = bool
                      value = 0
                  [[[fahren]]]
                      enforce_updates = On
                      type = bool
                      visu_acl = rw
                      knx_dpt = 1
                      knx_send = 2/1/13
                  [[[stop]]]
                      enforce_updates = On
                      type = bool
                      visu_acl = rw
                      knx_dpt = 1
                      knx_send = 2/1/14
                  [[[status]]]
                      enforce_updates = On
                      type = num
                      visu = yes
                      sqlite = true
                      cache = true
                      knx_dpt = 5
                      visu_acl = rw
                      knx_cache = 2/1/15
                      knx_listen = 2/1/15
                      knx_send = 2/1/15
                  [[[pos_speichern]]]
                      enforce_updates = On
                      type = num
                      visu = yes
                      knx_dpt = 1
                      visu_acl = rw
                      knx_cache = 2/1/16
                      knx_listen = 2/1/16
                      knx_send = 2/1/16
                  [[[pos_abrufen]]]
                      enforce_updates = On
                      type = num
                      visu = yes
                      knx_dpt = 1
                      visu_acl = rw
                      knx_cache = 2/1/17
                      knx_listen = 2/1/17
                      knx_send = 2/1/17
                  [[[automatik]]]
                      [[[[lock]]]]
                          type = bool
                          visu_acl = rw
                          cache = on
                          enforce_updates = yes
                      [[[[suspend]]]]
                          type = bool
                          visu_acl = rw
                      [[[[state_id]]]]
                          type = str
                          visu_acl = rw
                          cache = on
                      [[[[state_name]]]]
                          type = str
                          visu_acl = r
                          cache = on
                      [[[[manuell]]]]
                          type = bool
                          name = Manuelle Bedienung
                          # Änderungen dieser Items sollen als manuelle Bedienung gewertet werden
                          eval_trigger = schlafzimmer.rollladen.fahren | schlafzimmer.rollladen.stop | schlafzimmer.rollladen.pos_abrufen | zentral.rollladen.fahren | zentral.rollladen.stop
                          # Änderungen, die ursprünglich von diesen Triggern (<caller>:<source>) ausgelöst wurden, sollen nicht als manuelle Bedienung gewertet werden
                          as_manual_exclude = KNX:0.0.0 | Init:*  | schlafzimmer.rollladen.status
                      [[[[rules]]]]
                          type = bool
                          name = Automatik Schlafzimmer
                          as_startup_delay = 30
                          as_plugin = active
                          #as_item_auto = ..auto
                          as_item_pos = ..pos_abrufen
                          as_item_fahren = ..fahren
                          as_laststate_item_id = .state_id
                          as_laststate_item_name = .state_name
                          as_item_lock = .lock
                          as_item_manuell = .manuell
                          as_item_suspend = .suspend
                          
                          as_delay_fahren = autoblind_eval.get_random_int(2,250)
                          # Über diese Items soll die Statusermittlung ausgelöst werden
                          eval_trigger = autoblind.trigger.rollladen  | schlafzimmer.rollladen.automatik.lock | schlafzimmer.rollladen.automatik.suspend | schlafzimmer.rollladen.fahren | schlafzimmer.rollladen.pos_abrufen | zentral.rollladen.fahren | zentral.rollladen.stop
                          # In dieses Item soll die Id des aktuellen Zustands geschrieben werden
                          [[[[[lock]]]]]
                              as_use = autoblind.default.rollladen.lock
                          [[[[[suspend]]]]]
                              as_use = autoblind.default.rollladen.suspend
                              
                              # Achtung: Beim "suspend"-Item niemals "enforce_updates = yes" setzen! Das führt dazu dass das Setzen des
                              # suspend-Items bei der Initialisierung zu einem endlosen sofortigen Wiederaufruf der Statusermittlung führt!
          trotzdem bekomme ich folgenden fehler
          016-07-21 20:28:49.767697 Initialize Item autoblind.default.rollladen ====================================
          2016-07-21 20:28:49.780926 Init state autoblind.default.rollladen.lock
          2016-07-21 20:28:49.793386 ERROR: Ignoring state autoblind.default.rollladen.lock because: State 'autoblind.default.rollladen.lock', Condition Set 'enter', Condition 'lock': Condition lock: Neither 'item' nor 'eval' given!
          2016-07-21 20:28:49.803370 Init state autoblind.default.rollladen.suspend
          2016-07-21 20:28:49.814741 ERROR: Ignoring state autoblind.default.rollladen.suspend because: State 'autoblind.default.rollladen.suspend', Condition Set 'enter_stay', Condition 'manuell': Condition manuell: Neither 'item' nor 'eval' given!

          bekomme ihn nicht weg, zweifle langsam an mir selbst ....

          Kommentar


            Danke Bonze,
            hab' ich ausprobiert, mit anderen Werten, aber bei mir wird immer

            Suspend time is 3600

            angezeigt. Hab also immer noch das Problem. Hab mich ansonsten auch ziemlich an die Beispielkonfig gehalten.
            Leider hab ich auch noch ein Problem: Die Zeit des suspend Modus bleibt bestehen und wird nicht verlängert wenn ich noch mal einen Schalter betätige,
            der bei den manuell items definiert ist.


            Versuche mal bei Dir den Abschnitt bzgl. LOCK zu löschen und neu einzutippeln (nicht kopieren)
            Auch wenns blöd klingt; ich hatte diesen Fehler auch und meine mich zu erinnern ihn durch Neueingabe beseitigt zu haben.

            Kommentar


              Hallo zusammen,

              Onkelandy Habe beim nachpflegen der Änderung gerade gesehen, dass diese Änderung im aktuellen Develop-Zweig schon enthalten ist, aber nicht in den Master-Zweig gelangt ist ...

              Bonze / jonah64 Wenn Ihr für ein AutoBlind-Item die Suspend-Zeit ändern wollt, müsst Ihr bei diesem Item das Attribut
              Code:
              [B]as_[/B]suspend_time = <Sekunden>
              angeben. Wenn die Suspend-Zeit für alle Items geändert werden soll, ist es besser in der Plugin-Konfiguration
              Code:
              suspend_time_default = <Sekunden>
              anzugeben.

              Grüße offline

              Edit: Die Änderung der Suspend-Dauer war nicht in der Doku enthalten. Habe das nun nachtragen
              Zuletzt geändert von offline; 22.07.2016, 06:14.

              Kommentar


                Hi offline!
                Bin eh mit dem dev-Zweig unterwegs.. Abr grad blöde Frage - pflegst du das Plugin auch komplett in SmarthomeNG ein oder kommen die Updates primär mal auf dein eigenes Github?

                Kommentar


                  Hi Onkelandy

                  ich pflege derzeit mein eigenes Github Repository, da bin ich flexibler was Branches etc. angeht.

                  Grüße
                  offline

                  Kommentar


                    Bonze
                    Du musst bei Lock, Suspend, etc. überall noch einen weiteren Punkt davor setzen!
                    as_item_manuell = ..manuell
                    as_item_lock = ..lock
                    as_item_suspend = ..suspend

                    Das Item wird nämlich wohl aus Sicht des Zustands gesucht, und von dort aus ist es eben 2 Ebenen höher.

                    Kommentar


                      Ich hab letztens ein paar Mal das Phänomen erlebt, dass ein Item in den Suspend Zustand geht, obwohl das Update von manuell durch die Rückmeldung vom KNX Aktor zustande kommt.

                      Ist jetzt aber nicht mehr so, ich vermute, es hat sich erledigt und war nur ein Einzelfall..
                      Zuletzt geändert von Onkelandy; 09.08.2016, 00:57. Grund: obsolet

                      Kommentar


                        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
                        Zuletzt geändert von bmx; 02.08.2016, 06:39.

                        Kommentar


                          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.

                          Danke!
                          Zuletzt geändert von Onkelandy; 03.08.2016, 15:25.

                          Kommentar


                            offline:
                            Wenn Ihr für ein AutoBlind-Item die Suspend-Zeit ändern wollt, müsst Ihr bei diesem Item das Attribut

                            Code:
                            as_suspend_time = <Sekunden> angeben
                            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?

                            Kommentar


                              offline
                              Ich habe ein sonderbares Phänomen mit int und float Werten erlebt. Und zwar wird ein Item von mir vermutlich wegen des sqlite Plugins ab und zu auf einen Float Wert gestellt, während ich es per Visu generell auf einen int Wert stelle. Obgleich ein normales eval oder eine Logik offenbar keinen Unterschied zwischen 0 und 0.0 macht, scheint dein Plugin aber doch diese zwei gleichen num Werte zu differenzieren:
                              Code:
                              2016-08-07 00:51:09.350791 Check if state 'licht.og.terrasse.screens.automatik.rules.arbeiten' ('Arbeiten') can be entered:
                              2016-08-07 00:51:09.353048       Check condition set 'enter':
                              2016-08-07 00:51:09.355986               Condition 'lichtmodus': value=1 negate=False current=1.0
                              2016-08-07 00:51:09.358409                       not OK -> not matching
                              Ich hab das jetzt halt mal so gelöst, dass ich überall eine weitere Enter_float Bedingung eingefügt habe, in der nach x.0 gesucht wird. Aber ist halt nicht gerade übersichtlich und angenehm... Any ideas!? Danke!!!

                              Noch ein weiteres lustiges Phänomen, das zwar auf einem kleinen Fehler von mir basiert, aber vielleicht dennoch abgefangen werden könnte. Wenn man in eine Bedingung einen Float-Wert schreibt für ein Item, das als bool deklariert ist, funktioniert der Vergleich plötzlich auch nicht mehr.. Hier die Enter Bedingungen:

                              Code:
                                              [[[[['enter']]]]]
                                                  type = foo
                                                  as_value_urlaub = 1
                                              [[[[['enter_float']]]]]
                                                  type = foo
                                                  as_value_urlaub = 1.0
                              Hier das Log dazu:
                              Code:
                              2016-08-07 01:10:57.651539 Check if state 'steckdosen.kg.technik_server.automatik.rules.urlaub' ('Urlaub') can be entered:
                              2016-08-07 01:10:57.651999       Check condition set 'enter':
                              2016-08-07 01:10:57.652594               Condition 'urlaub': value=True negate=False current=False
                              2016-08-07 01:10:57.653089                       not OK -> not matching
                              2016-08-07 01:10:57.653562       Check condition set 'enter_float':
                              2016-08-07 01:10:57.654185               Condition 'urlaub': min=None max=None negate=False current=False
                              2016-08-07 01:10:57.655040                       no limit given -> matching
                              2016-08-07 01:10:57.655538               Age of 'urlaub': No limits given
                              2016-08-07 01:10:57.655988 State can be entered
                              Zuletzt geändert von Onkelandy; 07.08.2016, 00:16.

                              Kommentar


                                jonah64

                                Also mein supsend_time sieht so aus:
                                Code:
                                    [['kg']]    
                                    type = foo  
                                        [[['technik_server']]]
                                            type=foo
                                            [[[['automatik']]]]
                                                type = foo
                                                [[[[['autostate_id']]]]]
                                                    type = str
                                                    visu_acl = ro
                                                    cache = on
                                                [[[[['autostate_name']]]]]
                                                    type = str
                                                    visu_acl = ro 
                                                    cache = on
                                                [[[[['autostate_suspend_end']]]]]
                                                    type = str
                                                    visu_acl = ro 
                                                    cache = on
                                                [[[[['lock']]]]]
                                                    type = bool
                                                    knx_dpt = 1
                                                    knx_listen = 4/5/2
                                                    visu_acl = rw
                                                    cache = on
                                                [[[[['suspend']]]]]
                                                    type = bool  
                                                    knx_dpt = 1                                     
                                                    visu_acl = rw
                                                [[[[['manuell']]]]]
                                                    type = bool
                                                    name = Manuelle Bedienung
                                                    eval_trigger = steckdosen.kg.technik_server.SA  
                                                    as_manual_invert = True
                                                    as_manual_exclude = Init:* | Database:* | KNX:1.1.1
                                                [[[[['settings']]]]]
                                                    type = foo
                                                    [[[[[['suspendduration']]]]]]
                                                        type = num
                                                        visu_acl = rw
                                                        cache = True
                                                        enforce_updates  = no
                                                        # value = 6
                                                [[[[['rules']]]]]
                                                    type = bool
                                                    as_plugin = active
                                                    as_laststate_item_id = ..autostate_id
                                                    as_laststate_item_name = ..autostate_name
                                                    as_item_suspend_end = ..autostate_suspend_end                                        
                                                    as_suspend_time = eval:autoblind_eval.get_relative_itemvalue('..settings.suspendduration') * 60
                                                    eval_trigger = steckdosen.autoblind.steckdosentrigger
                                Das mit dem eigenen Settings-Item kannst du natürlich knicken und direkt einen Wert eingeben. So hat es aber den Vorteil, dass du jederzeit über cli, visu oder auch KNX, etc. deinen Suspendwert zur Laufzeit ändern kannst.

                                Kommentar

                                Lädt...
                                X