OH3 Beleuchtung rule
-
- Beiträge: 33
- Registriert: 9. Jan 2021 16:12
Re: OH3 Beleuchtung rule
Hey
das von dir beschriebene Verhalten ist genau so zu erwarten.
erst erstellst du einen Timer der nach einer Zeit das licht ausschalten soll, wenn du das Licht dann über einen Schalter einschaltest wird das garnicht von deiner Rule bemerkt da der Schalter nicht als Triger gesetzt ist. Daher führt der Timer seine Funktion aus.
du müsstest jetzt noch ergänzen das beim drücken des Schalters der Timer abgebrochen wird.
Timer sind über die UI leider nicht global daher kannst du später da nicht drauf zugreifen
das von dir beschriebene Verhalten ist genau so zu erwarten.
erst erstellst du einen Timer der nach einer Zeit das licht ausschalten soll, wenn du das Licht dann über einen Schalter einschaltest wird das garnicht von deiner Rule bemerkt da der Schalter nicht als Triger gesetzt ist. Daher führt der Timer seine Funktion aus.
du müsstest jetzt noch ergänzen das beim drücken des Schalters der Timer abgebrochen wird.
Timer sind über die UI leider nicht global daher kannst du später da nicht drauf zugreifen
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
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
-
- Beiträge: 153
- Registriert: 4. Mai 2020 01:31
- Wohnort: Hagen a.T.W.
Re: OH3 Beleuchtung rule
OK danke also muss ich den Schalter demnach mit in die rule bauen so das der Timer abgebrochen wird.
Nur habe ich bei der aktuellen rule das Problem das der Timer so wie die rule aktuell ist garnicht abgebrochen wird ..
Die rule wird ja ausgelöst wenn ein Melder auf ON wechselt
Dann soll der Timer ja abgebrochen werden und ein neuer angelegt werden nur klappt dies leider nicht ganz .. das Licht geht immer aus und nach paar Sekunden wieder an in OH2 war dies nicht so
Ist der Befehl für den Abbruch des Zimmers in OH3 anders ?
Hab schon paar Mal gelesen das viele das
In meinem Beispiel mit
Machen wird der Timer damit den wieder zurück gesetzt ?
LG
Florian
Nur habe ich bei der aktuellen rule das Problem das der Timer so wie die rule aktuell ist garnicht abgebrochen wird ..
Die rule wird ja ausgelöst wenn ein Melder auf ON wechselt
Dann soll der Timer ja abgebrochen werden und ein neuer angelegt werden nur klappt dies leider nicht ganz .. das Licht geht immer aus und nach paar Sekunden wieder an in OH2 war dies nicht so
Ist der Befehl für den Abbruch des Zimmers in OH3 anders ?
Hab schon paar Mal gelesen das viele das
In meinem Beispiel mit
Code: Alles auswählen
tTreppe = null
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)
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)
- udo1toni
- Beiträge: 13948
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 Beleuchtung rule
Nein, ein Timer wird durch (z.B.) tTreppe.cancel abgebrochen. Ein tTreppe = null entfernt lediglich den Zeiger auf den Timer. Das Problem sind die globalen Variablen, die natürlich nicht innerhalb der Rule definiert sein dürfen.
Im englischen Forum konnte ich bisher nichts dazu finden (außer eine Aussage (aus OH2-Zeiten) dass es keine globalen Variablen gibt, was dann ja bedeutet, dass man Timer nicht mehr canceln kann...
Im englischen Forum konnte ich bisher nichts dazu finden (außer eine Aussage (aus OH2-Zeiten) dass es keine globalen Variablen gibt, was dann ja bedeutet, dass man Timer nicht mehr canceln kann...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 33
- Registriert: 9. Jan 2021 16:12
Re: OH3 Beleuchtung rule
genau du must dem mit einbauen
Code: Alles auswählen
wenn schalter gedrückt dann timer.cancel
Das funktioniert bei mir nur wenn ich das über eine Datei mit der rule mache.
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
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
-
- Beiträge: 153
- Registriert: 4. Mai 2020 01:31
- Wohnort: Hagen a.T.W.
Re: OH3 Beleuchtung rule
also das timer.cancel geht bei mir einfach nicht egal ob über ui oder als datei
wäre die richtige schreibweise den
oder
habe immer auch in OH2 die obere genommen.
also man kann bei den timer ja eine variable anlegen mit dem
allerdings geht es auch wenn man beim anlegen des timers einfach nur schreibt zb.
nur kann man den timer so ja nicht abbrechen vorher weil das system ja nicht weis wo es definiert ist.
also wird es dann wohl aktuell ein fehler in openhab sein das der timer nicht abgebrochen wird ?
LG
Florian
wäre die richtige schreibweise den
Code: Alles auswählen
tTreppe?.cancel
Code: Alles auswählen
tTreppe.cancel
also man kann bei den timer ja eine variable anlegen mit dem
Code: Alles auswählen
var Timer tTreppe = null
Code: Alles auswählen
createTimer(now.plusSeconds(210)) [|
]
nur kann man den timer so ja nicht abbrechen vorher weil das system ja nicht weis wo es definiert ist.
also wird es dann wohl aktuell ein fehler in openhab sein das der timer nicht abgebrochen wird ?
die variablen müssen ja immer an erster stelle stehen war OH2 ja schon so daher hab ich es jetzt so auch wieder
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)
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)
-
- Beiträge: 33
- Registriert: 9. Jan 2021 16:12
Re: OH3 Beleuchtung rule
gehen beide soweit ich weisSIDE22 hat geschrieben: ↑18. Jan 2021 13:06 also das timer.cancel geht bei mir einfach nicht egal ob über ui oder als datei
wäre die richtige schreibweise den
oderCode: Alles auswählen
tTreppe?.cancel
habe immer auch in OH2 die obere genommen.Code: Alles auswählen
tTreppe.cancel
Jetzt versuch mal bitte folgendes in einer datei nicht über die UI da kannst du leider nicht mit deinen timern arbeiten
das wäre jetzt so meine idee
Code: Alles auswählen
var Timer tGarten = null
var Timer tTreppe = null
rule "Licht"
when
// hier deine Bedingungen einfügen Melder und auch Schalter (diese sollten dann auch mit Garten_ oder Treppe_ anfangen)
then
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{ //wird ausgeführt wenn Licht.state=100
tTreppe?.cancel //timer abbrechen
}
} 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
])
}
}
}
end
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
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
- udo1toni
- Beiträge: 13948
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 Beleuchtung rule
Der Unterschied zwischen tTreppe?.cancel und tTreppe.cancel ist schnell erklärt:
tTreppe.cancel bricht den laufenden Timer ab, dessen Zeiger in tTreppe gespeichert ist. Existiert dieser Timer aus irgendeinem Grund nicht, so kommt es zu eine NullPointer Exception.
tTreppe?.cancel brichtden Timer nur an ab, wenn er auch existiert. Man könnte als Äqui9valent auch
Wobei das ja strenggenommen noch nicht ausreicht.
Unterm Strich ist die Variante mit dem Fragezeichen die bessere...
tTreppe.cancel bricht den laufenden Timer ab, dessen Zeiger in tTreppe gespeichert ist. Existiert dieser Timer aus irgendeinem Grund nicht, so kommt es zu eine NullPointer Exception.
tTreppe?.cancel brichtden Timer nur an ab, wenn er auch existiert. Man könnte als Äqui9valent auch
Code: Alles auswählen
if(tTreppe !== null) tTreppe.cancel
Unterm Strich ist die Variante mit dem Fragezeichen die bessere...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 153
- Registriert: 4. Mai 2020 01:31
- Wohnort: Hagen a.T.W.
Re: OH3 Beleuchtung rule
So Moin.
Danke Udo für die Erklärung
Allerdings hab ich gestern Mal getestet und gesehen das andere rule wo Timer cancel mit drin ist dieser nicht abgebrochen wird
Die Variante von Thomas hab ich getestet und es ist das selbe der Timer wird nicht abgebrochen ..
LG
Florian
Danke Udo für die Erklärung
Allerdings hab ich gestern Mal getestet und gesehen das andere rule wo Timer cancel mit drin ist dieser nicht abgebrochen wird
Die Variante von Thomas hab ich getestet und es ist das selbe der Timer wird nicht abgebrochen ..
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)
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)
- udo1toni
- Beiträge: 13948
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 Beleuchtung rule
Ja, das funktioniert in OH3 so nicht mehr. Die Variable muss global definiert sein.
Wenn man die Rule komplett als Rule laufen lässt (also inklusive Trigger in einer .rules Datei speichert) sollte man den Timer auch abbrechen können (korrekte Implementation mal vorausgesetzt)
Gesendet von iPad mit Tapatalk
Wenn man die Rule komplett als Rule laufen lässt (also inklusive Trigger in einer .rules Datei speichert) sollte man den Timer auch abbrechen können (korrekte Implementation mal vorausgesetzt)
Gesendet von iPad mit Tapatalk
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 33
- Registriert: 9. Jan 2021 16:12
Re: OH3 Beleuchtung rule
So sollte es sein.
Manchmal liegt der Fehler im Detail.
Code: Alles auswählen
var Timer tGarten = null
var Timer tTreppe = null
rule "Licht"
when
// hier deine Bedingungen einfügen Melder und auch Schalter (diese sollten dann auch mit Garten_ oder Treppe_ anfangen)
then
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
] )
}
}
}
else{ //wird ausgeführt wenn Licht.state=100
tTreppe?.cancel //beide timer abbrechen
tGarten?.cancel
logInfo("Licht", "Beide Timer abgebrochen")
}
end
Zuletzt geändert von ThomasW am 21. Jan 2021 00:22, insgesamt 1-mal geändert.
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
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