Alarm bei offenem Fenster - Variabilität in Regel einbauen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
DavGre
Beiträge: 84
Registriert: 11. Mär 2019 15:47

Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von DavGre »

Hallo zusammen,

ich habe mal wieder eine Frage zu einer meiner neuen Regeln. Ich habe diverse Fenster mit Aqara Fenstersensoren ausgestattet, die mit dem Status "OPEN" bzw. "CLOSED" arbeiten.
Die Regel wird aktiviert, wenn jemand das Haus verlässt und eines der beiden Fenster noch geöffnet ist. Zunächst wird dann ein Alarmsignal über Alexa abgespielt. Parallel wird eine Telegram Nachricht an die beiden Bewohner geschickt. Anschließend wird noch eine Sprachausgabe über Alexa gestartet, dass ein Fenster noch geöffnet ist. Die Regel ist unten abgebildet.

sensoren.items

Code: Alles auswählen

//AQARA FENSTERSENSOREN/////////////////////////////
//SCHLAFZIMMER
//Linkes Fenster
Contact  Fensterkontakt_SZ_1_Status     "Fensterkontakt SZ links Status [%s]"                (gFensterkontakte, OG_Schlafzimmer)           {channel="mqtt:topic:xxx:aqara_fenstersensoren_sz_links:status_1"}
//Rechtes Fenster
Contact  Fensterkontakt_SZ_2_Status     "Fensterkontakt SZ rechts Status [%s]"               (gFensterkontakte, OG_Schlafzimmer)           {channel="mqtt:topic:xxx:aqara_fenstersensoren_sz_rechts:status_1"}
sensoren.rules

Code: Alles auswählen

var Timer stopAlarmTimer = null

rule "15 Sekunden Alarm, wenn Fenster offen bei Abwesenheit"
when
    Item Anwesenheitskontrolle changed from ON to OFF // wenn alle Bewohner das Haus verlassen ...
then
    if(Fensterkontakt_SZ_1_Status.state == OPEN || Fensterkontakt_SZ_2_Status.state == OPEN) {  // ...und eines der beiden Fenster noch geöffnet ist
    
    Echo_Kueche_PlayAlarmSound.sendCommand('ECHO:system_alerts_melodic_01') // Alarmsignal über Echodot abspielen
    sendTelegram("bot1", "ACHTUNG: Fenster geöffnet und niemand ist zu Hause") // Benachrichtigung Bewohner 1 via Telegram
    sendTelegram("bot2", "ACHTUNG: Fenster geöffnet und niemand ist zu Hause") // Benachrichtigung Bewohner 2 via Telegram


    if (stopAlarmTimer === null)
    {
        stopAlarmTimer = createTimer(now.plusSeconds(15)) [|
            stopAlarmTimer.cancel()
            stopAlarmTimer = null
            Echo_Kueche_PlayAlarmSound.sendCommand('') // Alarm stop nach 15 Sekunden
            Echo_Kueche_TTS_Volume.sendCommand(80)     // Echo Lautstärke auf 80 erhöhen
            Echo_Kueche_TTS.sendCommand('<speak>Achtung, Fenster geöffnet</speak>') // Textnachricht über Echodot abspielen
        ]
    }}
end
Nun meine Frage zur Regel:
Wie kann ich es am einfachsten so gestalten, dass ich in der Alexa Sprachausgabe und in Telegram mitgeteilt bekomme, welches der beiden Fenster geöffnet ist?
Die Sprachausgabe soll dann z. B. "ACHTUNG: Fenster Schlafzimmer rechts geöffnet und niemand ist zu Hause" lauten.

Ich kann es mir schon denken, dass man hier mit variablen arbeiten muss. Allerdings weiß ich absolut nicht wie und wo ich anfangen soll und hoffe daher auf eure Unterstützung.
von eiGelbGeek » 23. Jan 2020 23:12
Ich habe mir auch nochmal paar Gedanken gemacht :mrgreen:

So sollte es gehen :-) Du musst nur alle zu prüfenden Fensterkontake in einer Gruppe machen :D

Damit solltest du nur eine Nachricht mit allen geöffneten Fenstern bekommen und ebenfalls die Ansage mit allen geöffneten Fenster.

Code: Alles auswählen

var Timer stopAlarmTimer = null

rule "15 Sekunden Alarm, wenn Fenster offen bei Abwesenheit"
when
  Item Anwesenheitskontrolle changed from ON to OFF
