Eigentlich sollte es durch die Verwendung von .intValue keine Rolle spielen, ob der Wert nun als Integer oder als Float rein kommt.
Allerdings schreie ich innerlich auf bei so einer Formulierung:
Code: Alles auswählen
if(log) logInfo(...)
Code: Alles auswählen
logInfo("meinLogger","Meine Meldung")
Das macht man während der LAufzeit von der Karaf Konsole aus per
Code: Alles auswählen
log:set WARN org.smarthome.model.script.meinLogger
Man kann auch das Logging gemeinsam für alle Rules steuern, dann lässt man halt den hinteren Teil ab script weg (funktionert natürlich nur, solange man del Level noch nicht auf der unteren Ebene gesetzt hat).
Man spart sich also die Variable zu Beginn der Rules Datei, das if(log), wenn man Warnmeldungen ausgeben möchte, macht man das mit logWarn(), Fehler mit logError, Meldungen, die nur zum Debugging interessant sind, gibt man mit logDebug() aus. Dann muss man das Logging nur über die Karaf Konsole entsprechend setzen und bekommt die Logmeldungen entsprechend.
Weiterhin ist das Konstrukt mit toString an manchen Stellen nicht so gut, vor allem aber bei log-Meldungen. Diese beiden Zeilen:
Code: Alles auswählen
logInfo(filename, logPrefix + "Beende, aktuelle Temperatur (" + localCurrentTemperature.state.toString() + ") ueberschreitet den eingestellten Grenzwert zum hochfahren von (" + AutoShading_Temp_raise.state.toString()+ ") ")
logInfo("beschattung","Beende, aktuelle Temperatur ({}) überschreitet den eingestellten Grenzwert zum hochfahren ({}) ",localCurrentTemperature.state, AutoShading_Temp_raise.state)
Diese Zeile hier
Code: Alles auswählen
if ((blind.state as Number) < targetHights.get(blind.name.toString()).intValue) {
Code: Alles auswählen
if ((blind.state as Number) < targetHights.get(blind.name).intValue) {
wenn das Item persistiert und mit restoreOnStartup wiederhergestellt wird!).
Besser ist es, in so einem Fall vorher mittels
Code: Alles auswählen
if (blind.state instanceof Number)