Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

ElBombo1
Beiträge: 39
Registriert: 15. Jul 2019 11:17
Answers: 0
Wohnort: Münster in Hessen

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von ElBombo1 »

Hola HiG,

ich bin beruhigt zu lesen das es bei dir so wie ich geplant habe, läuft. So habe ich es im Voraus bevor ich begonnen habe mit der Neuinstallation auch gelesen das man es machen soll. Es hätte ja auch die Variante gegeben openHAB2 über ein Binding mit openHAB3 zu "verbinden" um so nach und nach die einzelnen Binding/ Items wie auch immer rüber zu ziehen und anschliessend in der Schnittstelle deiner parallelen alten openHAB2 abzuschalten. Jedenfalls so oder so ähnlich habe ich es vorab gelesen... Da dies jedoch mit zusätzlichem Aufwand verbunden ist habe ich mich gegen diese Variante entschieden.

Habe jetzt so wie ich Zeit hatte seit Weihnachten über 400 Items erstellt und 7 Bridges meiner verschiedenen Systeme eingebunden. Als letzten Schritt hatte ich die Automation also Rules einbinden geplant... Ich würde echt im Kreis k... wenn ich jetzt alles noch einmal machen müsste. Ich glaube dann würde ich einfach wieder mein einwandfrei funktionierendes 2.5.10 auspacken und damit weiter machen...

Ich denke jedoch nicht das bei der Installation und anschliessenden Konfiguration von openHAB3.2 etwas schief gelaufen ist. Es funktioniert alles bisauf den Fakt das ich keine händisch textbasierten Rule files verwenden kann. Ich habe jetzt auch festgestellt das ich diese Fehlermeldungen im log zu den Rule files die ich eingefügt habe als das System erstmalig Stand nur wieder erhalte, wenn ich händisch eine neue .rules Datei in den Rules Ordner von openHAB lege. Wie bereits schon einmal erwähnt habe ich das Gefühl das sich irgendwelche Rules Leichen in der Datenbank angesammelt haben. Ich habe keine Ahnung wie das passiert sein soll und ich denke nicht etwas falsch gemacht zu haben an der Stelle (so wie immer mit WinSCP rein und auch wieder raus).

Aufgefallen ist mir das die Rule files auch dem Benutzer openhabian zugeordnet sind. In openHAB2.5 war das auch so aber okay, wäre dies evtl. ein Ansatz für das Problem also ein, Berechtigungsproblem? Ich glaube es nicht wenn ich ehrlich bin aber gut, ich möchte soviele Infos mitgeben wie möglich in der Hoffnung, das wir damit mein Problem eingrenzen und lokalisieren können.

Benutzeravatar
HiG
Beiträge: 136
Registriert: 16. Jun 2021 13:39
Answers: 0

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von HiG »

ElBombo1 hat geschrieben: 1. Jan 2022 16:12 Aufgefallen ist mir das die Rule files auch dem Benutzer openhabian zugeordnet sind.
Meine funktionierenden Textfile-Rules gehören alle dem "openhabian"-User mit Maske 0644. Aber versuch doch mal die dem "openhab" "unterzujubeln"

Hast mal ins Log geschaut. Bei mir steht dort nach Änderungen an den Rules

Code: Alles auswählen

2022-01-01 16:17:51.685 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'test.rules'
Bei Problemen mit der Rule wird gemeckert

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

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von udo1toni »

ElBombo1 hat geschrieben: 1. Jan 2022 15:06 P.S: Habe mir deinen letzten Post nochmals durchgelesen, ich glaube du denkst ich hätte alles auf einem System (Raspberry) installiert? Nein, es waren 2 getrennte Raspberrys, für jede openHAB Version einen.
Genau, das hatte ich dann falsch verstanden. Für mich ist das dann keine Parallel Installation, sondern ein zweites System...

Du solltest auf jeden Fall verhindern, dass beide Systeme parallel laufen - zumindest, wenn beide komplett konfiguriert sind. Du könntest auf einem der Systeme die Bindings deaktivieren, die Things, oder zumindest die Rules. Ansonsten kann es passieren, dass die Systeme sich gegenseitig triggern und es zu einer Endlosschleife kommt.
ElBombo1 hat geschrieben: 1. Jan 2022 16:12 Aufgefallen ist mir das die Rule files auch dem Benutzer openhabian zugeordnet sind. In openHAB2.5 war das auch so aber okay, wäre dies evtl. ein Ansatz für das Problem also ein, Berechtigungsproblem?
Gewöhnlich sollten die Dateien alle dem User openhab gehören. Fahre openHAB herunter

