Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • Onkelandy
    antwortet
    ivande Du musst noch die richtige Hierarchieebene angeben. Dein State.suspend ist ja eine Ebene höher, also müsste deine Zeile wohl so lauten:
    Code:
     
     as_set_suspend_end = eval: autoblind_eval.insert_suspend_time('[COLOR=#FF0000][B]..[/B][/COLOR]State.suspend', suspend_text='Ausgeset bis %X')

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    offline dein Support ist der Wahnsinn! Danke, danke, danke. Ich hab den Code mal entsprechend abgeändert und jetzt ist auch klar, wo das Problem liegt.
    Code:
    2016-01-04 10:32:20,185 ERROR    steckdosen.eg.bad_heizung.automatik.rules-Startup Delay Method steckdosen.eg.bad_heizung.automatik.rules-Startup Delay exception: Can't convert 'TypeError' object to str implicitly -- scheduler.py:_task:362
    Traceback (most recent call last):
      File "/usr/smarthome/plugins/autoblind/AutoBlindEval.py", line 136, in insert_suspend_time
        raise ValueError("Eval-Method 'insert_suspend_time': Suspend should alredy be finished!")
    ValueError: Eval-Method 'insert_suspend_time': Suspend should alredy be finished!
    Das Problem tritt dann auf, wenn ein Zustand, der mit dem Suspend nichts zu tun hat, zwei Mal hintereinander aufgerufen wird (mit repeat_actions). Die Fehlermeldung macht da ja auch Sinn..

    Was ich erzielen wollte: Die Suspend_time sollte in ein Item geschrieben werden, sobald Suspend aktiv wird. Sobald ein anderer Zustand aktiv wird, soll das Item geleert werden. Ich löse das derzeit mit:

    as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('..suspend ', suspend_text='')

    in allen anderen Zuständen.

    Habe das Problem jetzt aber auch unabhängig von oben beschriebenem Setting beobachtet - es scheint fast ein bisschen zufällig zu sein, ob der Fehler kommt oder nicht. Kann es sein, dass die Funktion manchmal aufgerufen wird, bevor das suspend-Item geändert wird?
    Code:
                    as_set_suspend = False
                    as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='')
    Sollte man hier manuell ein Delay einbauen oder kannst du dir das nochmals ansehen? Danke!
    Zuletzt geändert von Onkelandy; 04.01.2016, 13:58.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Hallo @offline

    bingo - jetzt läufts :-)

    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.
    Die Funktion mit insert_suspend_time peile ich noch nicht ganz.. So wie ich die Sache verstehe müsste die Restzeit jetzt ins Item State.suspend_end geschrieben werden. Dies bleibt jedoch leer..

    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.AutoBlind.Rules.Suspend
    Eg.Kueche.Jalousie.Tuer.AutoBlind.State.stateName = Automatik ausgesetzt
    Eg.Kueche.Jalousie.Tuer.AutoBlind.State.lock = False
    Eg.Kueche.Jalousie.Tuer.AutoBlind.State.suspend = True
    Eg.Kueche.Jalousie.Tuer.AutoBlind.State.manuell = True
    Eg.Kueche.Jalousie.Tuer.AutoBlind.State.suspend_en d =
    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.Referenz = None
    Eg.Kueche.Jalousie.Tuer.AutoBlind.Rules.Referenz.e nter
    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 = 41.2
    Eg.Kueche.Jalousie.Tuer.Lamellenposition = 44.7
    Eg.Kueche.Jalousie.Tuer.Position_gueltig = True
    Eg.Kueche.Jalousie.Tuer.ReferenzFahren = False
    Eg.Kueche.Jalousie.Tuer.Automatik_sperren = False
    Code:
    [[[[[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
                            [[[[[[[suspend_end]]]]]]]
                                #Ermitteln der Rest-Zeit
                                type = str
                                visu_acl = ro
                        [[[[[[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_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
                            as_item_PositionGueltig = Eg.Kueche.Jalousie.Tuer.Position_gueltig
                            as_item_ReferenzFahren = Eg.Kueche.Jalousie.Tuer.ReferenzFahren
                            as_item_suspend_end = Eg.Kueche.Jalousie.Tuer.AutoBlind.State.suspend_end
                            [[[[[[[Lock]]]]]]]
                                #$order = 1
                                type = foo
                                name = Automatik gesperrt
                                as_set_suspend = False
                                [[[[[[[[enter]]]]]]]]
                                    as_value_lock = True
                            [[[[[[[Suspend]]]]]]]
                                #$order = 2
                                type = foo
                                name = Automatik ausgesetzt
                                as_set_suspend = True
                                as_set_suspend_end = eval: autoblind_eval.insert_suspend_time('State.suspend', suspend_text='Ausgeset bis %X')
                                [[[[[[[[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

    kann die Rest-Zeit auch ins "as_laststate_item_name" eingefügt werden?


    Gruß Ivan
    Zuletzt geändert von ivande; 04.01.2016, 10:46. Grund: etwas vergessen

    Einen Kommentar schreiben:


  • offline
    antwortet
    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

    Einen Kommentar schreiben:


  • offline
    antwortet
    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

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    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

    Einen Kommentar schreiben:


  • offline
    antwortet
    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 ...

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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.

    Einen Kommentar schreiben:


  • offline
    antwortet
    Habe gerade die Doku sowie die letzten Commits auf GitHub gepusht.

    Grüße
    offline

    Einen Kommentar schreiben:


  • offline
    antwortet
    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

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Hallo 'Onkelandy,

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

    Gruß Ivan

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X