Rule: Fenstersensor an Telegram in Anhängigkeit von Zeit und Temperatur

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
crucial
Beiträge: 10
Registriert: 1. Apr 2021 11:00
Answers: 0

Rule: Fenstersensor an Telegram in Anhängigkeit von Zeit und Temperatur

Beitrag von crucial »

Guten Tag in die Runde,

ich möchte mit OH3 folgende , wie ich hoffe einfache;) Regel umsetzen:
-Meldung an Telegram-Bot, wenn das Fenster offen ist, es draußen kälter als 15 Grad ist und das Fenster schon länger als 15 min offen steht.

Sensor ist ein AQARA-Fenstersensor, die Außentemperatur liefert Openweathermap, die Verbindung zu Telegram übernimmt ein kleines script, welches ich kopiert habe.

Mit den normalen rule-Mitteln "When" (wenn Fenster "offen" meldet) "Then" (Nachricht an Telegram) und "But only if" (aktuelle Temperatur unter 15) komme ich ja schon recht weit und die rule funktioniert auch so weit. Hier der Code:

Code: Alles auswählen

triggers:
  - id: "2"
    configuration:
      itemName: VELUXbad_VELUXbad
      state: OPEN
      previousState: ""
    type: core.ItemStateChangeTrigger
conditions:
  - inputs: {}
    id: "4"
    configuration:
      itemName: Localweatherandforecast_Aussentemperatur
      state: "15"
      operator: <
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "3"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: >-
        val telegramAction =
        getActions("telegram","telegram:telegramBot:8dad2f3e0f")

        telegramAction.sendTelegram("Das Badfenster steht schon länger offen und es ist kalt!")
    type: script.ScriptAction
Wie bekomme ich nun jedoch den Zeitfaktor unter, also dass die Nachricht erst 15 min, nach dem sich der Status des Sensors auf OPEN geändert hat, versendet wird? Könnte mir hier blockly weiterhelfen?

Vielen Dank vorab für Hinweise und viele Grüße!

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Rule: Fenstersensor an Telegram in Anhängigkeit von Zeit und Temperatur

Beitrag von udo1toni »

Wenn Du über die UI programmieren willst, musst Du einen indirekten Weg wählen.

Schritt 1: Du legst ein Switch Item an (z.B. Auto15Min als Name). Bei diesem Item stellst Du in den Metadaten einen Expire Timer ein (das geht erst, wenn das Item bereits angelegt wurde, Du musst es also zunächst speichern und anschließend neu auswählen und editieren). Dort trägst Du ein Update State OFF ein sowie die Expiration Time von 15 Minuten.

Nun erstellst Du zwei Rules.
Die erste Rule triggert, wenn das Fenster geöffnet wird. Hier setzt Du lediglich das Item Auto15Min auf ON (per postUpdate).
Die zweite Rule triggert, wenn sich der Status des Items Auto15Min auf OFF ändert, aber nur, wenn das Fenster offen ist (Zustand des Items...) sowie die Temperatur unter 15°C ist.
In dieser Rule lässt Du das sendTelegram ausführen.

Falls Du gewillt bist, eine DSL Rule über eine Textdatei zu erzeugen (die muss dann in /etc/openhab/rules/meine.rules gespeichert werden, wobei der Name bis auf die Dateiendung egal ist), ist das ganze etwas einfacher:

Code: Alles auswählen

var Timer tMeldung = null // Globale Variablen vor der ersten Rule definieren!

rule "Meldung Fenster offen"
when
    Item VELUXbad_VELUXbad changed
then
    tMeldung?.cancel
    if(VELUXbad_VELUXbad.state == OPEN)
        tMeldung = createTimer(ZonedDateTime.now.plusMinutes(15),[|
            val telegramAction = getActions("telegram","telegram:telegramBot:8dad2f3e0f")
            if((Localweatherandforecast_Aussentemperatur.state as Number).floatValue < 15)
                telegramAction.sendTelegram("Das Badfenster steht schon länger offen und es ist kalt!")
        ])
end
Die Rule beendet den Timer, sobald das Fenster geschlossen wird und startet den Timer, sobald das Fenster geöffnet wird. Ist beim Ablauf des Timers die Temperatur zu niedrig, wird die Meldung verschickt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

crucial
Beiträge: 10
Registriert: 1. Apr 2021 11:00
Answers: 0

Re: Rule: Fenstersensor an Telegram in Anhängigkeit von Zeit und Temperatur

Beitrag von crucial »

oh vielen Dank für den Komplett-Service! Das ist wirklich sehr hilfreich, auch wie Du es erklärt hast.
Viele Grüße,
matthias.

Antworten