Code: Alles auswählen

sudo systemctl stop openhab.service
und führe

Code: Alles auswählen

sudo openhab-cli reset-ownership
aus. Nach Bestätigen der Sicherheitsabfrage startest Du openHAB wieder:

Code: Alles auswählen

sudo systemctl start openhab.service
Allerdings fürchte ich, dass dies zumindest nicht die Ursache Deines Problems sein wird.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

ElBombo1
Beiträge: 39
Registriert: 15. Jul 2019 11:17
Answers: 0
Wohnort: Münster in Hessen

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von ElBombo1 »

Habe die Berechtigungen nun auf openhab gesetzt, hat aber leider nichts gebracht.
Mir ist aber nun folgendes aufgefallen.
Meine textfile Rules tauchen in der UI unter openHAB zwar auf, wenn ich mir jedoch den Code anschaue, sind die 3 ersten Zeilen auskommentiert, warum auch immer :?:
Fehlerhafte Rule in UI 3.jpg
Fehlerhafte Rule in UI.jpg
Ich habe nun mal versucht dies nachzuempfinden und es passt zum Rules Verhalten. Ich habe um 00:24 eine Rule erstellt und gespeichert, die um 00:25 die Rolläden hoch und um 00:26 wieder runter fahren sollte.

Code: Alles auswählen

// Dies ist der Rollladen im Chill Modus hoch fahren Teil der Rule. Hoch fahren um Uhrzeit X per CRON.
rule "Rollladen im Chill Modus hoch fahren"
when
Time cron "0 25 1 ? * MON,TUE,WED,THU"// Montag, Dienstag, Mittwoch, Donnerstag um 08:30 Uhr
then
logInfo("ChillShutterhoch","Rollladen im Chill Modus hoch fahren getriggert per CRON")
 
if(UrlaubsSchalter.state == ON) {
logInfo("ChillShutterhoch","Urlaubs Schalter ist ON, Rule Rollladen im Chill Modus hoch fahren wird abgebrochen!")
return;
}
if(AbwesenheitsSchalter.state == ON) {
logInfo("ChillShutterhoch","Abwesenheits Schalter ist ON, Rule Rollladen im Chill Modus hoch fahren wird abgebrochen!")
return;
}
if(AlltagsSchalter.state == ON) {
logInfo("ChillShutterhoch","Alltags Schalter ist ON, Rule Rollladen im Chill Modus hoch fahren wird abgebrochen!")
return;
}
if(ChillSchalter.state == OFF) {
logInfo("ChillShutterhoch","Chill Schalter ist OFF, Rule Rollladen im Chill Modus hoch fahren wird abgebrochen!")
return;
}
if(ChillSchalter.state == ON){
 gRollaeden_Chill_Hoch.sendCommand(UP)
logInfo("ChillShutterhoch","Rollladen wurden im Chill Modus hoch gefahren")
}
end



