Seite 1 von 1

sendCommand(Item.state) nicht mehr möglich

Verfasst: 25. Nov 2024 14:40
von Quautiputzli
Ich hatte im OH3 die folgende rule:

Code: Alles auswählen

rule "xmas"
when 
    Item xmas_Light changed
then
    Plug_2_shellyplug25_1_Relay_1.sendCommand(xmas_Light.state)
    shellyswitch11_output1.sendCommand(xmas_Light.state)
    moesswitch1_2.sendCommand(xmas_Light.state)
    Fritz_Repeater_Stromstecker_switch.sendCommand(xmas_Light.state)
end
Diese funktioniert nun im OH nicht mehr. Ich habe es nun abgeändert in:

Code: Alles auswählen

rule "xmas"
when 
    Item xmas_Light changed
then
    if (xmas_Light.state == ON) {
        Plug_2_shellyplug25_1_Relay_1.sendCommand(ON)
        shellyswitch11_output1.sendCommand(ON)
        moesswitch1_2.sendCommand(ON)
        Fritz_Repeater_Stromstecker_switch.sendCommand(ON)
    }
    else {
        Plug_2_shellyplug25_1_Relay_1.sendCommand(OFF)
        shellyswitch11_output1.sendCommand(OFF)
        moesswitch1_2.sendCommand(OFF)
        Fritz_Repeater_Stromstecker_switch.sendCommand(OFF)
    }
end
Das finde ich etwas unelegant. geht das wirklich nicht mehr so wie früher?

Re: sendCommand(Item.state) nicht mehr möglich

Verfasst: 25. Nov 2024 17:42
von mad-mike
Moin, ich kann dir zu deiner rule nix sagen, jedoch habe ich bei mir diese ganze Item in eine Gruppe gepackt, wo ich mit einer Rule bzw Event nur diese Gruppe aktiviere bzw deaktiviere...

Ist dir sowas sympathischer?

Re: sendCommand(Item.state) nicht mehr möglich

Verfasst: 25. Nov 2024 19:28
von mad-mike
Ich habe gerade noch mal die betitelung in deiner rule gelesen. "Xmas".

Mein Beispiel oben habe ich mit mehreren Steckdosen in einer Gruppe realisiert.

Mein Xmas Beleuchtung habe ich anders umgesetzt:

Aktuell schaltet eine (Astro) rule ein Item (Switch) und ich habe alle (Xmas) Aktoren mit diesen (Astro) Item verlinkt und dann auf das Profil folgen geklickt.

Alle verknüpften Aktoren folgen nun dem Astro Switch.
Ich habe dieses Jahr für den Außenbereich noch eine Steckdose erweitert und musste nur die Verknüpfung erstellen und auf folgen drücken, fertig.

Re: sendCommand(Item.state) nicht mehr möglich

Verfasst: 26. Nov 2024 01:37
von udo1toni
Ob das so elegant ist, sei mal dahin gestellt, aber die Lösung heißt hier .toString. Ob der Menge der Items böte sich tatsächlich entweder eine Gruppe an, oder zumindest eine optimierte Rule:

Code: Alles auswählen

rule "xmas"
when 
    Item xmas_Light changed
then
    val soll = newState.toString
    Plug_2_shellyplug25_1_Relay_1.sendCommand(soll)
    shellyswitch11_output1.sendCommand(soll)
    moesswitch1_2.sendCommand(soll)
    Fritz_Repeater_Stromstecker_switch.sendCommand(soll)
end
Variante mit einem GroupItem gXmasLights:

Code: Alles auswählen

rule "xmas"
when 
    Item xmas_Light changed
then
    gXmasLights.members.forEach[i|
        i.sendCommand(newState.toString)
    ]
end
wobei alle zu schaltenden Lichter der Gruppe gXmasLights zugeordnet sein sollten. :)
Es ginge sogar

Code: Alles auswählen

rule "xmas"
when 
    Item xmas_Light changed
then
    gXmasLights.sendCommand(newState.toString)
end
Eventuell wäre es außerdem besser, statt auf changed lieber auf received command zu triggern. sieht dann so aus:

Code: Alles auswählen

rule "xmas"
when 
    Item xmas_Light received command
then
    gXmasLights.sendCommand(receivedCommand)
end

Re: sendCommand(Item.state) nicht mehr möglich

Verfasst: 26. Nov 2024 07:35
von Quautiputzli
Danke,
dann werde ich mir das mal ansehen. Es geht mir vor allem auch darum, alle meine rules durchzusehen, die ja mit OH3 noch funktionierten, ob diese Schreibweise nochmal vorkommt.