Homematic thermostat window state from Aqara contact sensor using "follow profile" possible?

I’m trying to receive the window state in the Homematic IP thermostats by an Aqara/Xiaomi window contact sensor. It is working perfectly with the following rule.
But I don’t understand why I can’t set it up easier with a 2nd channel on the Aqara contact item in the “follow profile” as described here:

This would be sone much easier then writing rules which handle every window contact.

The follow profile essentially listens for state changes of an openHAB Item and converts to commands on the selected channel (for forwarding to a device).
Since OPEN/CLOSED are not valid openHAB commands, I would not expect it to work well.

1 Like

@helipus could you please share your rule …actually I’m switching all my thermostats to HM IP and wanted to use mine aqara window sensors :slight_smile:

thnx

Hi @msty,
thats quiet a challenge. If I open a window there happends so much in my rules. :slight_smile:
Well I try to make it simple. All my Items have a strict naming structure so I only need one rule for everything doesn’t matter how many door or window sensors I have. I still can decide individually for every room what should happen.

Items for windows some examples:

Group:Contact:OR(OPEN,CLOSED)   Oeffnungen                                          "Öffnungen Fenster & Türen"                         <window>        (Zustandsgruppen)                                           ["Window"]
Group:Number:SUM                OffenNum                                            "Anzahl offene Fenster & Türen"                     <window>        (Zustandsgruppen)                                           ["Point"]

Group:Contact:OR(OPEN,CLOSED)   Fenster                                             "Fenster"                                           <window>        (Zustandsgruppen)                                           ["Window"]
Group:Number:SUM                FensterOffenNum                                     "Anzahl offene Fenster"                             <window>        (Zustandsgruppen,OffenNum)                                  ["Point"]



Group:Contact:OR(OPEN,CLOSED)   OC_Abstellraum                                      "Open-Close Abstellraum"                            <window>        (Oeffnungen)                                                ["Point"]
Group:Contact:OR(OPEN,CLOSED)   Fenster_Abstellraum                                 "Fenster Abstellraum"                               <window>        (Abstellraum)                                               ["Equipment"]
Group:Contact:OR(OPEN,CLOSED)   Fenster_Abstellraum_West                            "Fenster Abstellraum West"                          <window>        (Fenster_Abstellraum)                                       ["Window"]
Contact                         Fenster_Abstellraum_West_Zustand                    "Zustand Fenster Abstellraum West"                  <window>        (OC_Abstellraum,Fenster,FensterOffenNum,Fenster_Abstellraum_West)        ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d000911f6bf010006:open"}
Number:ElectricCharge           Fenster_Abstellraum_West_Batterieladung             "Batterieladung Fenster Abstellraum West"           <batterylevel>  (Batterieladungen, Fenster_Abstellraum_West)                ["Measurement","Voltage"]   {channel="deconz:openclosesensor:bridge:00158d000911f6bf010006:battery_level"}
DateTime                        Fenster_Abstellraum_West_LetztesUpdate              "Letztes Update Fenster Abstellraum West"           <time>          (Fenster_Abstellraum_West)                                  ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d000911f6bf010006:last_updated"}

