2 Regeln in einer xxx.rules Datei funktionieren nicht

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
Joe
Beiträge: 200
Registriert: 10. Okt 2018 12:22
Answers: 0
Wohnort: bei Mannheim

2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von Joe »

Hallo zusammen,
hat jemand ein Idee warum die erste Regel "Brunnenschalter_on" nicht funktioniert, wenn ich diese in Verbindung mit der zweiten Regel "Wechselschalter_Aussentemperatur_Brunnen2" innerhalb einer "xxx.rules" Datei habe? :?:
Wenn ich die erste Regel in eine extra xxx.rules Datei packe funktioniert diese ohne Probleme. :?

Code: Alles auswählen

rule "Brunnenschalter_on" 
  when 
    Time cron "0 22 11 ? * *"         
  then
	  Brunnenschalter.sendCommand(ON) //Brunnenschalter On
      sendTelegram("bot1", "Brunnenschalter - " + Brunnenschalter.state.toString())
end 

val aTemp = Temperature.state as Number
rule "Wechselschalter_Aussentemperatur_Brunnen2"
  when
    Item Temperature changed //wenn Außentemperatur sich ändert dann
  then
		if (aTemp <= 15.00){
		SonoffT1.sendCommand(OFF)
        //sendTelegram("bot1", "Temperatur im Garten beträgt: " + Temperature.state.toString())
		}else if (aTemp > 16.00){
		SonoffT1.sendCommand(ON)
        //sendTelegram("bot1", "Temperatur im Garten beträgt: " + Temperature.state.toString())
		}
end
Frohe Ostern und schon mal Danke für die Hilfe

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von Darkwin101 »

Das einzige was mir auffällt ist das Var/Val am Anfang oder innerhalb der Regeln deklariert werden das würde ich mal ausprobieren in dem ich das val innerhalb des then Teils setzt.

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

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von udo1toni »

Was meinst Du denn mit "funktioniert nicht"?

Grundsätzlich:
  1. val bedeutet Konstante. Wenn Du außerhalb einer Rule eine Konstante definierst, ist sie unabänderlich, bis die Rules Datei neu eingelesen wird.
  2. Globale Variablen und Konstanten müssen zu Beginn der Datei definiert werden, vor der ersten Rule.
  3. dynamische Wertzuweisungen außerhalb Rules sind nicht statthaft (Temperature.state ist ein variabler Wert).
  4. Ein Casting nach Number ohne Prüfung auf einen gültigen Wert kann und wird Null Pointer Exceptions hervorrufen.
Deine Rules sollten also eher so aussehen:

Code: Alles auswählen

rule "Brunnenschalter on" 
when
    Time cron "0 22 11 ? * *"         
then
    Brunnenschalter.sendCommand(ON)                                               // Brunnenschalter On
    sendTelegram("bot1", "Brunnenschalter - " + Brunnenschalter.state.toString())
end 

rule "Außentemperatur Brunnen2"
when
    Item Temperature changed                                                      // wenn Außentemperatur sich ändert
then
    val Number aTemp = if(Temperature.state instanceof Number) (Temperature.state as Number) else 15.5

    if(aTemp <= 15)
        SonoffT1.sendCommand(OFF)
    else if(aTemp > 16)
        SonoffT1.sendCommand(ON)

    if(aTemp <= 15 || aTemp > 16)
        //sendTelegram("bot1", "Temperatur im Garten beträgt: " + aTemp.toString)
end
Der ternäre Operator in der Wertzuweisung bewirkt, dass aTemp auf einen Wert gesetzt wird, der sich innerhalb des Hysteresefensters befindet, falls der Sensor keinen gültigen Wert liefert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Joe
Beiträge: 200
Registriert: 10. Okt 2018 12:22
Answers: 0
Wohnort: bei Mannheim

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von Joe »

Hi Udo,
danke für den Tipp und die Modifikationen an der Regel.
Leider funktioniert die Geschichte immer noch nicht, wenn ich meine Code deaktiviere und Deinen verwende.
Es geht wieder nur dann, wenn ich die erste Regel in eine extra Datei kopiere.
Das kann doch alles nicht sein.
Hast Du noch eine Idee wo der Fehler liegen kann?

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

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von udo1toni »

Bist Du sicher, dass es an genau diesen beiden Regeln hängt? sind das die einzigen Regeln im System/in der Datei?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Joe
Beiträge: 200
Registriert: 10. Okt 2018 12:22
Answers: 0
Wohnort: bei Mannheim

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von Joe »

Ja ich hatte extra eine neue Datei erstellt, dass ich mit den Sonoffs nicht durcheinander komme.
Wie gesagt wenn ich die beiden Regeln in unterschiedliche Dateien packe geht alles wie es sein sollte.
Habe den Raspberry auch schon neu gestartet... das ist zum Mäuse melken.

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

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von udo1toni »

Bist Du sicher, dass Du keine namensgleiche Rule in einer anderen Datei hast? Ich kann mir ehrlich gesagt nicht vorstellen, wie dieser fehler zustande kommen soll, solange alle Rules systemweit eindeutige Namen haben ist es unerheblich, wie viele Rules in wievielen Dateien auf dem System liegen, sie werden alle passend ausgeführt (vorausgesetzt natürlich, die Ressourcen reichen aus).

Hast Du eine andere Rule, welche ebenfalls auf Time cron "0 22 11 ..." triggert?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Joe
Beiträge: 200
Registriert: 10. Okt 2018 12:22
Answers: 0
Wohnort: bei Mannheim

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von Joe »

Hi Udo,
bin ja froh das nur ich die Situation nicht erklären kann :-)
Nein ich habe keinen anderen trigger der um diese Zeit startet, es ist auch egal welche Zeit ich einstelle es funktioniert nicht.
Ich habe auch keine Rule die den gleichen Namen hat, ich habe schon die mit Zahlen aufgefüllt.
Danke aber für Deinen Einsatz, ich werde das ganze jetzt in einer extra-Datei abwickeln.

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von peter-pan »

...Frage ! Funktioniert diese Syntax ?
sendTelegram("bot1", "Brunnenschalter - " + Brunnenschalter.state.toString())
Ich meine damit das Klammerpaar nach ".. .toString()". Ich habe das so noch nicht gesehen
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
Joe
Beiträge: 200
Registriert: 10. Okt 2018 12:22
Answers: 0
Wohnort: bei Mannheim

Re: 2 Regeln in einer xxx.rules Datei funktionieren nicht

Beitrag von Joe »

Ja funktionieren ohne Probleme.
Ich nutze diese immer, da ich bei manchen noch zusätzliche Infos in die () schreibe die ich gerne übermittelt hätte.

Antworten