Seite 1 von 2
Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 4. Sep 2025 20:58
von technick90
Hallo,
ich habe von Openhab 4.3.5 auf 5.0.1 gewechselt.
Nun scheinen die Regeln mit Timer nicht mehr zu funktionieren. Soweit ich das nachvollziehen kann, wird der Timer scheinbar einfach nicht ausgeführt.
Beispiel für einen Timerstart in meinen Regeln:
Ich kann nix dazu finden das sich bezüglich Timer etwas geändert hat. Weiß gerade nicht wie ich das beheben soll.
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 01:31
von udo1toni
Bei mir funktionieren die Timer noch

erster Versuch: Starte openHAB noch mal neu.
zweiter Versuch: ändere den createTimer Aufruf von
hin zu
Das heist, das Lambda wird als Parameter der Funktion übergeben. Das sollte eigentlich keinen Unterschied machen, openHAB lässt beide Schreibweisen zu, aber wer weiß...
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 07:12
von technick90
Habe den Timer jetzt mal als Script standlone ohne Schnickschnack erstellt, der Timer funktioniert.
Das ist also nicht das Problem. Hmm. Meine Regeln fürs Lüften funktioniert aber nicht, siehe
viewtopic.php?p=66191#p66191
Des Weiteren habe ich eine Regel die 30min nach Sonnenuntergang die Beschattung herunterfährt, das ging gestern Abend auch nicht mehr.
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 08:13
von nw378
Nur ein ganz leiser Verdacht (und dürfte mit dem Timer nix zu tun haben, wohl aber wenn Du Zeiten z.B, mit dem Astrobinding vergleichst):
Schau mal in der Datei /etc/default/openhab, ob Deine Java-Zeit korrekt ist.
In der Zeile EXTRA_JAVA_OPTS= sollte der Parameter -Duser.timezone=Europe/Berlin stehen. bei Update auf 5.0.x steht dort Lomdon.
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 08:32
von technick90
Beide Regeln vergleichen Zeiten. Der Tipp gefällt mir daher.
Ich habe aber von openhabian auf raspbian mit Docker gewechselt.
Im Dockerimage gibt es die Datei /etc/default/openhab nicht.
Per ENV ist im Docker Container das Attribut m. E. aber richtig gesetzt:
EXTRA_JAVA_OPTS -Duser.timezone=Europe/Berlin
Wenn ich mir mit date das Datum im Docker Image ausgeben lasse, ist dies korrekt.
Dennoch passt deine Fehlerursachenbeschreibung zur Symptomatik. Hmmm.
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 13:50
von udo1toni
Wie sieht deine Startdatei exakt aus? Bitte als Code markiert einfügen, damit auch Einrückungsfehler erkennbar werden.
So sieht das in meiner Testumgebung aus:
Code: Alles auswählen
version: '2.2'
services:
openhab:
image: "openhab/openhab:milestone"
restart: unless-stopped
network_mode: host
ports:
- 8080:8080
- 8443:8443
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "/etc/timezone:/etc/timezone:ro"
- "/portainer/Files/AppData/Config/openHAB5/openhab_addons:/openhab/addons"
- "/portainer/Files/AppData/Config/openHAB5/openhab_conf:/openhab/conf"
- "/portainer/Files/AppData/Config/openHAB5/openhab_userdata:/openhab/userdata"
environment:
CRYPTO_POLICY: "unlimited"
EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"
OPENHAB_HTTP_PORT: "8080"
OPENHAB_HTTPS_PORT: "8443"
USER_ID: "998"
GROUP_ID: "997"
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 14:00
von technick90
Habe docker-compose.yml und .env.
docker-compose.yml
Code: Alles auswählen
services:
openhab:
image: openhab/openhab:${OPENHAB_VERSION}
depends_on:
- influxdb
- mosquitto
restart: always
# if you do not need persistent log files
#tmpfs:
# - /openhab/userdata/logs
command: "bash -c 'if [ -e /openhab/restore/restore.zip ]; then echo y |/openhab/runtime/bin/restore /openhab/restore/restore.zip ; fi; exec tini -s ./start.sh server'"
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "/etc/timezone:/etc/timezone:ro"
- "./data/openhab/conf:/openhab/conf"
- "./data/openhab/addons:/openhab/addons"
- "./data/openhab/restore:/openhab/restore"
- "./data/openhab/backup:/openhab/backup"
- "./data/openhab/userdata:/openhab/userdata"
environment:
- TZ=${TZ}
- OPENHAB_HTTP_PORT=${OPENHAB_HTTP_PORT}
- OPENHAB_HTTPS_PORT=${OPENHAB_HTTPS_PORT}
- "CRYPTO_POLICY=unlimited"
- "EXTRA_JAVA_OPTS=-Duser.timezone=${TZ}"
# If you need more memory
#- "EXTRA_JAVA_OPTS=-Xms1024m -Xmx2048m -Duser.timezone=${TZ}"
- USER_ID=9001
- GROUP_ID=9001
labels:
- "com.centurylinklabs.watchtower.enable=true"
network_mode: host
.env
Code: Alles auswählen
# Config File for openHAB Application
# Docker Compose Project Name
# max length 11 characters
PROJECT_NAME=openhab5
# Port Configuration openHab
OPENHAB_VERSION=5.0.1
OPENHAB_HTTP_PORT=8080
OPENHAB_HTTPS_PORT=8443
# Timezone
TZ=Europe/Berlin
Ich teste gleich nochmal ausführlicher was nun geht und was nicht..
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 14:34
von technick90
die alte Lueften.rules funktioniert.
In der alten Rule wird simpel ein Timer gestartet und dann geprüft ob das Fenster noch auf ist.
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 14:53
von technick90
Also die Regel für Fenster offen/geschlossen (Lüften) scheint bis zum Schritt zur Ermittlung der geöffneten Fenster zu kommen.
Habe Log-Schritte eingefügt.
1. Trigger ausgelöst
2: Timer wurde gestartet
3. Timer läuft
3. Timer: Durchlauf aller Fenster
4. Timer überschritten
Er loggt bis zu Schritt 3 und dann ist Schluss.
Code: Alles auswählen
var Timer tFensteralarm = null
rule "Fenster Status"
when
Member of Fenstersensoren changed
then
logInfo("lueften.rules","Trigger hat ausgelöst.")
if(tFensteralarm !== null && Fenstersensoren.members.filter[s|s.state.toString == "Offen"].size == 0) {
tFensteralarm.cancel
tFensteralarm = null
} else if(tFensteralarm === null && Fenstersensoren.members.filter[s|s.state.toString == "Offen"].size > 0) {
logInfo("lueften.rules","Timer wurde gestartet...")
tFensteralarm = createTimer(now.plusSeconds(20), [|
tFensteralarm.reschedule(now.plusMinutes(5))
logInfo("lueften.rules","Timer läuft...")
val StringBuilder sb = new StringBuilder
sb.append("Folgende Fenster sind zu lange geöffnet: ")
Fenstersensoren.members.filter[s|s.state.toString == "Offen"].forEach[i|
val tTimestamp = i.lastChange()
val strID = i.name.split("_").get(1)
val iTimeout = (Fenstersensoren_Sperrzeitfenster.members.filter[s|s.name.contains(strID)].head.state as Number).intValue
logInfo("lueften.rules","Timer: Durchlauf aller Fenster")
if(tTimestamp.plusMinutes(iTimeout).isBefore(now)) {
logInfo("lueften.rules","Timer überschritten...")
sb.append(i.label + " ")
}
]
val text = sb.toString
if(text.length > 42) {
if(Anwesenheit == OFF)
sendBroadcastNotification(text, "contact", "Info")
else {
AlexaWohnzimmer_Ankuendigung.sendCommand(text)
AlexaBad_TTS.sendCommand(text)
AlexaArbeitszimmer_TTS.sendCommand(text)
AlexaKueche_TTS.sendCommand(text)
if (UniFiWirelessClientRobert_Online.state == ON) {sendNotification("@.com", text, "contact", "Info")}
if (UniFiWirelessClientMartin_Online.state == ON) {sendNotification("@.com", text, "contact", "Info")}
}
}
])
}
end
Re: Openhab 5 - Timer funktionieren nicht mehr
Verfasst: 5. Sep 2025 18:02
von technick90
Meine Regel für die Betriebsstunden der Poolpumpe geht auch nicht mehr.
Trigger: Poolpumpe wird aus/eingeschaltet.
Code: Alles auswählen
if (MQTT_Tuya_Steckdose_2_Power.state == ON) dtStart = now.toEpochSecond
else if (MQTT_Tuya_Steckdose_2_Power.state == OFF) {
if(previousState == NULL) return;
var double dSum = (MyCounter_Poolpumpe.state as QuantityType<?>).doubleValue
dSum = dSum + ((now.toEpochSecond - dtStart).doubleValue / 60.0)
MyCounter_Poolpumpe.postUpdate(dSum) }
Hier kommt es zu einem Fehler im Eventlog:
Code: Alles auswählen
Script execution of rule with UID 'betriebsdauer-poolpumpe-1' failed: Could not cast NULL to org.openhab.core.library.types.QuantityType; line 8, column 26, length 44 in betriebsdauer-poolpumpe