then
  var String msg = ""
  var triggertDevices = gFensterkontakte.members.filter[s|s.state == OPEN]
  triggertDevices.forEach [ i |
    msg = msg + i.label + ', '
  ]
  if (msg != "") {
    Echo_Kueche_PlayAlarmSound.sendCommand('ECHO:system_alerts_melodic_01')
    sendTelegram("bot1", "ACHTUNG: Fenster im " + msg + " geöffnet und niemand ist zu Hause")
    sendTelegram("bot2", "ACHTUNG: Fenster im " + msg + " geöffnet und niemand ist zu Hause")
    if (stopAlarmTimer === null) {
      stopAlarmTimer = createTimer(now.plusSeconds(15)) [|
        stopAlarmTimer.cancel()
        stopAlarmTimer = null
        Echo_Kueche_PlayAlarmSound.sendCommand('')
        Echo_Kueche_TTS_Volume.sendCommand(80)
        Echo_Kueche_TTS.sendCommand("<speak>ACHTUNG: Fenster im " + msg + " geöffnet"</speak>")
      ]
    }
  } else {
    sendTelegram("bot1", "You are Safe Dude!")
    sendTelegram("bot2", "You are Safe Dude!")
  }
end
Gehe zur vollständigen Antwort

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von PeterA »

Hi,
möglicherweise funktioniert das wenn die Fensterkontakte in einer Gruppe sind..

siehe im Thread Batteriewarnung: viewtopic.php?p=14249#p14249

Hier bekomme ich eine Pushmessage inkl. Namen des Sensors welcher eine neue Batterie benötigt.

"triggeringItem.name" Filtert hier das Auslösende Item.

Code: Alles auswählen

 rule "SensorsBatLowInfo"
when
    Member of grAllLaCrosseBatteryLow changed from OFF to ON
then
    sendBroadcastNotification("Achtung niedriger Batteriestatus LaCross Sensoren" + triggeringItem.name) //Batteriewarnung
end 
- OpenHab 2.4
#PWRUP

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von eiGelbGeek »

Versuche es mal so :-) Ich kann es nicht testen weil ich keine Alexa habe ... Telegram funktioniert so aufjedenfall :-)

Code: Alles auswählen

var Timer stopAlarmTimer = null
rule "15 Sekunden Alarm, wenn Fenster offen bei Abwesenheit"
when
  Item Fensterkontakt_SZ_1_Status changed or
  Item Fensterkontakt_SZ_2_Status changed
then
  if(Anwesenheitskontrolle.state == OFF && triggeringItem.state == OPEN) {
    Echo_Kueche_PlayAlarmSound.sendCommand('ECHO:system_alerts_melodic_01')
    device=triggeringItem.label
    sendTelegram("bot1", "ACHTUNG: Fenster im " + device + " geöffnet und niemand ist zu Hause")
    sendTelegram("bot2", "ACHTUNG: Fenster im " + device + " geöffnet und niemand ist zu Hause")
    if (stopAlarmTimer === null) {
      stopAlarmTimer = createTimer(now.plusSeconds(15)) [|
        stopAlarmTimer.cancel()
        stopAlarmTimer = null
        Echo_Kueche_PlayAlarmSound.sendCommand('')
        Echo_Kueche_TTS_Volume.sendCommand(80)
        Echo_Kueche_TTS.sendCommand("<speak>ACHTUNG: Fenster im " + device + " geöffnet"</speak>")
      ]
    }
  }
end
EDIT:
Wird so noch nicht funktionieren, weil er ja nur auf die Kontakte triggert ;-) aber dadrin sieht du den Ansatz wie man Telegram variable machen kann ....

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von eiGelbGeek »

PeterA hat geschrieben: 23. Jan 2020 14:07 Hi,
möglicherweise funktioniert das wenn die Fensterkontakte in einer Gruppe sind..

siehe im Thread Batteriewarnung: viewtopic.php?p=14249#p14249

Hier bekomme ich eine Pushmessage inkl. Namen des Sensors welcher eine neue Batterie benötigt.

"triggeringItem.name" Filtert hier das Auslösende Item.

Code: Alles auswählen

 rule "SensorsBatLowInfo"
when
    Member of grAllLaCrosseBatteryLow changed from OFF to ON
then
    sendBroadcastNotification("Achtung niedriger Batteriestatus LaCross Sensoren" + triggeringItem.name) //Batteriewarnung
end 
Den Ansatz habe ich auch beschrieben, aber funktioniert hier so nicht ;-) Weil der Trigger muss ja das Verlassen des Hauses sein und nicht der Fensterkontakt ;-)

DavGre
Beiträge: 84
Registriert: 11. Mär 2019 15:47

Re: Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von DavGre »

Ja, das funktioniert leider nicht. Kennt jemand denn eine andere Lösung?

heiko74
Beiträge: 14
Registriert: 5. Apr 2019 21:38

Re: Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von heiko74 »

Hallo,

ich nehme mal an, daß die Rule so funktioniert.

Mir fallen da 2 einfache Lösungen ein:

Zum einen:

Code: Alles auswählen

    sendTelegram("bot1", "ACHTUNG: Fenster geöffnet und niemand ist zu Hause \n SZ1: "+Fensterkontakt_SZ_1_Status.state+"  -  SZ2: "+Fensterkontakt_SZ_2_Status.state) 
    sendTelegram("bot2", "ACHTUNG: Fenster geöffnet und niemand ist zu Hause \n SZ1: "+Fensterkontakt_SZ_1_Status.state+"  -  SZ2: "+Fensterkontakt_SZ_2_Status.state)
Hier wird einfach beide Statusse angehängt.

