Hilfe bei der Anpassung von Rules auf (NGRE)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Hilfe bei der Anpassung von Rules auf (NGRE)

Beitrag von Cyrelian »

Hallo zusammen,

ich habe mir heute Abend mal eine Testumgebung mit openHAB3 aufgesetzt. Soweit scheint auch alles gut zu laufen. Allerdings "trigger" ein paar Rules nicht mehr. Ich denke es liegt daran
The implicit variable triggeringItem is now only available for "Member of" triggers - all other item state/command triggers now have an implicit variable triggeringItemName instead.
The implicit variable receivedEvent(of channel-based triggers) now contains the event directly as a String and no longer as an object. There is hence no need to call receivedEvent.getEvent() anymore.
Hier mal zwei Beispiele:

Diese Rule "triggert" nicht mehr.

Code: Alles auswählen

rule "Offene Tür- / Fensterkontakte"
when
	Member of gTuersensoren received update
then
	val numOpened = gTuersensoren.allMembers.filter(contact | contact.state == OPEN).size
	ContactsCount.postUpdate(numOpened)
end
Bei Dieser hier wird das ".getEvent()" angemeckert.

Code: Alles auswählen

rule "Rollladen Badezimmerfester"
when
    Channel "deconz:switch:Rpi-Phoscon-GW:BadezimmerRollladenSchalter:buttonevent" triggered
then
    var actionName = receivedEvent.getEvent()
    switch(actionName) {
        case "1001": {
            //logInfo(filename, "Wandtaster LONG_PRESSED")
            BadezimmerRollladen.sendCommand (UP)
			logInfo("rules", "Wandtaster Badezimmerfester: Rollladen hoch")
        }
        case "1002": {
            //logInfo(filename, "Wandtaster SHORT_PRESSED")
            BadezimmerRollladen.sendCommand (STOP)
			logInfo("rules", "Wandtaster Badezimmerfester: Rollladen stop")
        }
        case "1004": {
            //logInfo(filename, "Wandtaster LONG_PRESSED")
        }
        case "2001": {
            //logInfo(filename, "Wandtaster LONG_PRESSED")
            BadezimmerRollladen.sendCommand (DOWN)
			logInfo("rules", "Wandtaster Badezimmerfester: Rollladen runter")
        }
        case "2002": {
            //logInfo(filename, "Wandtaster SHORT_PRESSED")
            BadezimmerRollladen.sendCommand (STOP)
			logInfo("rules", "Wandtaster Badezimmerfester: Rollladen stop")
        }
        case "2004": {
            //logInfo(filename, "Wandtaster LONG_RELEASED")
        }
    }
end
Irgendwie stehe ich gerade voll auf dem Schlauch. Gerade bei der ersten Rule gibt es auch keinerlei Fehler im log. Liegt wahrscheinlich daran, das ich falsch abfrage :?

Dank Euch schonmal
CYA
Cyrelian
von peter-pan » 24. Dez 2020 02:20
...hast du in der ersten Rule mal "changed" anstelle von "received update" versucht und in der zweiten Rule einfach das ".getEvent()" weg gelassen ?
Nur ein Versuch. Hab's selber noch nicht ausprobiert.
Gehe zur vollständigen Antwort

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Hilfe bei der Anpassung von Rules auf (NGRE)

Beitrag von peter-pan »

...hast du in der ersten Rule mal "changed" anstelle von "received update" versucht und in der zweiten Rule einfach das ".getEvent()" weg gelassen ?
Nur ein Versuch. Hab's selber noch nicht ausprobiert.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Hilfe bei der Anpassung von Rules auf (NGRE)

Beitrag von Cyrelian »

Hi Peter,

Dank Dir für deine schnelle Antwort. Die erste Rule habe ich mit

Code: Alles auswählen

Member of gTuersensoren received command
Member of gTuersensoren received update
Member of gTuersensoren changed 
versucht. Leider ohne erfolg. Unter openHAB 2.5.11 klappt das noch einwandfrei.

Bei der zweiten Rule hatte ich das ".getEvent()" bereits weggelassen, da ich es so verstanden hatte, dass der String ja jetzt direkt in dem receivedEvent drin steht. Leider triggert die Rule dann nicht mehr.
Mit ".getEvent()" kommt übrigens diese Fehlermeldung.

Code: Alles auswählen

'getEvent' is not a member of 'org.eclipse.smarthome.core.thing.events.ChannelTriggeredEvent'
Es gibt diverse Threads dazu in der OH Community, aber scheinbar bisher keine richtig Lösung.

CYA
Cyrelian

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Hilfe bei der Anpassung von Rules auf (NGRE)

Beitrag von Darkwin101 »

Ich habe eine ähnliche Rule so geschrieben und sie funktioniert einwandfrei

Code: Alles auswählen

    when
    Channel "deconz:switch:home:Kueche_Wandschalter:buttonevent" triggered 
     then
      switch(receivedEvent){
     		 case "1002":{ //Single Press
      

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Hilfe bei der Anpassung von Rules auf (NGRE)

Beitrag von Cyrelian »

Hi Darkwin,

cool, ich teste das mal. Unter openHAB 2.5.11 geht das nämlich so leider nicht.
Nutzt du schon OH3?

CU
Cyrelian

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Hilfe bei der Anpassung von Rules auf (NGRE)

Beitrag von Darkwin101 »

Ja ich nutze schon OH3

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Hilfe bei der Anpassung von Rules auf (NGRE)

Beitrag von Cyrelian »

peter-pan hat geschrieben: 24. Dez 2020 02:20 ...hast du in der ersten Rule mal "changed" anstelle von "received update" versucht und in der zweiten Rule einfach das ".getEvent()" weg gelassen ?
Nur ein Versuch. Hab's selber noch nicht ausprobiert.
Hi Peter,

hab die Rule mal neu "gebaut"(ganz neues Rule File). Komischerweise läuft sie jetzt mit

Code: Alles auswählen

Member of gTuersensoren changed 
Perfekt..dank Dir ;)

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Hilfe bei der Anpassung von Rules auf (NGRE)

Beitrag von peter-pan »

...Super, das freut mich. 👍
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten