Page 2 of 3

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

Posted: 04 Nov 2019, 23:32
by Texan
:D Tackar, blir perfekt

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

Posted: 18 Nov 2019, 22:01
by Texan
Ä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")

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

Posted: 19 Nov 2019, 00:34
by jang
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")

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

Posted: 19 Nov 2019, 19:56
by Texan
Ä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?

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

Posted: 20 Nov 2019, 11:11
by jang
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")

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

Posted: 20 Nov 2019, 21:47
by Texan
: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")
--

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

Posted: 21 Nov 2019, 09:24
by jang
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")
--

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

Posted: 23 Nov 2019, 19:20
by Texan
: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?

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

Posted: 23 Nov 2019, 21:13
by jang
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.

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

Posted: 08 Dec 2019, 14:02
by Texan
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")

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

Posted: 08 Dec 2019, 14:35
by jang
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'

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

Posted: 08 Dec 2019, 17:16
by Texan
Ska man bygga alla regler i en och samma eventrunner, eller ska man skapa flera för exempelvis olika rum?

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

Posted: 08 Dec 2019, 17:36
by jang
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.

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

Posted: 08 Dec 2019, 18:09
by Texan
: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")

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

Posted: 08 Dec 2019, 19:08
by jang
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")
   

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

Posted: 08 Dec 2019, 19:37
by Texan
:) Tack nu fungerar det, börjar förstå mer och mer hur jag ska göra....

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

Posted: 09 Jan 2020, 00:10
by Texan
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")
   

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

Posted: 09 Jan 2020, 08:16
by jang
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

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

Posted: 09 Jan 2020, 20:21
by Texan
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.

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

Posted: 09 Jan 2020, 22:36
by jang
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