OH3 Beleuchtung rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: OH3 Beleuchtung rule

Beitrag von udo1toni »

Du musst die Rule ohnehin anpassen, denn die beiden Timer müssen zwingend global definiert werden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: OH3 Beleuchtung rule

Beitrag von SIDE22 »

OK dann mach ich einfach am besten für beide Räume eine getrennte Regel oder ?

Und danke dennoch für die Hilfe

LG
Florian
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

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

Re: OH3 Beleuchtung rule

Beitrag von udo1toni »

Das ändert aber nichts am Timer-Problem. Wir werden das schon über die Gruppe geregelt bekommen...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: OH3 Beleuchtung rule

Beitrag von SIDE22 »

wäre toll den die regel haben wir ja letztes jahr zusammen erstellt und sie hatte in OH2 gute dienste geleistet und hatte nie irgendwelche probleme wäre schade sowas ändern zu müssen
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

ThomasW
Beiträge: 33
Registriert: 9. Jan 2021 16:12
Answers: 1

Re: OH3 Beleuchtung rule

Beitrag von ThomasW »

Das Problem dürften die Timer variablen sein welche du global definiert hast.
Versuch bitte einmal die Rule über eine Datei einzubinden. Das sollte eigentlich mit der Datei aus oh2 klappen.
Ich habe auch noch keine Andere Lösung wie das mit den globalen Variablen über die UI geht, und nutze für meine Timer auch Dateien.

Vielleicht hat jemand eine Idee wie das anders geht?
OH3 auf RPI4,
Heizungssteuerung: Fritz DECT,
Zigbee: Conbee2 über Phoscon-GW: Aqara Opple Schalter, Aqara Temperatursensoren, Aqara Fenstersensoren, Aqara Aktoren, IKEA Lichter
Astro Binding
DWDUnwetter Binding
OpenWeatherMap Binding
FritzBox TR 064 Binding
iRobot Binding
Telegramm Binding für Benachrichtigungen und Steuerung von unterwegs
Rolladensteuerung: Rademacher DuoFern über HTTP Binding

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: OH3 Beleuchtung rule

Beitrag von SIDE22 »

so habe die rule mal als datei hinzugefügt
doch leider kommt auch hier ein fehler ..

Code: Alles auswählen

2021-01-15 15:57:27.187 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: cannot invoke method public abstract java.lang.String org.openhab.core.items.Item.getName() on null in test
LG
Florian
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

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

Re: OH3 Beleuchtung rule

Beitrag von udo1toni »

Das ist immer noch der gleiche Fehler wegen triggeringItem. Du könntest als Workaround die Rule durch die einzelnen Items triggern lassen, also statt

Code: Alles auswählen

Member of gMelder received update ON
schreibst Du

Code: Alles auswählen

Item gLichtFlur received update ON or 
Item gLichtTreppe received update ON
Und anschließend verwendest Du die in OH3 neu hinzugekommene implizite Variable triggeringItemName. Diese steht laut englischem Forum exklusiv in solchen Rules zur Verfügung, in denen der Trigger nicht Member of ist, sondern Item.

Es ist zu bemerken, dass es sich um einen einfachen String handelt, nicht mehr um ein ItemObjekt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: OH3 Beleuchtung rule

Beitrag von SIDE22 »

so habe die rule demnach mal angepasst

Code: Alles auswählen

var Timer tFlur = null
var Timer tTreppe = null

val Integer iZeit = 20

rule "Test Bewegung erkennen"
when
	Item Treppe_Melder1 received update ON or
    Item Treppe_Melder2 received update ON
