Regelfehler - Logik-fehler?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Regelfehler - Logik-fehler?

Beitrag von peter-pan »

@udo1toni
Hallo Udo, erst mal Danke für die Antwort.
Wenn ich das richtig verstanden habe, kann man das nur in der Regel selber abfragen :?: , oder?
Also nicht von aussen, z.B. in der Shell oder über die Konsole?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Zubertus
Beiträge: 19
Registriert: 12. Mai 2019 21:02
Answers: 1

Re: Regelfehler - Logik-fehler?

Beitrag von Zubertus »

Hallo,
vielen Dank für Eure Antworten.
Auch ein großes Danke an Udo.
Da heißt es für mich wohl weiter einlesen in das Thema OHrules.
Aber nur so wird man schlauer :)

Beste Grüße

zubertus

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

Re: Regelfehler - Logik-fehler?

Beitrag von peter-pan »

Sorry Zubertus,
ich hab mich da einfach reingegrätscht und dabei den Bogen etwas überspannt. Wie ist denn der Stand der Dinge mit deinem eigentlichen Problem ?

Gruss
peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Zubertus
Beiträge: 19
Registriert: 12. Mai 2019 21:02
Answers: 1

Re: Regelfehler - Logik-fehler?

Beitrag von Zubertus »

Hallo Peter,

ich hab erstmal das .state hinzugefügt und meine Regel komplett überarbeitet.
d.h.
die ganzen (überflüssigen) Timer entfernt sowie um einiges eingekürzt. Um die Fehlerquote zu senken. Läuft scheinbar erst mal.

Jetzt bin ich im Netz auf der suche nach Zeiger/Action/Methode :-)

Was mir nicht ganz klar ist bzw. wie ich das beheben soll:
Du setzt voraus, dass jedes Item allzeit einen gültigen Wert enthält, das ist aber nicht sicher.
Grüße

für die Vollständigkeit hier meine überarbeitete rules
PS: das FensterTest_zu item fliegt natürlich raus wenn Sie so läuft wie ich es möchte :D

Code: Alles auswählen

rule "Fenster auf am Abend bei Wärme"
	
	when
		Channel 'astro:sun:local:set#event' triggered START or
		Item FensterTest_zu changed to ON
				
	then
		if((Dachboden_Temperature.state >= 21) && (Dachboden_Heizung.state <= 18) && (Fensterautomatik.state == ON) && (Outside_Temperature.state <= Dachboden_Temperature.state) && (Outside_Temperature.state >= 13)) {
		sendCommand(FensterMitte_auf, ON)
		sendCommand(FensterLuR_auf, ON)
		createTimer(now.plusMinutes(15)) [| sendCommand(FensterLuR_luft, ON) ]
		}
	end

rule "Fenster wieder zu bei kalte oder Luftung"
	when 
		Item Dachboden_Temperature changed or
		Item Outside_Temperature changed or
		Item FensterTest_zu changed to ON
		
	then
		if((Dachboden_Temperature.state <= 20) && (Fensterautomatik.state == ON) && (Outside_Temperature.state >= 15)) {
		sendCommand(FensterMitte_luft, ON)
		sendCommand(FensterLuR_luft, ON)
		}
		if((Dachboden_Temperature.state <= 20) && (Fensterautomatik.state == ON) && (Outside_Temperature.state <= 15)) {
		sendCommand(FensterMitte_zu, ON) 
		sendCommand(FensterLuR_zu, ON)
		}
		if((Dachboden_Temperature.state <= 17) && (Fensterautomatik.state == ON)) {
		sendCommand(FensterMitte_zu, ON)
		sendCommand(FensterLuR_zu, ON)
		}
		if(Outside_Temperature.state <= 5) {
		createTimer(now.plusSeconds(60)) [| sendCommand(FensterMitte_zu, ON) ]
		createTimer(now.plusSeconds(60)) [| sendCommand(FensterLuR_zu, ON) ]
		}
		
	end

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

Re: Regelfehler - Logik-fehler?

Beitrag von peter-pan »

Da kann dir @udo1toni bestimmt weiterhelfen. Dazu hab ich einfach zu wenig Erfahrung. Aber das mit der Zuweisung kann er dir sicher an an einem Beispiel erklären. Das habe ich auch schon "ein bisschen" verstanden. Aber in so komplexen Dingen wie du sie schon machst, brauchst's auch einen Profi.

Gruss
Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Regelfehler - Logik-fehler?

Beitrag von peter-pan »

Schau mal hier rüber. Da hat Udo ein schönes Beispiel für den Pointer gemacht.

Erst wird die Variable vor der Regel mit "null" initialisiert, dann im "then"-Teil abgefragt, ob schon ein Timer gestartet ist und falls nicht wird der Timer gestartet.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Regelfehler - Logik-fehler?

Beitrag von udo1toni »

Zubertus hat geschrieben: 14. Mai 2019 21:49 Was mir nicht ganz klar ist bzw. wie ich das beheben soll:
Du setzt voraus, dass jedes Item allzeit einen gültigen Wert enthält, das ist aber nicht sicher.
Du musst halt prüfen, ob ein gültiger Wert vorliegt. Gegeben ist ein Number Item meinNumberItem:

Code: Alles auswählen

rule "test"
when
    Item meinNumberItem changed
then
    if(!(meinNumberItem.state instanceof Number)) {                          // Prüfung auf Typ
        logWarn("testrule","meinNumberItem.state ist nicht vom Typ Number!") // Warnung
        logInfo("testrule","meinNumberItem.state = {}",meinNumberItem.state) // Information
        return;                                                              // Abbruch der Rule
    }
    var Number nZahl = meinNumberItem.state as Number
    logInfo("testrule","Die Zahl lautet {}",nZahl)
end
Wie weit man die Typen prüft, bleibt einem selbst überlassen. Man muss sich aber im Klaren sein, dass ein Number Item auch NULL als Status haben kann. Wenn man dann den Status einfach als Zahl verwendet, schmeißt openHAB ca. 40 Zeilen Fehlermeldung und bricht die Rule ab.
Man kann auch Default Werte definieren und mit dem Wert überschreiben:

Code: Alles auswählen

rule "test"
when
    Item meinNumberItem changed
then
    var Number nZahl = 5                     // default Wert
    if(meinNumberItem.state instanceof Number) 
        nZahl = meinNumberItem.state as Number
    logInfo("testrule","Die Zahl lautet {}",nZahl)
end
Es kommt halt darauf an, wie die Rule sich verhalten soll.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Zubertus
Beiträge: 19
Registriert: 12. Mai 2019 21:02
Answers: 1

Re: Regelfehler - Logik-fehler?

Beitrag von Zubertus »

Hallo

vielen Dank für die Unterstüzung und Erklärung - das hilft mir schon mal enorm weiter um meine rules "sicher" zu machen.
Beste Grüße
zubetus

Antworten