Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • arnix
    antwortet
    Hallo zusammen,

    ich stehe gerade auf dem Schlauch. Ich will meine Autoblind-Rollladen gloabl mit einem Taster sperren. Der Taster ist mit der GAD 14/1/6 verknüpft. Weiterhin habe ich folgendes Item erstellt

    Code:
    [Global]
         [[Rollladen_manuell]]
            type = bool
            knx_dpt = 1
            value = false
            visu_acl = rw
            knx_send = 14/1/6
            knx_cache = 14/1/6
    Nachdem ich es irgendwie nicht geschafft habe, die GAD 14/1/6 auch in die lock-Items meiner Autoblinds zu integrieren, werte ich in den lock-Items nun per Eval das oben genannte Item aus. Das sieht dann so aus:

    Code:
    [Autoblind_Rollladen]
        [[Erdgeschoss]]
            [[[Flur]]]
                [[[[Nebenausgang]]]]
                    [[[[[lock]]]]]
                        type = bool
                        name = Sperr-Item
                        eval = sh.Global.Rollladen_manuell()
                        eval_trigger = Global.Rollladen_manuell
                    [[[[[rules]]]]]
                        type = bool
                        name = Automatik Rollladen Flur Nebenausgang
                        as_plugin = active
                        eval_trigger = Autoblind_Trigger.Trigger_1 | Autoblind_Rollladen.Erdgeschoss.Flur.Nebenausgang.manuell | Autoblind_Rollladen.Erdgeschoss.Flur.Nebenausgang.lock | Autoblind_Rollladen.Erdgeschoss.Flur.Nebenausgang.suspend
                        as_laststate_item_id = ..state_id
                        as_laststate_item_name = ..state_name
                        as_item_height = Rollladen.Erdgeschoss.Flur.Nebenausgang.Position
                        [[[[[[Lock]]]]]]
                            as_use = Autoblind_allgemein.Vorgaben.Lock
    Der allgemeine Teil der Autoblind-Config sieht gemäß Anleitung folgendermaßen aus

    Code:
    [Autoblind_allgemein]
        [[Vorgaben]]
            as_item_temperature = thz.outsideTemp
            #as_item_aufstehenEG = Praesenz.FlurEG.erste_Erfassung_morgens
            as_item_anwesend = Hausmodi.Anwesenheit
            as_item_automatik_aus = Global.Rollladen_manuell
            as_item_party = Hausmodi.Party
            as_item_urlaub = Hausmodi.Urlaub
            as_item_Daemmerung1 = Sonnenstand.normaleDaemmerung
            as_item_Daemmerung2 = Sonnenstand.starkeDaemmerung
            as_item_Daemmerung3 = Sonnenstand.Finsternis
            as_item_Helligkeit_morgens_wolkenlos = Sonnenstand.morgens_wolkenlos
            as_item_Helligkeit_gr43k = Sonnenstand.Helligkeit.gt43k
            as_item_Helligkeit_kl1k = Sonnenstand.Helligkeit.sm1k
            as_item_nachfuehren = Global.Rollladen_Hitzeschutz
            #gemeint ist das Item "manuell" im jeweiligen Objekt-Item
            as_item_manuell = ..manuell
            #gemeint ist das Item "lock" im jeweiligen Objekt-Item
            as_item_lock = ..lock
            #gemeint ist das Item "suspend" im jeweiligen Objekt-Item
            as_item_suspend = ..suspend
    
            [[[Lock]]]                   
                type = foo
                name = Automatik ausgeschaltet
                #Aktionen:
                #Suspend-Item zurücksetzen
                as_set_suspend = False
                #sonst nichts tun
                [[[[enter]]]]
                    #Einstieg in Lock, wenn das Lock-Item gesetzt war
                    as_value_lock = True
    Auch wenn ich nicht so hundertprozentig verstehe, wie die Zusammenhänge zwischen allgemeinem Teil und den konkreten Items sind, funktioniert alles.

    Jetzt aber mein Problem: Ich will zusätzlich über Logiken einzelne lock-Items auf true setzen können. Das bekomme ich aber nicht hin. In einer Logik habe ich z.B.
    Code:
    sh.Autoblind_Rollladen.Dachgeschoss.Badezimmer.alle.lock(True)
    eingebaut. Das funktioniert nicht, das Item bleibt auf False.

    Daher meine Frage: Wie kann ich das Lock-Item sinnvoll umsetzten, so dass es sowohl auf eine Gruppenadresse reagiert, als auch per Logik oder Visu gesetzt werden kann?

    Vielen Dank vorab, Grüße

    Arne

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi ivande ich mach das über das Textwidget: https://github.com/herrmannj/smartvi...ster/textinput
    Ist nicht übermäßig schön, aber eigentlich recht schnell, da man halt einfach die Uhrzeit direkt eintippt.Type war dann glaub ich str und Eingabeformat HH:MM
    Bin aber auf die Schnelle nicht 100% sicher und kann auch nicht nachgucken.

    UZSU wäre definitiv eine Alternative

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Guten Morgen an alle autoblind-Experten :-),

    ich öffne (bzw. autoblind erledigt dies ganz wunderbar für mich) meine Raffstoren im Schlafzimmer frühestens um 08:00Uhr.

    Code:
    [[[enter]]]
        as_min_time = 08:00
        as_min_Daemmerung = 20
    ich hätte diese Uhrzeit gerne (über die Visu) einstellbar:
    Problem 1:
    Welchen Datentype muss ich für das Item Zeit verwenden?

    Code:
    as_min_time = item: ...Parameter.Morgendaemmerung.Uhrzeit
    ...
    
    ...
    [[[[[Parameter]]]]]
        [[[[[[Morgendaemmerung]]]]]]
            [[[[[[[Uhrzeit]]]]]]]
                type = datetime ??
    Problem 2: (Smartvisu-Problem)
    Wie kann ich dieses Item "Uhrzeit" Dastellen und Ändern?

    Alternative:
    ich bastel was mit UZSU.. da hätt ich Wochenprogramm usw auch noch..

    Gruß Ivan

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Ja, das ist mir jetzt aber peinlich..
    Da ich mit dem suspend schon länger "kämpfe", habe ich das startup_delay schon länger her, bei allen Items versuchsweise eingebaut, und nicht mehr daran gedach..

    Das Problem bei Start von shNG ist damit natürlich "behoben"- Danke

    Gruß Ivan

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi ivan

    schau mal bitte, ob die Änderung des startup_delay im Log sichtbar ist, denn im Log, dass du mir geschickt hast, ist der Wert noch auf 10 Sekunden. Ggf. hast du auch beim Item selbst nochmal eine Einstellung. Die default-Einstellung wird nur verwendet, wenn beim Item nichts definiert ist.

    Code:
    2016-08-31 08:45:48.123253 Configuration of item Dg Eltern ================================================
    2016-08-31 08:45:48.123302 Startup Delay: 10
    Grüße
    offline

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Hallo Onkelandy
    leider läuft das Plugin noch nicht fehlerfrei, und zeitlich bedingt ist das Projekt derzeit in der Warteschleife. Deswegen macht es keinen Sinn wenn ich es zur Verfügung stelle.. (außer jemand hat Lust und Zeit sich ins Projekt zu stürzen)

    Von den Einstellungen her, lehnt es sich ein ziemlich an das autoblind-Plugin.


    Code:
    [Dg]
        [[Eltern]]
            [[[ClickControl]]]
                [[[[Rules]]]]
                    cc_plugin = active
                    type = bool
                    eval_trigger = Dg.Eltern.ClickControl.Keys.S1 | Dg.Eltern.ClickControl.Keys.S2 | Dg.Eltern.ClickControl.Keys.S3 | Dg.Eltern.ClickControl.Keys.S4
                    eval = not sh.Dg.Eltern.ClickControl.Rules()
                    cc_item_key_S1 = Dg.Eltern.ClickControl.Keys.S1
                    cc_item_key_S2 = Dg.Eltern.ClickControl.Keys.S2
                    cc_item_key_S3 = Dg.Eltern.ClickControl.Keys.S3
                    cc_item_key_S4 = Dg.Eltern.ClickControl.Keys.S4
                    cc_item_szene = Dg.Eltern.ClickControl.State.Szene
                    # bei kurzen Tastendruck (min 5ms) auf Taste S1 erhöhe jeweils Szene bis max 5, nach 5 dann wieder 0
                    [[[[[Zaehler_Szene]]]]]
                        cc_count_szene = 5
                        type = num
                        [[[[[[enter]]]]]]
                            cc_pressed_time = 5
                            cc_key = S1
                    # bei langem Tastendruck (min 1000ms) auf Taste S1 setze Szene auf 0 
                    [[[[[Szene_Aus]]]]]
                        type = bool
                        cc_set_szene = 0
                        [[[[[[enter]]]]]]
                            cc_pressed_time = 1000
                            cc_key = S1
                    # bei langem Tastendruck (min 1000ms) auf Taste S1 und S2 gleichzeitig, setze Szene auf 6
                    [[[[[Szene_Nacht]]]]]
                        type = bool
                        cc_set_szene = 6
                        [[[[[[enter]]]]]]
                            cc_pressed_time = 1000
                            cc_key = S1 & S2
                [[[[State]]]]
                    [[[[[Szene]]]]]
                        type = nun
                        enforce_updates = True
                        knx_dpt = 5.001
                        knx_send = 7/2/111
                        cache = True
                [[[[Keys]]]]
                    [[[[[S1]]]]]
                        type = bool
                        knx_dpt = 5
                        knx_listen = 6/2/111
                    [[[[[S2]]]]]
                        type = bool
                        knx_dpt = 5
                        knx_listen = 6/2/112
                    [[[[[S3]]]]]
                        type = bool
                        knx_dpt = 5
                        knx_listen = 6/2/113
                    [[[[[S4]]]]]
                        type = bool
                        knx_dpt = 5
                        knx_listen = 6/2/114


    Gruß Ivan

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Hallo offline,

    ich hatte startup_delay_default bereits auf 60.

    ich habe gemessen, bis Smartvisu nach dem Start von shNG eine Verbindung herstellt, dauert es ca. 45sec. Bereits nach diesen 45sec gehen die Raffstoren in den suspend, obwohl ich nun startup_delay_default = 600 eingestellt haben. Scheint also ein Problem mit startup_delay (bei mir) zu sein. Auch wenn ich im Debug-Modus starte, ist autoblind aktiv bevor die 10 Minuten um sind.. Allerdings gehen dort die Raffstoren, wie gesagt, nicht in den suspend

    plugin.conf
    PHP-Code:
    [autoblind]
        
    class_name AutoBlind
        class_path 
    plugins.autoblind
        startup_delay_default 
    600 #in Sekunden
        #suspend_time_default = 3600
        
    log_level 2
        log_directory 
    = var/log/AutoBlind/
        
    log_maxage 
    Gruß Ivan
    Zuletzt geändert von ivande; 03.09.2016, 12:53.

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi ivande

    ich glaube ich habe dein Problem gefunden. Die Initialisierung von smarthome.py dauert bei dir scheinbar etwas länger. Daher reicht das per Default vorgegebenen Startup-Delay nicht aus. Nach Ablauf des Startup-Delays laufen immer noch Item-Initialisierungen. Erhöhe mal den Wert von
    Code:
    startup_delay_default
    in der Plugin-Konfiguration. Standardwert sind hier 10 Sekunden, gehe ruhig testweise mal auf 60 Sekunden oder mehr.

    Grüße
    offline

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    as_manual_logitem passt genauso und funzt, wenn du das Attribut in das entsprechende manuell item in der item.conf schreibst.

    Kann man man sich das clickcontrol mal ansehen? Klingt cool

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Guten Morgen auch,

    ich hab ClickControl deaktiviert (da bin ich erst beim Testen - sollte so eine Taster Plugin werden, welches auf einfach, Doppelklick, lange und kurze Betätigung reagiert, und auch erkennt wenn mehrere Tasten gleichzeitig gedrückt sind..)

    das erweiterte Logging habe ich aktiviert (glaub ich), jedoch wird beim Start keine weitere log-Datei erzeugt? Ich habe Dir sämtliche erzeugten log-Files vom AutoBlind-Log Ordner wieder in den goolgedrive ordner kopiert..

    muss das attribut as_manual_logitem = ... heissen obwohl das item in der default.conf mit "as_item_manuell = ..manuell" definiet ist? (wie in Deinem Beispiel)

    PHP-Code:
    as_manual_logitem Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell 
    Plugin habe ich die develop-Version

    Gruß Ivan

    Einen Kommentar schreiben:


  • offline
    antwortet
    Guten Morgen Ivan,

    danke für die Log- und Conf Files. Kannst du mir noch die Logs vom Erweiterten Logging des AutoBlind Plugins schicken? Relevant wären die vom Objekt-Item sowie von deinen Manuell-Items.

    In deinem Main-Log ist mir aufgefallen, dass es zwei harte Abbrüche im ClickControl Plugin gibt. Kannst du das ggf. mal testweise deaktivieren? Es ist nicht auszuschließen, dass durch die harten Abbrüche andere Dinge nicht so ausgeführt werden, wie sie sollten ...

    Grüße
    offline

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hallo Ivan,

    ich habe nochmal durch's Coding geschaut, aber keine Erklärung für das Verhalten gefunden. Kannst du mal bitte wie in #549 beschrieben, das Logging für die Verarbeitung des Manuell-Items aktivieren und mit die Logausschnitte vom Manuell-Item und vom AutoBlind-Item, wie sie nach dem Restart von Smarthome.py bei dir geschrieben werden, zuschicken?

    Grüße
    offline

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Hallo offline,



    Code:
    # determine original caller/source
        # elog: instance of logging class
        # caller: caller
        # source: source
        def get_original_caller(self, elog, caller, source):
            original_caller = caller
            original_source = source
            while original_caller == "Eval":
                original_item = self.__sh.return_item(original_source)
                if original_item is None:
                    elog.debug("get_original_caller({0}, {1}): original item not found", original_caller, original_source)
                    break
                original_changed_by = original_item.changed_by()
                if ":" not in original_changed_by:
                    text = "get_original_caller({0}, {1}): changed by {2} -> separator missing"
                    elog.debug(text, original_caller, original_source, original_changed_by)
                    break
                if original_item.age() > 2:
                    elog.debug("get_original_caller({0}, {1}): original item age greater 2 seconds:{3}", original_caller, original_source, original_item.age())
                    break          
                oc = original_caller
                os = original_source
                original_caller, __, original_source = original_changed_by.partition(":")
                elog.debug("get_original_caller({0}, {1}): changed by {2}, {3}", oc, os, original_caller, original_source)
    
            elog.debug("get_original_caller: returning {0}, {1}", original_caller, original_source)
            return original_caller, original_source
    Reaktion ist leider die selbe geblieben.. beim Starten von shNG im Nicht-Debug-Modus gehen alle Raffstoren in den suspend..

    Gruß Ivan

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi ivande

    Ich habe die Vermutung, dass die Ermittlung des tatsächlichen Auslösers beim Init durcheinander kommt und ggf. gegen alte Werte prüft.

    Das "durchhangeln" durch die evals zum eigentlichen Auslöser passiert in AutoBlindFunctions.py in der Methode get_original_caller ab ca. Zeile 148.
    Baue dort nach den vorhandenen zwei If-Blöcken mal einen dritten ein. Prüfe da dass original_item.age nicht größer als ein paar Sekunden ist. Wenn doch, steige analog zu den beiden anderen Bedingungen aus der Schleife aus.

    Grüße
    offline

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Guten Morgen,

    Python dürfte so weit kein Problem sein, wenn ich nicht selber draufkommen muss was, wo einzubauen ist :-)
    Testen kann ich gerne.

    Gruß Ivan

    Einen Kommentar schreiben:

Lädt...
X