Mal wieder eine "rule" Frage

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag von atk69 »

Vielen Dank für die Antwort.
Hier meine momentane Rule:

Code: Alles auswählen

// Globale Variablen immer zu Beginn der Datei definieren!
var Timer tLum = null 
var Number nLum = 0


rule "Luminanz"
when
    Item dataLum changed
then
    logInfo("Luminanz", "Rule Luminaz läuft")

    if(!(dataLum.state instanceof Number)) {
        logWarn("luminanz","dataLum enthält keinen gültigen Wert!")
        return;
    }
    if ((dataLum.state as Number) < 4 && now.getHourOfDay > 17 && now.getHourOfDay < 23 && tLum === null) {
        nLum = 0
        tLum = createTimer(now.plusSeconds(1), [|
            var Number nTime = 1
            nLum += 1
            switch nLum {
                case 1: {
                    Markise.sendCommand(DOWN)
                    nTime = 60
                }
                case 2: {
                    Roll_WZ_W_li.sendCommand(DOWN)
                }
                case 3: {
                    Roll_WZ_W_re.sendCommand(DOWN)
                }
                case 4: {
                    Markise.sendCommand(DOWN)
                }
                case 5: {
                    Roll_WZ_W_li.sendCommand(DOWN)
                }
                case 6: {
                    Roll_WZ_W_re.sendCommand(DOWN)
                    nTime = 600
                }
                default: {
                    nTime = 0
                }
            }
            if(nTime > 0)
                tLum.reschedule(now.plusSeconds(nTime))
            else {
                tLum = null
            }
        ])
    }
end
loginfo-Eintrag korrekt ?

Gruss
atk69

EDIT:
Eintrag scheint korrekt :D
das sehe ich in meinem openhab.log

Code: Alles auswählen

2019-08-10 17:36:36.075 [INFO ] [ipse.smarthome.model.script.Luminanz] - Rule Luminanz läuft
2019-08-10 17:38:33.603 [INFO ] [ipse.smarthome.model.script.Luminanz] - Rule Luminanz läuft
2019-08-10 17:40:33.807 [INFO ] [ipse.smarthome.model.script.Luminanz] - Rule Luminanz läuft
2019-08-10 17:42:33.604 [INFO ] [ipse.smarthome.model.script.Luminanz] - Rule Luminanz läuft
2019-08-10 17:44:33.578 [INFO ] [ipse.smarthome.model.script.Luminanz] - Rule Luminanz läuft
2019-08-10 17:46:33.598 [INFO ] [ipse.smarthome.model.script.Luminanz] - Rule Luminanz läuft
and IT works ;)

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

Re: Mal wieder eine "rule" Frage

Beitrag von peter-pan »

Freut mich, dass deine Rule jetzt läuft bzw. triggert.

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

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag von atk69 »

Eben nicht :roll:
Sieht alles ok aus, aber die Rolos bewegen sich kein Stück.

Mit der "alten" Rule (die erste) lief es zumindest. :(
Werde wohl noch ein bisschen suchen müssen.

Gruss
atk69
and IT works ;)

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

Re: Mal wieder eine "rule" Frage

Beitrag von peter-pan »

Dann solltest du vielleicht noch ein paar "Debug-Punkte" (logInfos) einbauen, damit du siehst, wie weit die Rule läuft bzw. welche Bedingungen abgearbeitet werden.
Wie hast du denn deine Items definiert ?
Evtl. muss da noch Rücksicht auf UoM bei den Bedingungen genommen werden (z.B. dataLum).
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag von atk69 »

Daran habe ich schon gedacht. Die logInfo kann ich ja an belieber stelle einsetzten.
Was ist UoM ?
and IT works ;)

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag von atk69 »

bin etwas weiter...
rule läuft bis "Switch nLum", danach tot.
Habe noch ein weitern Info Eintag gemacht. bis dahin kommt er aber nicht.
Wie in der rule ersichtlich , habe ich zum testen das Zeitfenster und den Lichtwert angepasst. Ich dunkle einfach künstlich ab.

Code: Alles auswählen

// Globale Variablen immer zu Beginn der Datei definieren!
var Timer tLum = null 
var Number nLum = 0


rule "Luminanz"
when
    Item dataLum changed
then

	//logInfo("Luminanz", "Rule Luminanz läuft")
    if(!(dataLum.state instanceof Number)) {
        logWarn("luminanz","dataLum enthält keinen gültigen Wert!")
        return;
    }
    if ((dataLum.state as Number) < 2000 && now.getHourOfDay > 12 && now.getHourOfDay < 23 && tLum === null) {
        nLum = 0
		logInfo("Luminanz", "Rule Luminanz n")
        tLum = createTimer(now.plusSeconds(1), [|
            var Number nTime = 1
            nLum += 1
			switch nLum {
			    case 1: { logInfo("Luminanz", "Rule Luminanz ausgelöst"+ triggeringItem.name)  
                    Markise.sendCommand(DOWN)
                    nTime = 60
				}
				case 2: {
                    Roll_WZ_W_li.sendCommand(DOWN)
                }
                case 3: {
                    Roll_WZ_W_re.sendCommand(DOWN)
                }
                case 4: {
                    Markise.sendCommand(DOWN)
                }
                case 5: {
                    Roll_WZ_W_li.sendCommand(DOWN)
                }
                case 6: {
                    Roll_WZ_W_re.sendCommand(DOWN)
                    nTime = 600
                }
                default: {
                    nTime = 0
                }
            }
            if(nTime > 0)
                tLum.reschedule(now.plusSeconds(nTime))
            else {
                tLum = null
            }
        ])
    }
end

Code: Alles auswählen

2019-08-11 15:36:19.003 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'WZ_WI_ROLL_LUM.rules'
2019-08-11 15:49:37.743 [INFO ] [ipse.smarthome.model.script.Luminanz] - Rule Luminanz n
2019-08-11 15:51:44.624 [INFO ] [ipse.smarthome.model.script.Luminanz] - Rule Luminanz n
Seit neuestem habe ich noch folgenden Eintrag im Log:

Code: Alles auswählen

2019-08-11 16:40:58.604 [WARN ] [me.core.internal.events.EventHandler] - Dispatching event to subscriber 'org.eclipse.smarthome.core.internal.items.ItemUpdater@44a77d' takes more than 5000ms.
and IT works ;)

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

Re: Mal wieder eine "rule" Frage

Beitrag von peter-pan »

Ich bin leider nicht so ganz in deinem Element, ich habe zwar ein paar Rollladengurtwickler (Zeitsteuerung GW60) und auch einenRollladenmotor auch mit Zeitsteuerung. Beide Versionen können auch manuell bedient werden. Eine Anbindung an OH ist aber bisher nicht vorhanden (Hab noch nichts passendes gefunden).

Aber ich habe deine Regel mal etwas aufgehübscht, damit du Informationen über die einzelnen Abschnitte deiner Rule und die Items/Variablen im Logger bekommst:

Code: Alles auswählen

// Globale Variablen immer zu Beginn der Datei definieren!
var Timer tLum = null 
var Number nLum = 0


rule "Luminanz"
when
    Item dataLum changed
then

    //logInfo("Luminanz", "Rule Luminanz läuft")
    if(!(dataLum.state instanceof Number)) {
        logWarn("luminanz","dataLum enthält keinen gültigen Wert!")
        return;
    }
    if ((dataLum.state as Number) < 2000 && now.getHourOfDay > 12 && now.getHourOfDay < 23 && tLum === null) {
        nLum = 0
        logInfo("Luminanz", "Rule Luminanz n: " + dataLum)
        tLum = createTimer(now.plusSeconds(1), [|
            var Number nTime = 1
            nLum += 1
            logInfo("Luminanz", "Rule Luminanz Timer started" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum))  // for testing only

            switch nLum {
                case 1: { 
                    logInfo("Luminanz", "Rule Luminanz ausgelöst Case 1" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum)  // for testing only
                    Markise.sendCommand(DOWN)
                    nTime = 60
                }
                case 2: {
                    logInfo("Luminanz", "Rule Luminanz ausgelöst Case 2" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum)  // for testing only
                    Roll_WZ_W_li.sendCommand(DOWN)
                }
                case 3: {
                    logInfo("Luminanz", "Rule Luminanz ausgelöst Case 3" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum)  // for testing only
                    Roll_WZ_W_re.sendCommand(DOWN)
                }
                case 4: {
                    logInfo("Luminanz", "Rule Luminanz ausgelöst Case 4" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum)  // for testing only
                    Markise.sendCommand(DOWN)
                }
                case 5: {
                    logInfo("Luminanz", "Rule Luminanz ausgelöst Case 5" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum)  // for testing only
                    Roll_WZ_W_li.sendCommand(DOWN)
                }
                case 6: {
                    logInfo("Luminanz", "Rule Luminanz ausgelöst Case 6" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum)  // for testing only
                    Roll_WZ_W_re.sendCommand(DOWN)
                    nTime = 600
                }
                default: {
                    logInfo("Luminanz", "Rule Luminanz ausgelöst Case default" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum)  // for testing only
                    nTime = 0
                }
            }
            if(nTime > 0)
                logInfo("Luminanz", "Rule Luminanz ausgelöst If nTime Zeile 57" + " Varibale nTime = " + nTime + " Varibale nLum = " + nLum)  // for testing only
                tLum.reschedule(now.plusSeconds(nTime))
            else {
                logInfo("Luminanz", "Rule Luminanz ausgelöst durch Else")  // for testing only
                tLum = null
            }
            logInfo("Luminanz", "Rule Luminanz - Timer wird beendet")  // for testing only
        ])
        logInfo("Luminanz", "Rule Luminanz - Timer ist beendet")  // for testing only
     }
     logInfo("Luminanz", "Rule Luminanz - Ende der Rule")  // for testing only
end
Testen kann ich das nicht, da mir deine Arbeitsumgebung fehlt.

Über UoM kannst du hier in der Doku nachlesen. Damit werden eigentlich Werte der Items in bestimmte Einheiten (z.B. Grad/Celsius bzw. Grad/Fahrenheit, etc) automatisch umgerechnet. Eine Zuweisung kann sowohl über das .items-File als auch über die .sitemap erfolgen (und/oder).

Hier noch ein Beispiel für zwei Items mit UoM und das dritte ohne UoM. Du erkennst sicher gleich den Unterschied.

Code: Alles auswählen

Number:Length         Kilometer_apogee                "Mond erdfernster Punkt"                                                                                      {channel="astro:moon:local:apogee#distance"}  //OH 2.4
Number:Angle          Moon_Azimuth                    "Mond-Azimuth [%.1f %unit%]"                                          <azimuth>                 (gAstro)      {channel="astro:moon:local:position#azimuth"}
Number                Moon_illumination               "Mondhelligkeit"                                                      <moon>                    (gAstro)      {channel="astro:moon:local:phase#illumination"}
Ich hoffe du kommst nun mit diesen Querverweisen weiter. Es wäre auch sicher nicht verkehrt, wenn du die bertroffenen Items auch mitposten könntest.

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

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag von atk69 »

Danke Peter-pan ;)
mein item:

Code: Alles auswählen

Rollershutter Roll_WZ_W_li "Rolladen WZ Wi links" <rollershutter> (gShutter, Wohnzimmer) [ "Switchable" ] {mqtt=">[mosquitto:cmd/jarolift/shutter/1:command:*:default], <[mosquitto:stat/jarolift/shutter/1:state:default]" }
Rollershutter Roll_WZ_W_re "Rolladen WZ Wi rechts" <rollershutter> (gShutter, Wohnzimmer) [ "Switchable" ] {mqtt=">[mosquitto:cmd/jarolift/shutter/0:command:*:default], <[mosquitto:stat/jarolift/shutter/0:state:default]" }
Das item "Markise" ist gleich.
Ich habe die Steuerung hier gefunden: hxxp://www.bastelbudenbuben.de/forum/topic/pla ... -gehaeuse/

Funktionert echt gut.

Deine "optimierte" rule teste ich...

Gruss und Dank
atk69
and IT works ;)

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

Re: Mal wieder eine "rule" Frage

Beitrag von peter-pan »

Danke für deine Info. ich schau mir den Link an. Noch eine Frage: Wie sieht das Item dataLum aus ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

atk69
Beiträge: 95
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: Mal wieder eine "rule" Frage

Beitrag von atk69 »

dataLum kommt von einem Sonoff und ist (leider) via Paper UI angelegt.
datalum.JPG
P.S. in deiner rule waren ein paar Klammerfehler. Denke, habe es korrigiert bekommen ;) ;) ;)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
and IT works ;)

Antworten