Hi @msty,
thats quiet a challenge. If I open a window there happends so much in my rules.
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