Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • offline
    antwortet
    Hi jonah64
    Zitat von jonah64 Beitrag anzeigen
    offline:

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

    Grüße
    offline

    Einen Kommentar schreiben:


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

    Grüße
    offline

    Einen Kommentar schreiben:


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

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

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    jonah64

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

    Einen Kommentar schreiben:


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

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

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

    Einen Kommentar schreiben:


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

    Code:
    as_suspend_time = <Sekunden> angeben
    Irgendwie bin ich noch zu doof dazu. Klappt bei mir noch nicht. Bei welchem Item genau muß es stehen? Kannst Du ein Beispiel geben bzw. könntest Du as_suspend_time vielleicht noch in das vollständige Beispiel einarbeiten?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    offline

    By the way: Super wär's wenn das Plugin ein as_manual_invert = false auch schlucken würd und dann eben nicht automatisch immer den Wert ändert. Das könnte ich gerade für eine Situation gut brauchen - und aktuell wird wohl nur gecheckt, ob das Attribut vorhanden ist, aber nicht welchen Wert es hat. Gerade in Zusammenhang mit as_manual_exclude / include wäre das hilfreich.

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

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Vielleicht wärs noch möglich, auf die neue logging-Option von SmarthomeNG einzugehen... das wäre cool:
    self.logger = logging.getLogger(__name__) https://knx-user-forum.de/forum/supp...konfigurierbar
    Zuletzt geändert von bmx; 02.08.2016, 06:39.

    Einen Kommentar schreiben:


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

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

    Einen Kommentar schreiben:


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

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

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy

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

    Grüße
    offline

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hallo zusammen,

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

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

    Grüße offline

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

    Einen Kommentar schreiben:


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

    Suspend time is 3600

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


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

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    mit suspend_time = 3600

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

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

    Einen Kommentar schreiben:

Lädt...
X