Group:Contact:OR(OPEN,CLOSED)   OC_Arbeitszimmer                                    "Open-Close Arbeitszimmer"                          <window>        (Oeffnungen)                                                ["Point"]
Group:Contact:OR(OPEN,CLOSED)   Fenster_Arbeitszimmer                               "Fenster Arbeitszimmer"                             <window>        (Arbeitszimmer)                                             ["Equipment"]
Group:Contact:OR(OPEN,CLOSED)   Fenster_Arbeitszimmer_West                          "Fenster Arbeitszimmer West"                        <window>        (Fenster_Arbeitszimmer)                                     ["Equipment"]
Group:Contact:OR(OPEN,CLOSED)   Fenster_Arbeitszimmer_West_Rechts                   "Fenster Arbeitszimmer West Rechts"                 <window>        (Fenster_Arbeitszimmer_West)                                ["Window"] 
Contact                         Fenster_Arbeitszimmer_West_Rechts_Zustand           "Zustand Fenster Arbeitszimmer West Rechts"         <window>        (OC_Arbeitszimmer,Fenster,FensterOffenNum,Fenster_Arbeitszimmer_West_Rechts)["Point"]                {channel="deconz:openclosesensor:bridge:00158d000911f862010006:open"}
Number:ElectricCharge           Fenster_Arbeitszimmer_West_Rechts_Batterieladung    "Batterieladung Fenster Arbeitszimmer West Rechts"  <batterylevel>  (Batterieladungen, Fenster_Arbeitszimmer_West_Rechts)       ["Measurement","Voltage"]   {channel="deconz:openclosesensor:bridge:00158d000911f862010006:battery_level"}
DateTime                        Fenster_Arbeitszimmer_West_Rechts_LetztesUpdate     "Letztes Update Fenster Arbeitszimmer West Rechts"  <time>          (Fenster_Arbeitszimmer_West_Rechts)                         ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d000911f862010006:last_updated"}

Group:Contact:OR(OPEN,CLOSED)   OC_Badezimmer                                       "Open-Close Badezimmer"                             <window>        (Oeffnungen)                                                ["Point"]
Group:Contact:OR(OPEN,CLOSED)   Fenster_Badezimmer                                  "Fenster Badezimmer"                                <window>        (Badezimmer)                                                ["Equipment"]
Group:Contact:OR(OPEN,CLOSED)   Fenster_Badezimmer_West                             "Fenster Badezimmer West"                           <window>        (Fenster_Badezimmer)                                        ["Window"]
Contact                         Fenster_Badezimmer_West_Zustand                     "Zustand Fenster Badezimmer West"                   <window>        (OC_Badezimmer, Fenster,FensterOffenNum,Fenster_Badezimmer_West)          ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d00091a6980010006:open"}
Number:ElectricCharge           Fenster_Badezimmer_West_Batterieladung              "Batterieladung Fenster Badezimmer West"            <batterylevel>  (Batterieladungen, Fenster_Badezimmer_West)                 ["Measurement","Voltage"]   {channel="deconz:openclosesensor:bridge:00158d00091a6980010006:battery_level"}
DateTime                        Fenster_Badezimmer_West_LetztesUpdate               "Letztes Update Fenster Badezimmer West"            <time>          (Fenster_Badezimmer_West)                                   ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d00091a6980010006:last_updated"}
Group:Contact:OR(OPEN,CLOSED)   Fenster_Badezimmer_Nord                             "Fenster Badezimmer Nord"                           <window>        (Fenster_Badezimmer)                                        ["Equipment"]
Group:Contact:OR(OPEN,CLOSED)   Fenster_Badezimmer_Nord_Rechts                      "Fenster Badezimmer Nord Rechts"                    <window>        (Fenster_Badezimmer_Nord)                                   ["Window"] 
Contact                         Fenster_Badezimmer_Nord_Rechts_Zustand              "Zustand Fenster Badezimmer Nord Rechts"            <window>        (OC_Badezimmer,Fenster,FensterOffenNum,Fenster_Badezimmer_Nord_Rechts)   ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d000911e956010006:open"}
Number:ElectricCharge           Fenster_Badezimmer_Nord_Rechts_Batterieladung       "Batterieladung Fenster Badezimmer Nord Rechts"     <batterylevel>  (Batterieladungen, Fenster_Badezimmer_Nord_Rechts)          ["Measurement","Voltage"]   {channel="deconz:openclosesensor:bridge:00158d000911e956010006:battery_level"}
DateTime                        Fenster_Badezimmer_Nord_Rechts_LetztesUpdate        "Letztes Update Fenster Badezimmer Nord Rechts"     <time>          (Fenster_Badezimmer_Nord_Rechts)                            ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d000911e956010006:last_updated"}

