Hi,
i´m trying to close and open my roller shutter with a lambda function. Therefore i have.
The rule:
rule "Abschattung starten"
when
Item Azimuth changed
then
val String logPrefix = "Abschattung aktivieren - "
if (AutoShading_Azimuth_east == "NULL" || AutoShading_Azimuth_south == "NULL" || AutoShading_Azimuth_west == "NULL" ){
AutoShading_Azimuth_east.postUpdate(closingAzimuth_west)
AutoShading_Azimuth_south.postUpdate(closingAzimuth_south)
AutoShading_Azimuth_west.postUpdate(closingAzimuth_west)
}
if (AutoShading.state == ON && IsDay.state == ON) {
//Azimuth ist größer als 181° (WEST)
if (returnvalueWest == false) {
if ((Azimuth.state as Number).floatValue > (closingAzimuth_west)) {
if (log) logInfo (filename, logPrefix + "Abschatung für Rollläden WEST")
returnvalueWest = shadingStart.apply(gRollladenWest) as boolean
return;
}
}
//Azimuth ist größer als 111° (SÜD)
if (returnvalueSouth == false) {
if ((Azimuth.state as Number).floatValue > (closingAzimuth_south)) {
if (log) logInfo (filename, logPrefix + "Abschatung für Rollläden SÜD")
returnvalueSouth = shadingStart.apply(gRollladenSouth) as boolean
return;
}
}
//Azimuth ist größer als 65° (OST)
if (returnvalueEast == false) {
if (log) logInfo (filename, logPrefix + "Abschatung für Rollläden OST" + returnvalueEast.toString())
if ((Azimuth.state as Number).floatValue > (closingAzimuth_east)) {
if (log) logInfo (filename, logPrefix + "Abschatung für Rollläden OST")
returnvalueEast = shadingStart.apply(gRollladenEast) as boolean
return
}
}
} else {
if (log) logInfo(filename, logPrefix + "Abschattung ist deaktiviert")
}
end
The lambda:
val Functions$Function1<GroupItem, boolean> shadingStart= [ shutter |
logInfo (filename, logPrefix + "FUNKTION AUSGEFÜHRT")
if ((localCurrentTemperature.state as Number).floatValue <= (AutoShading_Temp_min.state as Number)) {
if (log) logInfo (filename, logPrefix + "Mindesttemperatur von (" + AutoShading_Temp_min.state.toString() + ") wurde nicht erreicht. Aktuelle Temperatur (" + localCurrentTemperature.state.toString() + ")")
return false;
}
if ((localCurrentCloudiness.state as Number).floatValue > (AutoShading_Cloudiness_max.state as Number)) {
if (log) logInfo (filename, logPrefix + "Aktuelle Bewoelkung (" + localCurrentCloudiness.state.toString() + ") ueberschreitet den eingestellten Grenzwert von (" + AutoShading_Cloudiness_max.state.toString() + ")")
return false;
}
if ((Elevation.state as Number) <= (AutoShading_Elevation_end.state as Number)) {
if (log) logInfo (filename, logPrefix + "Elevation für das Beenden der Abschattung (" + AutoShading_Elevation_end.state.toString() + ") ist groesser als aktuelle (" + Elevation.state.toString() + ")")
return false;
}
// Rollladen werden geschlossen
if (log) logInfo(filename, logPrefix + "Rollladen werden geschlossen")
shutter?.members.forEach[ blind |
if ((blind.state as Number) < (blind_closed)) {
if (log) logInfo(filename, logPrefix + "Fahre Rollladen auf " + blind_closed.toString() + "%: " + blind.name)
blind.sendCommand(blind_closed)
//Pushnachricht versenden
//sendPushoverMessage(pushoverBuilder("Abschattung für " + blind.name.toString "aktiviert"))
} else {
if (log) logInfo (filename, logPrefix + "Rollladen ist bereits weiter geschlossen (" + blind.state.toString() + "%) als er geschlossen werden sollte und wird daher ignoriert")
}
]
return true;
]
but the function seems not to be called. No errors in the logs. Last entry in the log is:
shutter.rules Abschattung aktivieren - Abschatung für Rollläden WEST
Thx