Danke Dir. Klappt nun.udo1toni hat geschrieben: ↑11. Aug 2021 17:07 Steht ja direkt in englisch da. influxdb speichert die Einheit mit ab. Die Meldung “Could not cast 13.32 °C…” besagt genau das. Der Wert ist eben kein DecimalType, sondern ein QuantityType. Number ist der Überbegriff. Im ersten Teil des Vergleichs verwendest Du die korrekte Form ( (… as Number).floatValue) und genau so muss das auch für den aus der Datenbank extrahierten Wert eingegeben werden.
Gesendet von iPad mit Tapatalk
Ein Fehler habe ich nun noch und ich komme nicht drauf:
Code: Alles auswählen
if (blind === null) {
logInfo("shutterlambda", "Group member returned null")
} else {
logInfo("shutterlambda", "processing Group member " + blind.name)}
if ((blind.state as Number) == targetHights.get(blind.name.toString()).intValue) {
logInfo("rules", logPrefix + "Oeffne Rollladen: " + blind.name.toString())
blind.sendCommand(UP)
Code: Alles auswählen
2021-08-17 20:42:51.671 [INFO ] [nhab.core.model.script.shutterlambda] - processing Group member EG_Windfang_Spots
2021-08-17 20:42:51.671 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'shutter-2' failed: Could not cast OFF to java.lang.Number; line 123, column 29, length 21 in shutter
Nochmal die ganze Rule:
Code: Alles auswählen
val shadingEnd = [GroupItem shutter |
val String logPrefix = "Verschattung deaktivieren - "
val Map<String, Number> targetHights = newHashMap (
"EG_Arbeitszimmer_Ost" -> 75,
"EG_Arbeitszimmer_Sued" -> 75,
"EG_Jalousie_Essen_Tuere_West" -> 100,
"EG_Jalousie_Schiebetuere_rechts_Sued" -> 100,
"EG_Jalousie_Schiebetuere_Sued" -> 100,
//"EG_Jalousie_Essen_Tuere_West_Lamellen"-> 75,
//"EG_Jalousie_Schiebetuere_rechts_Sued_Lamellen"-> 75,
//"EG_Jalousie_Schiebetuere_Sued_Lamellen"-> 75,
"EG_Fenster_West" -> 75,
"EG_Tuere_Kueche" -> 75,
"OG_Ankleide" -> 75,
"OG_Elternschlafen_West" -> 75,
"OG_Elternschlafen_Sued" -> 75,
"OG_Kinderbad" -> 75,
"OG_Amelie_Sued" -> 75,
"OG_Amelie_Ost" -> 75,
"OG_Emil_Ost" -> 75,
"KG_Hobbyraum_Abstellraum" -> 75
)
// Rollladen öffnen
logInfo("rules", logPrefix + "Rollladen werden geoeffnet")
shutter.allMembers.forEach[ blind |
if (blind === null) {
logInfo("shutterlambda", "Group member returned null")
} else {
logInfo("shutterlambda", "processing Group member " + blind.name)}
if ((blind.state as Number) == targetHights.get(blind.name.toString()).intValue) {
logInfo("rules", logPrefix + "Oeffne Rollladen: " + blind.name.toString())
blind.sendCommand(UP)
//Pushnachricht versenden
//sendPushoverMessage(pushoverBuilder("Verschattung für (" + blind.name.toString() + ") beendet, Rollladen wird geöffnet."))
} else {
logInfo("rules", logPrefix + "Rollladen: (" + blind.name.toString() + ") wird nicht geoeffnet, da dieser zwischenzeitlich manuell verändert wurde.")
}
]
// Letzte Ausführung mit entsprechendem Zeitstempel belegen
AutoShading_End_last.postUpdate(ZonedDateTime.now.toLocalDateTime.toString())
//Variablen zurücksetzen
isActiveWest = false
isActiveEast = false
isActiveSouth = false
return true;
]