Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Verfasst: 15. Jul 2020 15:14
Ja, das mit dem return false; ist mir auch durchgerutscht. Das ist in der Tat Quatsch. Mach einfach das false weg, so dass nur return; übrig bleibt.
Ansonsten sind halt noch weitere Fehler in der Rule drin.
myGroup wird innerhalb einer Bedingung definiert, somit ist myGroup anschließend (außerhalb der Bedingung) nicht mehr definiert.
Außerdem wird versucht, der Konstanten einfach ein Item zuzuweisen. So geht das aber nicht.
Das korrekte Vorgehen ist, das passende Item aus einer Liste von Items herauszusuchen. Am einfachsten machst Du das, indem Du die vier Group Items
gRollladenX in einer Gruppe zusammenfasst:
Nun kannst Du über gGroups zugreifen. Nur der Teil des Codes, in dem die richtige Gruppe für die Beschattung bestimmt wird:
Der Trick besteht hier zum einen darin, den Namen des Gruppenitems in einer String Variablen zu speichern.
Anschließend wird die String Variable geprüft und gegebenenfalls wird das Objekt myGroup passend gefüllt.
Ansonsten sind halt noch weitere Fehler in der Rule drin.
myGroup wird innerhalb einer Bedingung definiert, somit ist myGroup anschließend (außerhalb der Bedingung) nicht mehr definiert.
Außerdem wird versucht, der Konstanten einfach ein Item zuzuweisen. So geht das aber nicht.
Das korrekte Vorgehen ist, das passende Item aus einer Liste von Items herauszusuchen. Am einfachsten machst Du das, indem Du die vier Group Items
gRollladenX in einer Gruppe zusammenfasst:
Code: Alles auswählen
Group gGroups
Group gRollladenNorth (gGroups)
Group gRollladenEast (gGroups)
Group gRollladenSouth (gGroups)
Group gRollladenWest (gGroups)
Code: Alles auswählen
var String strGroup = ""
switch(true) { // erste zutreffende Bedingung wird exclusiv ausgeführt (alle nachfolgenden nicht, auch wenn sie zutreffen)
case nAz > closingAzimuth_north : {
if(!isActiveNorth) {
logInfo ("shading", "Verschattung für Rollläden NORD")
strGroup = "gRollladenNorth"
isActiveNorth = true
}
}
case nAz > closingAzimuth_west : { // hinreichend, da 1. Bedingung nicht zutrifft
if(!isActiveWest) {
logInfo ("shading", "Verschattung für Rollläden WEST")
strGroup = "gRollladenWest"
isActiveWest = true
}
}
case nAz > closingAzimuth_south : {// hinreichend, da 2. Bedingung nicht zutrifft
if(!isActiveSouth) {
logInfo ("shading", "Verschattung für Rollläden SÜD")
strGroup = "gRollladenSouth"
isActiveSouth = true
}
}
case nAz > closingAzimuth_east : {// hinreichend, da 3. Bedingung nicht zutrifft
if(!isActiveEast){
logInfo ("shading", "Verschattung für Rollläden OST")
strGroup = "gRollladenEast"
isActiveEast = true
}
}
}
if(strGroup == "") { // myGroup ist leer bzw. nicht definiert
logInfo ("shading", "Verschattung bereits aktiv oder außerhalb des Verschattungsbereichs")
return;
}
val myGroup = gGroups.members.filter[i|i.name == strGroup].head
Anschließend wird die String Variable geprüft und gegebenenfalls wird das Objekt myGroup passend gefüllt.