EventRunner
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Så var det då vintertid igen, klockradion gick igång och huset var helt mörkt och nedsläckt!
@jang hade ju med sin regel för vintertid lovat att ER skulle fungera som vanligt söndag morgon?
Gumman som hade haft en jobbig lördagseftermiddag vaknade med huvudvärk och gick till köket för att ta en huvudvärkstablett. Då passerade hon en sensor som bara är aktiverad när vi sover, så nu triggade den larmet och hall-lampan blinkade som en tok!
Jag startade om ER men eländet bara fortsatte. Då kollade jag klockorna och såg till min förvåning att jag var uppe en timma för tidigt!
Utöver vintertidsförändringen på en timma så hade vi gått upp ytterligare en timma för tidigt då klockradion gick igång! Inte undra på att vi var trötta!
Jag kollar upp allt en gång till och alla klockor visar samma tid (vintertid), även klockradion, och jag blir bara mer förvirrad.
En timma senare går klockradion igång igen! Då går det upp ett ljus, att det är klockradions fel!
@jangs ER och regel fungerade precis som det var tänkt (tack jang!), men den förbaskade klockradion hade än en gång spelat oss ett spratt.
Varje ändring mellan sommar- och vintertid så har den krånglat, så även denna gång. Den hade av någon anledning väckt oss två timmar tidigare, och när vi sedan gått upp så har den uppdaterats (via radiolänk) till rätt tid.
Kanske skulle jag titta på om ER kan väcka oss i stället .
@jang hade ju med sin regel för vintertid lovat att ER skulle fungera som vanligt söndag morgon?
Gumman som hade haft en jobbig lördagseftermiddag vaknade med huvudvärk och gick till köket för att ta en huvudvärkstablett. Då passerade hon en sensor som bara är aktiverad när vi sover, så nu triggade den larmet och hall-lampan blinkade som en tok!
Jag startade om ER men eländet bara fortsatte. Då kollade jag klockorna och såg till min förvåning att jag var uppe en timma för tidigt!
Utöver vintertidsförändringen på en timma så hade vi gått upp ytterligare en timma för tidigt då klockradion gick igång! Inte undra på att vi var trötta!
Jag kollar upp allt en gång till och alla klockor visar samma tid (vintertid), även klockradion, och jag blir bara mer förvirrad.
En timma senare går klockradion igång igen! Då går det upp ett ljus, att det är klockradions fel!
@jangs ER och regel fungerade precis som det var tänkt (tack jang!), men den förbaskade klockradion hade än en gång spelat oss ett spratt.
Varje ändring mellan sommar- och vintertid så har den krånglat, så även denna gång. Den hade av någon anledning väckt oss två timmar tidigare, och när vi sedan gått upp så har den uppdaterats (via radiolänk) till rätt tid.
Kanske skulle jag titta på om ER kan väcka oss i stället .
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Stackars er men underhållande läsning på morgonkvistenRH_Dreambox wrote:Så var det då vintertid igen, klockradion gick igång och huset var helt mörkt och nedsläckt!
@jang hade ju med sin regel för vintertid lovat att ER skulle fungera som vanligt söndag morgon?
Gumman som hade haft en jobbig lördagseftermiddag vaknade med huvudvärk och gick till köket för att ta en huvudvärkstablett. Då passerade hon en sensor som bara är aktiverad när vi sover, så nu triggade den larmet och hall-lampan blinkade som en tok!
Jag startade om ER men eländet bara fortsatte. Då kollade jag klockorna och såg till min förvåning att jag var uppe en timma för tidigt!
Utöver vintertidsförändringen på en timma så hade vi gått upp ytterligare en timma för tidigt då klockradion gick igång! Inte undra på att vi var trötta!
Jag kollar upp allt en gång till och alla klockor visar samma tid (vintertid), även klockradion, och jag blir bara mer förvirrad.
En timma senare går klockradion igång igen! Då går det upp ett ljus, att det är klockradions fel!
@jangs ER och regel fungerade precis som det var tänkt (tack jang!), men den förbaskade klockradion hade än en gång spelat oss ett spratt.
Varje ändring mellan sommar- och vintertid så har den krånglat, så även denna gång. Den hade av någon anledning väckt oss två timmar tidigare, och när vi sedan gått upp så har den uppdaterats (via radiolänk) till rätt tid.
Kanske skulle jag titta på om ER kan väcka oss i stället .
Skickat från min SM-N960F via Tapatalk
Hej @jang!
Är det meningen att det ska vara massa '%' i loggen eller är det meningen att några värden ska ersätta dessa?
T.ex:
Eller detta vid varje "supervisor ping" (jag såg att man kan stänga av det med '_debugflags = {triggers=false}'):
Är det meningen att det ska vara massa '%' i loggen eller är det meningen att några värden ska ersätta dessa?
T.ex:
Code: Select all
[DEBUG] 12:02:13: Posting {"type":"%%SUB%%","event":[{"type":"ERLog"}],"_from":92} at Sun Oct 27 12:02:13
Code: Select all
[DEBUG] 12:04:14: Incoming event:{"_from":92,"type":"%%PING%%"}
Ja, när man har Supervisorn igång så får man lite mer logutskrifter.MastrUsr wrote: ↑27 Oct 2019, 13:06 Hej @jang!
Är det meningen att det ska vara massa '%' i loggen eller är det meningen att några värden ska ersätta dessa?
T.ex:Eller detta vid varje "supervisor ping" (jag såg att man kan stänga av det med '_debugflags = {triggers=false}'):Code: Select all
[DEBUG] 12:02:13: Posting {"type":"%%SUB%%","event":[{"type":"ERLog"}],"_from":92} at Sun Oct 27 12:02:13
Code: Select all
[DEBUG] 12:04:14: Incoming event:{"_from":92,"type":"%%PING%%"}
De "inbyggda" events som Supervisor och ER scener skickar mellan varandra är av typ "%%<type>%%" för att minska chansen att det krockar med ngt som användare kan hitta på. Så, ja, det ska vara %-tecken.
Jag ska se om man kan dölja dessa "interna events" på ngt sätt utan att dölja alla triggers (som du hade upptäckt med _debugflags.trigger=false).
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Vi hade ett strömavbrott under några morgontimmar och en stund efter att strömmen var tillbaka såg jag att ER inte startat upp på någon av mina två HC2.
Efter en normal omstart av HC2 så brukar ju ER hoppa igång av sig självt, men inte nu.
Kan det bero på att bredbandsroutern tar lång tid på sig att starta upp efter ett strömavbrott?
Efter en normal omstart av HC2 så brukar ju ER hoppa igång av sig självt, men inte nu.
Kan det bero på att bredbandsroutern tar lång tid på sig att starta upp efter ett strömavbrott?
Code: Select all
[DEBUG] 10:23:48: 2019-10-30 10:23:48.289246 [ error] API: Host not found (authoritative)
[DEBUG] 10:23:48: 2019-10-30 10:23:48.291025 [ fatal] Unknown exception: /opt/fibaro/scenes/1.lua:2283: bad argument #1 to 'ipairs' (table expected, got nil)
[DEBUG] 10:25:13: Aborting: Server not started yet
[DEBUG] 10:25:41: Aborting: Server not started yet
[DEBUG] 10:25:45: Aborting: Server not started yet
[DEBUG] 10:23:32: 2019-10-30 10:23:32.095779 [ error] API: Host not found (authoritative)
[DEBUG] 10:23:32: 2019-10-30 10:23:32.097714 [ fatal] Unknown exception: /opt/fibaro/scenes/140.lua:2183: bad argument #1 to 'ipairs' (table expected, got nil)
[DEBUG] 10:23:41: Aborting: Server not started yet
[DEBUG] 10:24:03: Aborting: Server not started yet
[DEBUG] 10:26:09: Aborting: Server not started yet
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Ja det kan det bero på. Ser ut som ER försöker anropa ngt med HTTP och det finns inget nätverk och Lua dör ([fatal])RH_Dreambox wrote: ↑30 Oct 2019, 12:34 Vi hade ett strömavbrott under några morgontimmar och en stund efter att strömmen var tillbaka såg jag att ER inte startat upp på någon av mina två HC2.
Efter en normal omstart av HC2 så brukar ju ER hoppa igång av sig självt, men inte nu.
Kan det bero på att bredbandsroutern tar lång tid på sig att starta upp efter ett strömavbrott?
Code: Select all
[DEBUG] 10:23:48: 2019-10-30 10:23:48.289246 [ error] API: Host not found (authoritative) [DEBUG] 10:23:48: 2019-10-30 10:23:48.291025 [ fatal] Unknown exception: /opt/fibaro/scenes/1.lua:2283: bad argument #1 to 'ipairs' (table expected, got nil) [DEBUG] 10:25:13: Aborting: Server not started yet [DEBUG] 10:25:41: Aborting: Server not started yet [DEBUG] 10:25:45: Aborting: Server not started yet [DEBUG] 10:23:32: 2019-10-30 10:23:32.095779 [ error] API: Host not found (authoritative) [DEBUG] 10:23:32: 2019-10-30 10:23:32.097714 [ fatal] Unknown exception: /opt/fibaro/scenes/140.lua:2183: bad argument #1 to 'ipairs' (table expected, got nil) [DEBUG] 10:23:41: Aborting: Server not started yet [DEBUG] 10:24:03: Aborting: Server not started yet [DEBUG] 10:26:09: Aborting: Server not started yet
Kan du hjälpa mig? Är raden 2283 i den första scenen (Unknown exception: /opt/fibaro/scenes/1.lua:2283: bad argument #1 to 'ipairs' (table expected, got nil))
samma som raden 2183 i den andra scenen (Unknown exception: /opt/fibaro/scenes/140.lua:2183: bad argument #1 to 'ipairs' (table expected, got nil)
Är det samma kodrader?
Isåfall kanske jag kan koda några extra kontroller så att den inte dör.
Min misstanke är att det är koden som ser ut såhär
Code: Select all
local _netTime = net.HTTPClient()
Util.defvar('TimeDiff',0)
Event.event({type='%timeDiffLoop%'},
function()
_netTime:request("http://worldtimeapi.org:80/api/ip",{
option = {method='GET',timeout=5000},
success = function(resp)
if resp.status==200 then Util.defvar('TimeDiff',json.decode(resp.data).unixtime-os.time()) end
Event.post({type='%timeDiffLoop%',_sh=true},'+/06:00')
end,
error = function(resp) print(resp.status) Event.post({type='%timeDiffLoop%',_sh=true},'+/06:00') end
})
end)
Event.post({type='%timeDiffLoop%',_sh=true})
En enkel fix skulle att vara att ändra sista raden till
Code: Select all
Event.post({type='%timeDiffLoop%',_sh=true},"+/00:05")
Alternativt att jag
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
@jang, ursäkta sent svar, men jag hade lite strul med att få igång den ena HC2'an efter ytterligare ett strömavbrott. (Man gräver för fiber i mitt område).
Jo det är exakt samma rad i båda
Jag har några HTTP-anrop för Netatmo och Open Weather så det är säkert de som ställer till det, men jag skall testa med ditt tips för den sista raden.
Det var den här funktionen som den stannade på....
Jo det är exakt samma rad i båda
Code: Select all
for _,s1 in ipairs(api.get("/scenes")) do
Det var den här funktionen som den stannade på....
Code: Select all
function Util.findScenes(str)
local res = {}
for _,s1 in ipairs(api.get("/scenes")) do
if s1.isLua and s1.id~=__fibaroSceneId and s1.runningInstances > 0 then
local s2=api.get("/scenes/"..s1.id)
if s2==nil or s2.lua==nil then Log(LOG.ERROR,"Scene missing: %s",s1.id)
elseif s2.lua:match(str) then res[#res+1]=s1.id end
end
end
return res
end
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
RH_Dreambox wrote: ↑30 Oct 2019, 17:35 @jang, ursäkta sent svar, men jag hade lite strul med att få igång den ena HC2'an efter ytterligare ett strömavbrott. (Man gräver för fiber i mitt område).
Jo det är exakt samma rad i bådaJag har några HTTP-anrop för Netatmo och Open Weather så det är säkert de som ställer till det, men jag skall testa med ditt tips för den sista raden.Code: Select all
for _,s1 in ipairs(api.get("/scenes")) do
Det var den här funktionen som den stannade på....
Man kan också lägga till en fördröjning när ER startar upp.
Före "function main()" kan man lägga tilldå kommer scenen att vänta 10s innan den drar igång och kanske routern har startat?Code: Select all
if not _EMULATED then fibaro:sleep(10*1000) end
Å andra sidan kan det vara irriterande att den alltid väntar 10s om man håller på att testa regler och startar om den manuellt ofta.
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
@jang, en fråga om nätverks-trafik (Z-wave).
Jag har en dörrsensor (sensastrip) där batterikapaciteten helt plötsligt störtdök från ca 90% till 25%.
Reglerna i ER ser ut som nedan. Kan dessa regler orsaka en så intensiv trafik så att batteriet dräneras på så kort tid?
Vad jag förstår så "pratar" ER med sensorn bara då dörren öppnas eller stängs.
Jag har en dörrsensor (sensastrip) där batterikapaciteten helt plötsligt störtdök från ca 90% till 25%.
Reglerna i ER ser ut som nedan. Kan dessa regler orsaka en så intensiv trafik så att batteriet dräneras på så kort tid?
Vad jag förstår så "pratar" ER med sensorn bara då dörren öppnas eller stängs.
Code: Select all
rule("sensor.garage_dörr:breached => garaget.takbelysning:on")
rule("trueFor(00:05,sensor.garage_dörr:safe) => garaget.takbelysning:off")
rule("@21:00 & sensor.garage_dörr:breached => $TTS = 'Viktig säkerhetsinformation. Klockan är nio, och garage-dörren är öppen.&vol=12'")
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Nej, det är inte ERs som orsakar det.RH_Dreambox wrote: ↑31 Oct 2019, 14:52 @jang, en fråga om nätverks-trafik (Z-wave).
Jag har en dörrsensor (sensastrip) där batterikapaciteten helt plötsligt störtdök från ca 90% till 25%.
Reglerna i ER ser ut som nedan. Kan dessa regler orsaka en så intensiv trafik så att batteriet dräneras på så kort tid?
Vad jag förstår så "pratar" ER med sensorn bara då dörren öppnas eller stängs.
Code: Select all
rule("sensor.garage_dörr:breached => garaget.takbelysning:on") rule("trueFor(00:05,sensor.garage_dörr:safe) => garaget.takbelysning:off") rule("@21:00 & sensor.garage_dörr:breached => $TTS = 'Viktig säkerhetsinformation. Klockan är nio, och garage-dörren är öppen.&vol=12'")
Dina regler (dvs ER) använder fibaro:getValue(sensor.garage_dörr,"value") för att läsa sensorns värde.
Sensorer skickar värden till HC2:an när enheterna triggas eller vid pollintervall.
fibaro:getValue returnerar bara det nuvarande värdet som är lagrat i HC2:an.
Så oavsett hur ofta ER anropar fibaro:getValue så genererar det inte ngn ny Z-wave trafik.
Om man gör garaget.takbelysning:off så blir det en fibaro:call(garaget.takbelysning,"turnOff") som genererar trafik.
Å andra sidan händer det inte så ofta..
Sitter och funderar på hur jag ska släcka "allmänbelysningen" på kvällen, men får inte till det alls.
Jag vill att det ska släckas på vardagar mellan 22:15 & 22:45 och på helger mellan 23:15 & 23:50 jag vill att ER ska slumpa fram släckningstiden.
Är ER så smart att det skulle fungera?
Använder denna till att slumpmässigt tända och det fungerar kanon, sen en lite modifierad för att släcka barnens rum, men den är alltid klockan 20:00.
Jag vill att det ska släckas på vardagar mellan 22:15 & 22:45 och på helger mellan 23:15 & 23:50 jag vill att ER ska slumpa fram släckningstiden.
Är ER så smart att det skulle fungera?
Använder denna till att slumpmässigt tända och det fungerar kanon, sen en lite modifierad för att släcka barnens rum, men den är alltid klockan 20:00.
Code: Select all
--Function turn on all lamps
function printf(...) fibaro:debug(string.format(...)) end
math.randomseed(os.time())
local deviceIDs = { 248, 250, 252, 269, 45, 189, 36, 480, 274, 300 }
function turnOnAllLamps()
local ids,sec=Util.randomizeList(deviceIDs),0
for _,id in ipairs(ids) do -- pick Id from randomized list
local lightstatus=tonumber(fibaro:getValue(id, "value"));
if (lightstatus==0) then
sec = sec + math.random(10,30)
printf("Turning on lamp %s with deviceID:%s in %s seconds",i,id,sec)
setTimeout(function() fibaro:call(id, "turnOn") end, 1000*sec)
else
printf("Lamp %s with deviceID:%s already on",i,id)
end
fibaro:call(20, "pressButton", "4")
fibaro:call(304, "pressButton", "1")
end
end
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
Fw 4.600
BeyondMeasure 1.10
EventRunner
Om du vill släcka alla slumpmässigt men samtidigt är det enkelt.sonnyboy wrote: ↑02 Nov 2019, 14:40 Sitter och funderar på hur jag ska släcka "allmänbelysningen" på kvällen, men får inte till det alls.
Jag vill att det ska släckas på vardagar mellan 22:15 & 22:45 och på helger mellan 23:15 & 23:50 jag vill att ER ska slumpa fram släckningstiden.
Är ER så smart att det skulle fungera?
Använder denna till att slumpmässigt tända och det fungerar kanon, sen en lite modifierad för att släcka barnens rum, men den är alltid klockan 20:00.Code: Select all
--Function turn on all lamps function printf(...) fibaro:debug(string.format(...)) end math.randomseed(os.time()) local deviceIDs = { 248, 250, 252, 269, 45, 189, 36, 480, 274, 300 } function turnOnAllLamps() local ids,sec=Util.randomizeList(deviceIDs),0 for _,id in ipairs(ids) do -- pick Id from randomized list local lightstatus=tonumber(fibaro:getValue(id, "value")); if (lightstatus==0) then sec = sec + math.random(10,30) printf("Turning on lamp %s with deviceID:%s in %s seconds",i,id,sec) setTimeout(function() fibaro:call(id, "turnOn") end, 1000*sec) else printf("Lamp %s with deviceID:%s already on",i,id) end fibaro:call(20, "pressButton", "4") fibaro:call(304, "pressButton", "1") end end
Code: Select all
deviceIDs = { 248, 250, 252, 269, 45, 189, 36, 480, 274, 300 }
rule("@22:15+rnd(00:30) & wday('mon-fri') => deviceIDs:off")
rule("@23:15+rnd(00:35) & wday('sat-sun') => deviceIDs:off")
Om du vill mer göra i samma stil som i koden du visar, dvs släcka lamporna en och en slumpmässigt i intervallet blir det lite mer avancerat
Code: Select all
deviceIDs = { 248, 250, 252, 269, 45, 189, 36, 480, 274, 300 }
rule("@22:15 & wday('mon-fri') => for _,id in ipairs(deviceIDs ) do post(#turnOff{id=id},os.time()+rnd(00:30)) end")
rule("@23:15 & wday('sat-sun') => for _,id in ipairs(deviceIDs) do post(#turnOff{id=id},os.time()+rnd(00:35)) end")
rule("#turnOff{id='$id'} => id:off")
Om man inte vill släcka om den redan är släckt kan man göra id:isOn&id:off i sista regeln
När jag pröva denna kod får jag bara en massa fel i loggen, säkert jag som gjort något fel.jang wrote: ↑02 Nov 2019, 17:09 Om du vill mer göra i samma stil som i koden du visar, dvs släcka lamporna en och en slumpmässigt i intervallet blir det lite mer avancerat
CODE: SELECT ALL
deviceIDs = { 248, 250, 252, 269, 45, 189, 36, 480, 274, 300 }
rule("@13:42 & wday('sun-thu') => for _,id in ipairs(deviceIDs ) do post(#turnOff{id=id},os.time()+rnd(00:30)) end")
rule("@23:15 & wday('fri-sat') => for _,id in ipairs(deviceIDs) do post(#turnOff{id=id},os.time()+rnd(00:35)) end")
rule("#turnOff{id='$id'} => id:off")
Här loopar vi över alla id i deviceIDs och postar ett event slumpmässigt i framtiden (30 eller 35min). Sedan har vi en handler som tar hand om eventet och släcker lampan.
Om man inte vill släcka om den redan är släckt kan man göra id:isOn&id:off i sista regeln
Code: Select all
[DEBUG] 13:42:00: [true]>>'Rule:40[@13:42 & wday('sun-thu') => for _,id in ipairs(deviceIDs ) do post(#turnOff{id=i...]'
[DEBUG] 13:42:00: Error in 'Rule:40[@13:42 & wday('sun-thu') => for _,id in ipairs(deviceIDs ) do post(#turnOff{id=i...]': /opt/fibaro/scenes/323.lua:1785: bad argument #1 to 'fun' (table expected, got no value)
[DEBUG] 13:42:00:
[DEBUG] 13:42:00: Line 1783: end
[DEBUG] 13:42:00: Line 1784: local function handleCall(s,e,fun,args)
[DEBUG] 13:42:00: Line 1785:>>> local res = table.pack(fun(table.unpack(args)))
[DEBUG] 13:42:00: Line 1786: if type(res[1])=='table' and res[1][''] then
[DEBUG] 13:42:00: Line 1787: local co = e.co
[DEBUG] 13:42:00:
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
Fw 4.600
BeyondMeasure 1.10
EventRunner
Ser ut som devideIDs inte är definerad, eller deklarerad 'local'sonnyboy wrote: ↑03 Nov 2019, 14:49 När jag pröva denna kod får jag bara en massa fel i loggen, säkert jag som gjort något fel.Code: Select all
[DEBUG] 13:42:00: [true]>>'Rule:40[@13:42 & wday('sun-thu') => for _,id in ipairs(deviceIDs ) do post(#turnOff{id=i...]' [DEBUG] 13:42:00: Error in 'Rule:40[@13:42 & wday('sun-thu') => for _,id in ipairs(deviceIDs ) do post(#turnOff{id=i...]': /opt/fibaro/scenes/323.lua:1785: bad argument #1 to 'fun' (table expected, got no value) [DEBUG] 13:42:00: [DEBUG] 13:42:00: Line 1783: end [DEBUG] 13:42:00: Line 1784: local function handleCall(s,e,fun,args) [DEBUG] 13:42:00: Line 1785:>>> local res = table.pack(fun(table.unpack(args))) [DEBUG] 13:42:00: Line 1786: if type(res[1])=='table' and res[1][''] then [DEBUG] 13:42:00: Line 1787: local co = e.co [DEBUG] 13:42:00:
Bör se ut i stil med
Code: Select all
deviceIDs = { 248, 250, 252, 269, 45, 189, 36, 480, 274, 300 }
rule("@13:42 & wday('sun-thu') => for _,id in ipairs(deviceIDs ) do post(#turnOff{id=id},os.time()+rnd(00:30)) end")
Jag vet att det vid flera tillfällen har postats exempel på era olika regler (rules, Mike Higgins) i denna tråden men även i andra. Jag skulle vara intresserad av en tråd där man i princip bara postade sina regler med förklaring. Det blir så lätt att de försvinner i diskussionerna som sker runtomkring...
Finns detta någonstans som jag missat eller är det något fler skulle vara intresserade av?
Edit: det skulle lika gärna kunna vara på Fibaros forum för större bredd.
Finns detta någonstans som jag missat eller är det något fler skulle vara intresserade av?
Edit: det skulle lika gärna kunna vara på Fibaros forum för större bredd.
Egentligen skulle man vilja att det var en Wiki så man kunde hjälpas åt att kommentera regleran och strukturera i innehållet.MastrUsr wrote: ↑05 Nov 2019, 16:30 Jag vet att det vid flera tillfällen har postats exempel på era olika regler (rules, Mike Higgins) i denna tråden men även i andra. Jag skulle vara intresserad av en tråd där man i princip bara postade sina regler med förklaring. Det blir så lätt att de försvinner i diskussionerna som sker runtomkring...
Finns detta någonstans som jag missat eller är det något fler skulle vara intresserade av?
Edit: det skulle lika gärna kunna vara på Fibaros forum för större bredd.
Om man bara har en forumtråd kan man inte korrigera andras posts, och det blir efter ett tag svårt att få överblick över alla posts i trådarna. En variant att den som äger första posten tar på sig att uppdatera den med ett index över de olika reglerna i tråden.
Ja, ännu bättre! Novis i ämnet så undrar jag hur det skulle gå till men kanske någon skulle kunna skapa en wiki?jang wrote:Egentligen skulle man vilja att det var en Wiki så man kunde hjälpas åt att kommentera regleran och strukturera i innehållet.MastrUsr wrote: ↑05 Nov 2019, 16:30 Jag vet att det vid flera tillfällen har postats exempel på era olika regler (rules, Mike Higgins) i denna tråden men även i andra. Jag skulle vara intresserad av en tråd där man i princip bara postade sina regler med förklaring. Det blir så lätt att de försvinner i diskussionerna som sker runtomkring...
Finns detta någonstans som jag missat eller är det något fler skulle vara intresserade av?
Edit: det skulle lika gärna kunna vara på Fibaros forum för större bredd.
Om man bara har en forumtråd kan man inte korrigera andras posts, och det blir efter ett tag svårt att få överblick över alla posts i trådarna. En variant att den som äger första posten tar på sig att uppdatera den med ett index över de olika reglerna i tråden.
Skickat från min SM-N960F via Tapatalk
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Jag tänkte rensa upp lite fler script (diskmaskin mfl.) som jag har och ersätta dem med regler i ER, och hittade då ett exempel av jompa som jag har modifierat.
Mina regler liknar jompas, men då TTS-meddelandet skickats så skall strömmen brytas till maskinen, och nästa gång den används så trycker man igång strömpluggen manuellt.
Tyvärr funkar inte min regel då den skapar ett felmeddelande och jag förstår inte vad som är fel. Skall det vara något annat än power i headern?
Så här ser headern, deklarationen och regeln ut nu.
Och här är felmeddelandet
[DEBUG] 16:51:33: Garaget test - EventRunner v3.0 B77
[DEBUG] 16:51:33: Fibaro software version: 4.560
[DEBUG] 16:51:33: HC2 uptime: 125 hours
[DEBUG] 16:51:33: Sunrise 07:29, Sunset 16:09
[DEBUG] 16:51:33:
[DEBUG] 16:51:33: Loading rules
[DEBUG] 16:51:33: Rule:1[trueFor(00:05,kok.diskmaskin:power < 3 & kok.diskmaskin:isOn) => washingReady=tr...] = OK
[DEBUG] 16:51:33: Rule:2[kok.diskmaskin:power > 3 | kok.diskmaskin:isOff => washingReady=false] = OK
[DEBUG] 16:51:33: Error in 'washingReady => $TTS = 'Diskmaskinen är klar.&vol=12'': /opt/fibaro/scenes/785.lua:1698: no triggers found in header
[DEBUG] 16:51:33:
[DEBUG] 16:51:33: Line 1696: else s.push(f[1](ID(id,i,e._lastR),f[2],val,e)) end
[DEBUG] 16:51:33: Line 1697: end
[DEBUG] 16:51:33: Line 1698:>>> instr['%rule'] = function(s,n,e,i) local b,h=s.pop(),s.pop(); s.push(Rule.compRule({'=>',h,b,e.log},e)) end
[DEBUG] 16:51:33: Line 1699: instr['log'] = function(s,n) s.push(Log(LOG.ULOG,table.unpack(s.lift(n)))) end
[DEBUG] 16:51:33: Line 1700: instr['%logRule'] = function(s,n,e,i) local src,res = s.pop(),s.pop()
[DEBUG] 16:51:33:
[DEBUG] 16:51:33: Error loading rules:/opt/fibaro/scenes/785.lua:2006: /opt/fibaro/scenes/785.lua:1698: no triggers found in header
[DEBUG] 16:52:16: Aborting: Server not started yet
[DEBUG] 16:53:16: Aborting: Server not started yet
[DEBUG] 16:54:16: Aborting: Server not started yet
Mina regler liknar jompas, men då TTS-meddelandet skickats så skall strömmen brytas till maskinen, och nästa gång den används så trycker man igång strömpluggen manuellt.
Tyvärr funkar inte min regel då den skapar ett felmeddelande och jag förstår inte vad som är fel. Skall det vara något annat än power i headern?
Så här ser headern, deklarationen och regeln ut nu.
Code: Select all
--[[
%% properties
679 power
%% events
%% globals
%% autostart
--]]
--------------------------------------------------------------------------------------------------------
local HT = -- Example of in-line "home table"
{ kok = {diskmaskin = 679},
}
------------------------------------------------------------------------------------------------------
rule("trueFor(00:05,kok.diskmaskin:power < 3 & kok.diskmaskin:isOn) => washingReady=true")
rule("kok.diskmaskin:power > 3 | kok.diskmaskin:isOff => washingReady=false")
rule("washingReady & now => $TTS = 'Tvätten är klar.&vol=12'") -- play first time breached
rule("washingReady => wait(00:00:05); $TTS = 'Har du kollat tvätten?&vol=12'")
rule("washingReady => kok.diskmaskin:off")
[DEBUG] 16:51:33: Garaget test - EventRunner v3.0 B77
[DEBUG] 16:51:33: Fibaro software version: 4.560
[DEBUG] 16:51:33: HC2 uptime: 125 hours
[DEBUG] 16:51:33: Sunrise 07:29, Sunset 16:09
[DEBUG] 16:51:33:
[DEBUG] 16:51:33: Loading rules
[DEBUG] 16:51:33: Rule:1[trueFor(00:05,kok.diskmaskin:power < 3 & kok.diskmaskin:isOn) => washingReady=tr...] = OK
[DEBUG] 16:51:33: Rule:2[kok.diskmaskin:power > 3 | kok.diskmaskin:isOff => washingReady=false] = OK
[DEBUG] 16:51:33: Error in 'washingReady => $TTS = 'Diskmaskinen är klar.&vol=12'': /opt/fibaro/scenes/785.lua:1698: no triggers found in header
[DEBUG] 16:51:33:
[DEBUG] 16:51:33: Line 1696: else s.push(f[1](ID(id,i,e._lastR),f[2],val,e)) end
[DEBUG] 16:51:33: Line 1697: end
[DEBUG] 16:51:33: Line 1698:>>> instr['%rule'] = function(s,n,e,i) local b,h=s.pop(),s.pop(); s.push(Rule.compRule({'=>',h,b,e.log},e)) end
[DEBUG] 16:51:33: Line 1699: instr['log'] = function(s,n) s.push(Log(LOG.ULOG,table.unpack(s.lift(n)))) end
[DEBUG] 16:51:33: Line 1700: instr['%logRule'] = function(s,n,e,i) local src,res = s.pop(),s.pop()
[DEBUG] 16:51:33:
[DEBUG] 16:51:33: Error loading rules:/opt/fibaro/scenes/785.lua:2006: /opt/fibaro/scenes/785.lua:1698: no triggers found in header
[DEBUG] 16:52:16: Aborting: Server not started yet
[DEBUG] 16:53:16: Aborting: Server not started yet
[DEBUG] 16:54:16: Aborting: Server not started yet
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Ja ER klagar på att den inte hittar någon "trigger" i 3:e regeln.RH_Dreambox wrote: ↑06 Nov 2019, 18:18Code: Select all
--[[ %% properties 679 power %% events %% globals %% autostart --]] -------------------------------------------------------------------------------------------------------- local HT = -- Example of in-line "home table" { kok = {diskmaskin = 679}, } ------------------------------------------------------------------------------------------------------ rule("trueFor(00:05,kok.diskmaskin:power < 3 & kok.diskmaskin:isOn) => washingReady=true") rule("kok.diskmaskin:power > 3 | kok.diskmaskin:isOff => washingReady=false") rule("washingReady & now => $TTS = 'Tvätten är klar.&vol=12'") -- play first time breached rule("washingReady => wait(00:00:05); $TTS = 'Har du kollat tvätten?&vol=12'") rule("washingReady => kok.diskmaskin:off")
Triggers är normalt devices eller fibaro globaler. Vanliga ER variabler som 'washingReady' triggar inte regler normalt.
Du kan tala om för ER att 'washingReady' ska vara en trigger variabel genom att deklarera den som en sådan.
Då, om man ändrar värdet på washingReady så kommer regler som har washingReady i vänsterledet att triggas.
Har kommenterat lite i reglerna eftersom det inte verkar helt rätt ändå....
Code: Select all
Util.defTriggerVar('washingReady')
-- Sätter washingReady=true om power är mindre än 3 och diskmaskin är på, i 5 min.
rule("trueFor(00:05,kok.diskmaskin:power < 3 & kok.diskmaskin:isOn) => washingReady=true")
-- Om power > 3 eller maskin blir 'off' så sätts washingReady=false
rule("kok.diskmaskin:power > 3 | kok.diskmaskin:isOff => washingReady=false")
-- Om washingReady==true spela TTS, now returnerar bara tiden och kommer alltid att vara sann
rule("washingReady & now => $TTS = 'Tvätten är klar.&vol=12'") -- play first time breached
-- Om washingReady==true vänta 5s och spela TTS (igen?)
rule("washingReady => wait(00:00:05); $TTS = 'Har du kollat tvätten?&vol=12'")
-- Om washingReady==slå av maskin...
rule("washingReady => kok.diskmaskin:off")
Det är lite svårt att veta hur länge du ska köra TTS för att påminna. Det hade varit enklare att påminna tills
ngn slår av maskinen eller efter en viss tid. Ex.
Code: Select all
Util.defTriggerVar('washingReady')
rule("trueFor(00:05,kok.diskmaskin:power < 3 & kok.diskmaskin:isOn) => washingReady=true")
rule("kok.diskmaskin:power > 3 | kok.diskmaskin:isOff => washingReady=false")
rule("washingReady & now => $TTS = 'Tvätten är klar.&vol=12'") -- play first time breached
rule("trueFor(00:00:30,washingReady) => $TTS = 'Har du kollat tvätten?&vol=12; again()'") -- Påminn var 30s tills ngn slår av maskinen.
rule("trueFor(00:05:00,washingReady) => kok.diskmaskin:off")
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Tack @jang för att du leder in mig på rätt spår, och ditt första exempel passar oss utmärkt.
Men hur skriver jag då jag har tre olika triggers? En för tvättmaskinen, en för torktumlaren och en för 3D-skrivaren?
De kommer att ha olika regler, men jag tänker på Util.defTriggerVar.
Har försökt med lite olika varianter som den här, men bara den första triggern hittas.
Code: Select all
Util.defTriggerVar('washingReady')
rule("trueFor(00:05,kok.diskmaskin:power < 3 & kok.diskmaskin:isOn) => washingReady=true")
rule("kok.diskmaskin:power > 3 | kok.diskmaskin:isOff => washingReady=false")
rule("washingReady & now => $TTS = 'Tvätten är klar.&vol=12'") -- play first time breached
rule("washingReady => wait(00:00:05); $TTS = 'Har du kollat tvätten?&vol=12'")
rule("washingReady => kok.diskmaskin:off")
De kommer att ha olika regler, men jag tänker på Util.defTriggerVar.
Har försökt med lite olika varianter som den här, men bara den första triggern hittas.
Code: Select all
Util.defTriggerVar('dryerReady', 'washingReady', 'printerReady')
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087