Lua kod för att styra lampor beroende på veckor?

User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

:D Tackar, blir perfekt
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Är detta rätt tolkat, släck lampa, jämna veckor mon-fre, 10 minuter före soluppgång och +00:10 blir efter soluppgång?
rule("@sunrise-00:10 & wday('mon-fri') & wnum % 2 == 0 => kitchen.lampaTak:value=0")
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Texan wrote: 18 Nov 2019, 22:01 Är detta rätt tolkat, släck lampa, jämna veckor mon-fre, 10 minuter före soluppgång och +00:10 blir efter soluppgång?
rule("@sunrise-00:10 & wday('mon-fri') & wnum % 2 == 0 => kitchen.lampaTak:value=0")
Ja, -10:00 blir före soluppgången. +10:00 efter.
Om du ska släcka en lampa kan du använda :off

Code: Select all

rule("@sunrise-00:10 & wday('mon-fri') & wnum % 2 == 0 => kitchen.lampaTak:off")
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Är det en fördel att skriva :off istället för value=0 eller spelar det ingen roll?

Hur gör man för styra Philips hue lampor, några exempel?
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Texan wrote: 19 Nov 2019, 19:56 Är det en fördel att skriva :off istället för value=0 eller spelar det ingen roll?

Hur gör man för styra Philips hue lampor, några exempel?
:value=0 översätts till fibaro:call(ID,'setValue',0) och :off fibaro:call(ID,"turnOff") - dvs ingen större skillnad. Tycker om att använda :off när jag släcker lampor då koden känns mer "självdokumenterande"

Ja de går att styra Hue lampor.

Först måste du definiera

Code: Select all

local _HueUserName = ".........."                -- Hue API key
local _HueIP       = "192.168.1.XX"                         -- Hue bridge IP
I början på filen. Finns lite hjälp här hur du hittar API key
https://www.markdubois.info/weblog/2016 ... s-hue-api/ eller så använder du ngt annat verktyg.

Sedan avkommentera raden med HueSetup

Code: Select all

-- Hue setup before main() starts. You can add more Hue.connect() inside this if you have more Hue bridges.
function HueSetup() if _HueUserName and _HueIP then Hue.connect(_HueUserName,_HueIP,"Hue") end end
Sedan måste du ta reda på vilka namn dina Hue enheter har i Hue appen.
Du kan köra

Code: Select all

Hue.dump()
inuti main så loggar den alla Hue enheter (men du måste ha satt up enligt ovan först)

Anta att du har en lampa som heter "Window lamp" i Hue.
Du tilldelar då din Hue lampa ett fejkar devideID nummer. Fejkade deviceID nummer måste vara > 10000.

Code: Select all

Hue.define("Window lamp",12001)
sedan kan du i regler använda 12001 som en vanlig deviceID lampa

Code: Select all

Rule.eval("@07:00 => 12001:on") -- Turn on lamp
Rule.eval("@07:00 => 12001:value=50") -- Dim to 50%
I din HomeTable kan du definiera

Code: Select all

HomeTable = {
   kitchen = { lamp = 12001 }
}
och skriva

Code: Select all

Rule.eval("@07:00 => kitchen.lamp:on")
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

:oops: Vart exakt skall jag lägga in och de övriga

Hue.dump()




--------- Main ------------ Here goes your rules ----------------
function main()
local rule,define = Rule.eval, Util.defvar

if _EMULATED then
--_System.speed(true) -- run emulator faster than real-time
--_System.setRemote("devices",{5}) -- make device 5 remote (call HC2 with api)
--_System.installProxy() -- Install HC2 proxy sending sourcetriggers back to emulator
end

local HT = -- Example of in-line "home table"
{
dev =
{ livingroom = {lampaTak = 206, lampaBed = 205},
kitchen = {lampaBord = 33, lampaTak = 68},
bathroom = {lampaBad = 329, lampaMirr = 335},
},
other = "other"
}