The same for all Doors Items which go outside (some examples):

Group:Contact:OR(OPEN,CLOSED)   Aussentueren                                    "Außentüren"                                    <door>          (Zustandsgruppen)                                                   ["Door"]
Group:Number:SUM                AussentuerenOffenNum                            "Anzahl offene Außentüren"                      <door>          (Zustandsgruppen,OffenNum)                                          ["Point"]

Group:Contact:OR(OPEN,CLOSED)   Aussentuer_Arbeitszimmer                        "Außentür Arbeitszimmer"                        <door>          (Arbeitszimmer)                                                     ["Door"]
Contact                         Aussentuer_Arbeitszimmer_Zustand                "Zustand Außentür Arbeitszimmer"                <door>          (OC_Arbeitszimmer,Aussentueren,AussentuerenOffenNum,Aussentuer_Arbeitszimmer)           ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d0007b7d12f010006:open"}
Number:ElectricCharge           Aussentuer_Arbeitszimmer_Batterieladung         "Batterieladung Außentür Arbeitszimmer"         <batterylevel>  (Batterieladungen, Aussentuer_Arbeitszimmer)                        ["Measurement","Voltage"]   {channel="deconz:openclosesensor:bridge:00158d0007b7d12f010006:battery_level"}
DateTime                        Aussentuer_Arbeitszimmer_LetztesUpdate          "Letztes Update Außentür Arbeitszimmer"         <time>          (Aussentuer_Arbeitszimmer)                                          ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d0007b7d12f010006:last_updated"}

Group:Contact:OR(OPEN,CLOSED)   Aussentuer_Diele                                "Außentür Diele"                                <door>          (Diele)                                                             ["Door"]
Contact                         Aussentuer_Diele_Zustand                        "Zustand Außentür Diele"                        <door>          (OC_Diele,Aussentueren,AussentuerenOffenNum,Aussentuer_Diele)                       	["Point"]                   {channel="deconz:openclosesensor:bridge:00158d0007b7cf89010006:open"}
Number:ElectricCharge           Aussentuer_Diele_Batterieladung                 "Batterieladung Außentür Diele"                 <batterylevel>  (Batterieladungen, Aussentuer_Diele)                                ["Measurement","Voltage"]   {channel="deconz:openclosesensor:bridge:00158d0007b7cf89010006:battery_level"}
DateTime                        Aussentuer_Diele_LetztesUpdate                  "Letztes Update Außentür Diele"                 <time>          (Aussentuer_Diele)                                                  ["Point"]                   {channel="deconz:openclosesensor:bridge:00158d0007b7cf89010006:last_updated"} 

And here some part of my items which are for the thermostats:

Group       Thermostate             "Thermostate"              <heating>   (Zustandsgruppen) ["Equipment"]

