Skulle vilja få hjälp med att få min ER3 funktioner till ER4.
Code: Select all
--[[
%% properties
527 value
507 value
563 value
465 value
471 value
51 value
211 value
456 value
426 value
%% events
5 CentralSceneEvent
22 GeofenceEvent
%% globals
TimeOfDay
Test
%% autostart
--]]
if dofile and not _EMULATED then _EMULATED={name="EventRunner",id=99,maxtime=24} dofile("HC2.lua") end -- For HC2 emulator
local _version,_fix = "3.0","B90" -- Oct 3, 2020
local _sceneName = "Texan smart hem" -- Set to scene/script name
--local _homeTable = "devicemap" -- Name of your HomeTable variable (fibaro global)
local _HueUserName = "iOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -- Hue API key
local _HueIP = "192.168.0.XX" -- Hue bridge IP
--local _NodeRed = "http://192.168.1.YY:8080/EventRunner" -- Nodered URL
--local _TelegBOT = "t34yt98iughvnw9458gy5of45pg:chr9hcj" -- Telegram BOT key
--local _TelegCID = 6876768686 -- Telegram chat ID
if loadfile then local cr = loadfile("credentials.lua"); if cr then cr() end end
-- To not accidently commit credentials to Github, or post at forum :-)
-- E.g. Hue user names, icloud passwords etc. HC2 credentials is set from HC2.lua, but can use same file.
-- debug flags for various subsystems (global)
_debugFlags = {
post=true,invoke=false,triggers=true,dailys=false,rule=false,ruleTrue=false,
fcall=true, fglobal=false, fget=false, fother=false, hue=false, 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) 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 = {lampaOrange = 87, lampaWindow = 449, lampaGold = 254, lampaMedia = 503},
kitchen = {lampaWind = 33, lampaSink = 68, lampaTable = 103, machineCoffee = 150},
balcony = {lampaWall = 138, lampaHead = 78},
bathroom = {lampaBad = 329, lampaMirr = 335},
bedroom = {lampaWindo = 30},
closet = {lampaCloset = 152},
computerroom = {lampaComp = 28, lampaRed = 432, lampaDim = 308, lampaNy = 577},
hallway = {lampaHall = 40, lampaLamp = 159},
},
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 ("LampaBed1",12001) ---- Hue lampor enligt hue namn
Hue.define ("LampaBed2",12002)
Hue.define ("Hue outdoor pedestal 1",12003)
--
--
-- 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, Udda = 1)
--
--rule("@04:28 & wday('mon') & wnum%2 == 0 => kitchen.lampaSink:value=10") -- Sätt till 20%, jämna veckor, soluppgång-10min
--rule("@04:29 & wday('mon') & wnum%2 == 0 => kitchen.lampaWind:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
--rule("@04:29 & wday('mon') & wnum%2 == 0 => computerroom.lampaComp:value=1") -- Lampa datarumsfönster
----rule("@05:29 & wday('mon-fri') & wnum%2 == 1 => livingroom.lampaWindow:value=1")
----rule("@04:29 & wday('mon,thu') & wnum%2 == 1 => livingroom.lampaWindoww:value=1")
----rule("@05:28 & wday('tue,wed,fri') wnum%2 == 1 => livingroom.lampaWindow:value=1")
----rule("@04:28 & wday('mon,thu') & wnum%2 == 1 => kitchen.lampaSink:value=10") -- Sätt till 20%, jämna veckor, soluppgång-10min
---rule("@05:28 & wday(tue,wed,fri') wnum%2 == 1 => kitchen.lampaSink:value=10")
----rule("@05:29 & wday('mon-fri') & wnum%2 == 1 => kitchen.lampaWind:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
----rule("@04:29 & wday('mon,the') & wnum%2 == 1 => computerroom.lampaComp:value=1") -- Lampa datarumsfönster
--rule("@05:29 & wday('mon-thu') & wnum%2 == 0 => livingroom.lampaWindow:value=1")
--rule("@04:59 & wday('fri') & wnum%2 == 0 => kitchen.lampaSink:value=10") -- Sätt till 20%, jämna veckor, soluppgång-10min
--rule("@04:58 & wday('fri') & wnum%2 == 0 => kitchen.lampaWind:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
--rule("@04:58 & wday('fri') & wnum%2 == 0 => computerroom.lampaComp:value=1")
--rule("@05:00 & wday('fri') & wnum%2 == 0 => livingroom.lampaWindow:value=1")
--rule("@07:30 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaSink:off")
----rule("@08:15 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaWind:off") --Användes inte
--
-- Tänd och släck udda veckor ( Udda vecka = 1, jämna =0)
--
--rule("@04:28 & wday('mon') & wnum%2 == 1 => kitchen.lampaSink:value=10") -- Sätt till 20%, jämna veckor, soluppgång-10min
--rule("@04:29 & wday('mon') & wnum%2 == 1 => kitchen.lampaWind:value=1") -- Sätt till on%, jämna veckor, soluppgång-10min
--rule("@04:29 & wday('mon') & wnum%2 == 1 => computerroom.lampaComp:value=1") -- Lampa datarumsfönster
---rule("@04:29 & wday('mon-fri') & wnum%2 == 0 => livingroom.lampaWindow:value=1") --
---rule("@04:28 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaSink:value=10") -- Sätt till 20%, udda veckor
---rule("@04:29 & wday('mon-fri') & wnum%2 == 0 => kitchen.lampaWind:value=1") -- Sätt till on, udda veckor
--rule("@04:29 & wday('mon-fri') & wnum%2 == 0 => computerroom.lampaComp:value=1")
--rule("@04:29 & wday('tue-thu') & wnum%2 == 1 => livingroom.lampaWindow: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:10 & wday('fri') & wnum%2 == 1 => computerroom.lampaComp:value=1")
--rule("@04:11 & wday('fri') & wnum%2 == 1 => livingroom.lampaWindow:value=1")
---rule("@07:30 & wday('mon-fri') & wnum%2 == 1 => kitchen.lampaSink:off")
----rule("@08:17 & wday('mon-fri') & wnum%2 == 1 => kitchen.lampaWind:off") --Användes inte
----rule("@sunrise+00:10 & wday('mon-fri') & wnum%2 == 1 => livingroom.lampaTak:value=0") --Användes inte
----rule("@08:10 & wday('mon-fri') & wnum%2 == 1 => livingroom.lampaTak:value=0") -- Användes inte
--
-- Tända veckodagar
--rule("@04:29 & wday('mon,thu') => livingroom.lampaWindow:value=1")
--rule("@05:29 & wday('tue,wed,fri') => livingroom.lampaWindow:value=1")
--rule("@04:29 & wday('mon,thu') => kitchen.lampaWind:value=1")
-- rule("@05:29 & wday('tue,wed,fri') => kitchen.lampaWind:value=1")
--rule("@04:29 & wday('mon,thu') => kitchen.lampaSink:value=10")
-- rule("@05:29 & wday('tue,wed,fri') => kitchen.lampaSink:value=10")
--rule("@04:29 & wday('mon,thu') => computerroom.lampaComp:value=1") -- Lampa datarumsfönster
--rule("@05:29 & wday('tue,wed,fri') => computerroom.lampaComp:value=1") -- Lampa datarumsfönster
--rule("@04:29 & wday('mon,thu') => computerroom.lampaDim:value=75") -- Lampa datarumsfönster
--rule("@05:29 & wday('tue,wed,fri') => computerroom.lampaDim:value=75") -- Lampa datarumsfönster
--rule("@04:29 & wday('mon,thu') => computerroom.lampaNy:value=1") -- Lampa datarumsfönster
--rule("@05:29 & wday('tue,wed,fri') => computerroom.lampaNy:value=1")
---
-- Släcka
rule("@07:30 & wday('mon-fri') => kitchen.lampaSink:off")
---
--Soluppgång-tända
--rule("@sunrise-01:10 => livingroom.lampaWindow:value=1")
--rule("@sunrise-01:30 => kitchen.lampaWind:value=1")
--rule("@sunrise-01:34 => computerroom.lampaComp:value=1")
--rule("@sunrise+00:20 & wday('mon-fri') => bedroom.lampaWindo:value=1")
--Soluppgång-släcka
rule("@sunrise+01:30 => livingroom.lampaWindow:off")
rule("@sunrise+01:30 => kitchen.lampaWind:off")
--rule("@sunrise+01:34 => computerroom.lampaComp:off")
rule("@sunrise+01:34 => bedroom.lampaWindo:off")
--rule("@sunrise+01:34 => computerroom.lampaDim:off")
rule("@sunrise+01:34 => computerroom.lampaNy:off")
--Solnedgång-livingroom
rule("@sunset-00:51 => livingroom.lampaWindow:value=1")
rule("@sunset-00:55 => livingroom.lampaMedia:value=1")
rule("@sunset+00:01 => livingroom.lampaOrange:value=1")
--Solnedgång-kitchen
rule("@sunset-00:51 => kitchen.lampaWind:value=1")
rule("@sunset-00:51 => kitchen.lampaTable:value=1")
--Solnedgång-computerroom
--rule("@sunset-00:50 => computerroom.lampaComp:value=1")
--rule("@sunset-00:50 => computerroom.lampaDim:value=75")
rule("@sunset-00:50 => computerroom.lampaNy:value=1")
--rule("@sunset+00:30 => computerroom.lampaRed:value=1")
--Solnedgång-bedroom
rule("@sunset-00:54 => bedroom.lampaWindo:value=1")
--Solnedgång-balcony
--rule("@sunset+00:02 => balcony.lampaWall:value=65")
rule("@sunset+00:02 => balcony.lampaHead:value=1")
--Solnedgång-hallway
rule("@sunset-00:45 => hallway.lampaLamp:value=1")
--
--Tidsregler - computerrum
--rule("@23:50 & wday('sun-thu') => computerroom.lampaComp:off")
--rule("@00:22 & wday('fri-sun') => computerroom.lampaComp:off")
--rule("@23:50 & wday('sun-thu') => computerroom.lampaDim:off")
--rule("@00:22 & wday('fri-sun') => computerroom.lampaDim:off")
rule("@23:50 & wday('sun-thu') => computerroom.lampaNy:off")
rule("@00:22 & wday('fri-sun') => computerroom.lampaNy:off")
--rule("@23:50 & wday('sun-thu') => computerroom.lampaRed:off")
rule("@00:22 & wday('fri-sun') => computerroom.lampaRed:off")
--Tidsregler - hallway
rule("@07:20 & wday('mon-fri') => hallway.lampaLamp:off") --ifall man glömmer släcka på veckorna på morgonen
rule("@23:20 & wday('sun-thu') => hallway.lampaLamp:off")
rule("@23:59 & wday('fri-sat') => hallway.lampaLamp:off")
--Tidsregler - bedroom
rule("@22:00 & wday('sun-thu') => bedroom.lampaWindo:off")
rule("@23:58 & wday('fri-sat') => bedroom.lampaWindo:off")
--Tidsregler - kitchen
rule("@07:20 & wday('mon-sun') => kitchen.machineCoffee:off") --säkerställa att kaffebryggaren är avslagen
rule("@07:20 & wday('mon-sun') => kitchen.lampaSink:off") --ifall man glömmer släcka
rule("@23:57 & wday('sun-thu') => kitchen.lampaWind:off")
rule("@00:30 & wday('fri-sun') => kitchen.lampaWind:off")
rule("@23:56 & wday('sun-thu') => kitchen.lampaTable:off")
rule("@00:29 & wday('fri-sun') => kitchen.lampaTable:off")
--Tidsregler - livingroom
rule("@23:55 & wday('sun-thu') => livingroom.lampaWindow:off")
rule("@00:35 & wday('fri-sun') => livingroom.lampaWindow:off")
rule("@23:58 & wday('sun-thu') => livingroom.lampaGold:off")
rule("@00:36 & wday('fri-sun') => livingroom.lampaGold:off")
--rule("@23:56 & wday('sun-thu') => livingroom.lampaChrist:off")
--rule("@00:37 & wday('fri-sun') => livingroom.lampaChrist:off")
rule("@23:45 & wday('mon-sun') => livingroom.lampaOrange:off")
rule("@23:05 & wday('mon-sun') => livingroom.lampaMedia:off")
--Tidsregler - balcony
--rule("@17:03 & wday('mon-sun') => balcony.lampaWall:off") --släcker innan julbelysning tänder
--rule("@17:03 & wday('mon-sun') => balcony.lampaHead:off") --släcker innan julbelysning tänder
-- rule("@23:57 & wday('sun-thu') => balcony.lampaWall:off")
rule("@23:56 & wday('sun-thu') => balcony.lampaHead:off")
--rule("@00:40 & wday('fri-sun') => balcony.lampaWall:off")
rule("@00:39 & wday('fri-sun') => balcony.lampaHead:off")
--
--rule("@08:10 & wday('mon-fri') & wnum%2 == 0 => livingroom.lampaTak:value=0")
--
--
--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
--
--Hue Lampor--
--
rule("@sunset+00:01 => 12003:on")
rule("@23:55 => 12003:off")
--rule("@sunset+03:00 & wday('mon-fri') => 12001:value='Night scene' ")
--Rule.eval("@19:03 & wday('mon-fri') => 12001:on")
-- Rule.eval("@19:03 & wday('mon-fri') => 12001:value=50")
--
-- Tänd och släck udda veckor ( Udda vecka = 1 )
--
-- EARTH HOUR #######################################
lights={28,30,33,40,68,75,78,87,103,138,159,181,203,237,254,308,432,447,449} -- eller hämta värden från HomeTable
rule("earthDates={2021/3/27/20:30,2022/3/26/20:30}")
rule("for _,v in ipairs(earthDates) do log(osdate('Earth hour %c',v)); post(#earthHour,v) end")
rule("#earthHour => states = lights:value; lights:off; wait(01:00); lights:value = states")
--
-- Lux styrd från balkongen
--rule("sensor=426; lampor={432,159}")
--rule("once(sensor:lux < 15) & 09:00..19:00 => lampor:on")
--rule("once(sensor:lux >= 15) & 09:00..19:00 => lampor:off")
--
--Badrummet
--
motionsensor1 = 527
motionsensor2 = 507
mksensor = 456
badSensors = {motionsensor1, motionsensor2}
bathroom = { lampaBad = 100, lampaMirr = 101}
Util.triggerVar('iBadrum')
rule("mksensor:safe & 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:safe & 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:safe => if mksensor:safe then iBadrum = true end") -- Sensor breached och dörr stängd, ngn inne i badrummet
rule("trueFor(00:03,badSensors:safe & mksensor:value & !iBadrum) => bathroom.lampaBad:off; bathroom.lampaMirr:off") -- check if sensors safe for 5min, retrigger rule every time door value changes
---rule("trueFor(00:04,sensors:safe) => lampaMirr:off")
--
--Garderoben--
--
closetSensors1 = 465
closetSensors2 = 563
closetSensors = {closetSensors1, closetSensors2}
rule("closetSensors:breached => closet.lampaCloset:value=1")
rule("trueFor(00:02,closetSensors:safe) => closet.lampaCloset:value=0")
--
--Köket
--
kitchenSensors = 471
rule("kitchenSensors:breached & 20:30..23:59 => kitchen.lampaSink:value=10")
rule("trueFor(00:02,kitchenSensors:safe) & 18:30..23:59 => kitchen.lampaSink:value=0")
--
--
--Hallen--
--
doorsensor = 211
motionsensor = 51
sensors = {doorsensor, motionsensor}
rule("sensors:breached & 04:10..22:00 => hallway.lampaHall:value=75")
rule("sensors:breached & 22:00..04:10 => hallway.lampaHall:value=15")
rule("trueFor(00:03,sensors:safe) => hallway.lampaHall:off")
--rule("@sunrise-00:10 & wday('mon-fri') & wnum % 2 == 0 => kitchen.lampaTak:value=40") -- Sätt till 40%, jämna veckor, mån-fre, soluppgång-10min
-- Regler kan bli långa så man kan använda Lua strängar över flera rader som definieras med [[ ]] och identera de lite snyggare
-- Slå av, jämna veckor, sista fredagen i månaden , soluppgång-10min
--rule([[@sunrise-00:10 & wday('fri') day('lastw-last') & wnum % 2 == 0 => kitchen.lampaTak:value=40]])
--rule("@@00:00:05 => f=!f; || f >> log('Ding!') || true >> log('Dong!')") -- example rule logging ding/dong every 5 second
--
--
--
--Nodered.connect(_NodeRed) -- Setup nodered functionality
--Telegram.bot(_TelegBOT) -- Setup Telegram bot that listens on oncoming messages. Only one per BOT.
--Telegram.msg({_TelegCID,_TelegBOT},<msg>) -- Send msg to Telegram without BOT setup
--
-- Push till telefonen
--
rule("myPhoneID=337")
rule("@{20:32,catch} => Util.checkVersion()") -- Check for new version every morning at 20:00 and at restart
rule("#ER_version => myPhoneID:msg=log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix)")
---rule("#ER_version => log('...patching scene'); Util.patchEventRunner()") -- Auto patch new versions, kommentera bort för att ta ner patchen
--
-- Helt automatiskt men iband kan scenen stanna efter "patchningen"
--
--rule("@{20:56,catch} => Util.checkVersion()") -- Check for new version every morning at 20:00 and at restart
--rule("#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix)")
--rule("#ER_version => log('...patching scene'); Util.patchEventRunner()") -- Auto patch new versions...
if _EMULATED then
--dofile("example_rules3.lua")
end
end