regel bleibt ohne Fehler hängen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

regel bleibt ohne Fehler hängen

Beitrag von Caddy »

Hallo,

wie kann ich das logging für Regeln erhöhen wenn eine Regel ohne Fehler hängen bleibt ?

seit dem update auf die 2.4 bleibt meine Regel bei

if(CivilDusk_StartDate.state == NULL)

hängen, gibt aber keine Fehlermeldung aus.
Alle Versuche mit anderem Binding, Neustart etc haben bisher zu keinem Erfolg geführt.
Nehme ich den Block raus läuft die Regel durch

Hat jemand eine Idee ?

Danke Caddy

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

Re: regel bleibt ohne Fehler hängen

Beitrag von udo1toni »

Die Frage ist ja, was Du in dem Block machst. Du könntest versuchsweise selbst Logger einbauen, um zu sehen, wo exakt der Fehler auftritt. Die if-Zeile sieht jedenfalls unverdächtig aus. Ich gehe davon aus, dass Du ein Item CivilDusk_StartDate hast.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: regel bleibt ohne Fehler hängen

Beitrag von Caddy »

Habe ich alles schon hinter mir ..... jetzt habe ich sie einmal neu geschrieben jetzt geht es wieder ?!?!?!!?!?

Komisch .....

Code: Alles auswählen

rule "Automatic Aussenbeleuchtung"
when
    System started or
    Time cron "1 0 6 * * ?" or
    Time cron "1 0 23 * * ?" or
    Channel 'astro:sun:home:civilDawn#event' triggered START or
    Channel 'astro:sun:home:civilDusk#event' triggered START
then
	logInfo("Rule.autoABeleuchtung","autoABeleuchtung wird gestartet")
	var mySwitch = OFF
	var Number hour = now.getHourOfDay
	var cDusk = now.withTimeAtStartOfDay.plusHours(20).millis
	var cDawn = now.withTimeAtStartOfDay.plusHours(7).millis
	if(CivilDusk_StartTime.state !== NULL) { 
	  cDusk = (CivilDusk_StartTime.state as DateTimeType).calendar.timeInMillis }
	if(CivilDawn_StartDate.state !== NULL) {
		cDawn = (CivilDawn_StartDate.state as DateTimeType).calendar.timeInMillis }
	if(hour<6 || hour>22) {
		mySwitch = OFF}
    else if (now.isAfter(cDawn) && now.isBefore(cDusk)) {	
		mySwitch = OFF}
    else {
		mySwitch = ON}
    gNachtLicht.sendCommand(mySwitch)
    logInfo("Rule.autoABeleuchtung","autoABeleuchtung {}",mySwitch)	
	sendTelegram("bot1", "autoABeleuchtung %s",mySwitch)	
	logInfo("Rule.autoABeleuchtung","autoABeleuchtung beendet")
end

case solved :-)

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

Re: regel bleibt ohne Fehler hängen

Beitrag von udo1toni »

Du schreibst da !==, nicht !=, das ist ein erheblicher Unterschied.

== -> Vergleich auf "ist gleich"
=== -> Vergleich auf "ist identisch"
entsprechend
!= -> Vergleich auf "ist nicht gleich"
!== -> Vergleich auf "ist nicht identisch"

Der Unterschied zwischen "identisch" und "gleich" ist etwas schwieriger zu erklären. Grob gesagt geht es um Verweise im Speicher.
Stell Dir vor, in einer Speicherzelle steht ein Wert, der verglichen wird. Bei "identisch" muss der Zeiger auf diese Speicherzelle verweisen (das wäre z.B. beim Vergleich auf null der Fall, da null immer auf eine bestimmte Speicherzelle verweist. Man könnte auch in einer Speichzelle die Zahl 5 stehen haben. Solange der Vergleich nun tatsächlich auf die gleiche Speicherzelle verweist, ist der Vergleich auch identisch.
Wenn nun in einer anderen Speicherzelle auch eine 5 steht, liefert der Vergleich auf "identisch" aber falsch, da die beiden Werte zwar gleich, aber nicht identisch sind.
Nun kommt der Knackpunkt. NULL ist nicht identisch mit null. Streng genommen müsste es sogar eine Fehlermeldung geben, weil der Vergleich auf identisch mit NULL gar nicht zulässig sein dürfte.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten