Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    Hi offline,

    danke für die Antworten. Irgendwas mache ich beim Suchen falsch. Wenn ich auf der Wiki-Seite bin, sehe ich nirgends den von dir zitierten Artikel, auch nicht auf den Unterseiten. Ich bin mir sicher, er ist da, kann ihn auch direkt mit deinem Link aufrufen, aber wie hätte ich ihn selbstständig finden können? Jedenfalls ist mein Problem bezüglich der gleichzeitigen Steuerung damit gelöst.

    Zu 2) Deine Lösung mit der extra Bedingung in Zusammenhang mit der Position ist sehr gut, so werde ich das versuchen.

    Vielen Dank, Grüße

    Arne

    Kommentar


      Noch so eine Kleinigkeit ....

      Alle meine Präsenzmelder Items heißen "XXX.anwesend". In den Smarthome Logiken kann ich mit "*.anwesend" arbeiten. Das geht nicht zufällig auch mit dem Plugin oder?

      Kommentar


        Habe gestern mal testweise einen meiner Stores versucht zu automatisieren.

        Funktioniert auch "fast" wie gewünscht, nur das Plugin "suspended" sich selbst.

        Als as_suspen_watch habe ich .updown, .stepstop, .height und .lamella gesetzt, da ich auch manuell direkt Positionen bzw. Lamellenstellungen anfahren möchte. Leider setzt er dadurch die Automatik auf suspend...

        Wie habt ihr das gelöst?

        Hier noch die Log-Datei:
        Code:
        2015-10-09 05:42:15.377519 Update state of item Raffstore Wohnen Couch ====================================
        2015-10-09 05:42:15.377623 Update triggered by Eval (source=autoblind.trigger dest=None)
        2015-10-09 05:42:15.377787 Last state: EG.wohnen.raffstore.couch.night ('Nacht')
        2015-10-09 05:42:15.377829 Check if state 'EG.wohnen.raffstore.couch.night' ('Nacht') can be left:
        2015-10-09 05:42:15.377862     No condition sets defined -> matching
        2015-10-09 05:42:15.377889 State can be left
        2015-10-09 05:42:15.377916 Check if state 'EG.wohnen.raffstore.couch.night' ('Nacht') can be entered:
        2015-10-09 05:42:15.377944     Check condition set 'enter':
        2015-10-09 05:42:15.377990         Condition 'sun_altitude': min=None max=-18 negate=False current=-17.283423156954793
        2015-10-09 05:42:15.378020             to high -> not matching
        2015-10-09 05:42:15.378047 State can not be entered
        2015-10-09 05:42:15.378107 Check if state 'EG.wohnen.raffstore.couch.dawn' ('Morgendämmerung') can be entered:
        2015-10-09 05:42:15.378144     Check condition set 'enter':
        2015-10-09 05:42:15.378177         Condition 'sun_altitude': min=-18 max=-1 negate=False current=-17.283423156954793
        2015-10-09 05:42:15.378212             given limits ok -> matching
        2015-10-09 05:42:15.378240         Age of 'sun_altitude': No limits given
        2015-10-09 05:42:15.378274         Condition 'time': min=None max=12:00:00 negate=False current=05:42:15.377668
        2015-10-09 05:42:15.378299             given limits ok -> matching
        2015-10-09 05:42:15.378324         Age of 'time': No limits given
        2015-10-09 05:42:15.378350 State can be entered
        2015-10-09 05:42:15.378377 Changing to EG.wohnen.raffstore.couch.dawn ('Morgendämmerung')
        2015-10-09 05:42:15.378877     Action 'height: Set 'EG.wohnen.raffstore.couch.height' to '100'
        2015-10-09 05:42:15.378927     Action 'lamella: Set 'EG.wohnen.raffstore.couch.lamella' to '25'
        2015-10-09 05:42:15.379289 Watch suspend triggered ========================================================
        2015-10-09 05:42:15.379366 Manual operation: Change of item 'EG.wohnen.raffstore.couch.lamella' by 'Logic' (source='None', dest='None')
        2015-10-09 05:42:15.379405     Suspending automatic mode for 7200 seconds.
        2015-10-09 05:42:15.688936 Watch suspend triggered ========================================================
        2015-10-09 05:42:15.689046 Manual operation: Change of item 'EG.wohnen.raffstore.couch.height' by 'KNX' (source='1.1.6', dest='4/4/62')
        2015-10-09 05:42:15.689088     Suspending automatic mode for 7200 seconds.
        2015-10-09 05:42:15.737388 Watch suspend triggered ========================================================
        2015-10-09 05:42:15.737498 Manual operation: Change of item 'EG.wohnen.raffstore.couch.lamella' by 'KNX' (source='1.1.6', dest='4/4/63')
        2015-10-09 05:42:15.737539     Suspending automatic mode for 7200 seconds.
        2015-10-09 05:42:16.882136 Update state of item Raffstore Wohnen Couch ====================================
        2015-10-09 05:42:16.882247 Update triggered by Timer (source=None dest=None)
        2015-10-09 05:42:16.882300 AutoBlind has been suspended after manual changes. Reactivating at 2015-10-09 07:42:15.737567+02:00
        und Ausschnitt der items.conf:
        Code:
        [EG]
            [[wohnen]]
                [[[raffstore]]]
                    [[[[couch]]]]
                        name = Raffstore Wohnen Couch                                            
                        type = bool
                        as_plugin = active                                                        
                        eval_trigger = autoblind.trigger
                        as_laststate_item_id = EG.wohnen.raffstore.couch.auto_laststate_id        
                        as_laststate_item_name = EG.wohnen.raffstore.couch.auto_laststate_name    
                        as_lock_item = EG.wohnen.raffstore.couch.auto_lock                        
                        as_suspend_item = EG.wohnen.raffstore.couch.auto_suspend                
                        as_suspend_time = 7200                                                    
                        as_suspend_watch = EG.wohnen.raffstore.couch.updown | EG.wohnen.raffstore.couch.stepstop | EG.wohnen.raffstore.couch.height | EG.wohnen.raffstore.couch.lamella        
                        as_repeat_actions = false                                                
                        as_item_height = EG.wohnen.raffstore.couch.height                        
                        as_item_lamella = EG.wohnen.raffstore.couch.lamella                        
                        as_mindelta_lamella = 5                                                    
                        [[[[[night]]]]]
                            as_use = autoblind.default.night
                        [[[[[dawn]]]]]
                            as_use = autoblind.default.dawn
                        [[[[[dusk]]]]]
                            as_use = autoblind.default.dusk           
                        [[[[[day]]]]]
                            as_use = autoblind.default.day
                            
                        [[[[[auto_laststate_id]]]]]                        
                            type = str
                            visu_acl = r
                            cache = on
                        [[[[[auto_laststate_name]]]]]                    
                            type = str
                            visu_acl = r
                            cache = on
                        [[[[[auto_lock]]]]]                                
                            type = bool
                            knx_dpt = 1
                            knx_send = 4/5/61
                            knx_status = 4/5/62
                            knx_listen = 4/5/61 | 4/5/60 | 4/5/59 | 4/5/0
                            visu_acl = rw
                            cache = on
                        [[[[[auto_suspend]]]]]                            
                            type = bool
                            knx_dpt = 1
                            knx_send = 4/5/63
                            visu_acl = r  
                        [[[[[updown]]]]]
                            type = bool
                            knx_dpt = 1
                            knx_send = 4/0/61
                            visu_acl = rw
                            enforce_updates = on
                        [[[[[stepstop]]]]]
                            type = bool
                            knx_dpt = 1
                            knx_send = 4/1/61
                            visu_acl = rw
                            enforce_updates = on
                        [[[[[height]]]]]
                            type = num
                            knx_dpt = 5.001
                            knx_send = 4/2/61
                            knx_init = 4/4/62
                            visu_acl = rw
                            cache = on
                        [[[[[lamella]]]]]
                            type = num
                            knx_dpt = 5.001
                            knx_send = 4/3/61
                            knx_init = 4/4/63
                            visu_acl = rw
                            cache = on
                            
        [autoblind]
            [[trigger]]
                type = bool
                cycle = 300=1
                enforce_updates = yes
            [[default]]                                                            
                as_item_temperature = wetter.temperatur
                [[[night]]]
                    type = foo
                    name = "Nacht"                                                
                    as_set_height = value:100                                    
                    as_set_lamella = value:0                                    
                    [[[[enter]]]]                                                
                        as_max_sun_altitude = -18
                [[[dawn]]]
                    type = foo
                    name = "Morgendämmerung"
                    as_set_height = value:100
                    as_set_lamella = value:25          
                    [[[[enter]]]]
                        as_max_time = 12:00
                        as_max_sun_altitude = -1
                        as_min_sun_altitude = -18
                [[[dusk]]]
                    type = foo
                    name = "Abenddämmerung"
                    as_set_height = value:100
                    as_set_lamella = 75
                    [[[[enter]]]]
                        as_min_time = 12:00
                        as_max_sun_altitude = -1
                        as_min_sun_altitude = -18
                [[[day]]]
                    type = foo
                    name = "Tag (statisch)"
                    as_set_height = value:0
                    as_set_lamella = value:100
        cu Yfkt5A
        DALI(ABB DG/S1.1), KODI Odroid, TrueNAS, Zehnder ComfoAir 200 L Luxe
        microk8s-Cluster: HomeAssistant, MusicAssistant, mosquitto, TVHeadend, jellyfin

        Kommentar


          Hi,

          das ist doch klar, woher soll das Plugin wissen, was manuelle und was automatische Bedienung ist, wenn Du alles auf die gleiche GA bzw. das gleiche Item legst?
          Du musst für die manuelle Bedienung eigene Items mit eigenen GA anlegen, dann funktioniert das.

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            Hi firefox,

            Zitat von firefox Beitrag anzeigen
            Alle meine Präsenzmelder Items heißen "XXX.anwesend". In den Smarthome Logiken kann ich mit "*.anwesend" arbeiten. Das geht nicht zufällig auch mit dem Plugin oder?
            Direkt geht das nicht, denn dann müsste das Plugin auch wissen, wie es aus den Werten der Items den einen Wert ermitteln soll, der mit den Grenzwerten verglichen wird.
            Es sollte aber möglich sein, ein Item anzulegen und über eval und eval_trigger die "*.anwesend" Items "zusammenzufassen". Dieses Item kann dann wiederum für das Plugin verwendet werden.

            Grüße
            offline

            Kommentar


              mumpf: hab mir schon sowas gedacht, aber hätte ja auch sein können das das Plugin sowas erkennt und eine Fehlkonfiguration meinerseits nicht ausgeschlossen...
              es steht ja auch im Log "Change of item .... by 'KNX', 'Logic' oder 'Visu'"...
              ausserdem ist hier von einem Dummy-Item die Rede

              Habe jetzt bei mir die eine Jalousie mal umkonfiguriert und es scheint für den Moment auch wie gewünscht zu funktionieren, aber bevor ich jetzt alle umbaue wäre es toll wenn ihr euren geübteren Blick mal draufwerfen könntet:
              Code:
              [EG]
                  [[wohnen]]
                      [[[raffstore]]]
                          [[[[couch]]]]
                              name = Raffstore Wohnen Couch                    
                              type = bool
                              as_plugin = active                            
                              eval_trigger = autoblind.trigger | EG.wohnen.raffstore.couch.height_status | EG.wohnen.raffstore.couch.lamella_status
                              as_laststate_item_id = EG.wohnen.raffstore.couch.auto_laststate_id    
                              as_laststate_item_name = EG.wohnen.raffstore.couch.auto_laststate_name                
                              as_lock_item = EG.wohnen.raffstore.couch.auto_lock                    
                              as_suspend_item = EG.wohnen.raffstore.couch.auto_suspend            
                              as_suspend_time = 7200                                        
                              as_suspend_watch = EG.wohnen.raffstore.couch.updown | EG.wohnen.raffstore.couch.stepstop | EG.wohnen.raffstore.couch.height | EG.wohnen.raffstore.couch.lamella    
                              as_item_height = EG.wohnen.raffstore.couch.height_plugin        
                              as_item_lamella = EG.wohnen.raffstore.couch.lamella_plugin        
                              as_mindelta_lamella = 5                                
                              [[[[[night]]]]]
                                  as_use = autoblind.default.night
                              [[[[[dawn]]]]]
                                  as_use = autoblind.default.dawn
                              [[[[[dusk]]]]]
                                  as_use = autoblind.default.dusk          
                              [[[[[day]]]]]
                                  as_use = autoblind.default.day
                                  
                              [[[[[auto_laststate_id]]]]]                        
                                  type = str
                                  visu_acl = r
                                  cache = on
                              [[[[[auto_laststate_name]]]]]                
                                  type = str
                                  visu_acl = r
                                  cache = on
                              [[[[[auto_lock]]]]]                    
                                  type = bool
                                  knx_dpt = 1
                                  knx_send = 4/5/61
                                  knx_status = 4/5/62
                                  knx_listen = 4/5/61 | 4/5/60 | 4/5/59 | 4/5/0
                                  visu_acl = rw
                                  cache = on
                              [[[[[auto_suspend]]]]]
                                  type = bool
                                  knx_dpt = 1
                                  knx_send = 4/5/63
                                  visu_acl = r  
                              [[[[[updown]]]]]
                                  type = bool
                                  knx_dpt = 1
                                  knx_send = 4/0/61
                                  visu_acl = rw
                                  enforce_updates = on
                              [[[[[stepstop]]]]]
                                  type = bool
                                  knx_dpt = 1
                                  knx_send = 4/1/61
                                  visu_acl = rw
                                  enforce_updates = on
                              [[[[[height]]]]]            #wird für manuelle Bedienung verwendet von KNX/Visu
                                  type = num
                                  knx_dpt = 5.001
                                  knx_send = 4/2/61
                                  knx_init = 4/2/61
                                  visu_acl = rw
                              [[[[[height_status]]]]]     #Status der vom Aktor zurück kommt
                                  type = num
                                  knx_dpt = 5.001
                                  knx_init = 4/4/62
                                  visu_acl = r
                                  cache = on
                              [[[[[height_plugin]]]]]        #wird ausschliesslich vom Plugin verwendet
                                  type = num
                                  knx_dpt = 5.001
                                  knx_send = 4/2/62
                                  visu_acl = rw
                              [[[[[lamella]]]]]            #wird für manuelle Bedienung verwendet von KNX/Visu
                                  type = num
                                  knx_dpt = 5.001
                                  knx_send = 4/3/61
                                  knx_init = 4/3/61
                                  visu_acl = rw
                              [[[[[lamella_status]]]]]    #Status der vom Aktor zurück kommt
                                  type = num
                                  knx_dpt = 5.001
                                  knx_init = 4/4/63
                                  visu_acl = r
                                  cache = on
                              [[[[[lamella_plugin]]]]]    #wird ausschliesslich vom Plugin verwendet
                                  type = num
                                  knx_dpt = 5.001
                                  knx_send = 4/3/62
                                  visu_acl = rw
              Danke
              Zuletzt geändert von Yfkt5A; 16.10.2015, 09:59.
              cu Yfkt5A
              DALI(ABB DG/S1.1), KODI Odroid, TrueNAS, Zehnder ComfoAir 200 L Luxe
              microk8s-Cluster: HomeAssistant, MusicAssistant, mosquitto, TVHeadend, jellyfin

              Kommentar


                Zitat von offline Beitrag anzeigen
                Code:
                as_value_laststate = my.autostate.condition.night
                Hallo zusammen,
                ich bin zwischenzeitlich ein gutes Stück weiter gekommen. Die Abfrage aller *.anwesend items war nach euren Tips einfach zu lösen. Falls es jemanden interessiert hier:

                Code:
                [[[[allrooms]]]]
                type = bool
                visu_acl = r
                enforce_updates = yes
                eval = or
                eval_trigger = *.anwesend
                Ich hab jetzt meine komplette An/Abwesenheits Logik nahezu vollständig durch das Autoblind abgelöst. Jetzt würde ich aber gerne nochmal eine GoodPractise für folgendes Thema nachfragen.

                Ich will keine Leave Bedingungen formulieren aus den hinreichend diskutierten Problemen. Allerdings will ich auch, dass die beiden Zustände nur angesprungen werden, wenn sich tatsächlich der Zustand ändert. (im Moment bekomme ich alle 300s die Meldung 'Präsenz','EG Wohnung Status anwesend durch test', da die laststate Bedingungen wie unten dargestellt nicht aktiviert sind)

                Jetzt könnte ich
                1. die cycle time raus nehmen und nur noch auf ein paar eval_trigger reagieren
                2. folgende Variante verwenden, die aber nach einem Init logischerweise in der Luft hängt und deshalb einen weiteren Zustand "Init" benötigt, der danach über ein Hilfsitem blockiert wird.
                3. eine weitere Möglichkeit verwenden die mir nicht einfällt ... aber euch vielleicht.

                Code:
                [[[[absent]]]]
                type = foo
                name = EG Abwesend
                as_run_nma = eval:(sh.nma('Präsenz','EG Wohnung Status abwesend durch test'))
                [[[[[enter]]]]]
                as_value_precenceRooms = 0
                as_value_daynight = 1
                as_value_laststate = EG.State.Zentral.present
                
                [[[[present]]]]
                type = foo
                name = EG Anwesend
                as_run_nma = eval:(sh.nma('Präsenz','EG Wohnung Status anwesend durch test'))
                [[[[[enter]]]]]
                as_value_precenceRooms = 1
                as_value_laststate = EG.State.Zentral.absent

                Danke und Gruß
                Zuletzt geändert von firefox; 18.10.2015, 10:57.

                Kommentar


                  Hi firefox,

                  die eine Sache, die mir sofort einfällt, ist die letzte Änderung von offline, siehe sein Post https://knx-user-forum.de/forum/supp...347#post862347. Mit as_repeat_actions = false solltest Du die Wiederholungen vermeiden können.

                  Ansonsten sollte Dein coding oben stimmen, wenn Du das State-Item vom Autoblind mit cache = true versehen hast. Dann bist du nach einem Init in dem letzten Zustand. Zumindest habe ich das immer angenommen, mir fällt gerade auf, dass ich das noch nicht explizit getestet habe. Aber ich habe inzwischen 36 Autoblinds bei mir aktiv, wenn das nicht so wäre, wäre es mir schon aufgefallen, da ich wirklich viel mit sh.py rumspiele und häufiger neustarte. Solltest Du das explizit ausprobieren, wäre ne kurze Bestätigung hier sehr nett...

                  Gruß, Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    Hallo Waldemar,

                    danke für die Tips.

                    as_repeat_actions = false war schon mal ein Erfolg, wenn ich jetzt den absent state ohne die laststate Bedingung stehen lasse, dann läuft alles sauber. Nach einem Neustart muss dann halt sichergestellt werden, dass alle Bedingungen für absent erfüllt sind um Autoblind in einen definierten Zustand zu bekommen.

                    Code:
                    [EG]
                        [[State]]    
                            [[[Zentral]]]
                                type = bool
                                as_plugin = active
                                name = Zustandsautomat EG
                                as_startup_delay = 10
                                as_repeat_actions = false
                                as_laststate_item_id = EG.Zentral.Praesenz.auto_laststate_id
                                as_laststate_item_name = EG.Zentral.Praesenz.auto_laststate_name
                                cycle = 60
                                eval_trigger = EG.Zentral.Praesenz.allrooms
                    
                                as_item_precenceRooms = EG.Zentral.Praesenz.allrooms
                                as_item_daynight = EG.Zentral.Beleuchtung.tag_nacht
                                as_item_centralOff = EG.Zentral.Beleuchtung.aus
                                
                                [[[[absent]]]]
                                    type = foo
                                    name = EG Abwesend
                                    as_run_nma = eval:(sh.nma('Präsenz','EG Wohnung Status abwesend durch test'))
                                    [[[[[enter]]]]]
                                        as_value_precenceRooms = 0
                                        as_value_daynight = 1
                                        # as_value_laststate = EG.State.Zentral.present
                                        
                                [[[[present]]]]
                                    type = foo
                                    name = EG Anwesend
                                    as_run_nma = eval:(sh.nma('Präsenz','EG Wohnung Status anwesend durch test'))
                                    [[[[[enter]]]]]
                                        as_value_precenceRooms = 1
                                        as_value_laststate = EG.State.Zentral.absent
                    Die Variante mit cache = true hab ich versucht, bei mir führt das allerdings nicht zum Erfolg. Vielleicht ist das aber nur ein Verständnisproblem. Meinst du mit State-Item "absent" oder "present" oder meinst du das laststate_id / name item? Beide hab ich mit cahce = true versehen, nach einem Init kommt aber immer "no matching state found".
                    Aber mal angenommen das funktioniert hätte ich ja immer noch ein Problem falls der cache mal abraucht oder beim aller ersten Start.

                    Um alles sauber abfangen zu können wäre eine Art "default" Bedingung hilfreich, die eben nur aufgerufen wird, wenn last_state_id leer ist und dann einen sauberen Zustand setzt.

                    Ich hab sowas versucht, aber da passiert leider nix :

                    Code:
                    ....
                                as_item_laststateid = EG.Zentral.Praesenz.auto_laststate_id
                                as_item_laststatename = EG.Zentral.Praesenz.auto_laststate_name
                    ....
                    [[[[init]]]]
                                    type = foo
                                    name = EG Init
                                    as_run_nma = eval:(sh.nma('Präsenz','EG Wohnung Status Init durch test'))
                                    as_set_laststatename = 'EG Anwesend'
                                    as_set_laststateid = EG.State.Zentral.present
                                    [[[[[enter]]]]]
                                        as_value_laststate = ""

                    Gruß Thomas
                    Zuletzt geändert von firefox; 18.10.2015, 16:37.

                    Kommentar


                      Hi Thomas,

                      mit cache = true meinte ich speziell laststate_id. Letztendlich hatte ich das drin, weil es von offline so empfohlen ist und ich davon ausging, dass er das drin hat, um nach einem Neustart den letzten Zustand zu haben. Ich habe es aber nie explizit ausprobiert und wundere mich jetzt, wieso meine state engines alle so stabil neu starten... aber vielleicht habe ich wirklich überall passende Bedingungen, so dass immer ein stabiler Start-Zustand gefunden wird. Muss ich nochmal checken.

                      Zum Init-Zustand bei Dir: Es gibt einen Default-Zustand, ganz ohne enter-Bedingung, der wird angenommen, wenn kein anderer Zustand gültig ist. Der muss auch als letzter in der Liste stehen. Ich weiß nicht, ob man aber in einem Zustand die laststate_id setzen sollte. Selbst wenn das klappt, weißt Du nicht, ob das Plugin nicht sofort danach noch den Zustand auf "Init" setzt, da dieser ja dann noch gültig ist.

                      Folgender Vorschlag: Mach doch ein normales Item "Presence" mit cache=true, das wird vom Zustand "present" auf true und vom "absend" auf false gesetzt. Bei "present" machst Du noch ein "enter_Init" mit as_value_Presence = true, bei "absend" ein "enter_Init" mit as_value_Presence = false und dann sollte Deine Engine auch reentrant sein.

                      Gruß, Waldemar

                      P.S.: Natürlich brauchst Du noch ein paar Bedingungen bei den "enter_Init", die verhindern, dass das "enter_Init" ausserhalb vom Neustart wahr werden...
                      Zuletzt geändert von mumpf; 19.10.2015, 08:38. Grund: PS hinzugefügt
                      OpenKNX www.openknx.de

                      Kommentar


                        Hi @offline,

                        jetzt bin ich wohl auf eine Grenze von Autoblind gestoßen, die Du vielleicht auch noch lösen kannst...

                        Ich möchte mein Duschlicht (RGB) steuern und brauche dafür den DPT 232. Dieser muss für sh.py vom Typ list sein. Wenn ich aber über
                        Code:
                        as_item_RGB = OG.Bad.Duschlicht.RGB
                        angebe, wobei
                        Code:
                        [[[[RGB]]]]
                            type = list
                            name = Duschlicht
                            knx_dpt = 232
                            ...
                        ist, verabschiedet sich autoblind mit einem error
                        Code:
                        2015-10-24 15:31:21,537 ERROR    autoblind     -- __init__.py:run:115
                        Das entsprechende Autoblind-Log ist sehr kurz:
                        Code:
                        2015-10-24 15:31:21.515965 Initialize Item OG.Bad.Duschlicht.AutoBlind.Rules ====================================
                        2015-10-24 15:31:21.521652 Init state OG.Bad.Duschlicht.AutoBlind.Rules.Hell
                        Bei den State Hell steht dann
                        Code:
                        as_set_RGB = [255,255,255]
                        Mir ist klar, dass Du das nie implementiert bzw. dokumentiert hast. Ich hatte einfach nur mal versucht, ob es gehen würde. Auch das setzen von Listen geht in sh.py noch nicht, außer in Logiken. Das blöde ist, ich möchte eigentlich mittels Autoblind möglichst viele Logiken ablösen - ist dann blöd, noch von Logiken abhängig zu sein.

                        Falls Du also mal wieder Zeit und Lust hast, könntest Du ja noch erlauben, dass man auch Items von type = list setzen kann. Wenn nicht, ist auch nicht schlimm, dann löse ich das mit einer Logik. Oder Du verrätst mir, wo ich reinschauen müsste, um Listen selber setzen zu können.

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          @offline,

                          dann revidiere ich das mal wieder! Mit ein bisschen nachdenken habe ich dann ein
                          Code:
                          as_set_RGB = eval:[255,255,255]
                          gemacht und schon funktioniert das! So kann ich auf weitere Logiken diesbezüglich verzichten! Und ich habe gleich gesehen, dass ich auch bei DPT2 (Zwangsführung) ein List-Type brauche, da kann ich auch gleich das hier nutzen.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            Hallo offline,

                            mir sind noch zwei Fragen gekommen:

                            1) ich wollte eine etwas veränderte Führung zwischen Oktober und April. Daher habe ich fogendes verwendet:

                            Code:
                            as_min_month = 3
                            as_max_month = 10
                            as_negate_month = True
                            Dann kommt im Autoblind-Log
                            Code:
                            2015-10-24 15:54:15.204734             Condition 'month':
                            2015-10-24 15:54:15.205537                 error: Condition month: 'min' must not be greater than 'max'!
                            2015-10-24 15:54:15.206054                 eval: plugins.autoblind.AutoBlindCurrent.get_month
                            2015-10-24 15:54:15.206657                 min: 3
                            2015-10-24 15:54:15.207069                 max: 10
                            2015-10-24 15:54:15.207432                 negate: True
                            Ich schließe daher, dass man bei as_xx_month kein negate machen kann, sondern zwei differenzierte Enter-Bedingungen (10-12, 01-03) machen muss, korrekt?

                            2) Ich wollte in der Konfiguration "log_maxage = 8" nutzen, damit mir das Verzeichnis nicht zu voll läuft. Dann bekomme ich im Smarthome-Log aber eine Fehlermeldung in der Art "unknown parameter: log_maxage". Funktioniert log_maxage nicht?

                            Viele Grüße

                            Arne

                            Kommentar


                              Hallo allerseits,

                              kann ich die Uhrzeit von sunrise bzw. sh.sun.rise() irgendwie "geradebiegen", dass as_min_time oder as_max_time diese als gültige Zeit erkennen?


                              Code:
                              [[[morgendaemmerung]]]
                                          name = Morgendämmerung
                                          [[[[enter]]]]
                                              as_min_time = sunrise(-6)
                              Condition Set 'enter', condition 'time': Can not cast 'sunrise(-6)' to data type 'time' due to incorrect format! -- AutoBlindLogger.py:error:172

                              Code:
                              [[[morgendaemmerung]]]
                              name = Morgendämmerung
                              [[[[enter]]]]
                              as_min_time = sh.sun.rise(-6).astimezone(sh.tzinfo()).strftime("%H:%M")
                              error: Can not cast 'sh.sun.rise(-6)' to data type 'time' due to incorrect format!

                              Gruß Ivan

                              Kommentar


                                Zitat von ivande Beitrag anzeigen
                                Hallo allerseits,

                                kann ich die Uhrzeit von sunrise bzw. sh.sun.rise() irgendwie "geradebiegen", dass as_min_time oder as_max_time diese als gültige Zeit erkennen?

                                Gruß Ivan
                                Hi Ivan,

                                statt der Uhrzeit musst Du as_min_sun_altitude oder as_max_sun_altitude verwenden,also in deinem Beispiel

                                Code:
                                as_min_sun_altitude = -6
                                Die obere Grenze könnte
                                Code:
                                as_max_sun_altitude = 0
                                sein. Da der Zustand aber abends wieder auftaucht, habe ich stattdessen zusätzliche Uhrzeiten eingesetzt, also z.B
                                Code:
                                as_min_sun_altitude = -6
                                as_min_time = 03:00
                                as_max_time = 09:00
                                Grüße

                                Arne

                                Kommentar

                                Lädt...
                                X