Re: OH3 Beleuchtung rule
Verfasst: 14. Jan 2021 18:33
Du musst die Rule ohnehin anpassen, denn die beiden Timer müssen zwingend global definiert werden.
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
Code: Alles auswählen
Member of gMelder received update ON
Code: Alles auswählen
Item gLichtFlur received update ON or
Item gLichtTreppe received update ON
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
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
Code: Alles auswählen
val licht = triggeringItemName.name.split("_").get(0) // "Flur" oder "Treppe"
Code: Alles auswählen
val licht = triggeringItemName.split("_").get(0) // "Flur" oder "Treppe"
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
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
])
}
}
}