--or read in "HomeTable" from a fibaro global variable (or scene)
--local HT = type(_homeTable)=='number' and api.get("/scenes/".._homeTable).lua or fibaro:getGlobalValue(_homeTable)
--HT = type(HT) == 'string' and json.decode(HT) or HT
Util.defvars(HT.dev) -- Make HomeTable variables available in EventScript
Util.reverseMapDef(HT.dev) -- Make HomeTable variable names available for logger

-- Dina regler
--rule("@sunset-00:10 & wnum % 2 == 1 => kitchen.lampaTak:value=30") -- Sätt till 30%, udda veckor, solnedgång-10min
-- Tänd och släck jämna veckor ( Jämn vecka = 0 )
rule("@05:28 & wday('mon-thu') & wnum%2 == 0 => kitchen.lampaTak:value=20") -- Sätt till 20%, jämna veckor, soluppgång-10min
rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => kitchen.lampaBord:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => livingroom.lampaTak:value=1")
rule("@05:28 & wday('fri') & wnum%2 == 0 => kitchen.lampaTak:value=20") -- Sätt till 20%, jämna veckor, soluppgång-10min
rule("@05:29 & wday('fri') & wnum%2 == 0 => kitchen.lampaBord:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
rule("@05:29 & wday('fri') & wnum%2 == 0 => livingroom.lampaTak:value=1")
rule("@07:10 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaTak:value=0")
rule("@08:15 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaBord:value=0")
rule("@07:35 & wday('mon-fri') & wnum%2 == 0 => livingroom.lampaTak:value=0")
--
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Har markerat I bold det du ska lägga till. /J
--------------------
--[[
%% properties
%% events
%% globals
%% autostart
--]]

if dofile and not _EMULATED then _EMULATED={name="EventRunner",id=99,maxtime=44} dofile("HC2.lua") end -- For HC2 emulator

local _version,_fix = "3.0","B83" -- Nov 17, 2019

local _sceneName = "Demo" -- Set to scene/script name
local _homeTable = "devicemap" -- Name of your HomeTable variable (fibaro global)
local _HueUserName = ".........." -- Hue API key
local _HueIP = "192.168.1.XX" -- Hue bridge IP


-- debug flags for various subsystems (global)
_debugFlags = {
post=true,invoke=true,triggers=true,dailys=false,rule=true,ruleTrue=false,
fcall=true, fglobal=false, fget=false, fother=false, hue=true, telegram=false, nodered=false,
}
-- options for various subsystems (global)
_options=_options or {}

-- Hue setup before main() starts. You can add more Hue.connect() inside this if you have more Hue bridges.
function HueSetup() if _HueUserName and _HueIP then Hue.connect(_HueUserName,_HueIP,"Hue") end end
--------- Main ------------ Here goes your rules ----------------
function main()
local rule,define = Rule.eval, Util.defvar

if _EMULATED then
--_System.speed(true) -- run emulator faster than real-time
--_System.setRemote("devices",{5}) -- make device 5 remote (call HC2 with api)
--_System.installProxy() -- Install HC2 proxy sending sourcetriggers back to emulator
end

local HT = -- Example of in-line "home table"
{
dev =
{ livingroom = {lampaTak = 206, lampaBed = 205, lampaFonster=12001},
kitchen = {lampaBord = 33, lampaTak = 68},
bathroom = {lampaBad = 329, lampaMirr = 335},
},
other = "other"
}

--or read in "HomeTable" from a fibaro global variable (or scene)
--local HT = type(_homeTable)=='number' and api.get("/scenes/".._homeTable).lua or fibaro:getGlobalValue(_homeTable)
--HT = type(HT) == 'string' and json.decode(HT) or HT
Util.defvars(HT.dev) -- Make HomeTable variables available in EventScript
Util.reverseMapDef(HT.dev) -- Make HomeTable variable names available for logger

Hue.dump() -- Kör en gång för att få Hue namn. Kommentera sedan bort den
--Hue.define("Window lamp",12001) -- Avkommentera när du har rätt namn

-- Dina regler
rule("@now+00:00:02 => livingroom. lampaFonster:on") -- Test light, turn on 2 seconds after ER started/saved.

--rule("@sunset-00:10 & wnum % 2 == 1 => kitchen.lampaTak:value=30") -- Sätt till 30%, udda veckor, solnedgång-10min
-- Tänd och släck jämna veckor ( Jämn vecka = 0 )
rule("@05:28 & wday('mon-thu') & wnum%2 == 0 => kitchen.lampaTak:value=20") -- Sätt till 20%, jämna veckor, soluppgång-10min
rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => kitchen.lampaBord:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => livingroom.lampaTak:value=1")
rule("@05:28 & wday('fri') & wnum%2 == 0 => kitchen.lampaTak:value=20") -- Sätt till 20%, jämna veckor, soluppgång-10min
rule("@05:29 & wday('fri') & wnum%2 == 0 => kitchen.lampaBord:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
rule("@05:29 & wday('fri') & wnum%2 == 0 => livingroom.lampaTak:value=1")
rule("@07:10 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaTak:value=0")
rule("@08:15 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaBord:value=0")
rule("@07:35 & wday('mon-fri') & wnum%2 == 0 => livingroom.lampaTak:value=0")
--
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

:oops: Hur gör man för att sätta olika färger och intensitet på Hue lampor, hur ser då en enkel regel ut?
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Texan wrote: 23 Nov 2019, 19:20 :oops: Hur gör man för att sätta olika färger och intensitet på Hue lampor, hur ser då en enkel regel ut?

Code: Select all

rule("lampa:off") 
rule("lampa:on") 
rule("lampa:value=50") -- Dimma till 50%
rule("lampa:value={99,0,0}") -- Sätt till röd färg
rule("lampa:value={0,99,0}") -- Sätt till blå färg
rule("lampa:value={0,0,99}") -- Sätt till grön färg
rule("lampa:value={0,0,99,50}") -- Sätt till grön färg, 50% dimmad
rule("lampa:value='Night scene' ") -- Sätt lampa till Hue scene 'Night scene'
Om du har grupperat lampor i Hue appen kan du använda Gruppens namn på samma sätt som en enskild lampa
och definiera ett HC2 deviceID med Hue.define för gruppen.

Om du tycker att du har en bra inställning på en lampa kan du spara den i en fibaro global såhär

Code: Select all

rule("$HueValue = lampa:values") -- :values returnerar alla Hue properities 
rule("lampa:values = $HueValue") -- återställ värden till lampan.
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Har en entré lampa som jag vill ska tändas då man öppnar dörren (magnet kontakt) och om jag är på insidan av dörren så ska den tändas av en rörelse sensor som jag har där och så länge det är rörelse så skall den hållas tänd och släckas efter 5min då ingen är där. Hur får man till det, är det bara att lägga till dessa två sensorer mellan --[[ och --]] och sedan bygga regeln........

sensors = {339, 345}
lampaEntre = 329
rule("sensors:breached & 04:10..22:30 => lampaBad:value=100")
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Texan wrote: 08 Dec 2019, 14:02 Har en entré lampa som jag vill ska tändas då man öppnar dörren (magnet kontakt) och om jag är på insidan av dörren så ska den tändas av en rörelse sensor som jag har där och så länge det är rörelse så skall den hållas tänd och släckas efter 5min då ingen är där. Hur får man till det, är det bara att lägga till dessa två sensorer mellan --[[ och --]] och sedan bygga regeln........

sensors = {339, 345}
lampaEntre = 329
rule("sensors:breached & 04:10..22:30 => lampaBad:value=100")
Ja , du måste lägga till dem under --[[ %% properties

och sedan regler i stil med.

Code: Select all

doorSensor = 339
motionSensor = 345
sensors = {doorSensor, motionSensor}
lampaEntre = 329

rule("sensors:breached & sunset-01:00..22:30 => lampaEntre:on")
rule("trueFor(00:05,sensors:safe) => lampaEntre:off")
Här använder jag sunset-1timme men du kan använda vad du vill (nu tycker jag det är mörkt hela dagen)
Både rörelsesensorn och dörren måste vara "safe" i 5min för att den ska släcka.

Edit: ändrade till 'trueFor'
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Ska man bygga alla regler i en och samma eventrunner, eller ska man skapa flera för exempelvis olika rum?
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Texan wrote: 08 Dec 2019, 17:16 Ska man bygga alla regler i en och samma eventrunner, eller ska man skapa flera för exempelvis olika rum?
Kör alla i samma.
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

:oops: :oops: Det är något som jag gör fel, lampaCloset vill inte tända, fungera ifall jag kör en egen event för den.

Code: Select all

--[[
%% properties
339 value
345 value
220 value
51 value
211 value
%% events
5 CentralSceneEvent
22 GeofenceEvent
%% globals 
TimeOfDay
Test
%% autostart 
--]] 

Code: Select all

 dev = 
    { livingroom = {lampaTak = 206, lampaBed = 205, lampaGlas = 308},
      kitchen = {lampaWind  = 33, lampaSink = 68},
      bathroom = {lampaBad = 329, lampaMirr = 335},
      closet = {lampaCloset = 152},
      hallway = {lampaHall = 40},
    },

Code: Select all

 -- Dina regler
 --rule("@now+00:00:02 => livingroom. lampaBed:on") -- Test light, turn on 2 seconds after ER started/saved
 --rule("@sunset-00:10 & wnum % 2 == 1 => kitchen.lampaTak:value=30") -- Sätt till 30%, udda veckor, solnedgång-10min
 -- Tänd och släck jämna veckor ( Jämn vecka = 0 )
   rule("@05:28 & wday('mon-thu') & wnum%2 == 0 => kitchen.lampaSink:value=10") -- Sätt till 20%, jämna veckor, soluppgång-10min
   rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => kitchen.lampaWind:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
   rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => livingroom.lampaTak:value=1")
   rule("@05:28 & wday('fri') & wnum%2 == 0 => kitchen.lampaSink:value=10") -- Sätt till 20%, jämna veckor, soluppgång-10min
   rule("@05:29 & wday('fri') & wnum%2 == 0 => kitchen.lampaWind:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
   rule("@05:29 & wday('fri') & wnum%2 == 0 => livingroom.lampaTak:value=1")
   rule("@07:10 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaSink:value=0")
   rule("@08:15 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaWind:value=0")
   rule("@sunrise+00:10 => livingroom.lampaTak:value=0")
  --rule("@08:10 & wday('mon-fri') & wnum%2 == 0 => livingroom.lampaTak:value=0")
   rule("@23:00 & wday('mon-thu') => livingroom.lampaGlas:off")
   rule("@24:00 & wday('fri-sun') => livingroom.lampaGlas:off")
 -- Tänd och släck udda veckor ( Udda vecka = 1 )
   --rule("@now+00:00:02 => 12001:on") -- Test light, turn on 2 seconds after ER started/saved
  --rule("@now+00:00:02 => 12002:on") -- Test light, turn on 2 seconds after ER started/saved
   rule("@sunset+03:00 & wday('mon-fri') => 12001:value'Night scene'")
   rule("@04:28 & wday('mon-thu') & wnum%2 == 1 => kitchen.lampaSink:value=10") -- Sätt till 20%, udda veckor, soluppgång-10min
   rule("@04:29 & wday('mon-thu') & wnum%2 == 1 => kitchen.lampaWind:value=1") -- Sätt till on, udda veckor, soluppgång-10min
   rule("@04:29 & wday('mon-thu') & wnum%2 == 1 => livingroom.lampaTak:value=1")
   rule("@04:10 & wday('fri') & wnum%2 == 1 => kitchen.lampaSink:value=10") -- Sätt till 20%, udda veckor, soluppgång-10min
   rule("@04:10 & wday('fri') & wnum%2 == 1 => kitchen.lampaWind:value=1") -- Sätt till on, udda veckor, soluppgång-10min
   rule("@04:11 & wday('fri') & wnum%2 == 1 => livingroom.lampaTak:value=1")
   rule("@07:15 & wday('mon-fri') & wnum%2 == 1 => kitchen.lampaSink:value=0")
   rule("@08:17 & wday('mon-fri') & wnum%2 == 1 => kitchen.lampaWind:value=0")
   --rule("@sunrise+00:10 & wday('mon-fri') & wnum%2 == 1 => livingroom.lampaTak:value=0")
  --rule("@08:10 & wday('mon-fri') & wnum%2 == 1 => livingroom.lampaTak:value=0")
   sensors = {339, 345}
   lampaBad = 329
   lampaMirr = 335
   rule("sensors:breached & 04:10..22:30 => lampaBad:value=100")
   rule("sensors:breached & 22:30..04:10 => lampaBad:value=5")
   rule("sensors:breached & 04:10..23:59 => lampaMirr:value=1")
   rule("trueFor(00:04,sensors:safe) => lampaBad:off")  
   rule("trueFor(00:04,sensors:safe) => lampaMirr:off")  
  --
   sensors = 220
   lampaCloset = 152
   rule("sensors:breached => closet.lampaCloset:value=1")
   rule("trueFor(00:02,sensors:safe) => closet.lampaCloset:value=0")
  --
   doorsensor = 211
   motionsensor = 51
   sensors = {doorsensor, motionsensor}
   lampaHall = 40
   rule("sensors:breached => hallway.lampaHall:value=75")
   rule("trueFor(00:03,sensors:safe) => hallway.lampaHall:off")
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Lua variablen sensors definerades om flera ggr och det blir den sista som gäller.
Nu har jag bytt namn till badSensors, doorSensors etc.

Code: Select all

   rule("@05:28 & wday('mon-thu') & wnum%2 == 0 => kitchen.lampaSink:value=10") -- Sätt till 20%, jämna veckor, soluppgång-10min
   rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => kitchen.lampaWind:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
   rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => livingroom.lampaTak:value=1")
   rule("@05:28 & wday('fri') & wnum%2 == 0 => kitchen.lampaSink:value=10") -- Sätt till 20%, jämna veckor, soluppgång-10min
   rule("@05:29 & wday('fri') & wnum%2 == 0 => kitchen.lampaWind:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
   rule("@05:29 & wday('fri') & wnum%2 == 0 => livingroom.lampaTak:value=1")
   rule("@07:10 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaSink:value=0")
   rule("@08:15 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaWind:value=0")
   rule("@sunrise+00:10 => livingroom.lampaTak:value=0")
  --rule("@08:10 & wday('mon-fri') & wnum%2 == 0 => livingroom.lampaTak:value=0")
   rule("@23:00 & wday('mon-thu') => livingroom.lampaGlas:off")
   rule("@24:00 & wday('fri-sun') => livingroom.lampaGlas:off")
 -- Tänd och släck udda veckor ( Udda vecka = 1 )
   --rule("@now+00:00:02 => 12001:on") -- Test light, turn on 2 seconds after ER started/saved
  --rule("@now+00:00:02 => 12002:on") -- Test light, turn on 2 seconds after ER started/saved
   rule("@sunset+03:00 & wday('mon-fri') => 12001:value'Night scene'")
   rule("@04:28 & wday('mon-thu') & wnum%2 == 1 => kitchen.lampaSink:value=10") -- Sätt till 20%, udda veckor, soluppgång-10min
   rule("@04:29 & wday('mon-thu') & wnum%2 == 1 => kitchen.lampaWind:value=1") -- Sätt till on, udda veckor, soluppgång-10min
   rule("@04:29 & wday('mon-thu') & wnum%2 == 1 => livingroom.lampaTak:value=1")
   rule("@04:10 & wday('fri') & wnum%2 == 1 => kitchen.lampaSink:value=10") -- Sätt till 20%, udda veckor, soluppgång-10min
   rule("@04:10 & wday('fri') & wnum%2 == 1 => kitchen.lampaWind:value=1") -- Sätt till on, udda veckor, soluppgång-10min
   rule("@04:11 & wday('fri') & wnum%2 == 1 => livingroom.lampaTak:value=1")
   rule("@07:15 & wday('mon-fri') & wnum%2 == 1 => kitchen.lampaSink:value=0")
   rule("@08:17 & wday('mon-fri') & wnum%2 == 1 => kitchen.lampaWind:value=0")
   --rule("@sunrise+00:10 & wday('mon-fri') & wnum%2 == 1 => livingroom.lampaTak:value=0")
  --rule("@08:10 & wday('mon-fri') & wnum%2 == 1 => livingroom.lampaTak:value=0")
  
   badSensors = {339, 345}
   --lampaBad = 329
   --lampaMirr = 335
   rule("badSensors:breached & 04:10..22:30 => bathroom.lampaBad:value=100")
   rule("badSensors:breached & 22:30..04:10 => bathroom.lampaBad:value=5")
   rule("badSensors:breached & 04:10..23:59 => bathroom.lampaMirr:value=1")
   rule("trueFor(00:04,badSensors:safe) => bathroom.lampaBad:off; bathroom.lampaMirr:off")  
  -- rule("trueFor(00:04,badSensors:safe) => bathroom.lampaMirr:off")  
  --
   closetSensors = 220
   --lampaCloset = 152
   rule("closetSensors:breached => closet.lampaCloset:value=1")
   rule("trueFor(00:02,closetSensors:safe) => closet.lampaCloset:value=0")
  --
   doorsensor = 211
   motionsensor = 51
   doorSensors = {doorsensor, motionsensor}
   --lampaHall = 40
   rule("doorSensors:breached => hallway.lampaHall:value=75")
   rule("trueFor(00:03,doorSensors:safe) => hallway.lampaHall:off")
   
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

:) Tack nu fungerar det, börjar förstå mer och mer hur jag ska göra....
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Har skaffat en dörrsensor (456) till badrummet som jag tänkte att ifall dörren är stängt så blir lamporna tända ex max 30min ifall man ligger i badet med stängd dörr och lite rörelse eller sitter länge på stolen :D

Hur blir det då?

Code: Select all

badSensors = {339, 345, 456}
   rule("badSensors:breached & 04:10..22:30 => bathroom.lampaBad:value=100")
   rule("badSensors:breached & 22:30..04:10 => bathroom.lampaBad:value=5")
   rule("badSensors:breached & 04:10..23:59 => bathroom.lampaMirr:value=1")
   rule("trueFor(00:02,badSensors:safe) => bathroom.lampaBad:off; bathroom.lampaMirr:off") 

Prövade detta men det känns inte som rätt sätt :oops:

Code: Select all

 motionsensor1 = 339
  motionsensor2 = 345
  mksensor = 456
  badSensors = {motionsensor1, motionsensor2}
   rule("mksensor:breached & 04:10..22:30 => bathroom.lampaBad:value=100; bathroom.lampaMirr:value=1")
   rule("badSensors:breached & 04:10..22:30 => bathroom.lampaBad:value=100; bathroom.lampaMirr:value=1")
   rule("badSensors:breached & 22:30..04:10 => bathroom.lampaBad:value=5; bathroom.lampaMirr:off")
   rule("mksensor:breached & 22:30..04:10 => bathroom.lampaMirr:off; bathroom.lampaBad:value=5")
   rule("trueFor(00:00,mksensor:safe) => bathroom.lampaBad:off; bathroom.lampaMirr:off")
   rule("trueFor(00:01,badSensors:safe) => bathroom.lampaBad:off; bathroom.lampaMirr:off")
   
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Texan wrote: 09 Jan 2020, 00:10 Har skaffat en dörrsensor (456) till badrummet som jag tänkte att ifall dörren är stängt så blir lamporna tända ex max 30min ifall man ligger i badet med stängd dörr och lite rörelse eller sitter länge på stolen :D

Hur blir det då?

Code: Select all

badSensors = {339, 345, 456}
   rule("badSensors:breached & 04:10..22:30 => bathroom.lampaBad:value=100")
   rule("badSensors:breached & 22:30..04:10 => bathroom.lampaBad:value=5")
   rule("badSensors:breached & 04:10..23:59 => bathroom.lampaMirr:value=1")
   rule("trueFor(00:02,badSensors:safe) => bathroom.lampaBad:off; bathroom.lampaMirr:off") 

Prövade detta men det känns inte som rätt sätt :oops:

Code: Select all

 motionsensor1 = 339
  motionsensor2 = 345
  mksensor = 456
  badSensors = {motionsensor1, motionsensor2}
   rule("mksensor:breached & 04:10..22:30 => bathroom.lampaBad:value=100; bathroom.lampaMirr:value=1")
   rule("badSensors:breached & 04:10..22:30 => bathroom.lampaBad:value=100; bathroom.lampaMirr:value=1")
   rule("badSensors:breached & 22:30..04:10 => bathroom.lampaBad:value=5; bathroom.lampaMirr:off")
   rule("mksensor:breached & 22:30..04:10 => bathroom.lampaMirr:off; bathroom.lampaBad:value=5")
   rule("trueFor(00:00,mksensor:safe) => bathroom.lampaBad:off; bathroom.lampaMirr:off")
   rule("trueFor(00:01,badSensors:safe) => bathroom.lampaBad:off; bathroom.lampaMirr:off")
   
Prova det här, vi har en flagga 'iBadrum' som sätts till sant om ngn rör sig i badrummet medans dörren är stängd och sätts till falskt om den öppnas.
Sedan trueFor reglerna släcker bara om iBadrum är falskt ('!' är 'not')
Tiderna kan regleras men sätt de inte till 00:00, skulle rekommendera minst 2min

Code: Select all

 motionsensor1 = 339
  motionsensor2 = 345
  mksensor = 456
  badSensors = {motionsensor1, motionsensor2}
   rule("mksensor:breached & 04:10..22:30 => bathroom.lampaBad:value=100; bathroom.lampaMirr:value=1")
   rule("badSensors:breached & 04:10..22:30 => bathroom.lampaBad:value=100; bathroom.lampaMirr:value=1")
   rule("badSensors:breached & 22:30..04:10 => bathroom.lampaBad:value=5; bathroom.lampaMirr:off")
   rule("mksensor:breached & 22:30..04:10 => bathroom.lampaMirr:off; bathroom.lampaBad:value=5")
   rule("trueFor(00:05,mksensor:safe & !iBadrum) => bathroom.lampaBad:off; bathroom.lampaMirr:off")
   rule("trueFor(00:05,badSensors:safe & !iBadrum) => bathroom.lampaBad:off; bathroom.lampaMirr:off")
   
   rule("mkSensor:breached => iBadrum = false") -- Dörr öppnas, vi vet inte om ngn är i badrummet
   rule("badSensors:breached => if mkSensor:safe then iBadrum = true end") -- Sensor breached och dörr stängd, ngn inne i badrummet
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Fungerar, men jag förstår inte hur jag får till det med en max tid.
Nu blir det tänt även ifall man går ut och råkar stänga dörren och det inte är en rörelse.
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Texan wrote: 09 Jan 2020, 20:21 Fungerar, men jag förstår inte hur jag får till det med en max tid.
Nu blir det tänt även ifall man går ut och råkar stänga dörren och det inte är en rörelse.
Ah, det blev en miss - nytt försök.

Code: Select all

  motionsensor1 = 339
  motionsensor2 = 345
  mksensor = 456
  badSensors = {motionsensor1, motionsensor2}
  bathroom = { lampaBad = 100, lampaMirr = 101}

  Util.triggerVar('iBadrum')
  rule("mksensor:breached & 04:10..22:30 => bathroom.lampaBad:value=100; bathroom.lampaMirr:value=1")
  rule("badSensors:breached & 04:10..22:30 => bathroom.lampaBad:value=100; bathroom.lampaMirr:value=1")
  rule("badSensors:breached & 22:30..04:10 => bathroom.lampaBad:value=5; bathroom.lampaMirr:off")
  rule("mksensor:breached & 22:30..04:10 => bathroom.lampaMirr:off; bathroom.lampaBad:value=5")

  rule("mksensor:breached => iBadrum = false") -- Dörr öppnas, vi vet inte om ngn är i badrummet
  rule("badSensors:breached => if mksensor:safe then iBadrum = true end") -- Sensor breached och dörr stängd, ngn inne i badrummet 

  rule("trueFor(00:05,badSensors:safe & mksensor:value & !iBadrum) => bathroom.lampaBad:off; bathroom.lampaMirr:off") -- check if sensors safe for 5min, retrigger rule every time door value changes
Post Reply