ich würde gerne folgendes realisieren:
Setup: Ein Zimmer mit zwei Heizkörperthermostaten und zwei Fensterkontakten.
Nun soll, sobald eines der Fenster geöffnet wird, die Gruppe(SchlafzimmerHeizung_WindowState (Gruppe in der Raspberrymatic)) der Heizkörperthermostate in "WindowMode" versetzt werden.
Hardware: Homematic HMIP-etrv und Aqara Kontakte.
Items:
Code: Alles auswählen
Group:Contact:OR(OPEN, CLOSED) gSchlafzimmerTuersensoren (gTuersensoren)
Contact SchlafzimmerTuersensor_Status "Terrassentürsensor ist [MAP(contact.map):%s]" <window> (gSchlafzimmerTuersensor,gSchlafzimmerTuersensoren) ["ContactSensor"] {channel="deconz:openclosesensor:Rpi-Phoscon-GW:SchlafzimmerTuersensor:open"}
String SchlafzimmerHeizung_WindowState "Heizung (Schlafzimmer) Fensterabsenkung [MAP(HMIP-eTRV.map):%s]" <contact> (gSchlafzimmerHeizung,gHKTWindowMode) {channel="homematic:HmIP-HEATING:HMIPCCU3RM:INT0000002:1#WINDOW_STATE"}
Rule:
Code: Alles auswählen
val Functions$Function1<ContactItem, String> //
heaterInWindowMode = [ContactState |
var String message
if (ContactState.state == OPEN) {
//logInfo("Lambda", "Fensterabsenkung detektieren" + ContactState.state )
message = "OPEN"
return message;
} else if (ContactState.state == CLOSED) {
//logInfo("Lambda", " Fensterabsenkung detektieren" + ContactState.state)
message = "CLOSED"
return message;
} else {
//logInfo("Lambda", " NIX Fensterabsenkung detektieren" + ContactState.state)
message = "CLOSED"
return message;
}
]
///////////////////////////////////////////////////////////////////////////////
// Heizung Fensterabsenkung detektieren
rule "Heizung Fensterabsenkung detektieren"
when
//Time cron "0/30 * * * * ?"
Item BadezimmerFenstersensor_Status received update or
Item KinderzimmerFenstersensor_Status received update or
Item gSchlafzimmerTuersensoren received update //or
//Item SchlafzimmerTuersensor_Status received update or
//Item SchlafzimmerFenstersensor_Status received update
then
if (log) logInfo (filename, logPrefix + "Fensterabsenkung erkennen")
BadHKT_WindowState.sendCommand(heaterInWindowMode.apply(BadezimmerFenstersensor_Status))
KinderzimmerHKT_WindowState.sendCommand(heaterInWindowMode.apply(KinderzimmerFenstersensor_Status))
SchlafzimmerHeizung_WindowState.sendCommand(heaterInWindowMode.apply(gSchlafzimmerTuersensoren.state))
end
Code: Alles auswählen
SchlafzimmerHeizung_WindowState.sendCommand(heaterInWindowMode.apply(gSchlafzimmerTuersensoren.state as ContactItem))
Ich bekomme hier immer einen Cast oder type mismatch.
Habt ihr ne Idee?