// Dies ist der "Rollladen im Chill Modus runter fahren" Teil der Rule. Runter fahren um Uhrzeit X per CRON
rule "Rollladen im Chill Modus runter fahren"
when
Time cron "0 30 0 ? * MON,TUE,WED,THU" or//Montag, Dienstag, Mittwoch, Donnerstag um 21:30:0 Uhr
Time cron "0 26 1 ? * FRI,SAT,SUN"// Um 22:00:0 Uhr Freitag, Samstag, Sonntag um 22:00:0 Uhr
then
logInfo("ChillShutterrunter","Rollläden im Chill Modus runter fahren getriggert per CRON")
 if(UrlaubsSchalter.state == ON) {
logInfo("ChillShutterrunter","Urlaubs Schalter ist ON, Rule Rollladen im Chill Modus runter fahren wird abgebrochen!")
return;
}
if(AbwesenheitsSchalter.state == ON) {
logInfo("ChillShutterrunter","Abwesenheits Schalter ist ON, Rule Rollladen im Chill Modus runter fahren wird abgebrochen!")
return;
}
if(AlltagsSchalter.state == ON) {
logInfo("ChillShutterrunter","Alltags Schalter ist ON, Rule Rollladen im Chill Modus runter fahren wird abgebrochen!")
return;
}
if(ChillSchalter.state == OFF) {
logInfo("ChillShutterrunter","Chill Schalter ist OFF, Rule Rollladen im Chill Modus runter fahren wird abgebrochen!")
return;
}
if(ChillSchalter.state == ON) {
RollladenWohnzimmerTerrasseRechtsFGR223RollerShutter3Node002_BlindsControl.sendCommand(DOWN)
logInfo("ChillShutterrunter","Rollläden wurden im Chill Modus runter gefahren")
}
end
Wenn die ersten 3 Zeilen wirklich außer Acht gelassen werden passt das zu meinem log. Eigentlich müsste ja ansonsten der Cron Job um 00:25 im log auftauchen, tut er aber nicht.
Der Cron Job der wiederum die Rolläden runter triggert wird im log um 00:26 korrekt angezeigt. Leider bewegen sich die Rolläden trotzdem nicht wofür ich wiederum keine Erklärung habe obwohl der Cron Job um 00:26 für Rolläden runter fahren im log erscheint...
Fehlerhafte Rule in UI 2.jpg
Irgendwo habe ich zu genau diesem Verhalten schon etwas gelesen, ich glaube im englischen Forum war es... Zu einer Lösung bin ich jedoch auch dort nicht gekommen. Identische Dateinamen in unterschiedlichen Ordnern und Dateiendungen, soll auch zu Problemen führen (evtl. schon gefixxt?). Ich habe mehrere dieser doppelten Namen im Einsatz, damit ich die Zugehörigkeit der Dateien besser visualiseren kann. Kann das evtl. zu Problemen führen? Ich habe jedoch keine Rules Datei im Einsatz die wiederum so heisst wie die im Einsatz befindlichen doppelten Dateinamen (nur die Namen sind identisch, nicht die Dateiendungen).

Vielleicht kommen wir ja hiermit irgendwie ein Stück weiter?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von ElBombo1 am 2. Jan 2022 04:14, insgesamt 3-mal geändert.

ElBombo1
Beiträge: 39
Registriert: 15. Jul 2019 11:17
Answers: 0
Wohnort: Münster in Hessen

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von ElBombo1 »

Es lässt mir ja keine Ruhe und ja, es muss tatsächlich so sein wie ich zuvor geschrieben habe. Die ersten 3/4 Zeilen Code (der ganze when Teil?) der ersten Rule "Rollladen im Chill Modus hoch fahren" werden beim einlesen der textfile Rule anscheinend auskommentiert! Ich habe keine Ahnung warum aber ich habe es jetzt hinbekommen das der zweite Teil meiner Rule "Rollladen im Chill Modus runter fahren" der im gleichen Rules file beschrieben wird funktioniert hat. Ich poste mal den Code und danach mein log zum vervollständigen.

Code: Alles auswählen

// Dies ist der Rollladen im Chill Modus hoch fahren Teil der Rule. Hoch fahren um Uhrzeit X per CRON.
rule "Rollladen im Chill Modus hoch fahren"
when
Time cron "0 27 1 ? * MON,TUE,WED,THU"// Täglich MON-SO um 08:30 Uhr
then
logInfo("ChillShutterhoch","Rollladen im Chill Modus hoch fahren getriggert per CRON")
 gRollaeden_Chill_Hoch.sendCommand(UP)
//if(UrlaubsSchalter.state == ON) {
//logInfo("ChillShutterhoch","Urlaubs Schalter ist ON, Rule Rollladen im Chill Modus hoch fahren wird abgebrochen!")
//return;
//}
//if(AbwesenheitsSchalter.state == ON) {
//logInfo("ChillShutterhoch","Abwesenheits Schalter ist ON, Rule Rollladen im Chill Modus hoch fahren wird abgebrochen!")
//return;
//}
//if(AlltagsSchalter.state == ON) {
//logInfo("ChillShutterhoch","Alltags Schalter ist ON, Rule Rollladen im Chill Modus hoch fahren wird abgebrochen!")
//return;
//}
//if(ChillSchalter.state == OFF) {
//logInfo("ChillShutterhoch","Chill Schalter ist OFF, Rule Rollladen im Chill Modus hoch fahren wird abgebrochen!")
//return;
//}
//if(ChillSchalter.state == ON){
// gRollaeden_Chill_Hoch.sendCommand(UP)
//logInfo("ChillShutterhoch","Rollladen wurden im Chill Modus hoch gefahren")
//}
end



