Openhab 5 - Timer funktionieren nicht mehr

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

technick90
Beiträge: 57
Registriert: 24. Jul 2019 16:56
Answers: 1

Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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:

Code: Alles auswählen

createTimer(now.plusMinutes(30)) [|]
Ich kann nix dazu finden das sich bezüglich Timer etwas geändert hat. Weiß gerade nicht wie ich das beheben soll.

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

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag von udo1toni »

Bei mir funktionieren die Timer noch :)
erster Versuch: Starte openHAB noch mal neu.
zweiter Versuch: ändere den createTimer Aufruf von

Code: Alles auswählen

createTimer(now.plusMinutes(30)) [|]
hin zu

Code: Alles auswählen

createTimer(now.plusMinutes(30), [|])
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ß...
openHAB5.0.1 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)

technick90
Beiträge: 57
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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.

nw378
Beiträge: 327
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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.
openHAB 5.0.1 @ RPi 5 / M.2 SSD - InfluxDB2 und Grafana @ Synology Docker - KNX, Viessmann vcontrol, u.v.m.

technick90
Beiträge: 57
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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.

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

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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"
openHAB5.0.1 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)

technick90
Beiträge: 57
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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..

technick90
Beiträge: 57
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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.

technick90
Beiträge: 57
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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

technick90
Beiträge: 57
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Openhab 5 - Timer funktionieren nicht mehr

Beitrag 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

Antworten