Kreuzschaltung mit Shelly 2.5

  • Hallo, habe eine Kreuzschaltung mit Shelly 2.5 und Openhab umgesetzt.
    die Verkabelung sieht ähnlich aus wie in dem unten beschriebenen Post, nur auf Shelly Eingänge übersetzt:

    https://l.facebook.com/l.php?u=https%…QavZrtElmKJbGts

    Nun zu der "Rule". Diese ist in drei Teile unterteilt.

    1. die Vorbereitung, dass sich der Shelly als Kreuzschalter schalten lässt. Dabei muss ein Switch Immer auf "aus" und einer auf an stehen: "//Kreuzschalter für ON/OFF vorbereiten ein Schalter immer an"

    2. Mit der oben beschriebenen Vorbereitung ist der physische Status der Lampe über die eine APP nicht sehbar; ob die Lampe brennt oder nicht. Dieses wird mit dem zweiten Teil der Rule erledigt, in dem an einen virtuellen Schalter in diesem Fall C_Stairwell_Light anlegt, der nachher der Schalter für die Lampe in der APP wird:" //Kreuzschalter virtueller Status"

    3. Zuletzt soll der "virtuelle" Schalter in der "APP" (C_Stairwell_Light) der IO Schalter werden, die direkte Verknüpfung zum Shelly wird nicht mehr dargestellt: "// Schalten mit virtuellen Kreuzschalter"

    Unten stehen neben den "rules" auch die "Items" und die "sitemap", die Ihr für Euren OpenHab braucht, natürlich mit Eurer eigenen Namenskonvention:

    rules:

    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////
    //Kreuzschalter für ON/OFF vorbereiten ein Schalter immer an
    rule "Kreuzschaltung physisch 1"
    when Item C_Stairwell_Light1 changed
    then
    if ((C_Stairwell_Light1.state==ON)) {
    sendCommand(C_Stairwell_Light2, OFF)
    postUpdate(C_Stairwell_Light2, OFF)}
    else if ((C_Stairwell_Light1.state==OFF)){
    sendCommand(C_Stairwell_Light2, ON)
    postUpdate(C_Stairwell_Light2, ON)}
    end

    rule "Kreuzschaltung physisch 2"
    when Item C_Stairwell_Light2 changed
    then
    if ((C_Stairwell_Light2.state==ON)) {
    sendCommand(C_Stairwell_Light1, OFF)
    postUpdate(C_Stairwell_Light1, OFF)}
    else if ((C_Stairwell_Light2.state==OFF)){
    sendCommand(C_Stairwell_Light1, ON)
    postUpdate(C_Stairwell_Light1, ON)}
    end
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////
    //Kreuzschalter virtueller Status
    rule "Kreuzschaltung-Status virtuell an"
    when Item C_Stairwell_Light1_Watt changed or
    Item C_Stairwell_Light2_Watt changed

    then

    if (C_Stairwell_Light1_Watt.state >=2.0 && C_Stairwell_Light2_Watt.state <=2.0)
    (C_Stairwell_Light1_Watt.state <=2.0 && C_Stairwell_Light2_Watt.state >=2.0)

    postUpdate (C_Stairwell_Light, ON)
    end

    rule "Kreuzschaltung-Status virtuell aus"
    when Item C_Stairwell_Light1_Watt changed or
    Item C_Stairwell_Light2_Watt changed

    then

    if (C_Stairwell_Light1_Watt.state <=2.0 && C_Stairwell_Light2_Watt.state <=2.0)

    postUpdate (C_Stairwell_Light, OFF)

    end
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////
    // Schalten mit virtuellen Kreuzschalter
    rule "virtueller Kreuzschalter an"
    when Item C_Stairwell_Light received command ON

    then if (C_Stairwell_Light1.state == ON)
    C_Stairwell_Light1.sendCommand(OFF)

    if (C_Stairwell_Light1.state == OFF)
    C_Stairwell_Light1.sendCommand(ON)

    end

    rule "virtueller Kreuzschalter aus"
    when Item C_Stairwell_Light received command OFF

    then if (C_Stairwell_Light1.state == ON)
    C_Stairwell_Light1.sendCommand(OFF)

    if (C_Stairwell_Light1.state == OFF)
    C_Stairwell_Light1.sendCommand(ON)

    end

    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////


    Items:

    Switch C_Stairwell_Light1 "Kellertreppe physisch1" <light> (C_Stairwell) ["Switch", "Switchable"] {channel="shelly:shelly25-relay:XXXXXX:relay1#output"}
    Switch C_Stairwell_Light2 "Kellertreppe physisch2" <light> (C_Stairwell ["Switch", "Switchable"] {channel="shelly:shelly25-XXXXXX:relay2#output"}
    Number C_Stairwell_Light1_Watt "Kellertreppe" <switch> (gLightStair_Watt) {channel="shelly:shelly25-relay:XXXXXX:meter1#currentWatts"}
    Number C_Stairwell_Light2_Watt "Kellertreppe" <switch> (gLightStair_Watt) {channel="shelly:shelly25-relay:XXXXX:meter2#currentWatts"}
    Switch C_Stairwell_Light "Kellertreppe" <light> (C_Stairwell, gLight, gStairwell)


    Sitemap:

    Default item=C_Stairwell_Light