// Dies ist der "Rollladen im Chill Modus runter fahren" Teil der Rule. Runter fahren um Uhrzeit X per CRON
rule "Rollladen im Chill Modus runter fahren"
when
Time cron "0 30 0 ? * MON,TUE,WED,THU" or// Montag, Dienstag, Mittwoch, Donnerstag um 21:30:0 Uhr
Time cron "0 28 1 ? * FRI,SAT,SUN"//Freitag, Samstag, Sonntag um 22:00:0 Uhr
then
logInfo("ChillShutterrunter","Rollläden im Chill Modus runter fahren getriggert per CRON")
 gRollaeden_Chill_Runter.sendCommand(DOWN)
//if(UrlaubsSchalter.state == ON) {
//logInfo("ChillShutterrunter","Urlaubs Schalter ist ON, Rule Rollladen im Chill Modus runter fahren wird abgebrochen!")
//return;
//}
//if(AbwesenheitsSchalter.state == ON) {
//logInfo("ChillShutterrunter","Abwesenheits Schalter ist ON, Rule Rollladen im Chill Modus runter fahren wird abgebrochen!")
//return;
//}
//if(AlltagsSchalter.state == ON) {
//logInfo("ChillShutterrunter","Alltags Schalter ist ON, Rule Rollladen im Chill Modus runter fahren wird abgebrochen!")
//return;
//}
//if(ChillSchalter.state == OFF) {
//logInfo("ChillShutterrunter","Chill Schalter ist OFF, Rule Rollladen im Chill Modus runter fahren wird abgebrochen!")
//return;
//}
//if(ChillSchalter.state == ON) {
// RollladenWohnzimmerTerrasseRechtsFGR223RollerShutter3Node002_BlindsControl.sendCommand(DOWN)
//logInfo("ChillShutterrunter","Rollläden wurden im Chill Modus runter gefahren")
//}
end
Fehlerhafte Rule in UI 4.jpg
Fehlerhafte Rule in UI 6.jpg
Fehlerhafte Rule in UI 7.jpg
An was kann es also liegen das beim Einlesen der textfile Rules der "when" Teil auskommerntiert wird? Wie man im log erkennen kann kommt der Trigger nicht weil er anscheinend auskommentiert wurde beim einlesen.

Darüber hinaus muss auch noch ein Fehler in der Synthax oder Code meiner Schalter (if Bedinungen) sein wie ich nun festgestellt habe. Stimmt doch irgendwas nicht im Code ;)

EDIT:
Wie soeben getestet funktioniert auch die Rule "Rollladen im Chill Modus hoch fahren", also der erste Teil der textfile Rule, wenn ich sie über die UI laufen lasse über --> Run Now (Ctrl-R)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

ElBombo1
Beiträge: 39
Registriert: 15. Jul 2019 11:17
Answers: 0
Wohnort: Münster in Hessen

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von ElBombo1 »

Hallo zusammen,

wollte nur nochmal das Thema ein wenig anschupsen.

Danke

Saludos
Eloy

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

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von udo1toni »

Also, ich kann das beschriebene Verhalten hier bisher nicht nachvollziehen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von int5749 »

Also ich habe die gerade mal bei mir angeschaut und es gibt Unterschiede in der Darstellung, welche aber nichts mit der Funktion zu tun haben.

Als Beispiel ein Ausschnitt aus einer meiner Rules

TextFile

Code: Alles auswählen

rule "Charge E-Car"
when
    Item SetWarpAmpere received command ON or
    Time cron "0 05 00 ? * * *"
then
    val actions = getActions("pushover", "pushover:pushover-account:account")
    if (ChargeCar.state != ON || evcc_charging.state == "true" || evcc_connected.state != "true") {
		// wenn nicht eingeschaltet oder
		// derzeit nicht am laden
		// Auto nicht verbunden => exit
		logInfo("Warp", "Abbruch des Zielladens!")
    	return;
	}
Dies erscheint in der Main UI unter Rules, dort natürlich nur zur Ansicht und nicht editierbar

Code: Alles auswählen

