TimerArray in Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
ruedi42
Beiträge: 4
Registriert: 1. Mär 2024 20:11
Answers: 0

TimerArray in Rule

Beitrag von ruedi42 »

hallo,

ich würde gerne in einer OH 4 rule eine statische liste von diversen timern in ein array überführen.
bisher habe ich folgendes versucht:

var List<Timer> myTimerArray = newArrayList()

var newTimer = createTimer(now.plusMinutes(1), [ |
logInfo("lights.rules", "{}", "timer ende")
])

myTimerArray.add(newTimer,0)

// zum testen den timer canceln
var aktTimer = myTimerArray.get(0)
aktTimer.cancel()

wie wäre die korrekte syntax um das durchzuführen?

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

Re: TimerArray in Rule

Beitrag von udo1toni »

Das sollte per Hashmap gehen:

Code: Alles auswählen

import java.util.Map

val Map<String, Timer> myTimerArray = newHashMap // außerhalb der Rule definieren, damit die Hashmap über die Laufzeit der Rule erhalten bleibt.

rule "meine Rule"
when 
    Member of gMeinGroupItem changed
then
    // init
    var vName = triggeringItem.name.split("_").get(1)
    var vTimerName = "timer_" + vName
    // mach was
    // timers
    myTimerArray.get(vTimerName)?.cancel;
    
    myTimerArray.put(vTimerName, createTimer(now.plusMinutes(10)) [|
        // mach was anderes
        myTimerArray.remove(vTimerName)
    ] )
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

ruedi42
Beiträge: 4
Registriert: 1. Mär 2024 20:11
Answers: 0

Re: TimerArray in Rule

Beitrag von ruedi42 »

vielen, vielen dank. das ist genau so etwas das ich gesucht habe !
funktioniert !!

Antworten