/* Übersichtsgruppen */
Group                   Klima                               "Klimasteuerung"                                <temperature>   (Zustandsgruppen) ["Equipment"]
Group:Number:AVG        TemperaturenIst                     "Ist-Temperaturen Durchschnitt [%.1f °C]"       <temperature>   (Klima)           ["Equipment"]
Group:Number:MIN        TemperaturenIstMin                  "Ist-Temperaturen Min [%.1f °C]"                <temperature>   (Klima)           ["Equipment"]
Group:Number:MAX        TemperaturenIstMax                  "Ist-Temperaturen Max [%.1f °C]"                <temperature>   (Klima)           ["Equipment"]
Group:Number:AVG        TemperaturSoll                      "Soll-Temperaturen [%.1f °C]"                   <temperature>   (Klima)           ["Equipment"]
Group:Number:AVG        LuftfeuchteRelativ                  "relative Luftfeuchte Durchschnitt [%d %%]"     <humidity>      (Klima)           ["Equipment"] {unit="%"}
Group:Number:MIN        LuftfeuchteRelativMin               "relative Luftfeuchte Min [%d %%]"              <humidity>      (Klima)           ["Equipment"] {unit="%"}
Group:Number:MAX        LuftfeuchteRelativMax               "relative Luftfeuchte Max [%d %%]"              <humidity>      (Klima)           ["Equipment"] {unit="%"}
Group:Number:AVG        LuftfeuchteAbsolut                  "absolute Luftfeuchte [%.1f g/m³]"              <humidity>      (Klima)           ["Equipment"]
Group:Number:MIN        Taupunkte                           "Taupunkte [%.1f °C]"                           <temperature>   (Klima)           ["Equipment"]
Group:Number:COUNT("0") LuftfeuchteEmpfehlungen_NichtLueften "Luftfeuchteempfehlungen Nicht Lüften"         <humidity>      (Klima)           ["Equipment"]
Group:Number:COUNT("1") LuftfeuchteEmpfehlungen_Lueften      "Luftfeuchteempfehlungen Lüften"               <humidity>      (Klima)           ["Equipment"]
Group:Number:COUNT("2") LuftfeuchteEmpfehlungen_Neutral      "Luftfeuchteempfehlungen Neutral"              <humidity>      (Klima)           ["Equipment"]
Group:Number:MIN        LueftungshistorienMin               "Minuten gelüftet in  8h Min [%d Minuten]"      <time>          (Klima)           ["Equipment"]
Group:Number            LueftungEmpfehlungen                "Lüftungsempfehlungen"                          <wind>          (Klima)           ["Equipment"]
Group:Number:MAX        Ventile                             "Ventilöffnungen [%d %%]"                       <heating>       (Klima)           ["Equipment"] {unit="%"}
Group:Number:SUM        VentileSum                          "Summe aller Ventilöffnungen [%d %%]"           <heating>       (Klima)           ["Equipment"] {unit="%"}


