Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    Guten Morgen,

    Zitat von Onkelandy Beitrag anzeigen
    Was das by_attr anlangt.... Wenn ich das Attribut mit einem item festlegen will, gibt es die Fehlermeldung, dass das Item kein bool sei. Ich schätze also, dass dieses Attribut noch nicht über item, eval, etc. gesetzt werden kann? Wollte gerade auch mal probieren, ob man nicht die ganzen Attribute im Autoblind-Item nicht doch auch per eval setzen kann. Also zB: as_item_suspend = eval:autoblind_eval.get_item("suspend", 1)
    Das würde die Sache gerade für Neulinge bzw. bei einem größeren Update Das Copy/Paste extrem erleichtern... Oder spricht da was konkret dagegen? Irgendwie gibt es die Funktionalität ja schon..
    Bei as_item_<name> kann bisher eine statische Item-Id angegeben werden. Der Datentyp AbValue, über den "eval:<funktion>" bzw "item:<itemname>" angegeben werden ist dort noch nicht berücksichtigt. Das soll aber auch noch kommen, die Funktion get_item ist ja genau für den Anwendungsfall vorgesehen. (Wobei ich da auch noch eine andere Idee habe, aber das muss ich erst mal austesten)

    Zitat von Onkelandy Beitrag anzeigen
    Aber eine generelle Verständnisfrage zu dem by_attr... Ist es nicht so, dass dann immer ALLE Steckdosen, die eben das gleiche Attribut teilen, auf den Wert gesetzt werden, unabhängig davon, in welchem Zustand sich diese befinden? Das könnte ja dazu führen, dass Items geändert werden, ohne dass sie im entsprechend passenden Zustand sind, oder nicht? Also angenommen, zwei Items sollen mit unterschiedlichen Bedingungen in einen konkreten Zustand (zB ein Licht geht bei Helligkeit <300 Lux in den "Abendmodus", wohingegen ein anderes erst bei 100 Lux in den gleichen Zustand wechselt), wird doch die Schaltaktion für die 2. Lampe schon ausgeführt, sobald die 1. Lampe im entsprechenden Zustand ist. Oder bringe ich da was durcheinander?
    Es werden immer die Steckdosen geschaltet, die sich das Attribut teilen, dass du bei as_byattr angegeben hast. Daher kannst du bei zwei Status zwei unterschiedliche Attribute verwenden und bei den Steckdosen definieren. In deinem Fall könntest du z. B. die Attribute "if_outside_lt_300lux" und "if_outside_lt_100lux" zu den Steckdosen-Items hinzufügen.
    Bei der ersten Steckdose ergänzt du ein
    Code:
    if_outside_lt_300lux = True
    Bei der zweiten Steckdose ergänzt du ein
    Code:
    if_outside_lt_100lux = True
    Im Zustand "Helligkeit < 300 Lux" setzt du die Aktion
    Code:
    as_byattr_steckdosen = if_outside_lt_300lux
    Im Zustand "Helligkeit < 100 Lux" setzt du die Aktion
    Code:
    as_byattr_steckdosen = if_outside_lt_100lux
    Für nur eine Steckdose je Zustand (wie in dem Beispiel) ist das etwas oversized, aber wenn du in diesen Zuständen weitere Objekte schalten willst, kann das einiges an Tipparbeit sparen.

    Zitat von Onkelandy Beitrag anzeigen
    Die neue Möglichkeit, das Manuell Item zu definieren, ist sehr schön. Evtl. die Attribute noch einheitlich englisch oder deutsch benennen Konnte das soeben mit etlichen Items erfolgreich testen, schön!
    Die Attribute sind einheitlich englisch benannt, nur im Post habe ich mich da wohl vertippt. Müssen die Nachwirkungen der Silvesternacht sein ... Die Attribute heißen
    • as_manual_invert
    • as_manual_include
    • as_manual_exclude


    Zitat von Onkelandy Beitrag anzeigen
    Wegen der Jalousie / Lamellenproblematik: Heißt das, wenn man das min_delta weg lässt, dürfte das Problem weniger vorkommen? Ich werde das die nächsten Tage mal testen und berichten...
    Wenn du "as_mindelta_<Aktionsname>" weglässt, sollte das das Problem beseitigen, nicht jedoch die eigentliche Ursache des Problems

    Zitat von Onkelandy Beitrag anzeigen
    Gibt es eigtl. eine Möglichkeit, die Endzeit des Suspends auszulesen? In der Doku steht was, aber mit ist nicht ganz klar, wie das mit der neuen Zustands-Lösung des Suspend-Items umgesetzt werden kann. Kann die Funktion insert_suspend_time irgendwie so eingesetzt werden, dass der Text in ein Item geschrieben wird (am liebsten in ein eigenes, unabhängig vom eigtl. Suspend-Item, um bezügl. der Bezeichnung flexibel zu bleiben..)? Hätte vermutet, ich kann zB im Suspend-Zustand einfach die Funktion per eval aufrufen, hab ich aber nicht hinbekommen. Ist jetzt nicht sonderlich wichtig, aber vielleicht gibt's da eh schon eine Lösung und ich versteh sie nur nicht.. hehe.
    Die Funktion "insert_suspend_time" ermittelt die Endezeit des Suspends. Dazu wird ein Item gebraucht, das im Suspend-Zustand auf "true" und in den anderen Zuständen auf "false" gesetzt wird. Die Funktion "insert_suspend_time" nimmt nun die definierte Suspend-Zeit, zieht davon das Alter dieses Suspend-Items ab. Dies ergibt die Restdauer des Suspends, die einfach zur aktuellen Uhrzeit addiert wird um die Endezeit zu bekommen.

    Über das Attribut "as_name" im Zustands-Item kann der Name eines Zustands, wie er in das über "as_laststate_item_name" geschrieben wird, geändert werden. Hier kann beim Suspend-Zustand die Funktion "insert_suspend_time" eingesetzt werden, um "wie früher" das Ende des Suspends anzuzeigen. Die Funktion "insert_suspend_time" braucht als ersten Parameter die Id des Items, das im Suspend-Zustand auf "true" gesetzt wird. Der zweite Parameter ist optional, hier kann der Text angegeben werden, in den die Endezeit eingesetzt wird. Standardwert für den Text ist "Ausgesetzt bis %X".

    Wenn du die Endezeit in ein anderes Item schreiben möchtest, musst du beim entsprechenden Zustand etwas wie
    Code:
    "as_set_<wasauchimmer> = eval:insert_suspend_time(my.suspend.item)
    angeben.

    Grüße
    offline

    Kommentar


      Danke für die Rückmeldung.. ich bekomm das mit der Suspendtime einfach nicht gebacken..
      Code:
      2016-01-02 16:12:34.915483       Problem evaluating 'autoblind_eval.insert_suspend_time(steckdosen.og.wohnen_ost.automatik.suspend)': name 'steckdosen' is not defined.
      Das Item gibt es definitiv. Wenn ich das autoblind_eval weglasse wie in deinem Code oben, gibt's ohnehin gleich ne Fehlermeldung. Wenn Ich es mit sh.ITEM() versuche, gibt's einen ValueError (Can't convert 'ValueError' object to str implicitly.). Was genau mache ich falsch?
      Eine Item Abfrage ergibt Folgendes:
      Code:
      steckdosen.og.wohnen_ost.automatik.suspend = True
      Existiert also und ist auch auf ein, wenn Suspend Mode aktiv sowie aus, wenn er deaktiviert wird. Ich habe das Item, in das die Zeit geschrieben werden soll, eine Ebene höher so definiert:
      Code:
      as_item_suspend_end = steckdosen.og.wohnen_ost.automatik.autostate_suspend_end
      Das Item gibt es auch und ist ein str.

      Kannst du schon abschätzen, wann die as_item - Sachen über die eval/item-Funktion verfügen werden ?
      Vielen Dank und einen schönen Abend noch!

      Kommentar


        Hi Onkelandy,

        so auf die Schnelle: In "eval" kommt immer Python-Coding. Du musst daher die Id des Items in Anführungszeichen schreiben.

        Grüße
        offline

        Kommentar


          Hallo, gutes Neues Jahr auch allerseits..

          ich kämpfe gerade mit der Umsetzung des "manuell" Statuses,..

          ich habe dabei noch einige Probleme. Irgendwie komme ich nicht aus dem suspend-Status. Ich denke es könnte damit zu tun haben:

          2016-01-02 23:54:23.198940 Check if state 'Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Suspend' ('Suspend') can be entered:
          2016-01-02 23:54:23.198974 Check condition set 'enter_manuell':
          2016-01-02 23:54:23.199056 Problem evaluating 'autoblind_eval.get_item('manuell', 1)': Can't convert 'ValueError' object to str implicitly.
          2016-01-02 23:54:23.199098 Condition 'trigger_source': value=None negate=False current=Eg.Kueche.Jalousie.Tuer.AutoBlind.Trigger
          Hier meine .conf.

          Code:
          [Eg]
              [Kueche]
                  [[[Jalousie]]]
                      [[[[Tuer]]]]
                          name = Kueche Tuer
                          [[[[[AutoBlind]]]]]
                              [[[[[[Trigger]]]]]]
                                  #$order = 1
                                  type = bool
                                  enforce_updates = yes
                                  cycle = 300 = 1
                              [[[[[[State]]]]]]
                                  #$order = 2
                                  [[[[[[[stateId]]]]]]]
                                      type = str
                                      visu_acl = ro
                                      cache = True
                                  [[[[[[[stateName]]]]]]]
                                      type = str
                                      visu_acl = ro
                                      cache = True
                                  [[[[[[[lock]]]]]]]
                                      #�ber dieses Item wird die Automatik gesperrt
                                      type = bool
                                      visu_acl = rw
                                      cache = True
                                      eval = False if (sh.Eg.Kueche.Jalousie.Tuer.Automatik_sperren() == 0)  else True
                                      eval_trigger = Eg.Kueche.Jalousie.Tuer.Automatik_sperren
                                  [[[[[[[suspend]]]]]]]
                                      #Status: Automatik ist deaktiviert
                                      type = bool
                                      visu_acl = ro
                                  [[[[[[[manuell]]]]]]]
                                      type = bool
                                      name = Manuelle Bedienung
                                      eval = not sh.Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell() if sh.autoblind.is_changed_by(caller, source, ['Visu:*']) else sh.Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell()
                                      eval_trigger = Eg.Kueche.Jalousie.Tuer.Position | Eg.Kueche.Jalousie.Tuer.Lamellenposition
                              [[[[[[Rules]]]]]]
                                  as_plugin = active
                                  name = Raffstore EG K�che T�r
                                  #$order = 3
                                  type = bool
                                  eval_trigger = Eg.Kueche.Jalousie.Tuer.AutoBlind.Trigger | Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell | Eg.Kueche.Jalousie.Tuer.AutoBlind.State.suspend | Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock
                                  as_repeat_actions = false
                                  as_lock_item = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock
                                  as_laststate_item_id = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.stateId
                                  as_laststate_item_name = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.stateName
                                  as_item_Position = Eg.Kueche.Jalousie.Tuer.Position
                                  as_item_Lamellenposition = Eg.Kueche.Jalousie.Tuer.Lamellenposition
                                  as_item_Brightness_ost = Wetterstation.Helligkeit.Ost
                                  as_item_Brightness_sued = Wetterstation.Helligkeit.Sued
                                  as_item_Brightness_west = Wetterstation.Helligkeit.West
                                  as_item_tag = System.Sonne.Tag
                                  as_item_Daemmerung = Wetterstation.Daemmerung
                                  as_item_Lock = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock
                                  as_item_Suspend = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.suspend
                                  as_item_manuell = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell
                                  [[[[[[[Lock]]]]]]]
                                      #$order = 1
                                      type = foo
                                      name = Manuell gesperrt
                                      as_set_Suspend = False
                                      [[[[[[[[enter]]]]]]]]
                                          as_value_Lock = True
                                  [[[[[[[Suspend]]]]]]]
                                      #$order = 2
                                      type = foo
                                      name = Suspend
                                      as_set_Suspend = True
                                      [[[[[[[[enter_manuell]]]]]]]]
                                          as_value_trigger_source = eval: autoblind_eval.get_item("manuell", 1)
                                      [[[[[[[[enter_stay]]]]]]]]
                                          as_value_laststate = var:current.state_id
                                          as_agemax_manuell = var:item.suspend_time
                                          as_value_Suspend = True
                                  [[[[[[[Morgendaemmerung]]]]]]]
                                      as_set_Lamellenposition = 50
                                      #$order = 10
                                      type = foo
                                      name = Morgend�mmerung
                                      [[[[[[[[enter]]]]]]]]
                                          as_min_sun_altitude = -5
                                          as_max_sun_azimut = 180
                                          as_max_Daemmerung = 30
                                  [[[[[[[Tag]]]]]]]
                                      as_set_Position = 40
                                      as_set_Lamellenposition = 0
                                      #$order = 20
                                      type = foo
                                      name = Tag (statisch)
                                      [[[[[[[[enter]]]]]]]]
                                          as_min_sun_altitude = 5
                                          as_min_Daemmerung = 30
                                  [[[[[[[Abenddaemmerung]]]]]]]
                                      as_set_Position = 50
                                      as_set_Lamellenposition = 50
                                      #$order = 30
                                      type = foo
                                      name = Abendd�mmerung
                                      [[[[[[[[enter]]]]]]]]
                                          as_max_sun_altitude = 5
                                          as_min_sun_altitude = -5
                                          as_min_sun_azimut = 180
                                          as_max_Daemmerung = 30
                                  [[[[[[[Nacht]]]]]]]
                                      as_set_Position = 100
                                      as_set_Lamellenposition = 70
                                      #$order = 40
                                      type = foo
                                      name = Nacht
                                      [[[[[[[[enter]]]]]]]]
                                          as_max_sun_altitude = -5
                                          as_max_Daemmerung = 30
                                  [[[[[[[Nachfuehren]]]]]]]
                                      type = foo
                                      name = Tag (nachf�hren)
                                      as_set_Position = 60
                                      as_set_Lamellenposition = eval:int((sh.System.Sonne.Hoehe())*90/45)
                                      [[[[[[[[enter_sonne_ost]]]]]]]]
                                          as_min_Brightness_ost = 20000
                                          as_min_sun_altitude = 20
                                          as_min_sun_azimut = 124
                                          as_max_sun_azimut = 233
                                      [[[[[[[[leave_todark]]]]]]]]
                                          as_max_Brightness_ost = 10000
                                          as_max_Brightness_sued = 10000
                                          as_max_Brightness_west = 10000
                                          as_min_delay = 1200
                                      [[[[[[[[leave_sun_azimut]]]]]]]]
                                          as_min_sun_azimut = 124
                                          as_max_sun_azimut = 233
                                          as_negate_sun_azimut = True
                                      [[[[[[[[leave_sun_altitude]]]]]]]]
                                          as_max_sun_altitude = 19
                          [[[[[Auf_ab]]]]]
                              type = bool
                              visu = yes
                              visu_acl = rw
                              enforce_updates = True
                              knx_dpt = 1
                              knx_send = 3/0/61
                          [[[[[Lamellenverstellung_stop]]]]]
                              type = bool
                              visu = yes
                              visu_acl = rw
                              enforce_updates = True
                              knx_dpt = 1
                              knx_send = 3/0/62
                          [[[[[Position]]]]]
                              type = num
                              cache = True
                              visu = yes
                              visu_acl = rw
                              knx_dpt = 5.001
                              knx_send = 9/0/61
                              knx_listen = 10/0/61
                          [[[[[Lamellenposition]]]]]
                              type = num
                              cache = True
                              visu = yes
                              visu_acl = rw
                              knx_dpt = 5.001
                              knx_send = 9/0/62
                              knx_listen = 10/0/62
                          [[[[[Position_gueltig]]]]]
                              type = bool
                              cache = True
                              visu_acl = ro
                              knx_dpt = 1
                              knx_listen = 10/0/63
                              knx_init = 10/0/63
                          [[[[[ReferenzFahren]]]]]
                              type = bool
                              knx_dpt = 1
                              knx_send = 3/0/63
                              eval = True if (sh.Eg.Kueche.Jalousie.Tuer.Position_gueltig() == 0) else False
                              eval_trigger = Eg.Kueche.Jalousie.Tuer.Position_gueltig
                          [[[[[Automatik_sperren]]]]]
                              type = bool
                              cache = True
                              visu_acl = rw

          Gruß Ivan

          PS. Die Buttons zum Einfügen von Code sind wieder nicht da?
          Zuletzt geändert von ivande; 03.01.2016, 09:25. Grund: die Buttons hab ich nun doch gefunden --> unter erweiterter Editor

          Kommentar


            Danke offline..
            Hätte schwören wollen, das hatte ich schon probiert. Vermutlich hatte ich dann aber einen anderen Fehler drin (Vertipper entdeckt..) Tja
            Danke, es klappt so jedenfalls ganz prima!
            Code:
            as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('item.suspend', suspend_text='%X')
            ivande , ohne Einrückungen, etc. lässt sich das nur extrem mühsam lesen Tatsache ist, dass ich ähnliche Fehlermeldungen mit dem suspend_text hatte. Jetzt ist der Fehler weg.. Dabei bin ich drauf gekommen, dass ich versehentlich das gleiche Item mehrmals referenziert hatte. Teste also mal deine Items zB in der CLI, ob dein manuell-Item tatsächlich in der richtigen Hierarchiefolge zu finden ist und nicht irgendwo noch das gleiche Item definiert ist, vielleicht sogar mit einem anderen type?
            Zuletzt geändert von Onkelandy; 03.01.2016, 01:12.

            Kommentar


              Hallo 'Onkelandy,

              hast Du einen Tipp wie ich die items per terminal teste? Gibs dazu eine Doku?

              Gruß Ivan

              Kommentar


                Hallo zusammen,

                ivande
                Code:
                autoblind_eval.get_item('manuell', 1)
                wird in deinem Fall aufgelöst zu
                Code:
                Eg.Kueche.Jalousie.Tuer.AutoBlind.manuell
                Dieses Item gibts nicht, daher wird ein Fehler ausgelöst. Leider ist da noch ein Bug im Coding, so dass ein Folgefehler kommt.

                Dein "manuell"-Item heißt
                Code:
                Eg.Kueche.Jalousie.Tuer.AutoBlind[B].State[/B].manuell
                daher musst du
                Code:
                as_value_trigger_source = autoblind_eval.get_item('[B]State.[/B]manuell', 1)
                (von "Eg.Kueche.Jalousie.Tuer.AutoBlind.rules" eine Ebene hoch und dann zu "State.manuell" wieder runter) schreiben.


                Noch ein Hinweis für alle:
                Ich bin gerade dabei die deutsche Doku komplett fertig zu machen in diesem Zusammenhang habe ich auch noch ein paar Commits noch nicht auf GitHub gepusht, damit ich Doku und Plugin endlich mal auf den gleichen Stand bekomme. Hier ist auch das Feature dabei, dass Items über die Attribute des Plugins grundsätzlich relativ angegeben werden können, auf das Onkelandy noch wartet. Diese Funktionalität ähnelt dem get_state, kommt jedoch ihne einen "parent_level"-Parameter aus. Um hier dann nicht zuviel durcheinander zu produzieren gibt es dann auch eine neue Eval-Funktion zum Ermitteln der relativen Item-Id, die "get_item" ersetzen wird. "get_item" bleibt zunächst im Plugin enthalten, wird aber als "obsolet" markiert und entsprechende Meldungen ins Log schreiben, also verwendet es nicht zu häufig ...
                Ich hoffe dass ich die komplette Doku, sowie die noch fehlenden Commits im Laufe des heutigen Tags auf GitHub pushen kann.

                Grüße
                offline

                Kommentar


                  Habe gerade die Doku sowie die letzten Commits auf GitHub gepusht.

                  Grüße
                  offline

                  Kommentar


                    ivande Ich meinte damit einfach die "normale" CLI von smarthome.py. Steht in der smarthome-Doku. Wenn du dann in der Commandline bist (per telnet Verbindung, am besten mit rlwrap - dazu gibts auch einen Beitrag hier im Forum..), kannst du per Befehl unten den Zustand des Items samt Unteritems listen. Und somit auch sehen, ob das von dir angegebene Item überhaupt existiert.
                    ls Eg.Kueche.Jalousie.Tuer

                    Man kann Code übrigens auch manuell definieren.. Einfach in eckigen Klammern CODE und /CODE.
                    Zuletzt geändert von Onkelandy; 03.01.2016, 14:30.

                    Kommentar


                      Hi offline
                      Suuuuper, vielen Dank für die Updates, das erleichtert die Konfiguration schon ungemein!!!
                      Sag mal, ist es theoretisch möglich, die evals und vars miteinander zu verschachteln? Mir geht's va. um die oben genannten Problematiken, die sich aktuell eigentlich super lösen ließen, wenn es Kombinationen der derzeitigen Funktionen gäbe...

                      Ich poste hier mal kurz ein Item und die entsprechende Autoblind-Config, damit wird vermutlich klar, wie flexibel und doch übersichtlich das Ganze dadurch noch werden könnte

                      Code:
                       ['bla']
                       [['autoblind']]
                              [[['default']]]
                                  type=foo
                                  # Items, die geprueft werden
                                  as_item_advent = Datum.Advent
                                  
                                  # Items die geaendert werden. Das ist schon mal der Hammer, dass das so cool funktioniert. Sofern die Items alle gleich aufgebaut sind, perfekt!
                                  as_item_schalten = ...SA
                      
                                  # Suspend und Lock Items
                                  as_item_manuell = ..manuell
                                  as_item_lock = ..lock
                                  as_item_suspend = ..suspend
                                          
                                  [[[['suspend']]]]
                                      type = foo
                                      name = Ausgesetzt
                                      as_set_suspend = True
                                      [[[[['enter_manuell']]]]]
                                          type = foo
                                          as_value_trigger_source = eval:autoblind_eval.get_relative_itemid('..manuell')
                                      [[[[['enter_stay']]]]]
                                          type = foo
                                          as_value_laststate = var:current.state_id                            
                                          as_agemax_manuell = var:item.suspend_time
                                          as_value_suspend = True
                      
                                  [[[['advent']]]]
                                      type = foo
                                      name = Advent
                                      [[[[['enter']]]]]
                                          type = foo
                                          as_value_advent = True
                      Und hier das Item:
                      Code:
                      [steckdosen]
                          [[og]]
                              [[['wohnen_ost']]]
                                  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.og.wohnen_ost.SA  
                                          as_manual_invert = True
                                          as_manual_exclude = Init:* | KNX:1.1.1
                                      [[[[['settings']]]]] # Dadurch sollen die Werte dynamisch über die Visu geändert werden.
                                          type = foo
                                          [[[[[['suspendduration']]]]]]
                                              type = num
                                              visu_acl = rw
                                              cache = True
                                              enforce_updates  = no
                                              # value = 6
                      ​                    [[[[[['schalten']]]]]] # Pro Zustand kann hier der Wert definiert (und in der Visu adaptiert) werden.
                                              type = foo
                      ​                        [[[[[[['advent']]]]]]]
                                                  type = bool
                                                  visu_acl = rw
                                                  cache = True
                                                  enforce_updates  = no                        
                                              [[[[[[['standard']]]]]]]
                                                  type = bool
                                                  visu_acl = rw
                                                  cache = True
                                                  enforce_updates  = no
                                      [[[[['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
                                                              
                      [B]                   as_suspend_time = item: ..settings.suspendduration # funktioniert
                                          as_suspend_time = eval:sh.steckdosen.og.wohnen_ost.settings.suspend() * 60 # funktioniert, ist aber nicht generisch. Idee ist "sec in min" zu wandeln, ohne mit zusätzlichen evals und Hilfsitems zu arbeiten. Könnte aber sicher für einige andere Sachen gut passen ;)[/B]
                      [B]                   as_suspend_itemvalue = item: ..settings.suspendduration
                                          as_suspend_time = eval:autoblind_eval.get_relative_itemValue('..settings[B].suspendduration[/B]') * 60
                                          # Evals mit get_relativeId funzen ja nicht, da dort ja nicht der Wert ausgelesen wird.[/B]
                      
                                          eval_trigger = steckdosen.autoblind.steckdosentrigger | steckdosen.og.wohnen_ost.automatik.lock | steckdosen.og.wohnen_ost.automatik.suspend | steckdosen.og.wohnen_ost.automatik.manuell
                                          [[[[[['lock']]]]]]
                                              type = foo
                                              as_use = steckdosen.autoblind.default.lock
                                              as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='')
                                          [[[[[['suspend']]]]]]
                                              type = foo
                                              as_use = steckdosen.autoblind.default.suspend
                      [COLOR=#FF0000][B]                       as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='%X') # funktioniert nur beim ersten Trigger, siehe unten[/B][/COLOR]
                                          [[[[[['advent']]]]]]
                                              type = foo
                                              as_set_schalten = item:..settings.schalten.advent
                                              as_use = steckdosen.autoblind.default.advent
                                              as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='%)
                                          [[[[[['standard']]]]]]
                                              type = foo
                                              as_use = steckdosen.autoblind.default.standard
                                              as_set_schalten = item:..settings.schalten.heimkino
                                              as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='')
                      
                                  [[[['SA']]]]
                                      knx_send = 3/2/3
                                      type = bool
                      Ein interessantes Phänomen gibt es jetzt doch noch mit der Suspend_Time.. Hier habe ich einfach 2 Mal hintereinander den Zustand geändert, um den Suspend Mode zu aktivieren. Über den oben angegeben Befehl wird die Zeit beim 1. Aufruf richtig gesetzt, beim zweiten Mal gibt es aber einen Error...

                      Code:
                      2016-01-03 14:25:56.162880 Changing to steckdosen.og.wohnen_ost.automatik.rules.suspend ('Ausgesetzt')
                      2016-01-03 14:25:56.173290       Action 'suspend': Set 'steckdosen.og.wohnen_ost.automatik.suspend' to 'True'
                      2016-01-03 14:25:56.180036       Executing method 'insert_suspend_time(..suspend, %X)'
                      2016-01-03 14:25:56.184960       Action 'suspend_end': Set 'steckdosen.og.wohnen_ost.automatik.autostate_suspend_end' to '02:26:06 PM'
                      
                      2016-01-03 14:26:09.832456 Update triggered by Eval (item=steckdosen.og.wohnen_ost.automatik.rules source=steckdosen.og.wohnen_ost.automatik.manuell dest=None)
                      2016-01-03 14:26:09.833824 Eval initially triggered by Visu (item=steckdosen.og.wohnen_ost.SA source=10.0.0.86:56845)
                      2016-01-03 14:26:09.836003 Last state: steckdosen.og.wohnen_ost.automatik.rules.suspend ('Ausgesetzt')
                      
                      2016-01-03 14:26:09.851366 Check if state 'steckdosen.og.wohnen_ost.automatik.rules.suspend' ('Ausgesetzt') can be entered:
                      2016-01-03 14:26:09.852492       Check condition set 'enter_stay':
                      2016-01-03 14:26:09.853615               Condition 'manuell': min=None max=None negate=False current=True
                      2016-01-03 14:26:09.854557                       no limit given -> matching
                      2016-01-03 14:26:09.856409               Age of 'manuell': min=None max=10 negate=None current=0.032748
                      2016-01-03 14:26:09.857384                       given age limits ok -> matching
                      2016-01-03 14:26:09.858491               Condition 'suspend': value=True negate=False current=True
                      2016-01-03 14:26:09.859451                       OK -> matching
                      2016-01-03 14:26:09.860431               Age of 'suspend': No limits given
                      2016-01-03 14:26:09.861497               Condition 'laststate': value=steckdosen.og.wohnen_ost.automatik.rules.suspend negate=False current=steckdosen.og.wohnen_ost.automatik.rules.suspend
                      2016-01-03 14:26:09.862593                       OK -> matching
                      2016-01-03 14:26:09.863630               Age of 'laststate': No limits given
                      2016-01-03 14:26:09.864635 State can be entered
                      2016-01-03 14:26:09.865641 Staying at steckdosen.og.wohnen_ost.automatik.rules.suspend ('Ausgesetzt')
                      2016-01-03 14:26:09.866750       Action 'suspend': Set 'steckdosen.og.wohnen_ost.automatik.suspend' to 'True'
                      2016-01-03 14:26:09.868460       Executing method 'insert_suspend_time(..suspend, %X)'
                      2016-01-03 14:26:09.870659       Problem evaluating 'autoblind_eval.insert_suspend_time('..suspend', suspend_text='%X')': Can't convert 'ValueError' object to str implicitly.
                      Zuletzt geändert von Onkelandy; 03.01.2016, 15:13.

                      Kommentar


                        Hi Onkelandy

                        da tritt ein Fehler in "insert_suspend_time" auf und bei der Fehlerbehandlung kommt es zu einem Folgefehler. Ich habe einen Fix auf GitHub gepusht, so dass der eigentliche Fehler im Log stehen sollte. Außerdem habe ich noch einen Commit gepusht, der eine eval-Funktion "get_relative_itemvalue" ergänzt. Diese Methode funktioniert analog zu "get_relative_itemid", liefert jedoch nicht die Id, sondern den Wert des Items.
                        Ein dritter Commit behebt noch einen Fehler in der obsoleten Methode "get_item", über den ich gestolpert bin.

                        Grüße
                        ofline
                        Zuletzt geändert von offline; 03.01.2016, 16:24. Grund: zu schnell abgeschickt ...

                        Kommentar


                          hallo offline

                          dein Tipp war wieder ein Volltreffer :-)
                          Code:
                          as_value_trigger_source = autoblind_eval.get_item('[B]State.[/B]manuell', 1)


                          kann ich im suspend-Zustand nicht mehr die Rest-Zeit anzeigen? ( Ausgeset bis %X)

                          Code:
                          [[[[[[[Suspend]]]]]]]
                                                      #$order = 2
                                                      type = foo
                                                      name = Ausgeset bis ??
                                                      as_set_suspend = True
                                                      [[[[[[[[enter_manuell]]]]]]]]
                                                          as_value_trigger_source = eval: autoblind_eval.get_item('State.manuell', 1)
                                                      [[[[[[[[enter_stay]]]]]]]]
                                                          as_value_laststate = var:current.state_id
                                                          as_agemax_manuell = var:item.suspend_time
                                                          as_value_suspend = True
                          ich habe noch ein Problem mit dem Lock-Zustand. Wenn ich diesen über einen Button in der Visu aktiviere, dann wird zwar das Item Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock gesetzt, jedoch bleibt Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Lock = None. somit wird mir im stateName auch nicht der richtige Text angezeigt.. Warscheinlich übersehe ich auch hier wieder etwas,..

                          Eg.Kueche.Jalousie.Tuer
                          Eg.Kueche.Jalousie.Tuer.AutoBlind
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.State
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.State.stateId = Eg.Kueche.Jalousie.Tuer.AutoBl ind.Rules.Suspend
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.State.stateName = Ausgeset bis %X
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock = True
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.State.suspend = True
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell = True
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules = True
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Lock = None
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Lock.enter
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Suspend = None
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Suspend.en ter_manuell
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Suspend.en ter_stay
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Morgendaem merung = None
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Morgendaem merung.enter
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Tag = None
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Tag.enter
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Abenddaemm erung = None
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Abenddaemm erung.enter
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nacht = None
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nacht.ente r
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Sonne_ost = None
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Sonne_ost. enter
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nachfuehre n = None
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nachfuehre n.enter_sonne_ost
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nachfuehre n.enter_sonne_sued
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nachfuehre n.enter_sonne_west
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nachfuehre n.leave_todark
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nachfuehre n.leave_sun_azimut
                          Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Nachfuehre n.leave_sun_altitude
                          Eg.Kueche.Jalousie.Tuer.Auf_ab = False
                          Eg.Kueche.Jalousie.Tuer.Lamellenverstellung_stop = False
                          Eg.Kueche.Jalousie.Tuer.Position = 99.2
                          Eg.Kueche.Jalousie.Tuer.Lamellenposition = 60
                          Eg.Kueche.Jalousie.Tuer.Position_gueltig = True
                          Eg.Kueche.Jalousie.Tuer.ReferenzFahren = False
                          Eg.Kueche.Jalousie.Tuer.Automatik_sperren = False
                          Code:
                          [Eg]
                              [[Trigger]]
                                  #$order = 1
                                  type = bool
                                  enforce_updates = True
                                  cycle = 300 = 1
                                  [[[Kueche]]]
                                      [[[[Tuer]]]]
                                          name = Kueche Tuer
                                          [[[[[AutoBlind]]]]]
                                              [[[[[[State]]]]]]
                                                  #$order = 2
                                                  [[[[[[[stateId]]]]]]]
                                                      type = str
                                                      visu_acl = ro
                                                      cache = True
                                                  [[[[[[[stateName]]]]]]]
                                                      type = str
                                                      visu_acl = ro
                                                      cache = True
                                                  [[[[[[[lock]]]]]]]
                                                      #�ber dieses Item wird die Automatik gesperrt
                                                      type = bool
                                                      visu_acl = rw
                                                      cache = True
                                                  [[[[[[[suspend]]]]]]]
                                                      #Status: Automatik ist deaktiviert
                                                      type = bool
                                                      visu_acl = ro
                                                  [[[[[[[manuell]]]]]]]
                                                      type = bool
                                                      name = Manuelle Bedienung
                                                      eval = not sh.Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell() if sh.autoblind.is_changed_by(caller, source, ['Visu:*']) else sh.Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell()
                                                      eval_trigger = Eg.Kueche.Jalousie.Tuer.Position | Eg.Kueche.Jalousie.Tuer.Lamellenposition
                                              [[[[[[Rules]]]]]]
                                                  as_plugin = active
                                                  name = Raffstore EG K�che T�r
                                                  #$order = 3
                                                  type = bool
                                                  eval_trigger = Eg.Trigger | Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell | Eg.Kueche.Jalousie.Tuer.AutoBlind.State.suspend | Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock
                                                  as_repeat_actions = false
                                                  as_lock_item = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock
                                                  as_laststate_item_id = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.stateId
                                                  as_laststate_item_name = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.stateName
                                                  as_item_Position = Eg.Kueche.Jalousie.Tuer.Position
                                                  as_item_Lamellenposition = Eg.Kueche.Jalousie.Tuer.Lamellenposition
                                                  as_item_Brightness_ost = Wetterstation.Helligkeit.Ost
                                                  as_item_Brightness_sued = Wetterstation.Helligkeit.Sued
                                                  as_item_Brightness_west = Wetterstation.Helligkeit.West
                                                  as_item_tag = System.Sonne.Tag
                                                  as_item_Daemmerung = Wetterstation.Daemmerung
                                                  as_item_lock = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock
                                                  as_item_suspend = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.suspend
                                                  as_item_manuell = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell
                                                  [[[[[[[Lock]]]]]]]
                                                      #$order = 1
                                                      type = foo
                                                      name = Automatik gesperrt
                                                      as_set_suspend = False
                                                      [[[[[[[[enter]]]]]]]]
                                                          as_value_lock = True
                                                  [[[[[[[Suspend]]]]]]]
                                                      #$order = 2
                                                      type = foo
                                                      name = Ausgeset bis %X
                                                      as_set_suspend = True
                                                      [[[[[[[[enter_manuell]]]]]]]]
                                                          as_value_trigger_source = eval: autoblind_eval.get_item('State.manuell', 1)
                                                      [[[[[[[[enter_stay]]]]]]]]
                                                          as_value_laststate = var:current.state_id
                                                          as_agemax_manuell = var:item.suspend_time
                                                          as_value_suspend = True
                                                  [[[[[[[Morgendaemmerung]]]]]]]
                                                      as_set_Lamellenposition = 50
                                                      #$order = 10
                                                      type = foo
                                                      name = Morgend�mmerung
                                                      [[[[[[[[enter]]]]]]]]
                                                          as_min_sun_altitude = -5
                                                          as_max_sun_azimut = 180
                                                          as_max_Daemmerung = 30
                                                  [[[[[[[Tag]]]]]]]
                                                      as_set_Position = 40
                                                      as_set_Lamellenposition = 0
                                                      #$order = 20
                                                      type = foo
                                                      name = Tag (statisch)
                                                      [[[[[[[[enter]]]]]]]]
                                                          as_min_sun_altitude = 5
                                                          as_min_Daemmerung = 30
                                                  [[[[[[[Abenddaemmerung]]]]]]]
                                                      as_set_Position = 50
                                                      as_set_Lamellenposition = 50
                                                      #$order = 30
                                                      type = foo
                                                      name = Abendd�mmerung
                                                      [[[[[[[[enter]]]]]]]]
                                                          as_max_sun_altitude = 5
                                                          as_min_sun_altitude = -5
                                                          as_min_sun_azimut = 180
                                                          as_max_Daemmerung = 30
                                                  [[[[[[[Nacht]]]]]]]
                                                      as_set_Position = 100
                                                      as_set_Lamellenposition = 70
                                                      #$order = 40
                                                      type = foo
                                                      name = Nacht
                                                      [[[[[[[[enter]]]]]]]]
                                                          as_max_sun_altitude = -5
                                                          as_max_Daemmerung = 30
                                                  [[[[[[[Sonne_ost]]]]]]]
                                                      #$order = 41
                                                      type = foo
                                                      name = Sonne im Osten
                                                      [[[[[[[[enter]]]]]]]]
                                                          as_min_sun_altitude = 11
                                                          as_max_sun_azimut = 135
                                                  [[[[[[[Nachfuehren]]]]]]]
                                                      type = foo
                                                      name = Tag (nachf�hren)
                                                      as_set_Position = 60
                                                      as_set_Lamellenposition = eval:int((sh.System.Sonne.Hoehe())*90/45)
                                                      [[[[[[[[enter_sonne_ost]]]]]]]]
                                                          as_min_Brightness_ost = 20000
                                                          as_min_sun_altitude = 20
                                                          as_min_sun_azimut = 124
                                                          as_max_sun_azimut = 233
                                                      [[[[[[[[enter_sonne_sued]]]]]]]]
                                                          as_min_Brightness_sued = 20000
                                                          as_min_sun_altitude = 20
                                                          as_min_sun_azimut = 124
                                                          as_max_sun_azimut = 233
                                                      [[[[[[[[enter_sonne_west]]]]]]]]
                                                          as_min_Brightness_west = 20000
                                                          as_min_sun_altitude = 15
                                                          as_min_sun_azimut = 124
                                                          as_max_sun_azimut = 233
                                                      [[[[[[[[leave_todark]]]]]]]]
                                                          as_max_Brightness_ost = 10000
                                                          as_max_Brightness_sued = 10000
                                                          as_max_Brightness_west = 10000
                                                          as_min_delay = 1200
                                                      [[[[[[[[leave_sun_azimut]]]]]]]]
                                                          as_min_sun_azimut = 124
                                                          as_max_sun_azimut = 233
                                                          as_negate_sun_azimut = True
                                                      [[[[[[[[leave_sun_altitude]]]]]]]]
                                                          as_max_sun_altitude = 19
                                          [[[[[Auf_ab]]]]]
                                              type = bool
                                              visu = yes
                                              visu_acl = rw
                                              enforce_updates = True
                                              knx_dpt = 1
                                              knx_send = 3/0/61
                                          [[[[[Lamellenverstellung_stop]]]]]
                                              type = bool
                                              visu = yes
                                              visu_acl = rw
                                              enforce_updates = True
                                              knx_dpt = 1
                                              knx_send = 3/0/62
                                          [[[[[Position]]]]]
                                              type = num
                                              cache = True
                                              visu = yes
                                              visu_acl = rw
                                              knx_dpt = 5.001
                                              knx_send = 9/0/61
                                              knx_listen = 10/0/61
                                          [[[[[Lamellenposition]]]]]
                                              type = num
                                              cache = True
                                              visu = yes
                                              visu_acl = rw
                                              knx_dpt = 5.001
                                              knx_send = 9/0/62
                                              knx_listen = 10/0/62
                                          [[[[[Position_gueltig]]]]]
                                              type = bool
                                              cache = True
                                              visu_acl = ro
                                              knx_dpt = 1
                                              knx_listen = 10/0/63
                                              knx_init = 10/0/63
                                          [[[[[ReferenzFahren]]]]]
                                              type = bool
                                              knx_dpt = 1
                                              knx_send = 3/0/63
                                              eval = True if (sh.Eg.Kueche.Jalousie.Tuer.Position_gueltig() == 0) else False
                                              eval_trigger = Eg.Kueche.Jalousie.Tuer.Position_gueltig
                                          [[[[[Automatik_sperren]]]]]
                                              type = bool
                                              cache = True
                                              visu_acl = rw
                          Gruß Ivan

                          Kommentar


                            Danke fürs Update - das mit dem value scheint zu klappen. Bezüglich des suspend_text hat sich eigtl. nichts getan. Es bleibt bei sporadischen Fehlermeldungen. Mal klappt's, mal nicht. Die Meldung ist gleich wie oben beschrieben.

                            Mit dem neuesten Pull habe ich nun auch das Problem, dass das Plugin nun mit den alten Konfigurationen nicht mehr klar kommt. Das führt sogar dazu, dass Autoblind überhaupt nicht mehr funktioniert. Nach "Init Autoblind" bleibt das Log quasi leer. Die Logs für die einzelnen Items werden auch nicht upgedatet.

                            Es werden die ersten zwei Items in der "kritischen" conf normal gelesen, danach steht nur noch Folgendes im Log:
                            Code:
                            2016-01-04 01:22:14.452033 Initialize Item kueche.l47_occhio ==============================================
                            2016-01-04 01:22:14.454296 Init state kueche.l47_occhio.night
                            Ich hab bei besagtem Item nun mal das Autoblind deaktiviert.. dann wird ein Log eines weiteren neuen Items angelegt (allerdings nicht gleich das nächste Item, da werden einige übersprungen in der conf). Mit dem gleichen Inhalt wie oben..

                            ivande
                            Das mit dem None passt schon so, ist bei mir auch. Das Problem ist eher, dass dein suspend Item nicht auf false gesetzt ist.
                            Zuletzt geändert von Onkelandy; 04.01.2016, 02:13.

                            Kommentar


                              Zitat von ivande Beitrag anzeigen
                              kann ich im suspend-Zustand nicht mehr die Rest-Zeit anzeigen? ( Ausgeset bis %X)
                              Suche mal in der Doku bzw. in onkelandy`s Beispielen nach "insert_suspend_time""

                              Zitat von ivande Beitrag anzeigen
                              ich habe noch ein Problem mit dem Lock-Zustand. Wenn ich diesen über einen Button in der Visu aktiviere, dann wird zwar das Item Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock gesetzt, jedoch bleibt Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Lock = None. somit wird mir im stateName auch nicht der richtige Text angezeigt.. Warscheinlich übersehe ich auch hier wieder etwas,..
                              Du hast in der Konfiguration noch ein "as_lock_item" drin. Das ist der alte Lock-Mechanismus, von dem zwar nichts mehr in der Doku steht, der aber trotzdem noch funktioniert. Nimm das mal raus.

                              Grüße
                              offline

                              Kommentar


                                Hi Onkelandy
                                Zitat von Onkelandy Beitrag anzeigen
                                Danke fürs Update - das mit dem value scheint zu klappen. Bezüglich des suspend_text hat sich eigtl. nichts getan. Es bleibt bei sporadischen Fehlermeldungen. Mal klappt's, mal nicht. Die Meldung ist gleich wie oben beschrieben.
                                Bitte ändere mal eine Stelle im Coding bei dir, damit wir hier eine genauere Fehlermeldung bekommen:

                                In der Datei AutoBlindValue.py findest du in den Zeilen 185ff. den folgenden Coding-Block:
                                Code:
                                try:
                                    value = eval(self.__eval)
                                except Exception as ex:
                                    self._log_info("Problem evaluating '{0}': {1}.", AutoBlindTools.get_eval_name(self.__eval), str(ex))
                                    return None
                                Kommentiere mal bitte die Zeile "self._log_info (...)" aus und füge ein weitere Zeile ein:

                                Code:
                                try:
                                    value = eval(self.__eval)
                                except Exception as ex:
                                [B]    # self._log_info("Problem evaluating '{0}': {1}.", AutoBlindTools.get_eval_name(self.__eval), str(ex))
                                    self._log_exception(ex)[/B]
                                    return None
                                (Sofern du dich mit Python nicht auskennst: Achte darauf, dass die Einrückung genau passt, eingerückt wird mit jeweils vier Leerzeichen pro Ebene)

                                Zitat von Onkelandy Beitrag anzeigen
                                Mit dem neuesten Pull habe ich nun auch das Problem, dass das Plugin nun mit den alten Konfigurationen nicht mehr klar kommt. Das führt sogar dazu, dass Autoblind überhaupt nicht mehr funktioniert. Nach "Init Autoblind" bleibt das Log quasi leer. Die Logs für die einzelnen Items werden auch nicht upgedatet.

                                Es werden die ersten zwei Items in der "kritischen" conf normal gelesen, danach steht nur noch Folgendes im Log:
                                Code:
                                2016-01-04 01:22:14.452033 Initialize Item kueche.l47_occhio ==============================================
                                2016-01-04 01:22:14.454296 Init state kueche.l47_occhio.night
                                Ich hab bei besagtem Item nun mal das Autoblind deaktiviert.. dann wird ein Log eines weiteren neuen Items angelegt (allerdings nicht gleich das nächste Item, da werden einige übersprungen in der conf). Mit dem gleichen Inhalt wie oben..
                                Am AutoBlind-Plugin sollte das eigentlich nicht liegen, denn durch das umfangreiche Logging sollte entweder im erweiterten Log oder im Log von smarthome.py eine Meldung stehen, wenn was nicht tut. Du kannst auch smarthome.py mal im Debug-Modus starten, und schauen, ob es da eine Meldung gibt. Ich habe bei mir grade auch nochmal eine alte Konfiguration getestet. Dabei gab es zwar einen Fehler, aber der wurde ordnungsgemäß im Log angezeigt. Der Fix für den Fehler ist auf GitHub.

                                Schau mal ob die Klammeranzahl bei den Items stimmt. Ich habe da auch mal ein Problem wie wild gesucht, und es lag dann daran, dass ich an einem Punkt zwar die untergeordneten Items eingerückt hatte, aber keine weitere Klammer um den Item-Namen gesetzt hatte.

                                Grüße
                                offline

                                Kommentar

                                Lädt...
                                X