Yep det er via rules i openhab.
Nu siger du at dine velux-vinduer kører via en KLF200. Det gør min vinduer også. Men der er forskellige måder at styre dem på. MED KLF200 firmware 2.xx så kan du styre vinduerne i 1-100%. Ellers kan du bruge scener som er oprettet i KLF200. Velux bindingen til openhab skulle gerne have fundet både vinduer og scener.
Derefter er det sådan set en forholdsvis smal sag at få noget til at gøre noget andet ved påvirkning.
fx..
rule "simple princip regel"
When
item sensor changed
then
velux.sendCommand(ON)
end
Denne simple regel (rule) gør sådan set det som den siger:
Når sensor ændre sig,
så
Send kommando ON til velux.
Sensor er så en item fra et eller andet Velux er en item linket til et velux vindue eller en scene på din KLF200.
Her er min gamle (en del mere omstændig/avanceret) rule til styring af mine velux vinduer, der bla tager forbehold for, om alarmen er slået til/fra, og om det er mørkt udenfor. Og så selvfølgelig temperaturen i form af en Netamo sensor. Det skal lige siges, at den er ændret lidt i dag. Men princippet er det samme. Den aktivere scener i KLF200.
rule "Automatic control of all skylight windows"
when
Item NetamoUdendoersTemperature changed or
Item Node13_SensorLuminance changed or
Item alarm_totalalarm changed or
Item dummy1 changed
then
// Exit the rule when there is nothing to do
if(Override.state == ON) return;
if(alarm_totalalarm.state instanceof Switch ) return;
if(!(Node13_SensorLuminance.state instanceof Number)) return;
if(!(NetamoUdendoersTemperature.state instanceof Number)) return;
// Calculate which velux to send the ON command to
val Number fTemp = NetamoUdendoersTemperature.state as Number
val Number lux = Node13_SensorLuminance.state as Number
val alarm = alarm_totalalarm.state
var velux = VeluxAlleLuk
// Third table
if(alarm == ON) {
logInfo("debug", "Third table clause")
velux = if(fTemp >= 18|"°C") VeluxAlleVent else VeluxAlleLuk
}
// Second table, we already know alarm isn't ON so we don't have to test it for OFF here
else if(lux < 10){
logInfo("debug", "Second table clause")
velux = if(fTemp >= 18|"°C") VeluxAlleVent else VeluxAlleLuk
}
// First table, we know that alarm isn't ON and we know lux >= 20 so we don't have to test for it here
else {
logInfo("debug", "First table clause")
switch fTemp
{
case fTemp >= 25|"°C": velux = VeluxAlleAaben100
case fTemp >= 24|"°C": velux = VeluxAlleAaben75
case fTemp >= 23|"°C": velux = VeluxAlleAaben50
case fTemp >= 18|"°C": velux = VeluxAlleVent
default: velux = VeluxAlleLuk
}
logInfo("debug", "Choose " + velux.name)
}
// Send the command
logInfo("skylight", "Sending ON command to " + velux.name + " because OutsideTemp = " + NetamoUdendoersTemperature.state + " Lux = " + Node13_SensorLuminance.state + " and Alarm = " + alarm_totalalarm.state)
velux.sendCommand(ON)
end