/* ******** RAUM Arbeitszimmer ******************/
Group                   Klima_Arbeitszimmer                         "Klimasteuerung Arbeitszimmer"                                          <temperature>  (Arbeitszimmer)                                  ["Equipment"]
Group:Number:AVG        TemperaturIst_Arbeitszimmer                 "Ist-Temperatur Arbeitszimmer [%.1f °C]"                                <temperature>  (TemperaturenIst,Klima_Arbeitszimmer)            ["Measurement","Temperature"]
Number:Temperature      TemperaturSoll_Arbeitszimmer                "Soll-Temperatur Arbeitszimmer [%.1f °C]"                               <temperature>  (TemperaturenSoll,Klima_Arbeitszimmer)           ["Setpoint","Temperature"]      {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#SET_POINT_TEMPERATURE", listWidget="oh-stepper-item"[min=5, max=23, step=0.5, enableInput="true", autorepeat="true"]}
Group:Number:AVG        LuftfeuchteRelativ_Arbeitszimmer            "relative Feuchte Arbeitszimmer [%d %%]"                                <humidity>     (LuftfeuchteRelativ,Klima_Arbeitszimmer)         ["Measurement","Humidity"]      {unit="%"}
Number:Dimensionless    LuftfeuchteAbsolut_Arbeitszimmer            "absolute Feuchte Arbeitszimmer [%.1f g/m³]"                            <humidity>     (LuftfeuchteAbsolut,Klima_Arbeitszimmer)         ["Point"]
Number:Temperature      Taupunkt_Arbeitszimmer                      "Taupunkt Arbeitszimmer [%.1f °C]"                                      <temperature>  (Taupunkte,Klima_Arbeitszimmer)                  ["Point"]
String                  LuftfeuchteEmpfehlung_Arbeitszimmer         "Luftfeuchteempfehlung Arbeitszimmer [MAP(lueften.map):%s]"             <humidity>     (LuftfeuchteEmpfehlungen_NichtLueften,LuftfeuchteEmpfehlungen_Lueften,LuftfeuchteEmpfehlungen_Neutral,Klima_Arbeitszimmer)    ["Point"]
Number:Time             Lueftungshistorie_Arbeitszimmer             "Minuten gelüftet in  8h Arbeitszimmer [%d Minuten]"                    <time>         (LueftungshistorienMin,Klima_Arbeitszimmer)      ["Point"]
String                  LueftungEmpfehlung_Arbeitszimmer            "Lüftungsempfehlung Arbeitszimmer [MAP(lueften.map):%s]"                <wind>         (LueftungEmpfehlungen,Klima_Arbeitszimmer)       ["Point"]
Number                  OffenDauer_Arbeitszimmer                    "Öffnungsdauer Arbeitszimmer [%d Minuten]"                              <window>       (Klima_Arbeitszimmer)                            ["Point"]
/* Thermostat Arbeitszimmer */
Group                   WT_Arbeitszimmer                            "Wandthermostat Arbeitszimmer"                                          <heating>      (Thermostate,Arbeitszimmer)                      ["Equipment","HVAC"]    
Number                  WT_Arbeitszimmer_BetriebsmodusSet           "Betriebsmodus only Set not Read WT Arbeitszimmer"                      <heating>      (WT_Arbeitszimmer)                                                               {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#CONTROL_MODE"}
Number                  WT_Arbeitszimmer_Betriebsmodus              "Betriebsmodus WT Arbeitszimmer"                                        <heating>      (WT_Arbeitszimmer)                               ["Point","Temperature"]         {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#SET_POINT_MODE", stateDescription=""[options="0=Auto,0.0=Auto,0.00=Auto, 1=Manuell,1.0=Manuell,1.00=Manuell"],listWidget="oh-label-item"[action="options",actionItem="WT_Arbeitszimmer_BetriebsmodusSet",actionOptions="0=Auto,1=Manuell"],widget="oh-label-card"[action="options",actionItem="WT_Arbeitszimmer_BetriebsmodusSet",actionOptions="0=Auto,1=Manuell"]}
Switch                  WT_Arbeitszimmer_BoostModus                 "Boost Modus WT Arbeitszimmer"                                          <switch>       (WT_Arbeitszimmer)                               ["Switch"]                      {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#BOOST_MODE"}
String                  WT_Arbeitszimmer_Fensterzustand             "Fensterzustand WT Arbeitszimmer"                                       <window>       (WT_Arbeitszimmer)                               ["OpenState","Opening"]         {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#WINDOW_STATE"}
DateTime                WT_Arbeitszimmer_Fensterzustand_TS          "Fensterzustand WT Arbeitszimmer TS [%1$td.%1$tm.%1$tY %1$tH:%1$tM]"    <time>         (WT_Arbeitszimmer)                               ["Point"]                       {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#WINDOW_STATE"[profile="system:timestamp-change"]}
Number                  WT_Arbeitszimmer_Heizprofil                 "Heizprofil WT Arbeitszimmer [MAP(heizprofil.map):%s]"                  <heating>      (WT_Arbeitszimmer)                               ["Setpoint"]                    {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#ACTIVE_PROFILE"}
Number:Temperature      WT_Arbeitszimmer_IstTemperatur              "Ist-Temperatur WT Arbeitszimmer [%.0f °C]"                             <temperature>  (TemperaturenIstMin,TemperaturenIstMax,TemperaturIst_Arbeitszimmer,WT_Arbeitszimmer)             ["Point"]   {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#ACTUAL_TEMPERATURE"}
Number:Dimensionless    WT_Arbeitszimmer_Luftfeuchte                "Luftfeuchtigkeit WT Arbeitszimmer [%d %%]"                             <humidity>     (LuftfeuchteRelativMin,LuftfeuchteRelativMax,LuftfeuchteRelativ_Arbeitszimmer,WT_Arbeitszimmer)  ["Point"]      {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#HUMIDITY", unit="%"}
Switch                  WT_Arbeitszimmer_Urlaubsmodus               "Urlaubsmodus WT Arbeitszimmer"                                         <switch>       (WT_Arbeitszimmer)                               ["Switch"]                      {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#PARTY_MODE"}
Number:Temperature      WT_Arbeitszimmer_SollTemperatur             "Soll-Temperatur WT Arbeitszimmer [%.1f °C]"                            <temperature>  (WT_Arbeitszimmer,TemperaturSoll)                ["Setpoint","Temperature"]      {channel="homematic:HmIPW-STH:ccu3:001D1A49905B3F:1#SET_POINT_TEMPERATURE", listWidget="oh-stepper-item"[min=5, max=23, step=0.5, enableInput="true", autorepeat="true"]}
Dimmer                  WT_Arbeitszimmer_Ventil                     "Ventilöffnung WT Arbeitszimmer [%d %%]"                                <heating>      (WT_Arbeitszimmer,Ventile,VentileSum)            ["OpenState","Level"]           {channel="homematic:HmIPW-FALMOT-C12:ccu3:002C9D8989D262:8#LEVEL"}

and here my rules which get triggered when a window is openend.
I do a lot of stuff. Like reminders with alexa when a window is opened to long depending on the weather or a warning when the humidity compared to the inside is worse and so on.
I just cut out the part for the heating now:

conf\automation\js\oeffnungen.js

var { TimerMgr } = require('openhab_rules_tools');
var tm = cache.private.get('timers', () => TimerMgr());


// Fensterauffunktion Heizung
function HeizungFensterAuf(raum) {
    return function () {
        console.debug("Heizung Fenster Auf Test", items.getItem("OC_" + raum).members.find(item => item.state === "OPEN"));

        // Wenn immer noch OPEN wenn der Timer abgelaufen ist dann:
        if (items.getItem("OC_" + raum).members.find(item => item.state === "OPEN") != undefined) // Prüft ob einer der Kinder von OC_Raum einen Zustand "ON" hat.
        {
            if (items.getItem("HT_" + raum + "_Fensterzustand", true) !== null) {
                if (items.getItem("HT_" + raum + "_Fensterzustand").state === "CLOSED") {
                    items.getItem("HT_" + raum + "_Fensterzustand").sendCommand("OPEN");
                    console.debug("Fenster auf Modus aktiviert für", "HT_" + raum + "_Fensterzustand");
                }
            }
            if (items.getItem("WT_" + raum + "_Fensterzustand", true) !== null) {
                if (items.getItem("WT_" + raum + "_Fensterzustand").state === "CLOSED") {
                    items.getItem("WT_" + raum + "_Fensterzustand").sendCommand("OPEN");
                    console.debug("Fenster auf Modus aktiviert für", "WT_" + raum + "_Fensterzustand");
                }
            }
        }
    };
}

// Fensterzufunktion Heizung
function HeizungFensterZu(raum) {
    if (items.getItem("HT_" + raum + "_Fensterzustand", true) !== null) {
        if (items.getItem("HT_" + raum + "_Fensterzustand").state === "OPEN") {
            items.getItem("HT_" + raum + "_Fensterzustand").sendCommand("CLOSED");
            console.debug("Fenster auf Modus deaktiviert für", "HT_" + raum + "_Fensterzustand");
        }
    }
    if (items.getItem("WT_" + raum + "_Fensterzustand", true) !== null) {
        if (items.getItem("WT_" + raum + "_Fensterzustand").state === "OPEN") {
            items.getItem("WT_" + raum + "_Fensterzustand").sendCommand("CLOSED");
            console.debug("Fenster auf Modus deaktiviert für", "WT_" + raum + "_Fensterzustand");
        }
    }
}

// Fenstersteuerung Heizung Master
function HeizungFensterZustand(newState, raum, delay) {
    // Wenn länger als 2min OPEN dann Heizung FensterAufModus aktivieren
    if (newState === "OPEN") {
        // Timer wenn Tür länger auf als delay ms, dann Fenster auf Zustand aktivieren
        timeoutId = setTimeout(HeizungFensterAuf(raum), delay)

    }
    // Wenn CLOSED Heizung FensterAufModus deaktivieren
    if (newState === "CLOSED") {
        const members = items.getItem("OC_" + raum).members
        const found = members.some(el => el.state === "OPEN");
        if (!found) {
            HeizungFensterZu(raum)
        }
    }
}


rules.JSRule({
    name: "Außentür oder Fenster auf oder zu",
    description: "Automatisierungen abhängig von der Öffnungen von Außentüren und Fenstern",
    triggers: [
        triggers.GroupStateChangeTrigger('Aussentueren'),
        triggers.GroupStateChangeTrigger('Fenster')
    ],
    execute: (event) => {
        loggerName = 'tueren.js.Oeffnungen';
        console.debug("Automatisierung gestartet durch:", event.itemName, event.newState);
        const triggerTyp = event.itemName.split('_')[0]
        const raum = event.itemName.split('_')[1]
        const triggerEigenschaft = event.itemName.split('_')[2]
        var delay = 0

        if (items.getItem(event.itemName).type === "ContactItem" && triggerTyp === "Aussentuer" || triggerTyp === "Fenster") {



            // Verschiedene Regeln je nach Raum dessen Fenster/Tür geöffnet wurde:
            switch (raum) {
                case "Arbeitszimmer":
                    if (triggerTyp === "Aussentuer") {
                        HeizungFensterZustand(event.newState, raum, 120000)
                    }
                    else {
                        HeizungFensterZustand(event.newState, raum, 0)

                    }
                    //Regeln nur für Türen:
                    if (triggerTyp === "Aussentuer") {
                        // Wenn OPEN  & dunkel dann Lichttimer an
                        if (event.newState === "OPEN" && items.getItem("LS_Outdoor_DunkelMax").state === "ON") {
                            if (items.getItem("Bewegungssteuerung_Terrasse").state === "ON") {
                                console.debug("Licht_Terrasse_Wand_Timer ON, da Tür auf und draussen dunkel")
                                items.getItem("Licht_Terrasse_Wand_Timer").sendCommand("ON");
                            }
                            if (items.getItem("Bewegungssteuerung_Westfassade").state === "ON") {
                                console.debug("Licht_Westfassade_Spots_Timer ON, da Tür auf und draussen dunkel")
                                items.getItem("Licht_Westfassade_Spots_Timer").sendCommand("ON");
                            }
                        }
                    }
                    break;
                case "Diele":
                    if (triggerTyp === "Aussentuer") {
                        HeizungFensterZustand(event.newState, raum, 120000)
                    }
                    else {
                        HeizungFensterZustand(event.newState, raum, 0)
                    }
                    //Regeln nur für Türen:
                    if (triggerTyp === "Aussentuer") {
                        // Wenn OPEN  & dunkel dann Lichttimer an
                        if (event.newState === "OPEN" && items.getItem("LS_Outdoor_DunkelMax").state === "ON") {
                            console.debug("Licht_Einfahrt_Hauseingang_Timer ON, da Tür auf und draussen dunkel")
                            items.getItem("Licht_Einfahrt_Hauseingang_Timer").sendCommand("ON");
                            if (items.getItem("Bewegungssteuerung_Einfahrt").state === "ON") {
                                items.getItem("Licht_Einfahrt_Poller1_Timer").sendCommand(35);
                                items.getItem("Licht_Einfahrt_Poller2_Timer").sendCommand(35);
                            }
                        }
                    }
                    break;
                case "Duschbad":
                    HeizungFensterZustand(event.newState, raum, 0)
                    break;
                case "Hauswirtschaftsraum":
                    HeizungFensterZustand(event.newState, raum, 120000)
                    //Regeln nur für Türen:
                    if (triggerTyp === "Aussentuer") {
                        // Wenn OPEN  & dunkel dann Lichttimer an
                        if (event.newState === "OPEN" && items.getItem("LS_Outdoor_DunkelMax").state === "ON") {
                            console.debug("Licht_Einfahrt_Hauseingang_Timer ON, da Tür auf und draussen dunkel")
                            items.getItem("Licht_Einfahrt_Hauseingang_Timer").sendCommand("ON");
                            console.debug("Licht_Westfassade_Spots_Timer ON, da Tür auf und draussen dunkel")
                            items.getItem("Licht_Westfassade_Spots_Timer").sendCommand("ON");
                        }
                    }
                    break;
                case "Kinderzimmer":
                    HeizungFensterZustand(event.newState, raum, 0)
                    //Regeln nur für Fenster:
                    if (triggerTyp === "Fenster") {
                        // Wenn OPEN Ost Dann Rolladen hoch
                        if (event.newState === "OPEN" && triggerEigenschaft === "Ost") {
                            console.debug("Rolladen hoch in Raum " + raum)
                            items.getItem("Verdunkelung_Kinderzimmer_LevelSoll").sendCommand(0);
                        }
                    }
                    break;
                case "Kueche":
                    HeizungFensterZustand(event.newState, raum, 0)
                    break;
                case "Schlafzimmer":
                    HeizungFensterZustand(event.newState, raum, 0)
                    //Regeln nur für Fenster:
                    if (triggerTyp === "Fenster") {
                        // Wenn OPEN Ost Dann Rolladen hoch
                        if (event.newState === "OPEN" && triggerEigenschaft === "Ost") {
                            console.debug("Rolladen hoch in Raum " + raum)
                            items.getItem("Verdunkelung_Schlafzimmer_LevelSoll").sendCommand(0);
                        }
                    }
                    break;
                case "Westzimmer":
                    HeizungFensterZustand(event.newState, raum, 0)
                    //Regeln nur für Fenster:
                    break;
                case "Wohnzimmer":
                    HeizungFensterZustand(event.newState, raum, 120000)
                    //Regeln nur für Türen:
                    if (triggerTyp === "Aussentuer") {
                        // Wenn OPEN  & dunkel dann Lichttimer an
                        if (event.newState === "OPEN" && items.getItem("LS_Outdoor_DunkelMax").state === "ON") {
                            if (items.getItem("Bewegungssteuerung_Terrasse").state === "ON") {
                                console.debug("Licht_Terrasse_Wand_Timer ON, da Tür auf und draussen dunkel")
                                items.getItem("Licht_Terrasse_Wand_Timer").sendCommand("ON");
                            }
                        }
                    }
                    break;
                default:
                    console.warn("Raum " + raum + " ist für Öffnungsregeln aktuell noch nicht vorgesehen.")
            }
        }
        else {
            console.error("Automatisierung beendet, da erstes Segment des auslösenden Items nicht `Aussentuer` oder `Fenster` lautet.")
        }

    },
    tags: ["Oeffnungen", "Aussentueren", "Fenster", "Licht", "Heizung", "Alarm"],
    id: "Oeffnungen"
});

I hope this helps :slight_smile:

thank you …gives me some ideas how to optmize my methods :slight_smile:
One more question …HM IP propagates the window state channel to OH as string …something like “Fenster geschlossen” as state …how did you manage to change the state …in your rule you send an open/close state to your HT Item …did I miss something?

@msty I find the Homematic Things the most complicated to be honest. This here is again a confusing case but it works.
It is an String Item but I just send .sendCommand(“CLOSED”) or OPEN and everything works like it should.

:slight_smile: will try that
Thank you for your help!