Nuvarande regeluppsättning i OpenHab

Man har lekt runt lite med regelverket i hemautomationsapplikationen "OpenHab" och försökt satt upp lite regler. Jag ska försöka förklara reglerna nedan. Klicka på "Läs mer" för att se reglerna i sin helhet. Ni kan läsa mer om "Hemautomations"-projektet genom att klicka här, eller gå in i menyn "Hemautomation" ovan.

Länk till syntax för tiden (cron): http://www.nncron.ru/help/EN/working/cron-format.htm

  • DetectedMotion()
    • Kontrollerar vilken tid på dygnet det är om klockan är mellan 00.00 - 05.00, så ska den sätta en "counter" om att det faktiskt är mitt i natten som den identiferat en rörelse.
    • Den kontrollerar sedan helt oberoende av tiden, den faktiska ljusnivån. Är ljusnivån under 60 lux så ska lamporna tändas.
  • LightOffNightMotion()
    • Kontrollerar och släcker ljuset varje kvart mellan 00.00 - 05.00. Dock hanterar den först en counter också, så princip släcks det efter ungefär 30 minuter efter att en röresle harupptäckts.
  • SystemStarted()
    • Skickar ett mail när applikationen OpenHab startats.
  • WorkDayTurnLightsOn()
    • Under vanliga veckodagar ska lamporna redan vara tända när väckarklockan ringer. Så man ser något medans man gnuggar sig i ögonen...
  • WorkDayTurnLightsOff()
    • Under arbetsveckan ska lamporna släckas kl 22.00, får då har vi oftast gått och lagt oss.
    • De ska även släcka precis när jag har gått till jobbet, så de inte står på i onödan hemma.

De faktiska innehåller i min regelkonfiguration:

import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import java.util.Date
import java.text.SimpleDateFormat

var Number NightMotionCounter = 0
var Number MotionLastCheck = 0
var Number Night = 0

rule "DetectedMotion"
when
Item sensor_1_motion changed from CLOSED to OPEN
then

if(now.getHourOfDay > 0){
if(now.getHourOfDay < 5){
NightMotionCounter = NightMotionCounter + 1
}
}

if(LUX_AEOTEC.state < 60) {
sendCommand(Lights, ON)
}

end

rule "LightOffNightMotion"
when
Time cron "*/15 0-5 * * * *"
then
if(MotionLastCheck == NightMotionCounter) {
var SimpleDateFormat df = new SimpleDateFormat( "YYYY-MM-dd HH:mm:ss" )
var String Timestamp = df.format( new Date() )
NightMotionCounter = 0
MotionLastCheck = -1;
sendCommand(Lights, OFF)
sendMail("Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den.;, "Lights off!", "Middle of night... Shut of lights... Time: " + Timestamp)
} else {
MotionLastCheck = NightMotionCounter
}

end

rule "SystemStarted"
when
System started
then
var SimpleDateFormat df = new SimpleDateFormat( "YYYY-MM-dd HH:mm:ss" )
var String Timestamp = df.format( new Date() )
sendMail("Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den.;, "OpenHab Started", "OpenHab has been started! Time: " + Timestamp)
end

rule "SystemShutDown"
when
System shuts down
then
var SimpleDateFormat df = new SimpleDateFormat( "YYYY-MM-dd HH:mm:ss" )
var String Timestamp = df.format( new Date() )
sendMail("Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den.;, "OpenHab ShutDown", "OpenHab has been shutdown. Time: " + Timestamp)
end

rule "Night"
when
Time cron "0 59 23 ? * MON-SUN"
then
Night = 1
end

rule "WorkDayTurnLightsOn"
when
Time cron "0 10 05 ? * MON-FRI"
then
var SimpleDateFormat df = new SimpleDateFormat( "YYYY-MM-dd HH:mm:ss" )
var String Timestamp = df.format( new Date() )
sendCommand(Lights, ON)
sendMail("Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den.;, "Good Morning!", "Turning Lights ON! Good Morning! Time: " + Timestamp)
end

rule "WorkDayTurnLightsOff"
when
Time cron "0 0 22 ? * MON-THU" or
Time cron "0 45 06 ? * MON-FRI"
then
var SimpleDateFormat df = new SimpleDateFormat( "YYYY-MM-dd HH:mm:ss" )
var String Timestamp = df.format( new Date() )
sendCommand(Lights, OFF)
sendMail("Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den.;, "Lights off!", "Turning Lights off! Time: " + Timestamp)
Night = 0
end

rule "WeekendTurnLightsOff"
when
Time cron "0 59 23 ? * FRI-SUN"
then
var SimpleDateFormat df = new SimpleDateFormat( "YYYY-MM-dd HH:mm:ss" )
var String Timestamp = df.format( new Date() )
sendCommand(Lights, OFF)
sendMail("Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den.;, "Good Night!", "Turning Lights off! Good Night! Time: " + Timestamp)
Night = 1
end

Taggar: Z-Wave, Openhab, RaspberryPI, Regler