Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von udo1toni »

In den *.rules Dateien werden vollständige Rules angegelgt. Die Zeile

Code: Alles auswählen

val telegramAction = getActions("telegram","telegram:telegramBot:1234567")
ist lediglich eine Zuweisung eines Zeigers zu einem Objekt.

Diese Zuweisung kann theoretisch auch außerhalb einer Rule verwendet werden, besser ist es aber, sie lokal zu erledigen. Anschließend kannst Du dann in der rule mittels

Code: Alles auswählen

telegramAction.sendTelegram(...)
eine Nachricht veerschicken.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

tsch
Beiträge: 66
Registriert: 22. Jun 2019 10:33
Answers: 0
Wohnort: Neuberg

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von tsch »

Ich könnte also mal einen Test ohne Trigger fahren, wenn ich neben der o.g. Zuweisung noch zusätzlich den von Dir genannten Befehl hinzufüge, d.h. dann müsste ich in jedem Fall einmal die Telegram-Message mit dem angegebenen Text erhalten oder?

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

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von udo1toni »

Nein?

Du musst(!) eine vollständige Rule anlegen.

Wenn Du über die *.rules Dateien arbeitest, gibt es keine andere Option:

Code: Alles auswählen

rule "mein Testrule"
when
    Item MeinItem received command
then
    val telegramAction = getActions("telegram","telegram:telegramBot:1234567")
    telegramAction.sendTelegram("Test Telegram")
end
In diesem Fall ist das Item MeinItem der Trigger.

Du kannst die beiden Zeilen Code (die zwischen then und end) natürlich auch über die Main UI in einer grafisch erstellten Rule eingeben. Du musst aber darauf achten, dass die Rule als then-Teil das Ausführen eines Codeblocks aktiviert hat. Und es muss DSL als Rule Sprache ausgewählt sein.

Rules, die über die UI angelegt wurden, können zum Testen auch über den Play-Knopf gestartet werden (rechts oben). Ein Trigger muss aber in jedem Fall eingetragen werden, sonst weigert sich openHAB, die Rule auszuführen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

tsch
Beiträge: 66
Registriert: 22. Jun 2019 10:33
Answers: 0
Wohnort: Neuberg

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von tsch »

Danke udo1toni für Deine Engelsgeduld.

Für das EG habe ich nun ein Model angelegt und auch im Bad_EG meinen HM Fenstersensor angelegt, der sich nun ebenfalls in den Items wiederfindet als Contact Point, was genau ich ja in der o.g. Rule auswerten will.
Wie muss denn nun die Zeile

Code: Alles auswählen

Item MeinItem received command
von der Syntax aussehen, damit das richtige Item ausgewertet wird nur im Fall "is open" die o.g. Rule durchlaufen wird?

Bei Channel Links des Items steht das Folgende:

Code: Alles auswählen

HM Fensterkontakt Bad-EG
State
homematic-HM-sec-...........#STATE

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

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von udo1toni »

Ich frage mal anders: Was willst Du tun? Möchtest Du eine Nachricht in dem Moment erhalten, wenn das Fenster geöffnet wird?

Das, was da steht, ist übrigens mit absoluter Sicherheit etwas völlig anderes. Innerhalb einer Rule brauchst Du den Namen des Items (nicht das Label). Geh in die Liste der Items und suche dort nach dem Label, dann findest Du schon das passende Item und damit auch den Namen des Items.
Alternativ kannst Du auch im Channel nachschauen, was verlinkt ist, aber auch da werden sowohl Label als auch Name des Items gezeigt. Was was ist, sollte recht schnell klar werden. Im NAmen des Items kommen keine Leerzeichen vor, stattdessen steht dort immer ein _ als Ersatz. Im Label hingegen können beliebig Leerzeichen verwendet werden. Das Label lässt ich ändern, der Name des Items ist fix, man muss also das Item löschen und erneut anlegen, wenn man den Namen ändern möchte.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

tsch
Beiträge: 66
Registriert: 22. Jun 2019 10:33
Answers: 0
Wohnort: Neuberg

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von tsch »

Um mich an das Thema Rules in openHAB 3.x heranzutasten möchte ich zunächst nur eine Telegram-Message erhalten, sobald das Fenster im Bad geöffnet wird, d.h. der State auf "open" wechselt.

Habe nun in der Liste der Items und auch in den Channels nachgesehen und der korrekt Name des Items sollte

HMFensterkontaktBadEG_State

sein.

Somit müsste die Rule in etwa wie folgt aussehen:

Code: Alles auswählen

rule "Fensterkontakt Bad offen"
when
    Item HMFensterkontaktBadEG_State changed from closed to open
then
    val telegramAction = getActions("telegram","telegram:telegramBot:1234567")
    telegramAction.sendTelegram("Das Fenster im Bad ist nun offen")
end

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

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von udo1toni »

Ja, aber Du hast dennoch einen Fehler drin ;)

open ist nicht das gleiche wie OPEN - openHAB ist grundsätzlich case sensitive.
Gewöhnlich willst Du außerdem nicht einschränken, dass die Rule nur auslöst, wenn der Zustand von CLOSED kommt. Also besser

Code: Alles auswählen

[...]
when
    Item HMFensterkontaktBadEG_State changed to OPEN
then
[...]
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

tsch
Beiträge: 66
Registriert: 22. Jun 2019 10:33
Answers: 0
Wohnort: Neuberg

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von tsch »

Vielen Dank!

Werde ich gleich mal ausprobieren und mich wieder melden.

tsch
Beiträge: 66
Registriert: 22. Jun 2019 10:33
Answers: 0
Wohnort: Neuberg

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von tsch »

Leider meldet sich bisher weiterhin nur meine openHAB 2.x Umgebung, wenn ich das Fenster öffne.
Muss ich evtl. noch irgend etwas neu starten oder sollte die Rule direkt funktionieren?

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

Re: Änderungen bei services/rules (Telegram) zwischen openHAB 2.x und 3.x?

Beitrag von udo1toni »

Die Rule sollte direkt funktionieren.
Wie heißt die Datei? liegt sie im richtigen Ordner?
Wenn Du die Datei speicherst, muss es innerhalb weniger Sekunden im Log einen Eintrag geben (openhab.log), dass die Datei xyz.rules geladen wurde.
Tauchen Fehlermeldungen im Log auf?

Du könntest, falls das alles erstmal gut aussieht, eine Log Meldung erzeugen. Dazu baust Du nach dem then eine weitere Zeile ein:

Code: Alles auswählen

logInfo("window","Rule für Fensterkontakt wurde ausgelöst!")
Nun muss jedes Mal, wenn Du das Fenster öffnest, eine Log Meldung in openhab.log auftauchen, mit dem passenden Text.
Damit wäre dann sichergestellt, dass die Rule wirklich ausgelöst wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten