Jalousien nach Sonnenstand

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Jalousien nach Sonnenstand

Beitrag von udo1toni »

Markus_JE hat geschrieben: 2. Mär 2021 12:22 Der Aktor verhält sich so dass wenn eine Positionsfahrt angefahren wird, und ich im währenden die Lamellen verstellen möchte bzw. tue, wird die Positionsfahrt unterbrochen.
Ich denke das ist so auch richtig da die Lamellen beim hoch fahren in die eine Richtung verstellen und beim runter fahren in die andere Richtung. Eigentlich wäre die richtige Lösung zuerst die Position anfahren und danach die Lamellen in die richtige Position stellen.

Gruß Markus
Ja, das ist der Punkt. "richtig" wäre in meinen Augen, die Positionsfahrt auszuführen und anschließend die Lamellen wieder in die letzte bekannte Position zu drehen, aber ich gebe zu, dass das schon etwas mehr Aufwand in der Firmware wäre. Also müsste man das besser über eine Rule erledigen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Jalousien nach Sonnenstand

Beitrag von Markus_JE »

Hi Udo,

ich nehme jetzt mal die Basis deiner Rule und hatte versucht relativ einfach umzumodeln das die Rolladen auf Wert 50 fahren wenn die Vorgaben erfüllt sind. Leider bekommen ich hier einen seltsamen Fehler im Logging.
Weißt du wo ich da ran muss?


Rule:

Code: Alles auswählen

val nElevationMin = 10	//10
val nElevationMax = 300	//45
val nAzimutMin = 0	//130
val nAzimutMax = 210	//210
val nIntensityMin = 0	//80
val nCloudynessMax = 110	//40

rule "Beschattung"
when
    Item LokaleSonnendaten_Position_Elevation changed
then
    if(!(LokaleSonnendaten_Position_Elevation.state instanceof Number)) {               
        logWarn("shade","Elevation ungültig! Abbruch!")
        return;
    }
    if(!(LokaleSonnendaten_Azimut.state instanceof Number)) {                           
        logWarn("shade","Azimut ungültig! Abbruch!")
        return;
		}
		val nElevation = (LokaleSonnendaten_Position_Elevation.state as Number).floatValue 
        val nAzimut = (LokaleSonnendaten_Azimut.state as Number).floatValue                 
		
		var nIntens = 100                                                                   
    if(LokaleSonnendaten_DirekteStrahlung.state instanceof Number)                     
        nIntens = LokaleSonnendaten_DirekteStrahlung.state as Number                   

    var nCloud = 0                                                                      
    if(LokaleWettervorhersage_Bewolkung.state instanceof Number)                        
        nCloud = LokaleWettervorhersage_Bewolkung.state as Number                                                                                      
        if(nElevation < nElevationMin || nElevation > nElevationMax ||
           nAzimut < nAzimutMin || nAzimut > nAzimutMax || 
           nIntens < nIntensityMin || 
           nCloud > nCloudynessMax) {                                                   
            logInfo("shade","Rolladen Büro und Kinderzimmer Beschattung aus!")
			
        } else {
            logInfo("shade","Rolladen Büro und Kinderzimmer Beschattung an!")
			DGBuero.sendCommand(50)
			DGKind.sendCommand(50)
        }                     
end
Error Log:

Code: Alles auswählen

2021-03-05 12:53:56.477 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'SonnenschutzBüro-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_lessThan(int,int) on instance: null in SonnenschutzBüro

Danke Markus

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

Re: Jalousien nach Sonnenstand

Beitrag von udo1toni »

Nein, das ist nicht diese Rule. :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Jalousien nach Sonnenstand

Beitrag von Markus_JE »

HI Udo,

nein natürlich nicht im original.
Ich habe dies auch auf das DG umgemodelt bzw. versucht. Hier sind Rollläden vorhanden.
Da meine Kenntnisse nicht so umfassend sind wollte ich klein anfangen.

Diese werden auch nicht via Szene angesteuert sondern nur auf Position gefahren.
Trotzdem komme ich hier nicht weiter. Tut mir Leid wenn ich hier etwas Verwirrung rein gebracht habe.

Kannst du mir sagen wo der Fehler herkommen kann?

Markus

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

Re: Jalousien nach Sonnenstand

Beitrag von udo1toni »

Der Fehler kommt aus der Rule SonnenschutzBüro-1.
Solange ich diese Rule nicht sehe, kann ich Dir auch nicht sagen, woher der Fehler kommt :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Jalousien nach Sonnenstand

Beitrag von Markus_JE »

Jetzt versteh ich gar nichts mehr. Die Rule ist als Rule DSL via Text file im ordner Rules erstellt.
Die Rule welche ich hier jetzt poste ist aus der Main UI unter Rules und wird so angezeigt. Das ist die selbe Rule nur mit Ansicht via Main UI.

Code: Alles auswählen

// Triggers:
// - When LokaleSonnendaten_Position_Elevation changed

// context: SonnenschutzBüro-1
if(!(LokaleSonnendaten_Position_Elevation.state instanceof Number)) {               
    logWarn("shade","Elevation ungültig! Abbruch!")
    return;
}
if(!(LokaleSonnendaten_Azimut.state instanceof Number)) {                          
    logWarn("shade","Azimut ungültig! Abbruch!")
    return;
		}
		val nElevation = (LokaleSonnendaten_Position_Elevation.state as Number).floatValue  
    val nAzimut = (LokaleSonnendaten_Azimut.state as Number).floatValue                 
		
		var nIntens = 100                                                                   
if(LokaleSonnendaten_DirekteStrahlung.state instanceof Number)                      
    nIntens = LokaleSonnendaten_DirekteStrahlung.state as Number                    

var nCloud = 0                                                                    
if(LokaleWettervorhersage_Bewolkung.state instanceof Number)                        
    nCloud = LokaleWettervorhersage_Bewolkung.state as Number                                                                             
    if(nElevation < nElevationMin || nElevation > nElevationMax ||
       nAzimut < nAzimutMin || nAzimut > nAzimutMax || 
       nIntens < nIntensityMin || 
       nCloud > nCloudynessMax) {                                                   
        logInfo("shade","Rolladen Büro und Kinderzimmer Beschattung aus!")
			
    } else {
        logInfo("shade","Rolladen Büro und Kinderzimmer Beschattung an!")
			DGBuero.sendCommand(50)
			DGKind.sendCommand(50)
    }

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

Re: Jalousien nach Sonnenstand

Beitrag von udo1toni »

Nein, wenn die rule in einer *.rules Datei steht, dann musst Du schon die Rule zeigen wie sie in dieser Datei steht. Die UI Ansicht ist nur bei Rules interessant, wie auch über die UI angelegt wurden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Jalousien nach Sonnenstand

Beitrag von Markus_JE »

Hi Udo,

die rule aus dem textfile mit der Bezeichnung "Beschattung"
Das ist deine ursprüngliche welche ich etwas angepasst habe.

Code: Alles auswählen

val nElevationMin = 0	//10
val nElevationMax = 300	//45
val nAzimutMin = 0	//130
val nAzimutMax = 210	//210
val nIntensityMin = 0	//80
val nCloudynessMax = 110	//40

rule "Beschattung"
when
    Item LokaleSonnendaten_Position_Elevation changed
then
    if(!(LokaleSonnendaten_Position_Elevation.state instanceof Number)) {               
        logWarn("shade","Elevation ungültig! Abbruch!")
        return;
    }
    if(!(LokaleSonnendaten_Azimut.state instanceof Number)) {                           
        logWarn("shade","Azimut ungültig! Abbruch!")
        return;
		}
		val nElevation = (LokaleSonnendaten_Position_Elevation.state as Number).floatValue  
        val nAzimut = (LokaleSonnendaten_Azimut.state as Number).floatValue                 
		
		var nIntens = 100                                                                   
    if(LokaleSonnendaten_DirekteStrahlung.state instanceof Number)                      
        nIntens = LokaleSonnendaten_DirekteStrahlung.state as Number                    

    var nCloud = 0                                                                     
    if(LokaleWettervorhersage_Bewolkung.state instanceof Number)                        
        nCloud = LokaleWettervorhersage_Bewolkung.state as Number                                                                                        
        if(nElevation < nElevationMin || nElevation > nElevationMax ||
           nAzimut < nAzimutMin || nAzimut > nAzimutMax || 
           nIntens < nIntensityMin || 
           nCloud > nCloudynessMax) {                                                   
            logInfo("shade","Rolladen Büro und Kinderzimmer Beschattung aus!")
			
        } else {
            logInfo("shade","Rolladen Büro und Kinderzimmer Beschattung an!")
			DGBuero.sendCommand(50)
			DGKind.sendCommand(50)
        }                     
end
Diese Regel erzeugt in der Main UI unter Rules genau diesen Eintrag
// context: SonnenschutzBüro-1
Bild

Diese Bezeichnung SonnenschutzBüro-1 ist im Logging und verursacht die Meldung.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Jalousien nach Sonnenstand

Beitrag von Markus_JE »

Noch ein kleiner Nachtrag.
Bei mir waren dann mal gerade alle Things weg. Also keine mehr unter Things in der Main UI
Habe dann das Backup eingespielt aber alles etwas seltsam.

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

Re: Jalousien nach Sonnenstand

Beitrag von udo1toni »

Das ist komplett gaga... Warum wird da einfach ein frei erfundener Name generiert? Wo kommt der Name her? Und wie bitte soll man einen Fehler eingrenzen, wenn keine Zeilennummern angegeben werden? ~grummel~
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten