Hi,
angeregt durch diesen Beitrag im Beschattungsthread wollte ich mal mit einem "How I did it" beginnen...
Das Beispiel soll zeigen, wie man einen State-Shifter realisiert, also z.B. mit einem Schalter durch 4 Lampen durchschaltet, wobei bei jedem click die nächste Lampe an geht. Konzeptionell zeigt das, wie man von einem Zustand in den nächsten wechseln kann und die Zustände werden durch eine 1 auf einem "ToggleState"-Item weitergeschaltet.
Grundidee: Bei einer 1 auf "NextState" wird im Autoblind ein State angesprungen, der einen Zustandsübergang repräsentiert. Dieser setzt einen "ShifterState" auf den nächsten Zustand und "NextState" wieder auf 0. Diese 0 führt dazu, das der nächste Zustand eigentlich angesprungen wird und all die set_* ausführt, die eigentlich geschaltet werden sollen.
Hoffe, es hilft jemandem,
Gruß, Waldemar
angeregt durch diesen Beitrag im Beschattungsthread wollte ich mal mit einem "How I did it" beginnen...
Das Beispiel soll zeigen, wie man einen State-Shifter realisiert, also z.B. mit einem Schalter durch 4 Lampen durchschaltet, wobei bei jedem click die nächste Lampe an geht. Konzeptionell zeigt das, wie man von einem Zustand in den nächsten wechseln kann und die Zustände werden durch eine 1 auf einem "ToggleState"-Item weitergeschaltet.
Grundidee: Bei einer 1 auf "NextState" wird im Autoblind ein State angesprungen, der einen Zustandsübergang repräsentiert. Dieser setzt einen "ShifterState" auf den nächsten Zustand und "NextState" wieder auf 0. Diese 0 führt dazu, das der nächste Zustand eigentlich angesprungen wird und all die set_* ausführt, die eigentlich geschaltet werden sollen.
Hoffe, es hilft jemandem,
Gruß, Waldemar
Code:
[Test]
[[Decke]]
#wird vom Shifter geschaltet
[[Spuele]]
#wird vom Shifter geschaltet
[[Innen]]
#wird vom Shifter geschaltet
[[Aussen]]
#wird vom Shifter geschaltet
[[NextState]]
name = Input für Shifter, bei 1 geht es zum nächsten State
type = bool
visu_acl = rw
knx_dpt = 1
knx_cache = 5/0/27
knx_send = 5/0/27
[[AutoBlind]]
[[[State]]]
[[[[ShifterState]]]]
type = num
name = Speichert den Shifter-State
cache = True
[[[[active]]]]
type = bool
value = True
[[[[stateId]]]]
type = str
cache = True
visu_acl = ro
[[[[stateName]]]]
type = str
cache = True
visu_acl = ro
[[[Rules]]]
autoblind_plugin = active
item_active = Test.AutoBlind.State.active
item_state_id = Test.AutoBlind.State.stateId
item_state_name = Test.AutoBlind.State.stateName
type = bool
item_State = Test.AutoBlind.State.ShifterState
item_Next = Test.NextState
item_Decke = Test.Decke
item_Aussen = Test.Aussen
item_Innen = Test.Innen
item_Spuele = Test.Spuele
eval_trigger = Test.NextState
[[[[Aus]]]]
name = Ausgeschaltet
type = foo
set_Decke = value:0
set_Aussen = value:0
set_Innen = value:0
set_Spuele = value:0
[[[[[enter]]]]]
value_State = 0
value_NextState = False
[[[[AusSpuele]]]]
name = Übergang Ausgeschaltet->Spuele
type = foo
set_NextState = value:0
set_State = value:1
[[[[[enter]]]]]
value_State = 0
value_NextState = True
[[[[Spuele]]]]
name = Spuele
type = foo
set_Decke = value:0
set_Aussen = value:0
set_Innen = value:0
set_Spuele = value:1
[[[[[enter]]]]]
value_State = 1
value_NextState = False
[[[[SpueleAussen]]]]
name = Übergang Spuele->Aussen
type = foo
set_NextState = value:0
set_State = value:2
[[[[[enter]]]]]
value_State = 1
value_NextState = True
[[[[Aussen]]]]
name = Aussen
type = foo
set_Decke = value:0
set_Aussen = value:1
set_Innen = value:0
set_Spuele = value:0
[[[[[enter]]]]]
value_State = 2
value_NextState = False
[[[[AussenInnen]]]]
name = Übergang Aussen->Innen
type = foo
set_NextState = value:0
set_State = value:3
[[[[[enter]]]]]
value_State = 2
value_NextState = True
[[[[Innen]]]]
name = Innen
type = foo
set_Decke = value:0
set_Aussen = value:0
set_Innen = value:1
set_Spuele = value:0
[[[[[enter]]]]]
value_State = 3
value_NextState = False
[[[[InnenDecke]]]]
name = Übergang Innen->Decke
type = foo
set_NextState = value:0
set_State = value:4
[[[[[enter]]]]]
value_State = 3
value_NextState = True
[[[[Decke]]]]
name = Decke
type = foo
set_Decke = value:1
set_Aussen = value:0
set_Innen = value:0
set_Spuele = value:0
[[[[[enter]]]]]
value_State = 4
value_NextState = False
[[[[DeckeAus]]]]
name = Übergang Decke->Ausgeschaltet
type = foo
set_NextState = value:0
set_State = value:0
[[[[[enter]]]]]
value_State = 4
value_NextState = True


Kommentar