Ich mach es ganz kurz
Code: Alles auswählen
...
var MeinItemName = "Esszimmer_Lampe_01_Brightness"
var ItemState = (MeinItemName).state
...
Danke
Torsten
Code: Alles auswählen
...
var MeinItemName = "Esszimmer_Lampe_01_Brightness"
var ItemState = (MeinItemName).state
...
Code: Alles auswählen
...
var MeinItemName = "Esszimmer_Lampe_01_Brightness"
var ItemState = gGroupItem.members.filter[i|i.name == MeinItemName].head.state
...
Code: Alles auswählen
Group gScenes "Szenen"
Group gScenesStore "Szenen Sichern"
Group gScenesExecute "Szenen Ausführen"
Group gScenesItems "Szenen Items"
Code: Alles auswählen
// "Szene Morgen"
Group SceneMorgen "Szene Morgen - Konfiguration" (gScenes)
// Switch zum Sichern der "Szene Morgen"
Switch SceneMorgen_Store "Szene Morgen - Sichern" (gScenesStore) ["Switchable"]
// Switch zum Ausführen der "Szene Morgen"
Switch SceneMorgen_Execute "Szene Morgen - Ausführen" (gScenesExecute) ["Switchable"] {ga="Switch"[name="Morgen", roomHint="Szenen"]}
// Items der "Szene "Morgen", welche die States für die auszuführenden Items sichern
Dimmer SceneMorgen_Esszimmer_Lampe_01_Brightness "Szene Morgen - Esszimmer Licht Helligkeit" (SceneMorgen, gScenesItems)
Switch SceneMorgen_Bar_Steckdose_02_Control "Szene Morgen - Bartisch Steckdose" (SceneMorgen, gScenesItems)
Dimmer SceneMorgen_Wohnzimmer_Lampe_05_Brightness "Szene Morgen - Wohnzimmer Stehlampe oben" (SceneMorgen, gScenesItems)
Dimmer SceneMorgen_Wohnzimmer_Lampe_06_Brightness "Szene Morgen - Wohnzimmer Stehlampe unten" (SceneMorgen, gScenesItems)
Dimmer SceneMorgen_Bar_Lampe_01_Brightness "Szene Morgen - Bar Deckenlicht Helligkeit" (SceneMorgen, gScenesItems)
Switch SceneMorgen_Flur_Schalter_01_Control "Szene Morgen - Flur Deckenlicht" (SceneMorgen, gScenesItems)
Code: Alles auswählen
rule "Szene ausführen"
when
Member of gScenesExecute received command ON
then
// Stand: 18.12.2023
// Führt die Szene aus, indem die Item-States in den SceneItems gesicherten werden
// SceneMorgen_Esszimmer_Lampe_01_Control wurde als Scene-Item ermittelt, soll also einen
// Wert sichern. Daraus ergibt sich auch das "State"-Item, von welchem der Wert gesichert
// werden soll
//
// Esszimmer_Lampe_01_Control => SceneMorgen_Esszimmer_Lampe_01_Control
val String SceneName = triggeringItem.name.split("_").get(0)
val Integer SceneNameLength = SceneName.length
// logInfo("Szene(e) ausführen", "SceneName \"{}\" ", SceneName)
gScenesItems.members.filter[ i | i.name.split("_").get(0) == SceneName ].forEach[ i |
val ItemName = i.name.substring(SceneNameLength + 1)
// logInfo("Szene ausführen", "ItemName \"{}\" ", ItemName)
if (i.state !== NULL) {
(ItemName).sendCommand(i.state.toString)
}
]
triggeringItem.postUpdate(OFF)
end
Code: Alles auswählen
rule "Szene sichern"
when
Member of gScenesStore received command ON
then
// Sichert die einzelnen Werte der Items, welche zu dieser Szene gehören
// Diese können auch in der UI manuell angepasst werden.
// Der SzeneName wird aus Stringlänge "SceneMorgenConfig" ermittelt => "SceneMorgen"
val String SceneName = triggeringItem.name.split("_").get(0)
val Integer SceneNameLength = SceneName.length
// logInfo("Szene(e) sichern", "SceneName \"{}\" ", SceneName)
// Durchläuft alle SceneItems, welche einen Item-Wert sichern sollen.
// "SceneMorgen_Esszimmer_Lampe_01_Brightness", sichert den State von
// "Esszimmer_Lampe_01_Brightnes"
gScenesItems.members.filter[ i | i.name.split("_").get(0) == SceneName ].forEach[ i |
// Generiert den zu sichernden Item-Name
val ItemName = i.name.substring(SceneNameLength + 1)
// logInfo("Szene(e) sichern", "ItemName zu sichern \"{}\" ", ItemName)
// Ermittelt das Item (aus dem kompletten Model)
var ItemState = Grundstueck.allMembers.filter[ y | y.name == ItemName].head.state
if (ItemState !== NULL) {
(i.name).sendCommand(ItemState.toString)
}
]
triggeringItem.postUpdate(OFF)
end
Das war vielleicht ein wenig flapsig