Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    Hehe, meine Geisterpost wurde in dem Fall noch gelesen Ich dachte, dass es irgendwie am Aktor liegt, da er nämlich so getan hat, als wäre er schon oben (Wert 0 in der ETS). Okay, cool, dann probier ich's mal mit der neuen Developversion...

    Kommentar


      Kurze Zwischeninfo: Mit dem nächsten Push auf GitHub werden noch weitere Umstellungen in der Konfiguration erforderlich sein. Wer nicht zweimal umbauen möchte sollte mit dem Test noch etwas warten. Der Push wird vermutlich Freitag oder Samstag morgen passieren. Grüße Offline

      Kommentar


        Hallo,

        ich habe bei mir jetzt die Version vom 25.6. morgens aus Develop am laufen. Ich kann keine Fehler feststellen, habe nur an 2 Stellen "negate" einbauen müssen.

        Zitat von offline Beitrag anzeigen
        Ich dachte eher daran, im Plugin zu filtern. Das würde aber voraussetzen, dass der Caller beim manuellen Fahren und beim Fahren über das Plugin unterschiedlich ist.
        Die entsprechende Stelle zum Ausfiltern ist in AutoBlindItem.py direkt am Anfang von "__watch_manual_callback". Dort werden bereits "plugin" und "timer" ausgefiltert.
        Danke, diese Info in Verbindung mit dem Hinweis neue Items anzulegen hat dazu geführt, dass ich eine Lösung gefunden habe:
        meine Items haben nun ein dummy Objekt:
        [move_manual]
        type = bool
        knx_dpt = 1
        enforce_updates = yes

        und dieses ist in watch_item eingetragen.

        Wenn ich dann automatisch hoehe/move in meiner eigenen Logik setze, wird dieses gesetzt, wenn der "Absender" KNX bzw VISU ist.

        Gruss Andreas

        Kommentar


          Ok, ich hab doch ein kleines Problem. Negate = True wird nicht erkannt und ich komm gerade nicht dahinter warum eigentlich nicht:

          item.conf
          Code:
          [[[[night]]]]
                          type = foo
                          name = Night
                          position = 85,0
                          [[[[[enter]]]]]
                              min_time = 06:00
                              max_time = 22:00
                              negate=True
                              min_weekday = 0
                              max_weekday = 6
                              value_daynight = 0
          Autoblind Log:
          Code:
           Position EG.Buero.Rollo.AutoBlind.night:
          2015-06-26 00:09:05.910377       Name: Night
          2015-06-26 00:09:05.927781       Condition sets to enter position:
          2015-06-26 00:09:05.930708               Condition Set 'enter':
          2015-06-26 00:09:05.943474                       Condition 'time':
          2015-06-26 00:09:05.949863                               eval: plugins.autoblind.AutoBlindCurrent.get_time
          2015-06-26 00:09:05.962309                               min: 06:00:00
          2015-06-26 00:09:05.971050                               max: 22:00:00
          2015-06-26 00:09:05.973833                               negate: False

          Kommentar


            Bei mir gibt es mit dem neuesten Update ähnliche Probleme.. Hier das Logfile:
            Code:
            2015-06-25 23:52:03.635793 Update Position ================================================================
            2015-06-25 23:52:03.639658 Last position: sueden.j7_stiegenhaus.AutoBlind.evening ('Abenddaemmerung')
            2015-06-25 23:52:03.641512 Check if position sueden.j7_stiegenhaus.AutoBlind.evening ('Abenddaemmerung') can be left
            2015-06-25 23:52:03.643184     Check Condition Set 'leave'
            2015-06-25 23:52:03.646217     Position sueden.j7_stiegenhaus.AutoBlind.evening ('Abenddaemmerung') can be left
            2015-06-25 23:52:03.648146 Check Position sueden.j7_stiegenhaus.AutoBlind.night ('Nacht')
            2015-06-25 23:52:03.649869     Check Condition Set 'enter'
            2015-06-25 23:52:03.652337 Position sueden.j7_stiegenhaus.AutoBlind.night ('Nacht') not matching
            Hier das "neue" Item:
            Code:
                    [[[night]]]
                        type = foo
                        name = Nacht
                        position = 100,100
                        [[[[enter]]]]
                            type = foo
                            max_brightness = 100
                            min_time = 9:00
                            max_time = 16:00
                            negate=True
                        [[[[leave]]]]
                            type = foo
                            min_brightness = 100
            Weiters hatte ich bei einer andere Jalousie das sonderbare Phänomen, dass plötzlich eine "manuelle Änderung" erkannt wurde, obwohl ich 100% nichts manuell gesteuert habe.. die Jalousie ging um ca. 5% runter und blieb dann stehen.. Warum gerade zu dieser Uhrzeit - keine Ahnung?
            Code:
            2015-06-25 23:32:03.782037 Update Position ================================================================
            2015-06-25 23:32:03.786025 Last position: osten.s1.AutoBlind.day ('Tag (statisch)')
            2015-06-25 23:32:03.787795 Check if position osten.s1.AutoBlind.day ('Tag (statisch)') can be left
            2015-06-25 23:32:03.790173     No condition sets to check when leaving position osten.s1.AutoBlind.day ('Tag (statisch)')
            2015-06-25 23:32:03.792027 Check Position osten.s1.AutoBlind.night ('Nacht Screen Ost')
            2015-06-25 23:32:03.793688     Check Condition Set 'enter'
            2015-06-25 23:32:03.796285 Position osten.s1.AutoBlind.night ('Nacht Screen Ost') not matching
            2015-06-25 23:32:03.797891 Check Position osten.s1.AutoBlind.day ('Tag (statisch)')
            2015-06-25 23:32:03.799657     Check Condition Set 'enter'
            2015-06-25 23:32:03.801605 Position osten.s1.AutoBlind.day ('Tag (statisch)') not matching
            2015-06-25 23:32:03.803194 Check Position osten.s1.AutoBlind.off ('Hinaufgefahren')
            2015-06-25 23:32:03.805087     Check Condition Set 'enter'
            2015-06-25 23:32:03.807592 Position osten.s1.AutoBlind.off ('Hinaufgefahren') not matching
            2015-06-25 23:32:03.809144 No matching position found.
            2015-06-25 23:33:11.773684 Watch_Manual triggered =========================================================
            2015-06-25 23:33:11.776236 Manual operation: Change of item 'osten.s1.kz' by 'KNX'
            2015-06-25 23:33:11.802973     AutoBlind has been deactivated automatically after manual changes. Reactivating at 2015-06-26 01:29:51.798087+02:00
            2015-06-25 23:42:03.650767 Update Position ================================================================
            Ach ja, das mit der Uhrzeit (: als Trenner) hab ich bei mir im Code schon geändert.. funzt prinzipiell ja auch.

            Kommentar


              Zitat von firefox Beitrag anzeigen
              Ok, ich hab doch ein kleines Problem. Negate = True wird nicht erkannt und ich komm gerade nicht dahinter warum eigentlich nicht:
              Zitat von Onkelandy Beitrag anzeigen
              Bei mir gibt es mit dem neuesten Update ähnliche Probleme.
              Beidesmal das gleiche Problem. Das "negate" gilt auch für eine Bedingung und nicht für das gesamte Bedingungsset. Ihr müsst daher statt "negate = True" jeweils "negate_time = True" in eurer Config schreiben. Dann sollte es funktionieren.


              Zitat von Onkelandy Beitrag anzeigen
              Weiters hatte ich bei einer andere Jalousie das sonderbare Phänomen, dass plötzlich eine "manuelle Änderung" erkannt wurde, obwohl ich 100% nichts manuell gesteuert habe.. die Jalousie ging um ca. 5% runter und blieb dann stehen.. Warum gerade zu dieser Uhrzeit - keine Ahnung?
              Code:
              2015-06-25 23:33:11.776236 Manual operation: Change of item 'osten.s1.kz' by 'KNX'
              Smarthome.py hat eine Änderung des Items "osten.s1.kz" über KNX empfangen und gibt das an das Plugin weiter. Hier reagiert das Plugin nur, es wäre zu klären, wo die Änderung herkommt. Wenn das häufiger auftritt, kann man in AutoBlindItem.py in der Methoden "AbItem.__watch_manual_callback" auch die Parameter "source" und ggf. auch "dest" in das Logging mit aufnehmen, darin würde im Falle von "KNX" auch stehen, von welcher physikalischen Adresse die Änderung kam.

              Grüße
              offline

              Kommentar


                Ich habe gerade den angekündigten Push durchgeführt. Die Doku ist aktualisiert, eine Update-Doku werde ich im Wiki auf GitHub am Wochenende noch einstellen.

                Grüße
                offline

                Kommentar


                  Hi,

                  Zitat von offline Beitrag anzeigen
                  Ich habe gerade den angekündigten Push durchgeführt.
                  ich versuche gerade meine Konfiguration umzustellen. Hilfreich sind deine git logs ;-)

                  Was mir sehr helfen würde, wäre mal eine komplette ITEM-Definition (alt < - > neu).
                  Die Doku hast du in Blöcke eingeteilt aber ich bin ziemlich am suchen, was bei "(...)" jeweils ausgelassen ist.

                  LG Andreas

                  Kommentar


                    Bei mir rennt alles jetzt. Die ITEM Def sieht folgendermaßen aus:

                    Code:
                    [EG]
                        [[Kueche]]    
                            [[[Rollo]]]
                                name = Raffstore Küche
                                autoblind_plugin = active
                                [COLOR=#FF0000]cycle = 60[/COLOR]
                                startup_delay = 20
                                watch_manual = EG.Kueche.Rollo.move | EG.Kueche.Rollo.stop
                                item_height = EG.Kueche.Rollo.pos
                                item_lamella = EG.Kueche.Rollo.lamelle
                                item_active = EG.Kueche.Rollo.active
                                item_state_id = EG.Kueche.Rollo.lastpos_id
                                item_state_name = EG.Kueche.Rollo.lastpos_name
                                [[[[active]]]]
                                    type = bool
                                    knx_dpt = 1
                                    knx_send = 3/2/210
                                    knx_status = 3/2/220
                                    knx_listen = 3/2/210 | 3/2/220 | 0/2/55
                                    visu_acl = rw
                                    cache = on
                                [[[[pos]]]]
                                    type = num
                                    visu_acl = rw
                                    knx_dpt = 5001
                                    knx_listen = 3/2/90
                                    knx_init = 3/2/90
                                    knx_send = 3/2/60
                                    sqlite = yes
                                [[[[lamelle]]]]
                                    type = num
                                    knx_dpt = 5.001
                                    knx_send = 3/4/60
                                    knx_init = 3/4/90
                                    visu_acl = rw
                                    cache = on
                                [[[[lastpos_id]]]]
                                    type = str
                                    visu_acl = r
                                    cache = on
                                [[[[lastpos_name]]]]
                                    type = str
                                    visu_acl = r
                                    cache = on
                                [[[[night]]]]
                                    use = EG.Autoblind.default.night
                                [[[[morning]]]]
                                    use = EG.Autoblind.default.morning
                                [[[[evening]]]]
                                    use = EG.Autoblind.default.evening
                                [[[[suntrack]]]]
                                    use = EG.Autoblind.default.suntrack_west
                                [[[[day]]]]
                                    use = EG.Autoblind.default.day
                    Default Def:
                    Code:
                    [EG]
                        [[Autoblind]]
                            [[[default]]]
                                item_temperature = EG.Buero.Temperatur.ist
                                item_autoshade = EG.Zentral.Rollo.auto_shade
                                item_daynight = EG.Zentral.Beleuchtung.tag_nacht
                                item_precence = EG.Bad.Praesenz.anwesend
                                [[[[night]]]]
                                    type = foo
                                    name = Night
                                    set_height = value:85
                                    [[[[[enter]]]]]
                                        min_time = 06:00
                                        max_time = 22:00
                                        negate_time = True
                                        min_weekday = 0
                                        max_weekday = 6
                                        value_daynight = 0
                    Jetzt sind die "nur Rolladen Besitzer" auch befriedigt. set_lamella kann man auch vollständig weglassen.
                    Mir fällt eigentlich nur eine Kleinigkeit auf. Das cycle = 60 wird nicht gesetzt sondern der Default Wert 300. Das startup_delay wird dagegen sauber gesetzt:


                    Log:
                    Code:
                     Initialize Item EG.Kueche.Rollo ================================================
                    2015-06-26 11:35:33.389385 Init state EG.Kueche.Rollo.night
                    2015-06-26 11:35:33.399248 Init state EG.Kueche.Rollo.morning
                    2015-06-26 11:35:33.409891 Init state EG.Kueche.Rollo.evening
                    2015-06-26 11:35:33.420772 Init state EG.Kueche.Rollo.suntrack
                    2015-06-26 11:35:33.434949 Init state EG.Kueche.Rollo.day
                    2015-06-26 11:35:33.442818 Init state EG.Kueche.Rollo.move
                    2015-06-26 11:35:33.446014 Init state EG.Kueche.Rollo.stop
                    2015-06-26 11:35:33.449274 Init state EG.Kueche.Rollo.pos
                    2015-06-26 11:35:33.452546 Init state EG.Kueche.Rollo.lamelle
                    2015-06-26 11:35:33.455858 Init state EG.Kueche.Rollo.shade
                    2015-06-26 11:35:33.458913 Init state EG.Kueche.Rollo.lock
                    2015-06-26 11:35:33.462501 Init state EG.Kueche.Rollo.auto_down
                    2015-06-26 11:35:33.465540 Init state EG.Kueche.Rollo.auto_up
                    2015-06-26 11:35:33.468797 Init state EG.Kueche.Rollo.auto_shade
                    2015-06-26 11:35:33.471686 watch_manual items:
                    2015-06-26 11:35:33.486738       EG.Kueche.Rollo.move
                    2015-06-26 11:35:33.500971       EG.Kueche.Rollo.stop
                    2015-06-26 11:35:33.519226 Configuration of item Raffstore Küche ==========================================
                    2015-06-26 11:35:33.522226 startup_delay: 20 seconds
                    [COLOR=#FF0000]2015-06-26 11:35:33.537754 cycle: 300 seconds[/COLOR]
                    2015-06-26 11:35:33.540328 Item 'Active': EG.Kueche.Rollo.active
                    2015-06-26 11:35:33.557796 Item 'State Id': EG.Kueche.Rollo.lastpos_id
                    2015-06-26 11:35:33.560284 Item 'State Name': EG.Kueche.Rollo.lastpos_name
                    2015-06-26 11:35:33.577850 State EG.Kueche.Rollo.night:
                    2015-06-26 11:35:33.580440       Name: Night
                    2015-06-26 11:35:33.597786       Condition sets to enter state:
                    2015-06-26 11:35:33.600293               Condition Set 'enter':
                    2015-06-26 11:35:33.616936                       Condition 'time':
                    2015-06-26 11:35:33.619622                               eval: plugins.autoblind.AutoBlindCurrent.get_time
                    2015-06-26 11:35:33.628899                               min: 06:00:00
                    2015-06-26 11:35:33.631512                               max: 22:00:00
                    2015-06-26 11:35:33.634321                               negate: True
                    2015-06-26 11:35:33.639486                       Condition 'daynight':
                    2015-06-26 11:35:33.646226                               item: EG.Zentral.Beleuchtung.tag_nacht
                    2015-06-26 11:35:33.649005                               value: False
                    2015-06-26 11:35:33.654423                               negate: False
                    2015-06-26 11:35:33.660770                       Condition 'weekday':
                    2015-06-26 11:35:33.666065                               eval: plugins.autoblind.AutoBlindCurrent.get_weekday
                    2015-06-26 11:35:33.677511                               min: 0
                    2015-06-26 11:35:33.680029                               max: 6
                    2015-06-26 11:35:33.689321                               negate: False
                    2015-06-26 11:35:33.712931       Actions to perform if state becomes active:
                    2015-06-26 11:35:33.722548               Action 'height':
                    2015-06-26 11:35:33.743770                       item: EG.Kueche.Rollo.pos
                    2015-06-26 11:35:33.746294                       value: 85

                    Kommentar


                      Das Umkonfigurieren ist nicht ganz unaufwändig, gerade wenn man viele Items hat Aber jetzt sollte es auch bei mir passen.
                      Was mir aufgefallen ist: die automatische Lamellennachführung sollte wohl mittels sun_tracking aufgerufen werden und nicht wie in der Doku geschrieben SunTracking.

                      Außerdem scheint das mit dem watch_trigger nicht wirklich zu funktionieren..
                      Im Log steht Folgendes, es wird dann aber nicht getriggert, sondern bis zum nächsten Durchlauf gewartet:
                      Code:
                      2015-06-26 12:28:34.947697 Update state of item Bad Jalousie ==============================================
                      2015-06-26 12:28:34.950408 Update triggered by item 'jalousien.automatik' changed by 'KNX
                      2015-06-26 12:28:34.955996 AutoBlind is inactive
                      2015-06-26 12:28:35.072707 Item 'active' changed ==========================================================
                      2015-06-26 12:28:35.078728 'Active' set to 'True' by 'KNX'
                      Der Watch Trigger wird laut Initialisierungslog richtig erkannt
                      Code:
                      2015-06-26 11:57:28.029148 watch_trigger items:
                      2015-06-26 11:57:28.353833     jalousien.automatik
                      Das Item jalousien.automatik hat die KNX Adresse 4/5/0, was auch richtig im Smarthome Debug angzeigt wird...
                      Code:
                      2015-06-26 12:30:50,870 DEBUG    Main         knx: 0.0.0 set 4/5/0 to True -- __init__.py:parse_telegram:198
                      2015-06-26 12:30:51,054 DEBUG    Main         Item bad.j04.auto_active = True via KNX 0.0.0 4/5/0 -- item.py:__update:373
                      2015-06-26 12:30:51,109 DEBUG    Main         Item bad.j04.autostate_name = Wird beim nächsten Durchgang aktualisiert via Logic None None -- item.py:__update:373

                      Kommentar



                        Zitat von firefox Beitrag anzeigen
                        Mir fällt eigentlich nur eine Kleinigkeit auf. Das cycle = 60 wird nicht gesetzt sondern der Default Wert 300. Das startup_delay wird dagegen sauber gesetzt:
                        Die Ursache hierfür ist, dass smarthome.py bereits das Attribut cycle verwendet und es daher nicht in der Liste der unverarbeiteten Attribute steht, die ich nach "cycle" durchsuche. Vermutich werde ich das Attribut umbenennen müssen, das werde ich aber morgen nochmal genauer analysieren.


                        Zitat von McTao Beitrag anzeigen
                        Was mir sehr helfen würde, wäre mal eine komplette ITEM-Definition (alt < - > neu).
                        Kann ich in der Doku noch einfügen. Ich habe festgestellt, dass auch noch ein paar andere Kleinigkeiten in der Doku fehlen ...


                        Zitat von Onkelandy Beitrag anzeigen
                        Was mir aufgefallen ist: die automatische Lamellennachführung sollte wohl mittels sun_tracking aufgerufen werden und nicht wie in der Doku geschrieben SunTracking
                        Da hast du recht. Ich hatte die Methode umbenannt und das in meiner eigenen Config nicht geändert. Wetterbedingt ist das bis gestern nicht aufgefallen ;-)) und dann hab ich das so in die Doku übernommen ...

                        Zitat von Onkelandy Beitrag anzeigen
                        Außerdem scheint das mit dem watch_trigger nicht wirklich zu funktionieren..
                        Im Log steht Folgendes, es wird dann aber nicht getriggert, sondern bis zum nächsten Durchlauf gewartet:
                        Doch es funktioniert ;-)), nur falsch rum: Du verwendest das "active" Item gleichzeitig als trigger. Wenn du "active" dann änderst wird erst getriggert ... und dann "active" auf "True" gesetzt ... Ich schau mal ob ich das tauschen kann, ich hatte auch bereits daran gedacht, bei jedem manuellen Aktivieren automatisch ein Update der Status auszulösen.

                        Grüße
                        offline

                        Kommentar


                          Hallo,

                          ein Bitte wenn Ihr Plugin-Attribute vergebt, verwendet am besten ein Plugin-spezifische Prefix. Dann ist klar wozu das gehört.
                          z.B. ab_cycle oder as_cycle (automatic shading)

                          Bis bald

                          Marcus

                          Kommentar


                            Ah alles klar wenn aktiv auf true ist, klappt es eh, wie du sagst. Irgendwie hätt ich erwartet, dass beim aktiv-trigger auch gleich alles durchgecheckt wird. Vielleicht fällt dir ja was ein, hehe. Sonst halt nicht. Danke schon mal !

                            Kommentar


                              Zitat von mknx Beitrag anzeigen
                              ...wenn Ihr Plugin-Attribute vergebt, verwendet am besten ein Plugin-spezifische Prefix. Dann ist klar wozu das gehört.
                              z.B. ab_cycle...
                              offline
                              ...oder Du läßt die Status-Neuberechnung ganz über die Standard-Mittel laufen, die sh,py bietet. Dann könnte man im Hauptitem (also das Item mit autoblind_plugin = active) jegliche sh.py Aktivierung verwenden (in der Annahme, dass Du auf 1 reagierst): cycle = 300 = 1, crontab 15 12 * * = 1, knx-adresse, 1-Wire-Adresse etc.
                              Dann könnte man auch statt watch_item den "normalen" eval_trigger und eval verwenden. Falls dann enforce_updates = true notwendig ist, wäre das ja zu verschmerzen.
                              crontab zusätlich zu cycle wäre schon cool, zumindest im Hinblick auf eine generische State-Engine (könnte ich bei der Steuerung meiner Zirkulationspumpe gut gebrauchen).Ich bekomme das Ganze ohne weiteres über ein Standard-Item gelöst, auf das ich dann mit watch_item höre, aber direkt wäre es eben einfacher...
                              Ist nur so eine Idee, wobei ich nicht weiß, ob und wie einfach die realisierbar ist...

                              Gruß, Waldemar
                              OpenKNX www.openknx.de

                              Kommentar


                                Zitat von mumpf Beitrag anzeigen
                                ...oder Du läßt die Status-Neuberechnung ganz über die Standard-Mittel laufen, die sh,py bietet. Dann könnte man im Hauptitem (also das Item mit autoblind_plugin = active) jegliche sh.py Aktivierung verwenden (in der Annahme, dass Du auf 1 reagierst): cycle = 300 = 1, crontab 15 12 * * = 1, knx-adresse, 1-Wire-Adresse etc.
                                Dann könnte man auch statt watch_item den "normalen" eval_trigger und eval verwenden. Falls dann enforce_updates = true notwendig ist, wäre das ja zu verschmerzen.
                                Das ist sicherlich die geschickteste Variante. Ich habe mal ein wenig bei mir rumprobiert und es funktioniert prinzipiell schon ganz gut. Das einzige, was dann wegfällt ist das startup_delay, denn wenn die updates von smarthome.py automatisch eingeplant werden, kann dieser Wert nicht gesetzt werden. Ich denke aber, dass die dadurch gewonnene Flexibilität das mehr aus ausgleicht.
                                Ich werde das ganze jetzt bei mir fertigstellen und dann auf GitHub pushen. Es wird dann nicht erforderlich sein, enforce_update oder den Wert der beim Triggern gesetzt wird in der Config zu setzen. Das sind nur wieder Dinge, die man vergisst und dann ewig sucht, warum es nicht tut. Ich werde die Konfigurationen der Items vom Plugin aus entsprechend anpassen, wenn das erforderlich ist.

                                Grüße
                                offline

                                Kommentar

                                Lädt...
                                X