TimerArray in Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
ruedi42
Beiträge: 5
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: 15511
Registriert: 11. Apr 2018 18:05
Answers: 250
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
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

ruedi42
Beiträge: 5
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