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

Post Reply
Texan
Medlem
Posts: 111
Joined: 25 Dec 2015, 15:07

12 Sep 2019, 23:54

Hej,
Undrar ifall någon kan hjälpa mig att göra en lua kod för att tända och släcka olika lampor en speciell tid på udda veckor och andra tider på jämna veckor. Om möjligt också att enkelt kunna ändra tider. Tanken är att den ska tända då man börjar jobba tidigare och sedan tända annan tid då man börjar senare.

Tack på förhand
RH_Dreambox
Proffsmedlem
Posts: 961
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

13 Sep 2019, 11:46

Om du vill få ut det mesta möjliga av din HC2 så rekommenderar jag starkt att du installerar EventRunner.
Där kan du enkelt lägga in dina enheter och styra dem precis som du vill
Ett exempel på hur det kan se ut ser du här nedan. Annars finns det massor av exempel här på forumet.

Inlägg om EventRunner hittar du här: viewtopic.php?f=38&t=6878
EventRunner laddar du ned här: https://github.com/jangabrielsson/EventRunner

Deklaration av dina lampor

Code: Select all

  local HT =  -- Example of in-line "home table"
  {
    dev = 
    { sovrum = {lampa = 46},
      hall = {lampa = 81},
    },
    other = "other"
  }
Och så här kan dina regler se ut

Code: Select all

-- Tänd och släck udda veckor ( Udda vecka = 1 )
  rule("@06:30 & wday('mon-fri') & wnum%2 == 1 => sovrum.lampa:on") -- Tänd Mån - Fre, udda vecka
  rule("@07:30 & wday('mon-fri') & wnum%2 == 1 => sovrum.lampa:off")

  rule("@06:00 & wday('mon-fri') & wnum%2 == 1 => hall.lampa:on")
  rule("@07:30 & wday('mon-fri') & wnum%2 == 1 => hall.lampa:off")

-- Tänd och släck jämna veckor ( Jämn vecka = 0 )
  rule("@05:30 & wday('mon-fri') & wnum%2 == 0 => sovrum.lampa:on") -- Tänd Mån - Fre, jämn vecka
  rule("@06:30 & wday('mon-fri') & wnum%2 == 0 => sovrum.lampa:off")

  rule("@05:00 & wday('mon-fri') & wnum%2 == 0 => hall.lampa:on")
  rule("@06:30 & wday('mon-fri') & wnum%2 == 0 => hall.lampa:off")

-- Tänd och släck på helger
  rule("@07:30 & sunrise > 07:30 & wday('sat-sun') => sovrum.lampa:on") Tänd 07:30 men inte om solen redan gått upp
  rule("@sunrise & wday('sat-sun') => sovrum.lampa:off") -- Släck då solen går upp

  rule("@07:00 & wday('sat-sun') => hall.lampa:on")
  rule("@08:30 & wday('sat-sun') => hall.lampa:off")
2 st HC2 Beta 4.551 - EventRunner 3
Texan
Medlem
Posts: 111
Joined: 25 Dec 2015, 15:07

13 Sep 2019, 16:31

RH_Dreambox wrote:
13 Sep 2019, 11:46

EventRunner laddar du ned här: https://github.com/jangabrielsson/EventRunner


Ursäkta dum fråga, är det EventRunner3.lua som man ska ta hem, eller är det flera? :oops:
RH_Dreambox
Proffsmedlem
Posts: 961
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

13 Sep 2019, 16:46

EventRunner3.lua är det enda du behöver.
Filen innehåller redan lite konfigureringar som exempel, men de skall du ta bort och ersätta med dina egna.
Men rör inget under den här raden: ------------------- EventModel - Don't change! --------------------

Om du läser tråden från början så hittar du säkert svar på många av dina frågor. Om inte, så är vi många som kan hjälpa dig att komma igång.
Och om du aktiverar den här raden

Code: Select all

--  rule("@@00:00:05 => f=!f; || f >> log('Ding!') || true >> log('Dong!')") -- example rule logging ding/dong every 5 second
dvs. tar bort de inledande minustecknen så ser du om skriptet fungerar.
Då skrivs Ding, Dong regelbundet i loggfilen. Inaktivera raden igen när du ser att allt funkar.
2 st HC2 Beta 4.551 - EventRunner 3
Texan
Medlem
Posts: 111
Joined: 25 Dec 2015, 15:07

15 Sep 2019, 19:19

Ding, dong fungerar :)

Om jag har en lampa som jag vill sätt dimmern till 30%, hur görs det?


Var lägger jag in min regel?

Och behöver jag ändra något i början?
--[[
%% properties
17 value
55 value
56 value
57 value
88 value
%% events
5 CentralSceneEvent
22 GeofenceEvent
%% globals
TimeOfDay
Test
%% autostart
--]]
jang
Medlem
Posts: 124
Joined: 05 Jan 2014, 00:44
Location: Stockholm

15 Sep 2019, 23:01

En "clean" start på ER kan se ut såhär
Sätt gärna upp HT variabeln som i koden nedan. Sedan kan man också lagra den i en global men det är inte strikt nödvändigt.

Code: Select all

--[[
%% properties
%% events
%% globals 
%% 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","B64"  -- Sep 12, 2019  

local _sceneName   = "Texan smart hem"                  -- Set to scene/script name

-- 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 {}

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

  local HT =  -- Definiera dina deviceID här för lampor som ska tändas / släckas
    { bedroom = {lampaTak = 88, lampaBed = 99},
      kitchen = {lampaBord  = 66, lampaTak = 77},
    }
  Util.defvars(HT)                  -- Make HomeTable variables available in EventScript
  Util.reverseMapDef(HT)      -- Make HomeTable variable names available for logger

 -- Dina regler
   rule("@sunset-00:10 & wnum % 2 == 1 => bedroom.lampaTak:value=30") -- Sätt till 30%, udda veckor, solnedgång-10min
   rule("@sunrise-00:10 & wnum % 2 == 0 => bedroom.lampaTak:value=40") -- Sätt till 40%, jämna veckor, soluppgång-10min
   rule("@sunrise-00:10 & wday('mon-fri') & wnum % 2 == 0 => bedroom.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 
             => bedroom.lampaTak:value=40]]) 
 
 -- Ger meddelande när ny version av ER finns
  rule("@{06:00,catch} => Util.checkVersion()") -- Check for new version every morning at 6:00
  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...
end

------------------- EventModel - Don't change! -------------------- 
Finns en del bra tips i den här posten - men jag svarar gärna på frågor här också.
https://forum.fibaro.com/topic/31180-tu ... ent=159939
Texan
Medlem
Posts: 111
Joined: 25 Dec 2015, 15:07

16 Sep 2019, 21:47

Blir detta kl 04:30 på morgonen?
rule("@04:30 &.......................
Texan
Medlem
Posts: 111
Joined: 25 Dec 2015, 15:07

16 Sep 2019, 22:31

:D :D
Fått det att fungera, 2 definierade lampor tändes och samma lampor släktes enligt satt tid.
Perfekt!! Ska undersöka och pröva mera :D
Post Reply