then
    val licht = triggeringItemName.name.split("_").get(0)                   // "Flur" oder "Treppe"
    val Licht = gLichter.members.filter[i|i.name.contains(licht)].head      // gLichtFlur oder gLichtTreppe
    if(Licht.state != 100) {                                                // Licht nicht in Dauerbetrieb
        if(gHelligkeit.state < 60) {                                        // falls nicht Flur und dunkel
            gLichtTreppe.sendCommand(25)                                    // entsprechendes Licht auf 25%
            tTreppe?.cancel                                                 // Timer abbrechen
            tTreppe = createTimer(now.plusSeconds(iZeit),[|                 // Timer anlegen
                gLichtTreppe.sendCommand(0)                                 // Licht aus
            ])
        } else if(licht == "Flur") {                                        // falls Flur, Treppentimer
            gLichtFlur.sendCommand(25)                                      // entsprechendes Licht auf 25%
            tFlur?.cancel                                                   // Timer abbrechen
            tFlur = createTimer(now.plusSeconds(iZeit),[|                   // Timer anlegen
                gLichtFlur.sendCommand(0)                                   // Licht aus
            ])
        }
    }
end
und habe diese mal als .rules datei eingefügt
bekomme nun ein anderen fehler

Code: Alles auswählen

2021-01-16 17:20:38.580 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: 'name' is not a member of 'java.lang.String'; line 11, column 17, length 23 in test

schreibe ich statt

Code: Alles auswählen

val licht = triggeringItemName.name.split("_").get(0)                   // "Flur" oder "Treppe"
das

Code: Alles auswählen

val licht = triggeringItemName.split("_").get(0)                   // "Flur" oder "Treppe"
bekomme ich diesen fehler

Code: Alles auswählen

2021-01-16 17:22:05.690 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: cannot invoke method public java.lang.String[] java.lang.String.split(java.lang.String) on null in test

die rule heist aktuell test ^^

LG
Florian
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: OH3 Beleuchtung rule

Beitrag von SIDE22 »

OK muss mich korrigieren es geht doch hatte die Regel manuell ausgelöst aber das kann ja nicht funktionieren ^^
Zumindest geht es nun so als Datei.

LG
Florian
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: OH3 Beleuchtung rule

Beitrag von SIDE22 »

so habe das ganze jetzt mal so angepasst auch von den namen her wie es laufen soll

die rule funktioniert nun einwandfrei und habe diese jetzt auch über die UI drin
hier nochmal bilder und befehle fals jemand interesse hat.
Unbenannt.PNG
Unbenannt1.PNG

und einmal die Rule DSL

Code: Alles auswählen

var Timer tGarten = null
var Timer tTreppe = null

val licht = triggeringItemName.split("_").get(0)                       // "Garten" oder "Treppe"
val Licht = gLichter.members.filter[i|i.name.contains(licht)].head     // gLichtGarten oder gLichtTreppe
if(Licht.state != 100) {                                               // Licht nicht in Dauerbetrieb
  if(licht != "Garten") {                                              // falls nicht Garten
    if(gHelligkeit.state < 60) {                                       // falls dunkel
      gLichtTreppe.sendCommand(25)                                     // entsprechendes Licht auf 25%
      tTreppe?.cancel                                                  // Timer abbrechen
      tTreppe = createTimer(now.plusSeconds(20),[|                     // Timer anlegen
        gLichtTreppe.sendCommand(0)                                    // Licht aus
      ])
    }
  } else if(licht == "Garten") {                                       // falls Garten
    if(gHelligkeitOUT.state < 110) {                                   // falls dunkel
      gLichtGarten.sendCommand(95)                                     // entsprechendes Licht auf 95%
      tGarten?.cancel                                                  // Timer abbrechen
      tGarten = createTimer(now.plusSeconds(60),[|                     // Timer anlegen
        gLichtGarten.sendCommand(0)                                    // Licht aus
      ])
    }
  }
}

danke an die, die mir geholfen haben :)


jetzt wäre nurnoch die frage die rule prüft ja ob das licht dauerhaft an ist oder nicht (100% helligkeit der lampen)
nur wenn der timer der Rule grade läuft und ich schalte das Licht dauerhaft an geht es nach der eingestelten zeit wieder aus
sind die Timer über die UI global oder sind die nur in der Rule ?

LG
Florian
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

Antworten