// Triggers:
// - When SetWarpAmpere received command ON
// - At 00:05

// context: smart-16
val actions = getActions("pushover", "pushover:pushover-account:account")
if (ChargeCar.state != ON || evcc_charging.state == "true" || evcc_connected.state != "true") {
		// wenn nicht eingeschaltet oder
		// derzeit nicht am laden
		// Auto nicht verbunden => exit
		logInfo("Warp", "Abbruch des Zielladens!")
	return;
	}
Offensichtlich werden die Trigger nicht auskommentiert (auch wenn es so ausschaut)
// entspricht auskommentiert
// - enspricht scheinbar einem Trigger

Da ich mich aber mit der Erstellung von Rules über die Main UI nicht beschäftigt habe, ist dies eine Vermutung.

Mein Fazit wäre: Wenn Du über Text-Files konfigurierst, solltest Du über das Log und die Ausgabe analysieren und nciht über die Main UI den Fehler suchen. Als weiteren Trigger nehme ich immer noch zusätzlich einen Schalter, der die Rule triggert und erst wenn diese löuft, stelle ich um auf den gewünschten Trigger indem ich den Testschalter entferne.

Wenn Text-basierend erstellt, bietet sich VSCode mit openHAB AddOn an, das zeigt etwaige Fehler auf und bietet eine Vielzahl an anderer Möglichkeiten auf die ich hier nicht weiter eingehe, da gibt es einige andere Threads hier ;-)

Ich hatte Deine Rule mal bei mir in VSCode kopiert und (ausser der Items) keine groben Fehler aufgezeigt bekommen.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

ElBombo1
Beiträge: 39
Registriert: 15. Jul 2019 11:17
Answers: 0
Wohnort: Münster in Hessen

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von ElBombo1 »

Da gebe ich dir Recht das man nicht in der UI nach Fehlern schauen sollte sondern in den logs. Wenn man aber nicht mehr weiter weiß, sucht man halt den Strohhalm...

Ich habe über die openhab-config (sudo openhab-config) nochmals alles was ging upgedated. 2 Sachen wurden upgedatet (habe mir aber nicht gemerkt was es war...) und dann habe ich mal diese Rule erstellt und sie hat dann auch funktioniert...

Code: Alles auswählen

//Einschalten Part der Rule

rule "Keller Licht einschalten test Rule"
when
    Time cron "0 41 12 ? JAN,FEB,MAR,OCT,NOV,DEC SUN,MON,TUE,WED,THU,FRI,SAT *"
then
    KellerBuroSchrankLichtHUELedStripes_Dimmer.sendCommand(ON)
end


//Ausschalten Part der Rule

rule "Keller Licht ausschalten test Rule"
when
    Time cron "0 42 12 ? JAN,FEB,MAR,OCT,NOV,DEC SUN,MON,TUE,WED,THU,FRI,SAT *"
then
    KellerBuroSchrankLichtHUELedStripes_Dimmer.sendCommand(OFF)
end
Jetzt würde ich einfach mal ganz minimalistisch die Rules immer mehr erweitern um so wenigstens langsam weiter zu kommen.

Bei einer Sache bräuchte ich bitte etwas "Unterstützung", bin glaube ich zu doof dafür :cry:
Die Rule funktioniert nicht. Ich brauche bestimmt irgendwelche Merker um mir die Statis zu merken, aber ich weiß nicht wie bzw. das was ich probiert habe hat nicht funktioniert...

Code: Alles auswählen

rule "Humidity Alarm"
when
    Item FlurEGWandthermostatHomematicIP_Humidity changed    // Wenn sich die Feuchte ändert

then
    if(FlurEGWandthermostatHomematicIP_Humidity.state > 60) {   //falls die Humidity größer 60
        HumidityAlarmSchalterFlurEG.sendCommand(ON)             //setze Humidity Schalter Flur EG auf ON
        logInfo("HumidityAlarm","Humidity Alarm Flur EG wird gesetzt")
    }
    if(FlurEGWandthermostatHomematicIP_Humidity.state < 60) {   //falls die Humidity kleiner 60                                               
        HumidityAlarmSchalterFlurEG.sendCommand(OFF)            //setze Humidity Schalter Flur EG auf OFF
        logInfo("HumidityAlarm","Humidity Alarm Flur EG wird zurück gesetzt")
    }