Zum 2.:
anstelle von den beiden Zeilen mit sendTelegram(...)

Code: Alles auswählen

if(Fensterkontakt_SZ_1_Status.state == OPEN ){
    sendTelegram("bot1", "ACHTUNG: Fenster SZ1 geöffnet und niemand ist zu Hause") 
    sendTelegram("bot2", "ACHTUNG: Fenster SZ1 geöffnet und niemand ist zu Hause")
    }
if(Fensterkontakt_SZ_2_Status.state == OPEN ){
    sendTelegram("bot1", "ACHTUNG: Fenster SZ2 geöffnet und niemand ist zu Hause") 
    sendTelegram("bot2", "ACHTUNG: Fenster SZ2 geöffnet und niemand ist zu Hause")
    } 
Hier wird pro offenes Fenster ein Telegramm geschickt. Sind beide Fenster offen, erhält der Bot 2 Telegramme.

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von eiGelbGeek »

Ich habe mir auch nochmal paar Gedanken gemacht :mrgreen:

So sollte es gehen :-) Du musst nur alle zu prüfenden Fensterkontake in einer Gruppe machen :D

Damit solltest du nur eine Nachricht mit allen geöffneten Fenstern bekommen und ebenfalls die Ansage mit allen geöffneten Fenster.

Code: Alles auswählen

var Timer stopAlarmTimer = null

rule "15 Sekunden Alarm, wenn Fenster offen bei Abwesenheit"
when
  Item Anwesenheitskontrolle changed from ON to OFF
then
  var String msg = ""
  var triggertDevices = gFensterkontakte.members.filter[s|s.state == OPEN]
  triggertDevices.forEach [ i |
    msg = msg + i.label + ', '
  ]
  if (msg != "") {
    Echo_Kueche_PlayAlarmSound.sendCommand('ECHO:system_alerts_melodic_01')
    sendTelegram("bot1", "ACHTUNG: Fenster im " + msg + " geöffnet und niemand ist zu Hause")
    sendTelegram("bot2", "ACHTUNG: Fenster im " + msg + " geöffnet und niemand ist zu Hause")
    if (stopAlarmTimer === null) {
      stopAlarmTimer = createTimer(now.plusSeconds(15)) [|
        stopAlarmTimer.cancel()
        stopAlarmTimer = null
        Echo_Kueche_PlayAlarmSound.sendCommand('')
        Echo_Kueche_TTS_Volume.sendCommand(80)
        Echo_Kueche_TTS.sendCommand("<speak>ACHTUNG: Fenster im " + msg + " geöffnet"</speak>")
      ]
    }
  } else {
    sendTelegram("bot1", "You are Safe Dude!")
    sendTelegram("bot2", "You are Safe Dude!")
  }
end

DavGre
Beiträge: 84
Registriert: 11. Mär 2019 15:47

Re: Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von DavGre »

eiGelbGeek hat geschrieben: 23. Jan 2020 23:12 Ich habe mir auch nochmal paar Gedanken gemacht :mrgreen:

So sollte es gehen :-) Du musst nur alle zu prüfenden Fensterkontake in einer Gruppe machen :D

Damit solltest du nur eine Nachricht mit allen geöffneten Fenstern bekommen und ebenfalls die Ansage mit allen geöffneten Fenster.

Code: Alles auswählen

var Timer stopAlarmTimer = null

rule "15 Sekunden Alarm, wenn Fenster offen bei Abwesenheit"
when
  Item Anwesenheitskontrolle changed from ON to OFF
then
  var String msg = ""
  var triggertDevices = gFensterkontakte.members.filter[s|s.state == OPEN]
  triggertDevices.forEach [ i |
    msg = msg + i.label + ', '
  ]
  if (msg != "") {
    Echo_Kueche_PlayAlarmSound.sendCommand('ECHO:system_alerts_melodic_01')
    sendTelegram("bot1", "ACHTUNG: Fenster im " + msg + " geöffnet und niemand ist zu Hause")
    sendTelegram("bot2", "ACHTUNG: Fenster im " + msg + " geöffnet und niemand ist zu Hause")
    if (stopAlarmTimer === null) {
      stopAlarmTimer = createTimer(now.plusSeconds(15)) [|
        stopAlarmTimer.cancel()
        stopAlarmTimer = null
        Echo_Kueche_PlayAlarmSound.sendCommand('')
        Echo_Kueche_TTS_Volume.sendCommand(80)
        Echo_Kueche_TTS.sendCommand("<speak>ACHTUNG: Fenster im " + msg + " geöffnet"</speak>")
      ]
    }
  } else {
    sendTelegram("bot1", "You are Safe Dude!")
    sendTelegram("bot2", "You are Safe Dude!")
  }
end
Das ist es!
Tausend Dank für deine Lösung. Funktioniert einwandfrei!

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Alarm bei offenem Fenster - Variabilität in Regel einbauen

Beitrag von eiGelbGeek »

Kein Problem :-) dafür ist das Forum ja da. Danke für die Rückmeldung :-)

Antworten