Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • hhhc
    antwortet
    Hi,

    ich hatte das "alte" Plugin (vor dem grossen Release im Dezember) erfolgreich als Beschattung am Laufen. Da das neue aber die automatische Sperre bei manueller Betätigung beinhaltete, hatte ich bereits im Januar aktualisiert.
    Leider entdecke ich bei meiner Implementierung doch ein paar Unklarheiten und hoffe, dass Ihr mir helfen könnt.
    Das Problem ist, dass nach einer automatischen Beschattung der Status in "Ausgesetzt bis... " geändert wird und eben nicht Beschattung bleibt"
    Auszug aus dem Log:

    Code:
    2016-05-30 12:40:54.133570 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    
    2016-05-30 12:40:54.133658 Update triggered by Eval (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules source=Raffstore.trigger dest=None)
    
    2016-05-30 12:40:54.133727 Eval initially triggered by Scheduler (item=Raffstore.trigger source=None)
    
    2016-05-30 12:40:54.133877 Last state: Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Tag ('Tag')
    
    2016-05-30 12:40:54.133941 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Tag' ('Tag') can be left:
    
    2016-05-30 12:40:54.133998 No condition sets defined -> matching
    
    2016-05-30 12:40:54.134051 State can be left
    
    2016-05-30 12:40:54.134141 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Lock' ('Automatik manuell gesperrt') can be entered:
    
    2016-05-30 12:40:54.134216 Check condition set 'enter':
    
    2016-05-30 12:40:54.134288 Condition 'lock': value=True negate=False current=False
    
    2016-05-30 12:40:54.134342 not OK -> not matching
    
    2016-05-30 12:40:54.134395 State can not be entered
    
    2016-05-30 12:40:54.134447 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend' ('Ausgesetzt') can be entered:
    
    2016-05-30 12:40:54.134501 Check condition set 'enter_stay':
    
    2016-05-30 12:40:54.134561 Condition 'manuell': min=None max=None negate=False current=True
    
    2016-05-30 12:40:54.134612 no limit given -> matching
    
    2016-05-30 12:40:54.134744 Age of 'manuell': min=None max=7200.0 negate=None current=834.146938
    
    2016-05-30 12:40:54.134798 given age limits ok -> matching
    
    2016-05-30 12:40:54.134862 Condition 'laststate': value=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend negate=False current=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Tag
    
    2016-05-30 12:40:54.134914 not OK -> not matching
    
    2016-05-30 12:40:54.134966 Check condition set 'enter_manuell':
    
    2016-05-30 12:40:54.135070 Executing method 'get_relative_itemid(..manuell)'
    
    2016-05-30 12:40:54.135152 Condition 'trigger_source': value=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell negate=False current=Raffstore.trigger
    
    2016-05-30 12:40:54.135205 not OK -> not matching
    
    2016-05-30 12:40:54.135255 State can not be entered
    
    2016-05-30 12:40:54.135305 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Beschattung' ('Beschattung') can be entered:
    
    2016-05-30 12:40:54.135367 Check condition set 'enter':
    
    2016-05-30 12:40:54.135428 Condition 'sun_azimut': min=70 max=270 negate=False current=163.664528438982
    
    2016-05-30 12:40:54.135479 given limits ok -> matching
    
    2016-05-30 12:40:54.135529 Age of 'sun_azimut': No limits given
    
    2016-05-30 12:40:54.167704 Condition 'outdoortemperature': min=19.0 max=None negate=False current=24.0
    
    2016-05-30 12:40:54.167772 given limits ok -> matching
    
    2016-05-30 12:40:54.167833 Age of 'outdoortemperature': No limits given
    
    2016-05-30 12:40:54.167930 Condition 'brightnessGt43k': value=True negate=False current=True
    
    2016-05-30 12:40:54.168018 OK -> matching
    
    2016-05-30 12:40:54.168086 Age of 'brightnessGt43k': No limits given
    
    2016-05-30 12:40:54.168185 Condition 'indoortemperature': min=22.0 max=None negate=False current=22.0
    
    2016-05-30 12:40:54.168272 given limits ok -> matching
    
    2016-05-30 12:40:54.169132 Age of 'indoortemperature': No limits given
    
    2016-05-30 12:40:54.169256 Condition 'sun_altitude': min=25 max=None negate=False current=57.74402433774275
    
    2016-05-30 12:40:54.169351 given limits ok -> matching
    
    2016-05-30 12:40:54.169439 Age of 'sun_altitude': No limits given
    
    2016-05-30 12:40:54.190831 State can be entered
    
    2016-05-30 12:40:54.190903 Changing to Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Beschattung ('Beschattung')
    
    2016-05-30 12:40:54.200194 Executing method 'SunTracking()'
    
    2016-05-30 12:40:54.200321 Current sun altitude is 57.74403799812109°
    
    2016-05-30 12:40:54.200638 Blinds at right angle to the sun at 32.25596200187891°
    
    2016-05-30 12:40:54.200719 Action 'lamelle': Set 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.lamelle' to '32.25596200187891'
    
    2016-05-30 12:40:54.215262 Action 'suspend': Set 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.suspend' to 'False'
    
    2016-05-30 12:40:54.215440 Action 'hoehe': Set 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe' to '100'
    
    2016-05-30 12:40:55.229215 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    
    2016-05-30 12:40:55.229355 Update triggered by Eval (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules source=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell dest=None)
    
    2016-05-30 12:40:55.229452 Eval initially triggered by AutoBlind Plugin (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe source=None)
    
    2016-05-30 12:40:55.229506 Ignoring changes from AutoBlind Plugin
    
    2016-05-30 12:40:56.218309 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    
    2016-05-30 12:40:56.218492 Update triggered by Eval (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules source=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell dest=None)
    
    2016-05-30 12:40:56.218602 Eval initially triggered by AutoBlind Plugin (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe source=None)
    
    2016-05-30 12:40:56.218663 Ignoring changes from AutoBlind Plugin
    
    2016-05-30 12:42:01.149247 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    
    2016-05-30 12:42:01.149335 Update triggered by Eval (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules source=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell dest=None)
    
    2016-05-30 12:42:01.149436 Eval initially triggered by AutoBlind Plugin (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe source=None)
    
    2016-05-30 12:42:01.149497 Ignoring changes from AutoBlind Plugin
    
    2016-05-30 12:42:01.203865 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    
    2016-05-30 12:42:01.203991 Update triggered by Eval (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules source=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell dest=None)
    
    2016-05-30 12:42:01.204092 Eval initially triggered by KNX (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.lamelle source=1.1.30)
    
    2016-05-30 12:42:01.204318 Last state: Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Beschattung ('Beschattung')
    
    2016-05-30 12:42:01.204403 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Beschattung' ('Beschattung') can be left:
    
    2016-05-30 12:42:01.204469 No condition sets defined -> matching
    
    2016-05-30 12:42:01.204528 State can be left
    
    2016-05-30 12:42:01.204635 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Lock' ('Automatik manuell gesperrt') can be entered:
    
    2016-05-30 12:42:01.204698 Check condition set 'enter':
    
    2016-05-30 12:42:01.204768 Condition 'lock': value=True negate=False current=False
    
    2016-05-30 12:42:01.204866 not OK -> not matching
    
    2016-05-30 12:42:01.204926 State can not be entered
    
    2016-05-30 12:42:01.204984 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend' ('Ausgesetzt') can be entered:
    
    2016-05-30 12:42:01.205072 Check condition set 'enter_stay':
    
    2016-05-30 12:42:01.205242 Condition 'manuell': min=None max=None negate=False current=True
    
    2016-05-30 12:42:01.205301 no limit given -> matching
    
    2016-05-30 12:42:01.205492 Age of 'manuell': min=None max=7200.0 negate=None current=0.002827
    
    2016-05-30 12:42:01.205557 given age limits ok -> matching
    
    2016-05-30 12:42:01.205667 Condition 'laststate': value=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend negate=False current=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Beschattung
    
    2016-05-30 12:42:01.205727 not OK -> not matching
    
    2016-05-30 12:42:01.205820 Check condition set 'enter_manuell':
    
    2016-05-30 12:42:01.205931 Executing method 'get_relative_itemid(..manuell)'
    
    2016-05-30 12:42:01.206060 Condition 'trigger_source': value=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell negate=False current=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell
    
    2016-05-30 12:42:01.206124 OK -> matching
    
    2016-05-30 12:42:01.206181 Age of 'trigger_source': No limits given
    
    2016-05-30 12:42:01.206236 State can be entered
    
    2016-05-30 12:42:01.206292 Changing to Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend ('Ausgesetzt')
    
    2016-05-30 12:42:01.208050 Executing method 'insert_suspend_time(..suspend, Automatik ausgesetzt bis %X)'
    
    2016-05-30 12:42:01.208858 Action 'suspend': Set 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.suspend' to 'True'
    
    2016-05-30 12:42:01.209569 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    
    2016-05-30 12:42:01.209641 Update triggered by Eval (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules source=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.suspend dest=None)
    
    2016-05-30 12:42:01.209739 Eval initially triggered by AutoBlind Plugin (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.suspend source=None)
    
    2016-05-30 12:42:01.209801 Ignoring changes from AutoBlind Plugin
    
    2016-05-30 12:42:02.483804 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    
    2016-05-30 12:42:02.483940 Update triggered by Eval (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules source=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell dest=None)
    
    2016-05-30 12:42:02.484878 Eval initially triggered by KNX (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe source=1.1.30)
    
    2016-05-30 12:42:02.485154 Last state: Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend ('Ausgesetzt')
    
    2016-05-30 12:42:02.485263 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend' ('Ausgesetzt') can be left:
    
    2016-05-30 12:42:02.485365 No condition sets defined -> matching
    
    2016-05-30 12:42:02.485452 State can be left
    
    2016-05-30 12:42:02.485541 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Lock' ('Automatik manuell gesperrt') can be entered:
    
    2016-05-30 12:42:02.485631 Check condition set 'enter':
    
    2016-05-30 12:42:02.485734 Condition 'lock': value=True negate=False current=False
    
    2016-05-30 12:42:02.485819 not OK -> not matching
    
    2016-05-30 12:42:02.485922 State can not be entered
    
    2016-05-30 12:42:02.486024 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend' ('Ausgesetzt') can be entered:
    
    2016-05-30 12:42:02.486113 Check condition set 'enter_stay':
    
    2016-05-30 12:42:02.486210 Condition 'manuell': min=None max=None negate=False current=False
    
    2016-05-30 12:42:02.486423 no limit given -> matching
    
    2016-05-30 12:42:02.486623 Age of 'manuell': min=None max=7200.0 negate=None current=0.004439
    
    2016-05-30 12:42:02.486700 given age limits ok -> matching
    
    2016-05-30 12:42:02.486800 Condition 'laststate': value=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend negate=False current=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend
    
    2016-05-30 12:42:02.486874 OK -> matching
    
    2016-05-30 12:42:02.486947 Age of 'laststate': No limits given
    
    2016-05-30 12:42:02.487024 Condition 'suspend': value=True negate=False current=True
    
    2016-05-30 12:42:02.487110 OK -> matching
    
    2016-05-30 12:42:02.487181 Age of 'suspend': No limits given
    
    2016-05-30 12:42:02.487252 State can be entered
    
    2016-05-30 12:42:02.487419 Executing method 'insert_suspend_time(..suspend, Automatik ausgesetzt bis %X)'
    
    2016-05-30 12:42:02.488799 Staying at Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend ('Ausgesetzt')
    
    2016-05-30 12:42:02.489057 Action 'suspend': Set 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.suspend' to 'True'
    
    2016-05-30 12:42:02.536469 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    
    2016-05-30 12:42:02.536552 Update triggered by Eval (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules source=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell dest=None)
    
    2016-05-30 12:42:02.536647 Eval initially triggered by KNX (item=Raffstore.EG_wohnzimmer_schiebetuer_rechts.lamelle source=1.1.30)
    
    2016-05-30 12:42:02.536824 Last state: Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend ('Ausgesetzt')
    
    2016-05-30 12:42:02.536893 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend' ('Ausgesetzt') can be left:
    
    2016-05-30 12:42:02.536955 No condition sets defined -> matching
    
    2016-05-30 12:42:02.537010 State can be left
    
    2016-05-30 12:42:02.537067 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Lock' ('Automatik manuell gesperrt') can be entered:
    
    2016-05-30 12:42:02.537125 Check condition set 'enter':
    
    2016-05-30 12:42:02.537193 Condition 'lock': value=True negate=False current=False
    
    2016-05-30 12:42:02.537249 not OK -> not matching
    
    2016-05-30 12:42:02.537304 State can not be entered
    
    2016-05-30 12:42:02.537359 Check if state 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend' ('Ausgesetzt') can be entered:
    
    2016-05-30 12:42:02.537414 Check condition set 'enter_stay':
    
    2016-05-30 12:42:02.537477 Condition 'manuell': min=None max=None negate=False current=True
    
    2016-05-30 12:42:02.537532 no limit given -> matching
    
    2016-05-30 12:42:02.537671 Age of 'manuell': min=None max=7200.0 negate=None current=0.002056
    
    2016-05-30 12:42:02.537729 given age limits ok -> matching
    
    2016-05-30 12:42:02.537795 Condition 'laststate': value=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend negate=False current=Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend
    
    2016-05-30 12:42:02.537850 OK -> matching
    
    2016-05-30 12:42:02.537905 Age of 'laststate': No limits given
    
    2016-05-30 12:42:02.537964 Condition 'suspend': value=True negate=False current=True
    
    2016-05-30 12:42:02.538016 OK -> matching
    
    2016-05-30 12:42:02.538070 Age of 'suspend': No limits given
    
    2016-05-30 12:42:02.538123 State can be entered
    
    2016-05-30 12:42:02.538240 Executing method 'insert_suspend_time(..suspend, Automatik ausgesetzt bis %X)'
    
    2016-05-30 12:42:02.538508 Staying at Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend ('Ausgesetzt')
    
    2016-05-30 12:42:02.538584 Action 'suspend': Set 'Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.suspend' to 'True'
    
    2016-05-30 12:45:54.403003 Update state of item Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts ======
    ITEM (habe ich hauptsächlich aus dem Bsp übernommen):
    Code:
    [Raffstore]
        [[default]]
            # Item fuer Helligkeit aussen
            as_item_brightness = Raffstore.helligkeit
            # Item fuer Temperatur aussen
            as_item_outdoortemperature = Aussen.temperatur
            # Item fuer Temperatur innen
            as_item_indoortemperature = EG.wohnzimmer.temperatur
            # Item das anzeigt, ob die Helligkeit aussen mehr als 25kLux betraegt
            as_item_brightnessGt25k = Raffstore.helligkeit.gt25k
            # Item das anzeigt, ob die Helligkeit aussen mehr als 43kLux betraegt
            as_item_brightnessGt43k = Raffstore.helligkeit.gt43k        
            # Item fuer Schneealarm
            as_item_schneealarm = Raffstore.schneealarm
            # Item fuer Behanghoehe
            as_item_hoehe = ...hoehe
            # Keine Aenderung der Behanghoehe wenn Abweichung kleiner 10
            as_mindelta_hoehe = 5
            # Item fuer Suspend time
            as_suspend_time = Raffstore.suspension
            # Item fuer Lamellenwinkel          
            as_item_lamelle = ...lamelle
            # Keine Aenderung des Lamellenwinkels wenn Abweichung kleiner 5
            as_mindelta_lamelle = 5
            # 'Manuell' Item
            as_item_manuell = ..manuell
            # 'Lock' Item
            as_item_lock = ..lock
            # 'Suspend' Item
            as_item_suspend = ..suspend
    
            # Zustand 'Sperre ueber Sperr-Item'
            [[[Lock]]]
                type = foo
                name = Automatik manuell gesperrt
                # Aktionen:
                # - 'Suspend'-Item ggf. zuruecksetzen              
                as_set_suspend = False
                # sonst nichts tun
                [[[[enter]]]]
                    # Einstieg in 'Lock': Wenn
                    # - das 'Lock'-Item gesetzt ist
                    as_value_lock = True
    
            # Zustand 'Zeitweises Deaktivieren bei manuellen Aktionen'
            [[[Suspend]]]
                type = foo
                name = Ausgesetzt
                # Namensermittlung ueber eval-Funktion
                as_name = eval:autoblind_eval.insert_suspend_time('..suspend', 'Automatik ausgesetzt bis %X')
                # Aktionen:
                # - 'Suspend'-Item setzen
                as_set_suspend = True
                # sonst nichts tun
    
                # Einstieg in 'Suspend': Wenn
                [[[[enter_manuell]]]]                      
                    # - die Zustandsermittlung ueber das 'Manuell'-Item ausgeloest wurde
                    as_value_trigger_source = eval: autoblind_eval.get_relative_itemid('..manuell')
    
                # Verbleib in 'Suspend': Wenn
                [[[[enter_stay]]]]
                    # - wir bereits in 'Suspend' sind
                    as_value_laststate = var:current.state_id
                    # - die letzte Aenderung des 'Manuell'-Items hoechstens 3600 Sekunden her ist
                    as_agemax_manuell = item: Raffstore.suspension
                    # - das 'Suspend'-Item nicht von irgendwo anders auf 'False' gesetzt wurde
                    as_value_suspend = True
    
            # Zustand 'Nachfuehren der Lamellen zum Sonnenstand bei grosser Helligkeit', Gebaeudeseite 1
            [[[Beschattung]]]
                type = foo
                name = Beschattung
                # Aktionen:
                # - Behang ganz herunterfahren
                as_set_hoehe = value:100
                # - Lamellen zur Sonne ausrichten
                as_set_lamelle = eval:autoblind_eval.sun_tracking()
                # - 'Suspend'-Item ggf. zuruecksetzen              
                as_set_suspend = False
    
                # Einstieg in 'Beschattung': Wenn
                [[[[enter]]]]
                    # - das Flag 'Helligkeit > 43kLux' seit mindestens 60 Sekunden gesetzt ist
                    as_value_brightnessGt43k = true
                    as_minage_brightnessGt43k = 60
                    # - die Sonnenhoehe mindestens 25° ist
                    as_min_sun_altitude = 25
                    # - die Sonne aus Richtung 70° bis 270° kommt
                    as_min_sun_azimut = 70
                    as_max_sun_azimut = 270
                    # - es draussen mindestens 22° hat
                    as_min_outdoortemperature = item:Raffstore.min_aussentemperatur
                    as_min_indoortemperature = item:Raffstore.min_innentemperatur
    
                # Hysterese fuer Helligkeit: Wenn
                [[[[enter_hysterese]]]]
                    # ... wir bereits in 'Beschattung' sind
                    as_value_laststate = var:current.state_id
                    # .... das Flag 'Helligkeit > 25kLux' gesetzt ist
                    as_value_brightnessGt25k = true
                    # ... die Sonnenhoehe mindestens 25° ist
                    as_min_sun_altitude = 25
                    # ... die Sonne aus Richtung 70° bis 270° kommt
                    as_min_sun_azimut = 70
                    as_max_sun_azimut = 270
                    # Anmerkung: Hier keine erneute Pruefung der Temperatur, damit Temperaturschwankungen nicht
                    # zum Auf-/Abfahren der Raffstores fuehren
    
                # Verzoegerter Ausstieg nach Unterschreitung der Mindesthelligkeit: Wenn
                [[[[enter_delay]]]]
                    # ... wir bereits in 'Beschattung' sind
                    as_value_laststate = var:current.state_id
                    # .... das Flag 'Helligkeit > 25kLux' nicht (!) gesetzt ist, aber diese Aenderung nicht mehr als 20 Minuten her ist
                    as_value_brightnessGt25k = false
                    as_maxage_brightnessGt25k = Raffstore.delay
                    # ... die Sonnenhoehe mindestens 25° ist
                    as_min_sun_altitude = 25
                    # ... die Sonne aus Richtung 70° bis 270° kommt
                    as_min_sun_azimut = 70
                    as_max_sun_azimut = 270
                    # Anmerkung: Auch hier keine erneute Pruefung der Temperatur, damit Temperaturschwankungen nicht
                    # zum Auf-/Abfahren der Raffstores fuehren
                    
            # Zustand 'Nacht'
            [[[Nacht]]]
                type = foo
                name = Nacht
                # Aktionen:
                # - Behang ganz herunterfahren
                as_set_hoehe = item: Raffstore.max_hoehe
                # - Lamellen ganz schliessen
                as_set_lamelle = value:100
                # - 'Suspend'-Item ggf. zuruecksetzen              
                as_set_suspend = False
    
                # Einstieg in 'Nacht': Wenn
                [[[[enter]]]]
                    # - es zwischen 16:00 und 08:00 Uhr ist
                    as_min_time = 07:30
                    as_max_time = 16:00
                    as_negate_time = True
                    # - die Helligkeit hoechstens 90 Lux betraegt
                    as_max_brightness = 0
    
            # Zustand 'Morgens'
            [[[Morgens]]]
                type = foo
                name = Daemmerung Morgens
                # Aktionen:
                # - Behang ganz herunterfahren
                as_set_hoehe = item: Raffstore.max_hoehe
                # - Lamellen ca 60° nach unten
                as_set_lamelle = value:60
                # - 'Suspend'-Item ggf. zuruecksetzen              
                as_set_suspend = False
    
                # Einstieg in 'Morgens': Wenn
                [[[[enter]]]]
                    # - die Helligkeit zwischen 90 und 150 Lux betraegt
                    as_min_brightness = 90
                    as_max_brightness = 180
                    # - es zwischen 08:00 und 12:00 Uhr ist
                    as_min_time = 07:30
                    as_max_time = 12:00
    
            # Zustand 'Abends'
            [[[Abends]]]
                type = foo
                name = Daemmerung Abends
                # Aktionen:
                # - Behang ganz herunterfahren
                as_set_hoehe = item: Raffstore.max_hoehe
                # - Lamellen ca 60° nach oben
                as_set_lamelle = value:60
                # - 'Suspend'-Item ggf. zuruecksetzen              
                as_set_suspend = False
    
                # Einstieg in 'Abends': Wenn
                [[[[enter]]]]
                    # - die Helligkeit zwischen 90 und 150 Lux betraegt
                    as_min_brightness = 90
                    as_max_brightness = 250
                    # - es zwischen 12:00 und 24:00 Uhr ist
                    as_min_time = 12:00
                    as_max_time = 24:00
                    # Anmerkung: '24:00' ist eigentlich eine ungueltige Zeit. Sie wird aber automatisch zu 23:59:59 umgewandelt
    
            # Zustand 'Tag'  
            [[[Tag]]]
                type = foo
                name = Tag
                # Aktionen:
                # - Behang ganz hochfahren
                as_set_hoehe = value:0
                # - Lamellen auf den Standardwert bei ganz hochgefahrenem Behang
                as_set_lamelle = value:0
                # - 'Suspend'-Item ggf. zuruecksetzen              
                as_set_suspend = False
    
                # Einstieg in 'Tag': Wenn
                [[[[enter]]]]
                    # - es zwischen 08:00 und 22:00 Uhr ist
                    as_min_brightness = 90
                    as_min_time = 07:30
                    as_max_time = 22:00
        [[EG_wohnzimmer_schiebetuer_rechts]]
            name = Raffstore EG Wohnzimmer Schiebetuer_rechts
            [[[aufab]]]
                type = bool
                knx_dpt = 1
                knx_send = 3/1/6
                knx_listen = 3/1/6
                visu_acl = rw
                enforce_updates = yes
                
            [[[step]]]
                type = bool
                knx_dpt = 1
                knx_send = 3/2/6
                knx_listen = 3/2/6
                visu_acl = rw
                enforce_updates = yes
                
            [[[hoehe]]]
                type = num
                knx_dpt = 5.001
                knx_send = 3/3/6
                knx_listen = 3/4/6
                visu_acl = rw
                enforce_updates = yes
                
            [[[hoehe_wert]]]
                type = num
                knx_dpt = 5.001
                knx_cache = 3/4/6
                visu_acl = r
                
            [[[hoehe_wert_visu]]]
                type = num
                knx_dpt = 5.001
                knx_cache = 3/4/6
                visu_acl = r
                eval = value * 2.55
                
            [[[lamelle]]]
                type = num
                knx_dpt = 5.001
                knx_send = 3/5/6
                knx_listen = 3/6/6
                visu_acl = rw
                enforce_updates = yes
                
            [[[lamelle_wert]]]
                type = num
                knx_dpt = 5.001
                knx_cache = 3/6/6
                visu_acl = r
                
            [[[lamelle_wert_visu]]]
                type = num
                knx_dpt = 5.001
                knx_cache = 3/6/6
                visu_acl = r
                eval = value * 2.55
                
            [[[automatik]]]
                [[[[lock]]]]
                    type = bool
                    name = Sperr-Item
                    cache = on
                    eval = or
                    eval_trigger = Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manual_lock | Raffstore.automatik
    
                [[[[manual_lock]]]]
                    type = bool
                    name = Manuelles Sperr-Item
                    visu_acl = rw
                    cache = on
    
                [[[[suspend]]]]
                    type = bool
                    name = Suspend-Item
                    visu_acl = rw
                    # Achtung: Beim 'Suspend'-Item niemals 'enforce_updates = yes' setzen! Das fuehrt dazu dass das Setzen des
                    # Suspend-Items bei der Initialisierung zu einem endlosen sofortigen Wiederaufruf der Statusermittlung fuehrt!
    
                [[[[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
                    cache = on
                    as_manual_invert = true
                    # Aenderungen dieser Items sollen als manuelle Bedienung gewertet werden,
                    eval_trigger = Raffstore.EG_wohnzimmer_schiebetuer_rechts.aufab | Raffstore.EG_wohnzimmer_schiebetuer_rechts.step | Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe | Raffstore.EG_wohnzimmer_schiebetuer_rechts.lamelle | Raffstore.EG_wohnzimmer_all.aufab | Raffstore.EG_wohnzimmer_all.step | Raffstore.EG_zentral_all.aufab | Raffstore.EG_zentral_all.step |Â Raffstore.EG_zentral_all.hoehe |Â Raffstore.EG_zentral_all.lamelle | Raffstore.EG_wohnzimmerkueche_all.aufab | Raffstore.EG_wohnzimmerkueche_all.step | Raffstore.Zentral_all_suedseite.aufab | Raffstore.Zentral_all_suedseite.step
                    # Aenderungen, die urspruenglich von diesen Triggern (:) ausgeloest wurden, sollen als manuelle Bedienung gewertet werden
                    #as_manual_include = Visu:*
                    # Aenderungen, die urspruenglich von diesen Triggern (:) ausgeloest wurden, sollen als manuelle Bedienung gewertet werden
                    # as_manual_exclude = KNX:0.0.0  
    
                [[[[rules]]]]
                    type = bool
                    name = Automatik Raffstore EG Wohnzimmer Schiebetuer_rechts
                    as_plugin = active
                    # Erste Zustandsermittlung nach 30 Sekunden
                    as_startup_delay = 15
                    # Ueber diese Items soll die Statusermittlung ausgeloest werden
                    eval_trigger = Raffstore.trigger | Raffstore.automatik | Raffstore.schneealarm | Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell | Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.lock | Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.suspend
                    # In dieses Item soll die Id des aktuellen Zustands geschrieben werden
                    as_laststate_item_id = ..state_id
                    # In dieses Item soll der Name des aktuellen Zustands geschrieben werden
                    as_laststate_item_name = ..state_name
    
                    [[[[[Lock]]]]]
                        # Zustand 'Lock': Nur die Vorgabeeinstellungen uebernehmen
                        as_use = Raffstore.default.Lock
    
                    [[[[[Suspend]]]]]
                        # Zustand 'Suspend': Nur die Vorgabeeinstellungen uebernehmen
                        as_use = Raffstore.default.Suspend
                    
                    [[[[[Beschattung]]]]]
                        # Zustand 'Nacht': Nur die Vorgabeeinstellungen uebernehmen
                        as_use = Raffstore.default.Beschattung
    
                    [[[[[Nacht]]]]]
                        # Zustand 'Nacht': Nur die Vorgabeeinstellungen uebernehmen
                        as_use = Raffstore.default.Nacht
    
                    [[[[[Tag]]]]]
                        # Zustand 'Tag': Vorgabeeinstellungen uebernehmen
                        as_use = Raffstore.default.Tag
    und CLI sagt folgendes:

    Code:
    Items:
    
    ======
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.aufab = False
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.step = False
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe = 98.8
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe_wert = 98.8
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.hoehe_wert_visu = 251.93999999999997
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.lamelle = 31.8
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.lamelle_wert = 31.8
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.lamelle_wert_visu = 81.08999999999999
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.lock = False
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manual_lock = False
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.suspend = True
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.state_id = Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.state_name = Automatik ausgesetzt bis 02:42:01 PM
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.manuell = True
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules = True
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Lock
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Suspend
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Beschattung
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Nacht
    
    Raffstore.EG_wohnzimmer_schiebetuer_rechts.automatik.rules.Tag
    Zuletzt geändert von hhhc; 30.05.2016, 12:19.

    Einen Kommentar schreiben:


  • Dragonos2000
    antwortet
    Zitat von Astrafahrer Beitrag anzeigen

    Die Jalousie fährt nicht weil die Sperre am Schluss kommt und nicht als erster Befehl.
    Wie kann ich die Reihenfolge der Aktionen beeinflussen? Welche Logik steckt hinter der Abarbeitung?
    .
    Kannst Du am Aktor nicht einstellen, dass er nach dem Aufheben der Sperre in die letzte Automatikposition fährt? Wenn Du in der Zwischenzeit die Automatikobjekte neu beschrieben hast, dann gilt die zuletzt geschriebene Position.

    Natürlich was offline schreibt: Sicherheitsrelevante Funktion (in diesem Fall Sperre) direkt am Aktor setzen.

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Astrafahrer,

    sofern dein Jalousieaktor das hergibt, würde ich die Sperre bei geöffneter Türe direkt im Aktor setzen. Das ist in meinen Augen eine Sicherheitsfunktion, die von so wenigen Komponenten wie möglich abhängen sollte. Je nach Aktor (meiner kann das) wird werden während der gesetzten Sperre trotzdem Änderungen angenommen, aber nicht ausgeführt. Erst beim Lösen der Sperre im Aktor wird der letzte empfangene Wert umgesetzt.

    Wenn du es trotzdem komplett mit dem AutoBlind-Plugin realisieren willst, kannst du die Reihenfolge der Aktionen nicht direkt festlegen. Du kannst jedoch Aktionen verzögern. Das gibt dir die folgenden zwei Möglichkeiten:
    1. Du kannst einzelne Aktionen verzögern. Der kleinste Verzögerungsschritt ist dabei 1 Sekunde. Zum Verzögern siehe Doku auf GitHub
    2. Du teilst den Zustand in zwei Zustände auf. Ein erster Zustand der die Sperre löst, ein zweiter Zustand, der die Position anfährt. Den ersten Zustand stelltst du an den Anfang deiner Zustände und sorgst dafür, dass er nur durch das Schließen der Schiebetüre ausgelöst wird. (über eine trigger_item-Bedingung o. ä.). Als Aktion beendet dieser Zustand die Sperre des Jalousieaktors. Außerdem löst du mit diesem Zustand eine Neuermittlung des Status aus, indem du eine 1 auf das zugehörige Objekt-Item schreiben lässt (ggf. mit Verzögerung, s. o). Bei der Neuermittlung wird dann der gewünschte Zielstatus angesteuert, der die passenden Fahrbefehle schickt.

    Grüße
    offline

    Einen Kommentar schreiben:


  • Astrafahrer
    antwortet
    Hallo zusammen,
    ich brauche mal wieder eure Unterstützung. Wie kann ich bei mehreren as_set_item´s die Reihenfolge der Ausführung festlegen?
    Problem bei mir: Ich sende bei einem Zustandswechsel dem Jalousieaktor auch einen Entsperren - Befehl mit, nämlich wenn er vom Zustand "Schiebetüre offen" wieder in den normalen Nachtmodus geht. Leider wird der Befehl zur Entsperrung nach der Höhe und dem Winkel geschickt, obwohl in der Config der Befehl davor eingetragen ist.

    Ergebnis:
    Code:
    2016-04-21 21:26:14.196474 State can be entered
    2016-04-21 21:26:14.196630 Changing to EG.Essen.Jalousie_Sued_Schiebetuere.automatik.rules.Nacht ('Nacht')
    2016-04-21 21:26:14.197939       Action 'hoehe': Set 'EG.Essen.Jalousie_Sued_Schiebetuere.pos' to '100'
    2016-04-21 21:26:14.198638       Action 'suspend': Set 'EG.Essen.Jalousie_Sued_Schiebetuere.automatik.suspend' to 'False'
    2016-04-21 21:26:14.200636       Action 'lamelle': Set 'EG.Essen.Jalousie_Sued_Schiebetuere.angle' to '100'
    2016-04-21 21:26:14.201440       Action 'sperre': Set 'EG.Essen.Jalousie_Sued_Schiebetuere.sperre' to 'False'
    Die Jalousie fährt nicht weil die Sperre am Schluss kommt und nicht als erster Befehl.
    Wie kann ich die Reihenfolge der Aktionen beeinflussen? Welche Logik steckt hinter der Abarbeitung?

    Dankeschön.

    Einen Kommentar schreiben:


  • pino
    antwortet
    Ja die Ebene [EG] habe ich nicht vergessen habe sie nur hier bei diesem auszug nich dazu.
    Wie geschrieben die Log, da ist etwas, somit ist die .conf nicht stimmig.
    Das Problem ich finde des Rätzels lösung nicht.

    danke
    Gruß Edwin

    Einen Kommentar schreiben:


  • Tontechniker
    antwortet
    Eine ganz banale Frage: in beiden *.conf-Dateien fehlt "[EG]". Ist diese Ebene bei Dir in der conf vorhanden??
    Gruß
    Hans

    Einen Kommentar schreiben:


  • pino
    antwortet
    Hallo ich frage noch einmal Wer kann mir denn jetzt den entscheidenden Tipp geben. Habe die Anleitung durch ,habe auch anhand eines Beispiels die ganze Sache gemacht aber wieder mit keinem funktions fähigem ergebnis. Es wäre wirklich Nett wenn sich Einer mir annehmen Würde.
    Die Conf Datei ist das:
    [[EG_GWc]]
    sv_page = Raum
    [[[EGRoll_auf_ab]]]
    name=egaufab1
    type=bool
    knx_dpt=1
    visu_acl = rw
    knx_init=1/1/66
    knx_listen=1/1/66
    knx_send=1/1/66
    [[[[automatik]]]]
    type = foo
    name = AutoGwcaufab
    as_plugin = active
    cycle = 300
    as_item_height = EG.EG_GWc.EGRoll_auf_ab
    as_laststate_item_id = .state_id
    as_laststate_item_name = .state_name
    as_item_hoehe = EG.EG_GWc.EGRoll_auf_ab
    [[[[[state_id]]]]]
    type = str
    name = Id_auf_ab
    visu_acl = r
    cache = on
    [[[[[state_name]]]]]
    type = str
    name = auf_ab
    visu_acl = r
    cache = on
    [[[[[TagStatisch]]]]]
    name = Tag (statisch)
    type=foo
    as_set_height = value:0
    [[[[[[enter]]]]]]
    min_zeit = 8,0
    max_zeit = 17,30
    as_negate_time = True
    [[[[[[leave]]]]]]
    [[[[[DaemmerungAbends]]]]]
    name = Daemmerung Abends
    type=foo
    as_set_height = value:0
    #min_helligkeit = 200
    #max_helligkeit = 500
    [[[[[[enter]]]]]]
    min_zeit = 17,30
    max_zeit = 18,30
    [[[[[[leave]]]]]]
    [[[[[Nacht]]]]]
    type=foo
    name = Nacht
    as_set_height = value:1
    #max_helligkeit = 200
    [[[[[[enter]]]]]]
    min_zeit = 18,30
    max_zeit = 8,0
    as_negate_time = True
    [[[[[DaemmerungMorgens]]]]]
    name = Daemmerung Morgens
    type=foo
    as_set_height = value:1
    #min_helligkeit = 200
    #max_helligkeit = 500
    [[[[[[enter]]]]]]
    min_zeit = 8,0
    max_zeit = 8,30
    [[[[[[leave]]]]]]



    [[[EGRoll_la]]]
    name=egla
    type=num
    knx_dpt=5.001
    visu_acl = rw
    knx_init=1/1/67
    knx_listen=1/1/67
    knx_send=1/1/67
    enforce_updates = True
    knx_reply = 1/1/67
    [[[EGRoll_Wind]]]
    name=egwind
    type=num
    knx_dpt=5
    knx_init=1/1/68
    knx_listen=1/1/68
    knx_send
    visu_acl = rw
    [[[EGRoll_Posi]]]
    name=egposi
    type=num
    visu_acl=rw
    knx_dpt=5
    knx_init=1/1/204
    knx_listen=1/1/204
    knx_send=1/1/204
    [[[EGRoll_Farb]]]
    name=egfarb
    type=bool
    visu_acl=rw
    knx_dpt=1
    knx_init=1/1/205
    knx_listen=1/1/205
    knx_send

    und die Log ist diese:
    2016-04-01 17:18:58.499066 Initialize Item EG.EG_GWc.EGRoll_auf_ab.automatik ==============================
    2016-04-01 17:18:58.507737 Init state EG.EG_GWc.EGRoll_auf_ab.automatik.state_id
    2016-04-01 17:18:58.521230 Init state EG.EG_GWc.EGRoll_auf_ab.automatik.state_name
    2016-04-01 17:18:58.524059 Init state EG.EG_GWc.EGRoll_auf_ab.automatik.TagStatisch
    2016-04-01 17:18:58.541234 Init state EG.EG_GWc.EGRoll_auf_ab.automatik.DaemmerungAbends
    2016-04-01 17:18:58.551042 Init state EG.EG_GWc.EGRoll_auf_ab.automatik.Nacht
    2016-04-01 17:18:58.564296 Init state EG.EG_GWc.EGRoll_auf_ab.automatik.DaemmerungMorgen s
    2016-04-01 17:18:58.590944 Configuration of item AutoGwcaufab =============================================
    2016-04-01 17:18:58.592624 Startup Delay: 10
    2016-04-01 17:18:58.594122 Cycle: Inactive
    2016-04-01 17:18:58.595693 Cron: Inactive
    2016-04-01 17:18:58.597465 Trigger: Inactive
    2016-04-01 17:18:58.599068 Repeat actions if state is not changed: True
    2016-04-01 17:18:58.600606 Item 'Laststate Id': EG.EG_GWc.EGRoll_auf_ab.automatik.state_id
    2016-04-01 17:18:58.602100 Item 'Laststate Name': EG.EG_GWc.EGRoll_auf_ab.automatik.state_name
    2016-04-01 17:18:58.603783 State EG.EG_GWc.EGRoll_auf_ab.automatik.state_id:
    2016-04-01 17:18:58.605371 Name: Id_auf_ab
    2016-04-01 17:18:58.617254 State Name: Id_auf_ab
    2016-04-01 17:18:58.618963 State EG.EG_GWc.EGRoll_auf_ab.automatik.state_name:
    2016-04-01 17:18:58.620655 Name: auf_ab
    2016-04-01 17:18:58.622200 State Name: auf_ab
    2016-04-01 17:18:58.623864 State EG.EG_GWc.EGRoll_auf_ab.automatik.TagStatisch:
    2016-04-01 17:18:58.625429 Name: Tag (statisch)
    2016-04-01 17:18:58.637394 State Name: Tag (statisch)
    2016-04-01 17:18:58.638959 Condition sets to enter state:
    2016-04-01 17:18:58.640533 Condition Set 'enter':
    2016-04-01 17:18:58.642218 Condition sets to leave state:
    2016-04-01 17:18:58.643917 Condition Set 'leave':
    2016-04-01 17:18:58.645610 Actions to perform if state becomes active:
    2016-04-01 17:18:58.657786 Action 'height':
    2016-04-01 17:18:58.659582 item: EG.EG_GWc.EGRoll_auf_ab
    2016-04-01 17:18:58.661208 value: False
    2016-04-01 17:18:58.662886 State EG.EG_GWc.EGRoll_auf_ab.automatik.DaemmerungAbends :
    2016-04-01 17:18:58.664459 Name: Daemmerung Abends
    2016-04-01 17:18:58.665994 State Name: Daemmerung Abends
    2016-04-01 17:18:58.677813 Condition sets to enter state:
    2016-04-01 17:18:58.679395 Condition Set 'enter':
    2016-04-01 17:18:58.681085 Condition sets to leave state:
    2016-04-01 17:18:58.682647 Condition Set 'leave':
    2016-04-01 17:18:58.684462 Actions to perform if state becomes active:
    2016-04-01 17:18:58.686038 Action 'height':
    2016-04-01 17:18:58.698038 item: EG.EG_GWc.EGRoll_auf_ab
    2016-04-01 17:18:58.699752 value: False
    2016-04-01 17:18:58.701435 State EG.EG_GWc.EGRoll_auf_ab.automatik.Nacht:
    2016-04-01 17:18:58.702999 Name: Nacht
    2016-04-01 17:18:58.704539 State Name: Nacht
    2016-04-01 17:18:58.706058 Condition sets to enter state:
    2016-04-01 17:18:58.717832 Condition Set 'enter':
    2016-04-01 17:18:58.719560 Actions to perform if state becomes active:
    2016-04-01 17:18:58.721137 Action 'height':
    2016-04-01 17:18:58.722752 item: EG.EG_GWc.EGRoll_auf_ab
    2016-04-01 17:18:58.724464 value: True
    2016-04-01 17:18:58.726421 State EG.EG_GWc.EGRoll_auf_ab.automatik.DaemmerungMorgen s:
    2016-04-01 17:18:58.731977 Name: Daemmerung Morgens
    2016-04-01 17:18:58.733557 State Name: Daemmerung Morgens
    2016-04-01 17:18:58.735082 Condition sets to enter state:
    2016-04-01 17:18:58.736891 Condition Set 'enter':
    2016-04-01 17:18:58.738632 Condition sets to leave state:
    2016-04-01 17:18:58.740329 Condition Set 'leave':
    2016-04-01 17:18:58.742007 Actions to perform if state becomes active:
    2016-04-01 17:18:58.743586 Action 'height':
    2016-04-01 17:18:58.745198 item: EG.EG_GWc.EGRoll_auf_ab
    2016-04-01 17:18:58.747044 value: True
    2016-04-01 17:19:09.003102 Update state of item AutoGwcaufab ==============================================
    2016-04-01 17:19:09.004991 Update triggered by Startup Delay (item=EG.EG_GWc.EGRoll_auf_ab.automatik source=None dest=None)
    2016-04-01 17:19:09.008604 Last state: EG.EG_GWc.EGRoll_auf_ab.automatik.state_id ('Id_auf_ab')
    2016-04-01 17:19:09.010348 Check if state 'EG.EG_GWc.EGRoll_auf_ab.automatik.state_id' ('Id_auf_ab') can be left:
    2016-04-01 17:19:09.011967 No condition sets defined -> matching
    2016-04-01 17:19:09.013641 State can be left
    2016-04-01 17:19:09.015281 Check if state 'EG.EG_GWc.EGRoll_auf_ab.automatik.state_id' ('Id_auf_ab') can be entered:
    2016-04-01 17:19:09.017139 No condition sets defined -> matching
    2016-04-01 17:19:09.018947 State can be entered
    2016-04-01 17:19:09.020689 Staying at EG.EG_GWc.EGRoll_auf_ab.automatik.state_id ('Id_auf_ab')
    2016-04-01 17:23:58.078495 Update state of item AutoGwcaufab ==============================================
    2016-04-01 17:23:58.080250 Update triggered by Scheduler (item=EG.EG_GWc.EGRoll_auf_ab.automatik source=None dest=None)
    2016-04-01 17:23:58.083249 Last state: EG.EG_GWc.EGRoll_auf_ab.automatik.state_id ('Id_auf_ab')
    2016-04-01 17:23:58.084958 Check if state 'EG.EG_GWc.EGRoll_auf_ab.automatik.state_id' ('Id_auf_ab') can be left:
    2016-04-01 17:23:58.086940 No condition sets defined -> matching
    2016-04-01 17:23:58.088556 State can be left
    2016-04-01 17:23:58.090199 Check if state 'EG.EG_GWc.EGRoll_auf_ab.automatik.state_id' ('Id_auf_ab') can be entered:
    2016-04-01 17:23:58.091798 No condition sets defined -> matching
    2016-04-01 17:23:58.093355 State can be entered
    2016-04-01 17:23:58.095117 Staying at EG.EG_GWc.EGRoll_auf_ab.automatik.state_id ('Id_auf_ab')
    2016-04-01 17:28:58.241652 Update state of item AutoGwcaufab

    Ja und Ich weiß mir wirklich keinen Rat mehr, mir fehlt warscheinlich nur der entscheidende Tipp.

    Danke
    und hoffe auf Hilfe

    Einen Kommentar schreiben:


  • pino
    antwortet
    ja Ich weis ( lieblos ) bin verzweifelt weil ich keinen Kopf an die Sache bekomme. Wie geschrieben bin ich schon länger mit dem Rollladen geschichte am arbeiten und der Autoblind habe die ganze beschreibung und auch im forum schon fast alles gellesen und mir erarbeitet!!
    Nur leider komme ich nicht weiter (an das Ziel ) . Habe Busch Jaeger Powernet 6933 für vor Ort und möchte zeitgesteuert und Sonne mit einbeziehen für die auto fahren geschichte. Wie oben schon in der item.txt ist meine conf, je nach dem wie ich sie bearbeite sprich (state id, name ) weglasse fährt der rollladen runter und das sofort und nicht mehr hoch.Habe auch schon mit wie zusehen value 0, und so gearbeitet aber auch ohne wirkung.
    Somit gehe ich davon aus das ich zu Blöde bin mit der logic von autoblind.
    Vieleicht habe ich auch eine kleinigkeit übersehen. Auf jeden .. kann ich mir selber nicht mehr helfen und brauche eine Idee oder anregung oder jemand der meine txt mal bearbeitet so das Ich einen Kopf an die Sache bekomme. log Geschichte habe ich jetzt unten in der txt eingefügt.

    mfg

    Angehängte Dateien

    Einen Kommentar schreiben:


  • Dragonos2000
    antwortet
    Und welche Fehlermeldungen bekommst Du bzw. was funktioniert nicht??? Ein bischen lieblos, was Du uns da um die Ohren haust...
    Hast Du die Doku durchgearbeitet, denn bei Dir sind elementare Dinge nicht richtig/vollständig definiert...
    https://github.com/i-am-offline/smar...iki/Example-DE

    Einen Kommentar schreiben:


  • pino
    antwortet
    Hallo wer kann mir helfen, habe jetzt schon eine Zeit alles versucht aber immer wieder fehler bei autoblind mit smarthom.py.
    Weiß jetzt nicht mehr weiter wo der fehler in meiner Item conf liegt.
    Item.conf als anhang
    Danke im vorraus.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Danke für die Info, tatsächlich recht logisch
    Ich werde es dann entweder mal mit dem return_item testen oder notfalls doch hardcoden. Merci!

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy
    Zitat von Onkelandy Beitrag anzeigen
    Hi offline
    Vielen Dank für das Update.. Leider bekomme ich es noch nicht her, das Alter eines Items dadurch abzufragen.. Also das hier:
    Code:
    as_set_retrigger = eval: 1 if (autoblind_eval.get_relative_itemvalue('...warm.dimmen') >= 1 or autoblind_eval.get_relative_itemvalue('...kalt.dimmen') >= 1) and (autoblind_eval.get_relative_itemvalue('..autostate_name.age') <=4 or autoblind_eval.get_relative_itemvalue('..settings_edited.age') <=4) else 0
    bringt den Fehler: Can't convert 'ValueError' object to str implicitly.

    Und wenn ich
    Code:
    autoblind_eval.get_relative_itemid('..settings_edited').age()
    mache, gibt's auch ne Meldung bezüglich string. Gibt's da ne Möglichkeit, das Item-Alter irgendwie dennoch abzufragen außer halt explizit den Item-Namen zu nutzen?
    Die Methode autoblind_eval.get_relative_itemid liefert (wie der Name schon sagt) die Id eines Items als String. Wenn du daraus ein Item-Objekt machen möchtest, um z. B. auf das age des Items zuzugreifen, musst du die von sh.py dafür bereitgestellte Methode sh.return_item nutzen:
    Code:
    sh.return_item(autoblind_eval.get_relative_itemid('..settings_edited')).age()
    Hier stellt sich jedoch die Frage, wie häufig du das in deiner Konfiguration hast. Wenn es nur ein paar Stellen sind, würde ich auf get_relative_itemid verzichten und die Items in Python-schreibweise auschreiben. Das musst du dann zwar für jedes Auftreten individuell anpassen, es ist jedoch wesentlich übersichtlicher ...
    Code:
    sh.[...].settings_edited.age()
    Grüße
    offline

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi offline
    Vielen Dank für das Update.. Leider bekomme ich es noch nicht her, das Alter eines Items dadurch abzufragen.. Also das hier:
    Code:
    as_set_retrigger = eval: 1 if (autoblind_eval.get_relative_itemvalue('...warm.dimmen') >= 1 or autoblind_eval.get_relative_itemvalue('...kalt.dimmen') >= 1) and (autoblind_eval.get_relative_itemvalue('..autostate_name.age') <=4 or autoblind_eval.get_relative_itemvalue('..settings_edited.age') <=4) else 0
    bringt den Fehler: Can't convert 'ValueError' object to str implicitly.

    Und wenn ich
    Code:
    autoblind_eval.get_relative_itemid('..settings_edited').age()
    mache, gibt's auch ne Meldung bezüglich string. Gibt's da ne Möglichkeit, das Item-Alter irgendwie dennoch abzufragen außer halt explizit den Item-Namen zu nutzen?
    Zuletzt geändert von Onkelandy; 06.03.2016, 17:09.

    Einen Kommentar schreiben:


  • firefox
    antwortet
    Hab hier auch wieder mal einen kleinen Fehler:

    Code:
     State can be entered
    2016-03-02 23:23:31.402921 Changing to EG.Bad.Rollo.AutoBlind.Rules.suspend ('Ausgesetzt')
    2016-03-02 23:23:31.413423 Executing method 'insert_suspend_time(EG.Bad.Rollo.AutoBlind.State.suspended, Automatik ausgesetzt bis %X)'
    2016-03-02 23:23:31.420061 Problem evaluating 'autoblind_eval.insert_suspend_time('EG.Bad.Rollo.AutoBlind.State.suspended','Automatik ausgesetzt bis %X')': Can't convert 'ValueError' object to str implicitly.
    2016-03-02 23:23:31.422236       Action 'suspend': Set 'EG.Bad.Rollo.AutoBlind.State.suspended' to 'True'
    2016-03-02 23:23:31.437854 Update state of item Rolladenautomatik =========================================
    2016-03-02 23:23:31.439638 Update triggered by Eval (item=EG.Bad.Rollo.AutoBlind.Rules source=EG.Bad.Rollo.AutoBlind.State.suspended dest=None)
    2016-03-02 23:23:31.441346 Eval initially triggered by AutoBlind Plugin (item=EG.Bad.Rollo.AutoBlind.State.suspended source=None)
    2016-03-02 23:23:31.442890 Ignoring changes from AutoBlind Plugin
    2016-03-02 23:23:42.339655 Update state of item Rolladenautomatik =========================================
    2016-03-02 23:23:42.341301 Update triggered by Eval (item=EG.Bad.Rollo.AutoBlind.Rules source=EG.Zentral.Rollo.Trigger dest=None)
    2016-03-02 23:23:42.343199 Eval initially triggered by Scheduler (item=EG.Zentral.Rollo.Trigger source=None)
    2016-03-02 23:23:42.346535 Last state: EG.Bad.Rollo.AutoBlind.Rules.suspend ('Ausgesetzt')
    2016-03-02 23:23:42.356853 Check if state 'EG.Bad.Rollo.AutoBlind.Rules.suspend' ('Ausgesetzt') can be left:
    2016-03-02 23:23:42.358465       No condition sets defined -> matching
    2016-03-02 23:23:42.360009 State can be left
    2016-03-02 23:23:42.361807 Check if state 'EG.Bad.Rollo.AutoBlind.Rules.lock' ('Automatik manuell gesperrt') can be entered:
    2016-03-02 23:23:42.363481       Check condition set 'enter':
    2016-03-02 23:23:42.365580               Condition 'lock': value=True negate=False current=False
    2016-03-02 23:23:42.387085                       not OK -> not matching
    2016-03-02 23:23:42.388769 State can not be entered
    2016-03-02 23:23:42.390407 Check if state 'EG.Bad.Rollo.AutoBlind.Rules.suspend' ('Ausgesetzt') can be entered:
    2016-03-02 23:23:42.392126       Check condition set 'enter_manuell':
    2016-03-02 23:23:42.394685               Executing method 'get_relative_itemid(EG.Bad.Rollo.AutoBlind.State.manuell)'
    2016-03-02 23:23:42.457272               Condition 'trigger_source': value=EG.Bad.Rollo.AutoBlind.State.manuell negate=False current=EG.Zentral.Rollo.Trigger
    2016-03-02 23:23:42.487642                       not OK -> not matching
    2016-03-02 23:23:42.489451       Check condition set 'enter_stay':
    2016-03-02 23:23:42.491292               Condition 'suspend': value=True negate=False current=True
    2016-03-02 23:23:42.492837                       OK -> matching
    2016-03-02 23:23:42.494471               Age of 'suspend': No limits given
    2016-03-02 23:23:42.557413               Condition 'manuell': min=None max=None negate=False current=False
    2016-03-02 23:23:42.576670                       no limit given -> matching
    2016-03-02 23:23:42.579896               Age of 'manuell': min=None max=3600 negate=None current=95433.839955
    2016-03-02 23:23:42.581514                       to old -> not matching
    2016-03-02 23:23:42.583190 State can not be entered
    2016-03-02 23:23:42.584929 Check if state 'EG.Bad.Rollo.AutoBlind.Rules.night' ('Night') can be entered:
    2016-03-02 23:23:42.608130       Check condition set 'enter':
    2016-03-02 23:23:42.610048               Condition 'weekday': min=0 max=6 negate=False current=2
    2016-03-02 23:23:42.611704                       given limits ok -> matching
    2016-03-02 23:23:42.613333               Age of 'weekday': No limits given
    2016-03-02 23:23:42.615821               Condition 'time': min=06:00:00 max=22:00:00 negate=True current=23:23:42.530813
    2016-03-02 23:23:42.657146                       given limits ok -> matching
    2016-03-02 23:23:42.658783               Age of 'time': No limits given
    2016-03-02 23:23:42.660532               Condition 'daynight': value=False negate=False current=True
    2016-03-02 23:23:42.662192                       not OK -> not matching
    2016-03-02 23:23:42.663869 State can not be entered
    2016-03-02 23:23:42.696210 Check if state 'EG.Bad.Rollo.AutoBlind.Rules.morning' ('Twilight in the morning') can be entered:
    2016-03-02 23:23:42.727062       Check condition set 'enter_workday':
    2016-03-02 23:23:42.729017               Condition 'sun_altitude': min=0 max=5 negate=False current=-43.512884654819715
    2016-03-02 23:23:42.730668                       to low -> not matching
    2016-03-02 23:23:42.732353       Check condition set 'enter_stay':
    2016-03-02 23:23:42.734110               Condition 'precenceId': value=EG.Zentral.Status.AutoBlind.Rules.Present negate=False current=EG.Zentral.Status.AutoBlind.Rules.Present
    2016-03-02 23:23:42.801876                       OK -> matching
    2016-03-02 23:23:42.803637               Age of 'precenceId': No limits given
    2016-03-02 23:23:42.805846               Condition 'laststate': value=EG.Bad.Rollo.AutoBlind.Rules.morning negate=False current=EG.Bad.Rollo.AutoBlind.Rules.suspend
    2016-03-02 23:23:42.826568                       not OK -> not matching
    2016-03-02 23:23:42.828247       Check condition set 'enter_weekend':
    2016-03-02 23:23:42.830128               Condition 'sun_altitude': min=0 max=5 negate=False current=-43.512884654819715
    2016-03-02 23:23:42.831716                       to low -> not matching
    2016-03-02 23:23:42.833507 State can not be entered
    2016-03-02 23:23:42.835710 Check if state 'EG.Bad.Rollo.AutoBlind.Rules.evening' ('Twilight in the evening') can be entered:
    2016-03-02 23:23:42.877953       Check condition set 'enter_maxtime':
    2016-03-02 23:23:42.879970               Condition 'time': min=21:30:00 max=None negate=False current=23:23:42.530813
    2016-03-02 23:23:42.881690                       given limits ok -> matching
    2016-03-02 23:23:42.883324               Age of 'time': No limits given
    2016-03-02 23:23:42.884932 State can be entered
    2016-03-02 23:23:42.918691 Changing to EG.Bad.Rollo.AutoBlind.Rules.evening ('Twilight in the evening')
    2016-03-02 23:23:43.043429       Action 'suspend': Set 'EG.Bad.Rollo.AutoBlind.State.suspended' to 'False'
    2016-03-02 23:23:43.065342       Action 'height': Set 'EG.Bad.Rollo.Pos' to '75'
    2016-03-02 23:23:44.338377 Update state of item Rolladenautomatik =========================================
    2016-03-02 23:23:44.340056 Update triggered by Eval (item=EG.Bad.Rollo.AutoBlind.Rules source=EG.Bad.Rollo.AutoBlind.State.suspended dest=None)
    2016-03-02 23:23:44.341734 Eval initially triggered by AutoBlind Plugin (item=EG.Bad.Rollo.AutoBlind.State.suspended source=None)
    2016-03-02 23:23:44.343241 Ignoring changes from AutoBlind Plugin
    Und dann noch eine Frage dazu. Nach Auslösen des manuellen Fahrbefehls springt AUtoblind in den suspended Status. Allerdings fällt er beim nächsten Trigger wieder zurück, da Age of manuell nicht zurückgesetzt wird. Dein Tipp von oben hatte ich zeitweise eingebaut und das hat auch geklappt.

    Folgende Variante müsste doch aber auch genügen oder?

    Code:
    [[[[[[manuell]]]]]]
                            type = bool
                            name = Manuelle Bedienung
                            eval_trigger = EG.Bad.Rollo.Move | EG.Bad.Rollo.Stop
                            enforce_updates = True
                            as_manual_exclude = KNX:1.2.6 | Init:*

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy


    Zitat von Onkelandy Beitrag anzeigen
    Jetzt hatte ich gerade ein seltsames Phänomen bezüglich "Init" und "Manual Item". Plötzlich nach ca. 10 Minuten seit Smarthome-Start schaltete mein Licht für einige Zeit in den Suspend Mode, da offenbar das manuell-Item geändert wurde. Vielleicht reicht das Log hier als Beweis

    [...]

    Das "böse" Item hat die GA 3/0/29
    Hast du mal geschaut, welchem Item diese GA zugewiesen ist? Die Meldung "Eval initially triggered by Init" ist, wie wir bei deinem letzten Problem gelernt haben, nicht sehr aussagekräftig. Sie sagt eigentlich nur aus, dass das genannte Item seit dem Start nicht verändert wurde, wobei der Trigger ggf. auch erfolgt, wenn ein unveränderter Wert zum Item geschrieben wird.

    Zitat von Onkelandy Beitrag anzeigen
    Noch eine andere Frage. Gibt es irgendeine Möglichkeit, deine speziellen Funktionen mit den klassischen sh-Funktionen/Abfragen in einem eval zu kombinieren?
    Was ich möchte:
    Code:
    as_set_retrigger = eval: 1 if autoblind_eval.get_relative_itemid('..settings.suspendduration')[B].age()[/B]
    Hauptidee wäre, einen Wert nur dann zu setzen, wenn ein relatives Item gerade erst geändert wurde. Die anderen Werte sollen aber immer gesetzt werden, sodass hier ein Anpassen der enter-Bedingungen keinen Sinn machen würde.

    Mittels Hardcoding oder einer Logik wäre das sicher lösbar, aber vielleicht geht es sogar direkt in der Itemdefinition? Derzeit heißt es nur "name 'autoblind_eval' is not defined."
    Eine autoblind_eval-Instanz wurde bisher nur erzeugt, wenn der Eval-String mit "autoblind_eval" begonnen hat. Für die einfachen Funktionen war das auch ausreichend, für deine Funktion hier aber nicht. Ich habe das geändert, so dass die Instanz nun erzeugt wird, sobald der Eval-String "autoblind_eval" enthält. Push auf GitHub ist erfolgt.

    Grüße
    offline

    Einen Kommentar schreiben:

Lädt...
X