end
Grob kurz erklärt wie die Rule funktionieren, sollte...
Wenn das Item "FlurEGWandthermostatHomematicIP_Humidity" (Number:Dimensionless) sich ändert soll geprüft werden, ob sich der Wert über 60 befindet. Falls JA, dann sende zum Item "HumidityAlarmSchalterFlurEG" (virtueller Schalter) den Zustand ON. Diesen Schalter verwende ich dann weiter um im HabPanel ein Widget (GridSelection_v1) zu bedienen. Dieses Widget kann ich dann so einstellen, das ich bei verschiedenen Key Values (ON, OFF, UP ... usw.) und natürlich der Definition des entsprechenden Items, verschiedene Background Farben angezeigt bekomme. Wenn die relative Luftfeuchtigkeit über 60% liegt, soll dieses Widget auf rot springen und einen ebtsprechenden Text ausgeben. Sobald die relative Luftfeuchtigkeit wieder unter 60% liegt, soll das Item "HumidityAlarmSchalterFlurEG" (virtueller Schalter) wieder den Zustand OFF setzen. Wenn ich den Schalter statisch triggere funktioniert das Widget soweit also, die Farbumstellung samt entsprechendem Text.

Wäre toll wenn ihr mir hierbei zur Seite stehen könntet.

Dankeschön im Voraus

Eloy

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

Re: Umzug von OH 2.4 zu 3.x: wie alte Rules mitnehmen

Beitrag von udo1toni »

Schau bitte mal in Dein log, was exakt!) als Wert ausgegeben wird, wenn das Ereignis FlurEGWandthermostatHomematicIP_Humidity changed auftritt.
Kann es sein, dass dann nicht (z.B.) 60 gemeldet wird, sondern 60 Prozent (%)?

Dann handelt es sich bei FlurEGWandthermostatHomematicIP_Humidity um ein UoM Item, welches die Einheit mit führt. Diese muss mit im Vergelich angegeben werden:

Code: Alles auswählen

rule "Humidity Alarm"
when
    Item FlurEGWandthermostatHomematicIP_Humidity changed                     // Wenn sich die Feuchte ändert

then
    if(FlurEGWandthermostatHomematicIP_Humidity.state > 60 |%) {              // falls die Humidity größer 60 %
        HumidityAlarmSchalterFlurEG.sendCommand(ON)                           // setze Humidity Schalter Flur EG auf ON
        logInfo("HumidityAlarm","Humidity Alarm Flur EG wird gesetzt")
    }
    if(FlurEGWandthermostatHomematicIP_Humidity.state < 60 |%) {              // falls die Humidity kleiner 60 %
        HumidityAlarmSchalterFlurEG.sendCommand(OFF)                          // setze Humidity Schalter Flur EG auf OFF
        logInfo("HumidityAlarm","Humidity Alarm Flur EG wird zurück gesetzt")
    }
end
Alternative:

Code: Alles auswählen

rule "Humidity Alarm"
when
    Item FlurEGWandthermostatHomematicIP_Humidity changed                     // Wenn sich die Feuchte ändert

then
    val hum = if(FlurEGWandthermostatHomematicIP_Humidity.state instanceof Number) (FlurEGWandthermostatHomematicIP_Humidity.state as Number).intValue else 60
    var soll = HumidityAlarmSchalterFlurEG.state
    var myStr = ""
    if(hum > 60)                                                              // falls die Humidity größer 60
        soll = ON                                                             // setze Humidity Schalter Flur EG auf ON
    if(hum < 60) {                                                            // falls die Humidity kleiner 60
        soll = OFF                                                            // setze Humidity Schalter Flur EG auf OFF
        myStr = "zurück "                                                     // Füllwort ergänzen
    }
    if(HumidityAlarmSchalterFlurEG.state != soll) {
        HumidityAlarmSchalterFlurEG.sendCommand(soll.toString)
        logInfo("HumidityAlarm","Humidity Alarm Flur EG wird {}gesetzt",myStr)
    }
end
Im Unterschied zum Original wird das Item nur bei Bedarf geschaltet (und auch die Meldung wird nur dann ausgegeben). Statt die Einheit zu ergänzen wird die Einheit gezielt entfernt. Da wir nur mit einem Interger vergleichen, reicht hier auch .intValue, ansonsten könnte man auch noch .floatValue verwenden.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten