Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • Onkelandy
    antwortet
    Was genau ist der "State Modus"?
    @offline: Cool, dass du das Problem reproduzieren konntest.. freu mich schon auf den Fix

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    jetzt funktioniert es,
    was mir aufgefallen ist:
    falls smarthome gestartet wird, geht das Autoblind plugin in den state modus, egal ob eine Bedingung zutrifft, erst bei einer nochmaligen Änderungen des Zustands wechselt es in den richtigen Modus.
    z.B. wird um 3 uhr gestaretet, dann geht es in den state modus,
    4Uhr ist eine andere Funktion definiert -> dann wechselt es in diese Funktion

    Einen Kommentar schreiben:


  • offline
    antwortet
    Zitat von Bonze Beitrag anzeigen
    irgendwie bin ich wohl doch zu blöde... hab mal das Beispiel kopiert und angepasst:
    um einfach den rolladen auf zeit abzufahren(erstmal)


    [...]

    geht das überhaupt so ? oder hab ich etwas vergessen?
    Da sind einige Fehler in deiner Konfiguration. Aktiviere mal die erweiterte Protokollierung (https://github.com/i-am-offline/smar...rotokollierung) und starte smarthome.py neu. In den Logs stehen dann die Fehler, außerdem kannst du da genau sehen wie das Plugin mit deiner Konfiguration arbeitet.

    Prüfe bitte sicherheitshalber, dass du die Plugin-Version aus dem develop-Zweig aus GitHub verwendest. Auf diese Version bezieht sich die Doku im Wiki auf GitHub. Sie weicht mittlerweile erheblich von der Version im master-Zweig ab.

    Zitat von Bonze Beitrag anzeigen

    mir kommt vor, als wäre das ziemlich viel code....
    In deiner Konfiguration hast du viele Items definiert, die nicht in Bedingungen/Aktionen verwendet werden. Die kannst du rauswerfen, dann wird es weniger ...

    Bei deinen Default-Bedingungen verwendest du z. B.
    Code:
                        as_min_time = 08:00
                        as_max_time = 16:00
                        as_value_time = 19:30
                        as_negate_time = True
    Das macht so nicht wirklich Sinn. Die Prüfungen auf den Wert ("value") und auf einen Bereich ("min"/"max") schließen sich gegenseitig aus. Wenn beides angegeben ist prüft das Plugin nur den Wert, der Bereich wird ignoriert. Für die "time"-Bedingung ist eine Prüfung auf den Wert jedoch nicht wirklich sinnvoll, denn diese Bedingung ist dann nur exakt zu dem angegebenen Zeitpunkt erfüllt bzw. in deinem Fall nicht erfüllt, da du noch ein "negate" gesetzt hast. Mit dieser Bedingung wirst du IMMER in diesem Zustand landen, es sei denn, die Zustandsermittlung läuft zufälligerweise exakt um 19:30 Uhr ...

    Grüße
    offline

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy

    ich hatte in den letzten Tagen auch bei meinen Jalousien seltsame Verhaltensmuster mit dem Plugin festgestellt und habe das daher direkt bei mir untersucht. So wie es ausschaut liegt das Problem darin, dass das mehrere dem manuell-Item zugeordneten eval_trigger so kurz hintereinander ausgelöst werden, dass die vorherige Auswertung noch nicht abgeschlossen ist. Dadurch ändern sich die "changed_by" Werte, die ich zu Ermittlung des Original-Triggers verwende, während der Auswertung. Das führt zum seltsamen Verhalten der Funktion.
    Ich habe versuchsweise eine Änderung bei mir eingebaut, die verhindern soll, dass die Auswertung des manuell-Items zu schnell hintereinander einfach abbricht. Wenn das bei mir hilft, werde ich das am WE auf GitHub pushen.

    Grüße
    offline


    Einen Kommentar schreiben:


  • Bonze
    antwortet
    irgendwie bin ich wohl doch zu blöde... hab mal das Beispiel kopiert und angepasst:
    um einfach den rolladen auf zeit abzufahren(erstmal)
    autoblind.py items
    Code:
    [autoblind]
    type=foo
        [[trigger]]
            [[[rollladen]]]
                type = bool
                name = Gemeinsamer Trigger für alle Raffstores
                enforce_updates = yes
                cycle = 300 = 1
                
        [[default]]
            [[[automatik]]]
                    type = bool
                    name = Automatik
                    as_plugin = active
                    as_startup_delay = 30
                    as_item_brightness = dg.diele.helligkeit*15
                    # Item für Temperatur außen
                    as_item_temperature = Wetter.Temperatur
                    # Item für Luftdruck aussen
                    as_item_luftdruck = Wetter.Luftdruck
                    
      
                # Zustand "Nacht"
                [[[[Nacht]]]]
                    type = foo
                    name = Nacht
                    # Aktionen:
                    # - "Suspend"-Item ggf. zurücksetzen              
                    as_set_suspend = False
    
                    # Einstieg in "Nacht": Wenn
                    [[[[[enter]]]]]
                        # - es zwischen 16:00 und 08:00 Uhr ist
                        as_min_time = 08:00
                        as_max_time = 16:00
                        as_value_time = 19:30
                        as_negate_time = True
                        # - die Helligkeit höchstens 90 Lux beträgt
                        #as_max_brightness = 90
    
                # Zustand "Morgens"
                [[[[Morgens]]]]
                    type = foo
                    name = Dämmerung Morgens
                    # Aktionen:
                    # behang auf 75% fahren
                    # - "Suspend"-Item ggf. zurücksetzen              
                    as_set_suspend = False
    
                    # Einstieg in "Morgens": Wenn
                    [[[[[enter]]]]]
                        # - die Helligkeit zwischen 90 und 250 Lux beträgt
                        #as_min_brightness = 90
                       # as_max_brightness = 250
                        # - es zwischen 08:00 und 12:00 Uhr ist
                        as_min_time = 08:00
                        as_max_time = 12:00
                        as_value_time = 8:30
    items.py
    Code:
    [esszimmer]
    [[rollladen]]
    name = rollladen
    value = osten
    [[[automatik]]]
    [[[[rules]]]]
    type = bool
    name = Automatik Esszimmer
    as_plugin = active
    as_startup_delay = 30
    as_item_brightness = dg.diele.helligkeit
    as_item_pos = esszimmer.rollladen.automatik.pos
    as_item_fahren = esszimmer.rollladen.automatik.fahren
    as_laststate_item_id = esszimmer.rollladen.automatik.state_id
    as_laststate_item_name = esszimmer.rollladen.automatik.state_name
    as_repeat_actions = true
    as_plugin = active
    as_item_manuell = esszimmer.rollladen.automatik.manuell
    as_item_suspend = esszimmer.rollladen.automatik.suspend
    # Erste Zustandsermittlung nach 30 Sekunden
    as_startup_delay = 30
    # Über diese Items soll die Statusermittlung ausgelöst werden
    eval_trigger = autoblind.trigger.rollladen | esszimmer.rollladen.automatik.manuell | esszimmer.rollladen.automatik.lock | esszimmer.rollladen.automatik.suspend
    # In dieses Item soll die Id des aktuellen Zustands geschrieben werden
    as_laststate_item_id = esszimmer.rollladen.automatik.state_id
    # In dieses Item soll der Name des aktuellen Zustands geschrieben werden
    as_laststate_item_name = esszimmer.rollladen.automatik.state_name
    [[[[[lock]]]]]
    type = bool
    name = Sperr-Item
    visu_acl = rw
    cache = on
    as_use = autoblind.default.automatik.Lock
    [[[[[suspend]]]]]
    type = bool
    name = Suspend-Item
    visu_acl = rw
    as_use = autoblind.default.automatik.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!
    [[[[[state_id]]]]]
    type = str
    name = Id des aktuellen Zustands
    visu_acl = r
    cache = on
    [[[[[state_name]]]]]
    type = str
    name = Name des aktuellen Zustands
    visu_acl = r
    cache = on
    [[[[[manuell]]]]]
    type = bool
    name = Manuelle Bedienung
    # Änderungen dieser Items sollen als manuelle Bedienung gewertet werden
    eval_trigger = esszimmer.rollladen.fahren | esszimmer.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:y.y.y | Init:*
    [[[[[Nacht]]]]]
    # Zustand "Nacht": Nur die Vorgabeeinstellungen übernehmen
    as_use = autoblind.default.automatik.Nacht
    as_item_fahren = value:1
    
    [[[[[Morgens]]]]]
    # Zustand "Morgens": Nur die Vorgabeeinstellungen übernehmen
    as_use = autoblind.default.automatik.Morgens
    as_item_fahren = value:0
    
    [[[fahren]]]
    enforce_updates = On
    type = bool
    visu_acl = rw
    knx_dpt = 1
    knx_send = 2/1/3
    [[[stop]]]
    enforce_updates = On
    type = bool
    visu_acl = rw
    knx_dpt = 1
    knx_send = 2/1/4
    [[[status]]]
    enforce_updates = On
    type = num
    visu = yes
    knx_dpt = 5
    sqlite = true
    visu_acl = rw
    knx_cache = 2/1/5
    knx_listen = 2/1/5
    knx_send = 2/1/5
    geht das überhaupt so ? oder hab ich etwas vergessen?
    mir kommt vor, als wäre das ziemlich viel code....

    Einen Kommentar schreiben:


  • firefox
    antwortet
    Hallo Kollegen,
    drei Monate keine Zeit für Autoblind und ich brauch fast einen ganzen Tag um wieder auf dem Laufenden zu sein ... An der Produktivität könnte sich so manches Unternehmen eine Scheibe abschneiden ... also mal ein ganz dickes und .

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Viel Erfolg damit. Bei konkreten fragen kann dir hier sicherlich geholfen werden. Gruß Waldemar

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    Sry, stand aufem Schlauch nach nochmaligem lesen der Doku hab ichs verstanden
    man kann jeweils die Items und den Wert auf welchen diese gesetzt werden sollen vorgeben.
    Dann kann die Migration von Logiken auf das Plugin ja beginnen...

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    ich verstehe Deine Frage nicht. Bei Autoblind bestimmst Du selber, welche Aktionen bei welchem Zustand ausgelöst werden. Natürlich kannst Du dann auch je nach Zustand eine Deiner beiden Festpositionen wählen.

    Am besten Du beschreibst Dein konkretes Problem, mit conf-File, dann können wir wahrscheinlich helfen.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    gibt es eigentlich eine Beschreibung/Ergänzung für den Fall, das man Rolladen fahren möchte,
    die Rolladenaktoren jedoch nur zusätzlich 2 Festpositionen anfahren können ?

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy

    ich hatte mir dein Log mal angeschaut, habe aber bisher leider keine Zeit gehabt, in die Richtung mal ein paar Sachen auszuprobieren. Die Zeit werde ich vermutlich erst wieder nächste Woche finden ...

    Grüße
    offline

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Kann ich hier noch irgendwas Sinnvolles testen? Dachte mir, dass ich das gleiche Problem wohl auch mit Lichtern haben müsste.. Dass beim ersten Ausschalten nach Init auch nichts passiert.. Werde ich noch checken. Aber kann sonst niemand obiges Phänomen reproduzieren?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Code:
    2016-01-21 09:37:23,676 DEBUG    Main         10.0.0.88:51475 sent '{"cmd":"item","id":"screens.westen_s3.kz","val":"0"}' -- __init__.py:json_parse:272
    2016-01-21 09:37:23,681 DEBUG    Main         Triggering screens.westen_s3.automatik.manuell - by: Visu source: 10.0.0.88:51475 dest: None value: {'source': 'screens.westen_s3.kz', 'valu -- scheduler.py:trigger:164
    2016-01-21 09:37:23,684 DEBUG    screens.westen_s3.automatik.manuell running manual_item_update_eval for item 'screens.westen_s3.automatik.manuell' source 'Eval' caller 'screens.westen_s3.kz' -- AutoBlindFunctions.py:manual_item_update_eval:41
    2016-01-21 09:37:23,687 DEBUG    screens.westen_s3.automatik.manuell get_original_caller(Eval, screens.westen_s3.kz): changed by Init, None -- AutoBlindFunctions.py:get_original_caller:126
    2016-01-21 09:37:23,688 DEBUG    screens.westen_s3.automatik.manuell get_original_caller: returning Init, None -- AutoBlindFunctions.py:get_original_caller:129
    2016-01-21 09:37:23,690 DEBUG    screens.westen_s3.automatik.manuell original trigger by caller 'Init' source 'None' -- AutoBlindFunctions.py:manual_item_update_eval:48
    2016-01-21 09:37:23,692 DEBUG    Main         knx: 0.0.0 set 4/1/5 to False -- __init__.py:parse_telegram:198
    2016-01-21 09:37:23,693 DEBUG    screens.westen_s3.automatik.manuell Current value of item screens.westen_s3.automatik.manuell is True -- AutoBlindFunctions.py:manual_item_update_eval:50
    2016-01-21 09:37:23,697 DEBUG    screens.westen_s3.automatik.manuell checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26'] -- AutoBlindFunctions.py:manual_item_update_eval:64
    2016-01-21 09:37:23,700 DEBUG    Main         Triggering screens.westen_s3.automatik.manuell - by: KNX source: 0.0.0 dest: 4/1/5 value: {'source': 'screens.westen_s3.kz', 'valu -- scheduler.py:trigger:164
    2016-01-21 09:37:23,702 DEBUG    screens.westen_s3.automatik.manuell Init:*: matching. Writing value True -- AutoBlindFunctions.py:manual_item_update_eval:71
    2016-01-21 09:37:23,704 DEBUG    screens.westen_s3.automatik.manuell running manual_item_update_eval for item 'screens.westen_s3.automatik.manuell' source 'Eval' caller 'screens.westen_s3.kz' -- AutoBlindFunctions.py:manual_item_update_eval:41
    2016-01-21 09:37:23,709 DEBUG    screens.westen_s3.automatik.manuell get_original_caller(Eval, screens.westen_s3.kz): changed by Init, None -- AutoBlindFunctions.py:get_original_caller:126
    2016-01-21 09:37:23,711 DEBUG    screens.westen_s3.automatik.manuell get_original_caller: returning Init, None -- AutoBlindFunctions.py:get_original_caller:129
    2016-01-21 09:37:23,713 DEBUG    screens.westen_s3.automatik.manuell original trigger by caller 'Init' source 'None' -- AutoBlindFunctions.py:manual_item_update_eval:48
    2016-01-21 09:37:23,714 DEBUG    screens.westen_s3.automatik.manuell Current value of item screens.westen_s3.automatik.manuell is True -- AutoBlindFunctions.py:manual_item_update_eval:50
    2016-01-21 09:37:23,716 DEBUG    screens.westen_s3.automatik.manuell checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26'] -- AutoBlindFunctions.py:manual_item_update_eval:64
    2016-01-21 09:37:23,718 DEBUG    screens.westen_s3.automatik.manuell Init:*: matching. Writing value True -- AutoBlindFunctions.py:manual_item_update_eval:71
    2016-01-21 09:37:34,592 DEBUG    Main         knx: 1.1.5 set 4/1/17 to 43.5 -- __init__.py:parse_telegram:198
    2016-01-21 09:37:34,595 DEBUG    Main         Item screens.westen_s3.hoehe = 43.5 via KNX 1.1.5 4/1/17 -- item.py:__update:373
    2016-01-21 09:37:34,838 DEBUG    Main         Triggering screens.westen_s3.automatik.manuell - by: KNX source: 1.1.5 dest: 4/1/17 value: {'source': 'screens.westen_s3.hoehe', 'v -- scheduler.py:trigger:164
    2016-01-21 09:37:34,841 DEBUG    screens.westen_s3.automatik.manuell running manual_item_update_eval for item 'screens.westen_s3.automatik.manuell' source 'Eval' caller 'screens.westen_s3.hoehe' -- AutoBlindFunctions.py:manual_item_update_eval:41
    2016-01-21 09:37:34,843 DEBUG    screens.westen_s3.automatik.manuell get_original_caller(Eval, screens.westen_s3.hoehe): changed by KNX, 1.1.5 -- AutoBlindFunctions.py:get_original_caller:126
    2016-01-21 09:37:34,845 DEBUG    screens.westen_s3.automatik.manuell get_original_caller: returning KNX, 1.1.5 -- AutoBlindFunctions.py:get_original_caller:129
    2016-01-21 09:37:34,847 DEBUG    screens.westen_s3.automatik.manuell original trigger by caller 'KNX' source '1.1.5' -- AutoBlindFunctions.py:manual_item_update_eval:48
    2016-01-21 09:37:34,849 DEBUG    screens.westen_s3.automatik.manuell Current value of item screens.westen_s3.automatik.manuell is True -- AutoBlindFunctions.py:manual_item_update_eval:50
    2016-01-21 09:37:34,851 DEBUG    screens.westen_s3.automatik.manuell checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26'] -- AutoBlindFunctions.py:manual_item_update_eval:64
    2016-01-21 09:37:34,852 DEBUG    screens.westen_s3.automatik.manuell Init:*: not matching -- AutoBlindFunctions.py:manual_item_update_eval:73
    2016-01-21 09:37:34,854 DEBUG    screens.westen_s3.automatik.manuell SQLite:*: not matching -- AutoBlindFunctions.py:manual_item_update_eval:73
    2016-01-21 09:37:34,855 DEBUG    screens.westen_s3.automatik.manuell KNX:1.1.5: matching. Writing value True -- AutoBlindFunctions.py:manual_item_update_eval:71
    0.0.0 ist vermutlich IP Router, wobei der eigtl. 1.0.0 hat, aber okay.

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy
    Zitat von Onkelandy Beitrag anzeigen

    Danke für das Update. Hier ist mal das Log nach dem vorhin beschriebenen Prozedere. Nach dem Init fahre ich die Jalousie nach oben und es passiert nix. Laut Log meint Autoblind/Smarthome, dass die Aktion von Init getriggert wurde. Wohl, weil das Manuell-Item eben nicht evaluiert wird. Das erklärt dann, dass der Suspend Mode nicht aktiviert wird.
    (..)
    Habe das nun mit anderen Jalousien getestet. Wenn ich rauf fahre, kein Suspend. Wenn ich runter fahre, funktioniert es. Und dann auch immer. Aber wenn ich nie manuell runter fahre, komm ich auch nie in den Suspend Mode.
    Das Log zeigt, dass das manuell-Item zweimal angetriggert wurde. Einmal, weil das Item screens.sueden_s2.kz über die VIsu geschrieben wurde und ein weiteres mal, weil das Item screens.sueden_s2.kz über die PA 0.0.0 (das KNX IP Interface?) geschrieben wurde.
    In beiden Fällen schlägt jedoch die Ermittlung des ursprünglichen Änderers des Manuell-Items fehl. Es wird beide Male "Init" als eigentlicher Änderer ermittelt und das ist in den Ausschlusswerten enthalten. Ich habe daher gerade einen neuen Commit auf GitHub gepusht, der auch die Ermittlung des eigentlichen Änderers detailliert im sh.py Debug Log protokolliert. Bitte reproduziere das Problem damit nochmal und poste das log.

    Grüße
    offline

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Hallo @Onkelandy

    vielen danke für den Tipp.

    Code:
    as_value_ReferenPruefen = False
    as_delay_ReferenPruefen = 60

    Einen Kommentar schreiben:

Lädt...
X