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

Texan
Medlem
Posts: 117
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: 985
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 4.560 - EventRunner 3
Texan
Medlem
Posts: 117
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: 985
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 4.560 - EventRunner 3
Texan
Medlem
Posts: 117
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: 168
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
 -- Sätt till 40%, 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
Last edited by jang on 24 Sep 2019, 07:10, edited 1 time in total.
Texan
Medlem
Posts: 117
Joined: 25 Dec 2015, 15:07

16 Sep 2019, 21:47

Blir detta kl 04:30 på morgonen?
rule("@04:30 &.......................
Texan
Medlem
Posts: 117
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
Texan
Medlem
Posts: 117
Joined: 25 Dec 2015, 15:07

21 Sep 2019, 18:56

Hur blir det om man vill använda rörelse sensor och tända en lampa?

Tänkte att mellan 22:00-07:00 skall den tändas med 10% styrka och mellan 07-22 skall det vara 100%.
jang
Medlem
Posts: 168
Joined: 05 Jan 2014, 00:44
Location: Stockholm

21 Sep 2019, 19:06

Texan wrote:
21 Sep 2019, 18:56
Hur blir det om man vill använda rörelse sensor och tända en lampa?

Tänkte att mellan 22:00-07:00 skall den tändas med 10% styrka och mellan 07-22 skall det vara 100%.

Code: Select all

sensor = 66
lampa = 77

rule(”sensor:breached & 22:00..07:00 => lampa:value=10”)
rule(”sensor:breached & 07:00..22:00 => lampa:value=100”)
Glöm inte att deklarera sensorn i headern under %% properties så att den triggar
jang
Medlem
Posts: 168
Joined: 05 Jan 2014, 00:44
Location: Stockholm

21 Sep 2019, 19:13

jang wrote:
21 Sep 2019, 19:06
Texan wrote:
21 Sep 2019, 18:56
Hur blir det om man vill använda rörelse sensor och tända en lampa?

Tänkte att mellan 22:00-07:00 skall den tändas med 10% styrka och mellan 07-22 skall det vara 100%.

Code: Select all

sensor = 66
lampa = 77

rule(”sensor:breached & 22:00..07:00 => lampa:value=10”)
rule(”sensor:breached & 07:00..22:00 => lampa:value=100”)
Glöm inte att deklarera sensorn i headern under %% properties så att den triggar
Och släcka om sensorn inte sett ngt på 10min
rule(”trueFor(00:10,sensor:safe) => lampa:off”)
Texan
Medlem
Posts: 117
Joined: 25 Dec 2015, 15:07

22 Sep 2019, 10:58

Något som jag inte gör rätt

[DEBUG] 10:53:31: Error in 'trueFor(00:10,sensor:safe) => lampaBad:off': /opt/fibaro/scenes/208.lua:1649: no triggers found in header-[[

Är detta rätt? (339 är min rörelse sensor)

%% properties
339 value
%% event
%% globals
%% autostart
--]]
jang
Medlem
Posts: 168
Joined: 05 Jan 2014, 00:44
Location: Stockholm

22 Sep 2019, 11:29

Texan wrote:
22 Sep 2019, 10:58
Något som jag inte gör rätt

[DEBUG] 10:53:31: Error in 'trueFor(00:10,sensor:safe) => lampaBad:off': /opt/fibaro/scenes/208.lua:1649: no triggers found in header-[[

Är detta rätt? (339 är min rörelse sensor)

%% properties
339 value
%% event
%% globals
%% autostart
--]]
I exemplet så måste du sätta en lua variabel 'sensor' till 339 (och 'lampaBad' till din lamp ID)

Code: Select all

sensor=339
lampaBad=400
rule("trueFor(00:10,sensor:safe) => lampaBad:off'")
ER regler kan läsa globala Lua variabler (men inte förändra deras värden).
Och de måste vara globala, det hade inte fungerat om vi skrivit

Code: Select all

local sensor = 339
Det kan bli lite stökigt med många globala lua variabler efter ett tag och därför kan det vara bra att lägga dem i en tabell ("Home table")
Ex.

Code: Select all

home = {
	bed = {lamp=88, sensor =99},
	bad = {lamp=400, sensor=339}
}
rule("trueFor(00:10,home.bad.sensor:safe) => home.bad.lamp:off'")
Här refererar vi den globala tabellen 'home' i regeln.

Alternativt kan vi tala om för ER att vi använder en tabell som variabler med.

Code: Select all

home = {
	bed = {lamp=88, sensor =99},
	bad = {lamp=400, sensor=339}
}
Util.defvars(home)  
rule("trueFor(00:10,bad.sensor:safe) => bad.lamp:off'")
Skillnaden här är att Util.defvars går igen tabellen med 'bed' och 'bad' och lägger in dem som skriptvariabler och vi behöver inte använda prefixet 'home' för att referera till dem i regeln utan använder 'bed...' och 'bad...' direkt.

Vi kan ytterligare lägga till

Code: Select all

  Util.reverseMapDef(home)
så får vi snyggare debug-utskrifter med namnet på enheten istället för bara numret,
Ex.

Code: Select all

Debug: fibaro:call(bedroom.lamp,"turnOn")
alternativt kan man använda ID direkt i regeln, men inte lika enkelt att läsa

Code: Select all

rule("trueFor(00:10,339:safe) => 400:off'")
Man kan också skapa "skript"-variabler genom att definiera dem i regler

Code: Select all

rule("sensor=339")
rule("lampaBad=400")
rule("trueFor(00:10,sensor:safe) => lampaBad:off'")
Texan
Medlem
Posts: 117
Joined: 25 Dec 2015, 15:07

22 Sep 2019, 11:53

Nu så fick jag det att fungera :D

Är det bara att definiera en till rörelse sensor om det måste vara 2 sensorer för att täcka upp i detta fall mitt badrum?
Har en sensor vid duschen för att inte göra så att lamporna släcks när man duschar.
jang
Medlem
Posts: 168
Joined: 05 Jan 2014, 00:44
Location: Stockholm

22 Sep 2019, 15:03

Texan wrote:
22 Sep 2019, 11:53
Nu så fick jag det att fungera :D

Är det bara att definiera en till rörelse sensor om det måste vara 2 sensorer för att täcka upp i detta fall mitt badrum?
Har en sensor vid duschen för att inte göra så att lamporna släcks när man duschar.

Code: Select all

sensor1 = 339
sensor2 = 340
rule("trueFor(00:10,{sensor1,sensor2}:safe) => lampaBad:off'")
Alt.

Code: Select all

sensors = {339,340}
rule("trueFor(00:10,sensors:safe) => lampaBad:off'")
Nästan alla ':' kommandon kan appliceras på en lista/tabell av enheter.
<list>:safe är sann när alla enheter i listan är safe.
<list>:breached är sann när en enhet i listan är aktiverad.

Du kan använda samma för att aktivera lampan.

Code: Select all

sensors = {339,340}
lampa = 77
rule(”sensors:breached & 22:00..07:00 => lampa:value=10”)
rule(”sensors:breached & 07:00..22:00 => lampa:value=100”)
Glöm inte att lägga in båda sensorerna under %% properties i headern.
jang
Medlem
Posts: 168
Joined: 05 Jan 2014, 00:44
Location: Stockholm

25 Sep 2019, 18:00

Jag såg i din ursprungliga post att du enkelt ville kunna ändra tiderna också.
Ett sätt är att använda variabler i reglerna för tiderna.

Code: Select all

rule("vaknaUdda=07:00")
rule("vaknaJämna=sunrise+00:10")

rule("@vaknaUdda & wnum%2==1 => log('Dags att vakna!')")
rule("@vaknaJämna & wnum%2==1 => log('Dags att vakna!')")
När ER stöder på en tid på formatet HH:MM:SS i en regel så omvandlas det till sekunder, ett tal.
Om vi hade skrivit
rule("vaknaUdda='07:00'"), dvs satt 07:00 inom fnuttar så hade det tolkats som en sträng och inte fungerat.

Vi kan också lagra tiden i en fibaro global

Code: Select all

rule("$vaknaUdda='07:00'")
rule("$vaknaJamna='sunrise+00:10'")

rule("@$vaknaUdda & wnum%2==1 => log('Dags att vakna!')")
rule("@$vaknaJamna & wnum%2==1 => log('Dags att vakna!')")
Här lagrar vi tiderna som strängar i de globala variablerna (vi hade också kunnat lagra antal sekunder).
Det fiffiga är att när vi hämtar värdet från en global så konverteras den automatiskt till antal sekunder om det ser ut som en tid.
Det är ingen ide att göra som i exemplet (lagra i fibaro globals och använda i samma scen).
Men det här gör att vi kan ändra tiderna från en annan scen (eller VD) genom att andra fibaro globalen.
Texan
Medlem
Posts: 117
Joined: 25 Dec 2015, 15:07

02 Oct 2019, 20:23

jang wrote:
25 Sep 2019, 18:00
Jag såg i din ursprungliga post att du enkelt ville kunna ändra tiderna också.
Ett sätt är att använda variabler i reglerna för tiderna.

Code: Select all

rule("vaknaUdda=07:00")
rule("vaknaJämna=sunrise+00:10")

rule("@vaknaUdda & wnum%2==1 => log('Dags att vakna!')")
rule("@vaknaJämna & wnum%2==1 => log('Dags att vakna!')")
När ER stöder på en tid på formatet HH:MM:SS i en regel så omvandlas det till sekunder, ett tal.
Om vi hade skrivit
rule("vaknaUdda='07:00'"), dvs satt 07:00 inom fnuttar så hade det tolkats som en sträng och inte fungerat.

Vi kan också lagra tiden i en fibaro global

Code: Select all

rule("$vaknaUdda='07:00'")
rule("$vaknaJamna='sunrise+00:10'")

rule("@$vaknaUdda & wnum%2==1 => log('Dags att vakna!')")
rule("@$vaknaJamna & wnum%2==1 => log('Dags att vakna!')")
Här lagrar vi tiderna som strängar i de globala variablerna (vi hade också kunnat lagra antal sekunder).
Det fiffiga är att när vi hämtar värdet från en global så konverteras den automatiskt till antal sekunder om det ser ut som en tid.
Det är ingen ide att göra som i exemplet (lagra i fibaro globals och använda i samma scen).
Men det här gör att vi kan ändra tiderna från en annan scen (eller VD) genom att andra fibaro globalen.
Det här låter intressant.
Så jag måste skapa en Variabel i Variabelpanelen och sedan göra en VD med knappar där man styr/väljer tidigt/sen?
Skulle behöva lite mera hjälp hur att skapa detta, med lite mera utförlig exempel så jag förstår mera vad jag gör :oops:
jang
Medlem
Posts: 168
Joined: 05 Jan 2014, 00:44
Location: Stockholm

04 Oct 2019, 08:22

Man kan i princip använda alla typer av VDs som sätter en fibaro global med en tid. Jompa har en AlarmClock VD som borde fungera.

En finess i ER som inte har använts så mycket är att man kan skapa en VD inifrån ER. Fördelen är att man kan hantera knapptryck etc med funktioner definierade i ER.

Så här skulle man kunna göra (inkluderas i main())

Code: Select all

  local myTimerVars = {
    {name='bedtime', descr="Läggdags"},
    {name='garbage', descr="Soptunna ut"},
    {name='excercise', descr="Träna"},
  }

  function setUpTimerVD(vars,vers)
    local controllerDef = 
    {
      {'label',{"Variabel:","VAR",""}},
      {'button',{"<<","BKW"},{">>","FW"}},
      {'label',{"Tid","TIME","--:--"}},
      {'button',{"+H","PH"},{"-H","MH"},{"+M","PM"},{"-M","MM"}},
      {'slider',{"Tid","TS"}},
      {'label',{"Dagar:","DAYS",""}},
      {'button',{"Må","DAY2"},{"Ti","DAY3"},{"On","DAY4"},{"To","DAY5"},{"Fr","DAY6"}},
      {'button',{"Lördag","DAY7"},{"Söndag","DAY1"}},
      {'label',{"Aktiverad","ACTIVATED","Ja"}},
      {'button',{"Aktivera / Deaktivera","ACT"}},
      {'button',{"Updatera","UPDATE"}},
    }

    ctrl = VDev.define("Tidsvariabler","contrl",vers,controllerDef)

    for i=1,#vars do -- update and create missing variables
      local v = vars[i]
      v.time = v.time or os.time()   
      v.days = v.days or "sun,mon,tue,wed,thu,fri,sat"
      local vv,tt = fibaro:getGlobal(v.name)
      if tt == nil  then 
        api.post("/globalVariables/",{name=v.name,value=json.encode(v)}) 
      else
        vars[i]=json.decode(fibaro:getGlobalValue(v.name))
      end
    end

    local DayMap={'sun','mon','tue','wed','thu','fri','sat'}
    local function t2str(t) return string.format("%02d:%02d",t/3600,(t % 3600)/60) end
    local function limit(t) local m = 24*60*60; if t < 0 then return t+m elseif t > m then return t-m else return t end end

    local function current()
      local v = ctrl.getValue("VAR")
      for i=1,#vars do if v==vars[1].descr then return i end end
      return 1
    end

    local curr = current()

    local function update() -- update all fields in VD
      vars[curr].time = vars[curr].time or 0
      vars[curr].days = vars[curr].days or ""
      ctrl.setValue("VAR",vars[curr].descr)
      ctrl.setValue("TIME",t2str(vars[curr].time))
      ctrl.setValue("DAYS",vars[curr].days)
      ctrl.setValue("ACTIVATED",vars[curr].active and "Ja" or "Nej")
    end

    update()

    Event.event({type='VD',label='BKW'},
      function(env) curr=curr-1 if curr < 1 then curr=#vars end update() end)
    Event.event({type='VD',label='FW'},
      function(env) curr = curr+1; if curr > #vars then curr=1 end update() end)
    Event.event({type='VD',label='PH'},
      function(env) vars[curr].time = limit(vars[curr].time+60*60) update() end)
    Event.event({type='VD',label='MH'},
      function(env) vars[curr].time = limit(vars[curr].time-60*60) update() end)
    Event.event({type='VD',label='PM'},
      function(env) vars[curr].time = limit(vars[curr].time+60) update() end)
    Event.event({type='VD',label='MM'},
      function(env) vars[curr].time = limit(vars[curr].time-60) update() end)
    Event.event({type='VD',label='TS'},
      function(env) vars[curr].time = math.floor(24*60*60*env.event.value/100) update() end)
    Event.event({type='VD',label='$d==DAY%d'},
      function(env)
        local d = DayMap[tonumber(env.p.d:sub(4))]
        local s = split(vars[curr].days or "",",")
        local r1,r2 = {},{}; for _,dd in ipairs(s) do r1[dd]=true end
        r1[d]= not r1[d] 
        for _,dd in ipairs(DayMap) do if r1[dd] then r2[#r2+1]=dd end end
        vars[curr].days=table.concat(r2,",")
        update() 
      end)
    Event.event({type='VD',label='ACT'}, function(env) vars[curr].active = not vars[curr].active update() end)
    Event.event({type='VD',label='UPDATE'}, function(env) fibaro:setGlobal(vars[curr].name,json.encode(vars[curr])) end)
  end

  setUpTimerVD(myTimerVars,10)
  
  rule("@$bedtime.time & $bedtime.active & wday($bedtime.days) => log('HUPP')")

funktionen setUpTimerVD skapar en VD när ER startar upp (och om den redan finns så återanvänds den befintliga)
Den tar en tabell myTimerVars där man definierar upp fibaro globaler (name) och en beskrivning (descr)
I VDn kan man flippa mellan variabler och sätta tid, dagar och om den ska vara aktiv.
Man måste också klicka på update för att värdet ska sparas i fibaro global variablen.

Om man har satt variablen bedtime i VD så kommer den globala variabeln att ha värde

Code: Select all

{time=3600, descr="Läggdags", active=true, days="sun,mon,tue,wed,thu,fri,sat"}
(tiden spars som sekunder efter midnatt, i det här falle 01:00, det interna tidsformatet i ER)

Man kan utnyttja det i ER regler genom att då skriva

Code: Select all

 rule("@$bedtime.time & $bedtime.active & wday($bedtime.days) => log('HUPP')")
 
Den regeln schedulerar en timer till den tid som finns i $bedtime.time, den kollar dessutom att timern är aktiv ($bedtime.active) och den kollar att det är en giltig dag med wday($bedtime.days)

Det kan vara ngt jag förbisett i det här exemplet men prova gärna.
Obs, reglerna måste definieras efter att setUpTimerVD har anropats.
Texan
Medlem
Posts: 117
Joined: 25 Dec 2015, 15:07

04 Nov 2019, 22:12

:oops: Kanske en dum fråga.....
Hur på enklaste sätt uppdaterar man ER när det kommer en ny version? Är det bara att byta ut koden som är före "Here goes your rules" och efter "EventModel - Don't change!"
jang
Medlem
Posts: 168
Joined: 05 Jan 2014, 00:44
Location: Stockholm

04 Nov 2019, 23:10

Texan wrote:
04 Nov 2019, 22:12
:oops: Kanske en dum fråga.....
Hur på enklaste sätt uppdaterar man ER när det kommer en ny version? Är det bara att byta ut koden som är före "Here goes your rules" och efter "EventModel - Don't change!"
Japp,

Code: Select all

rule("@{06:00,catch} => Util.checkVersion()") -- Check for new version every morning at 6: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...
Då testar den kl. 06.00 eller när den startar om och patchar scenen automatiskt. Problemet med det är att scenen kan stanna och behöver startas igång manuellt. Har man "Supervisor" scenen så brukar den sparka igen scener som stannat så det funkar.
En variant är att bara skicka en push notis till mobilen när det finns en ny version och isåfall gå in och avkommentera sista regeln som patchar, och starta om scenen manuellt.

Code: Select all

rule("myPhoneID=198")
rule("@{06:00,catch} => Util.checkVersion()") -- Check for new version every morning at 6: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...
Post Reply