Page 10 of 25

Re: EventRunner

Posted: 26 Aug 2019, 19:29
by jang
Japp, sorry för det.
'stop' är för roller shutter numera.
Scener startas med :start och stoppas med :kill

Re: EventRunner

Posted: 04 Sep 2019, 20:27
by PeterM5
Jag har en Fibaro Universalsensor som jag styr en dörrklocka med.
Går det att lägga in en tid att utgången återställs för att slippa att spolen fortfarande drar i klockan.
Eller kan jag göra på något annat sätt i inställningarna på sensorn?
Klockan drivs av 12 vac.
EventRunner V3.

Re: EventRunner

Posted: 04 Sep 2019, 21:22
by sonnyboy
@PeterM5
Jag har gjort denna inställning.
Ställ in universalsensorn ingång 1 på NO (Normally open) i din controller genom att parameter 3 sätts till 0.
Då när du trycker på knappen så drar spolen och släpper när du släpper knappen :)

Re: EventRunner

Posted: 06 Sep 2019, 16:05
by PeterM5
Tack
jag har testat det och andra inställningar, men om jag håller kvar knappen blir det inte rätt klang.
Går det att lägga in att en tid återställer utgången istället även om jag fortsätter att hålla in knappen?
Jag vill kolla när någon ringer på dörren dagtid också, hur kan den koden se ut, sensorns ID + in och utgångar?

Re: EventRunner

Posted: 15 Sep 2019, 08:18
by RH_Dreambox
Automatisk uppdatering av EventRunner3 fungerar OTROLIGT bra! Det är en unik funktion som jag inte har sett i något annat LUA-script. @jang måste vara ett geni!

Re: EventRunner

Posted: 15 Sep 2019, 23:10
by jang
RH_Dreambox wrote: 15 Sep 2019, 08:18 Automatisk uppdatering av EventRunner3 fungerar OTROLIGT bra! Det är en unik funktion som jag inte har sett i något annat LUA-script. @jang måste vara ett geni!
Nej, jag är bara lat ;)

I princip skulle man kunna definiera en "Biblioteks-VD" för scener. Och med knappar på VD:n flippa mellan olika scener från ngt arkiv och med ett klick ladda ner och installera på HC2:an (och uppdatera till nya versioner). Man vill naturligtvis att det som finns i arkivet ska vara pålitligt och testat.

Re: EventRunner

Posted: 20 Sep 2019, 23:41
by maxxar
Två kvällar i rad har min Eventrunner stannat då har det sett ut så här loggen
Kör
local _version,_fix = "3.0","B63" -- Sep 5, 2019

1179 är en motion sensor med nybytt batteri och 132 är en door sensor
Edit: såg att 132 har batterivarning men den har inte varit död vid tillfällena

Vad betyder detta?

Lite osäker på när det började, har nyligen uppgraderat från 2.0 till 3.0 men även bytt batterier i några sensorer

Har jag fått koden rätt för denna regel efter uppgraderingen till 3.0?

--Skickar ett push att kylen stått öppen i 3 min och repeteras uppåt 3,6,9 osv och en notis loggas i logfönstret
rule("trueFor(00:03,kok.kylen:breached) => allatelefoner:msg=frm('Kylen har stått öppen i %s min',3*repeat()); log('Notis kylen skickad!')")

Code: Select all

[DEBUG] 21:12:03: Incoming event:{"type":"property","propertyName":"value","deviceID":1179}

[DEBUG] 21:12:12: Incoming event:{"type":"property","deviceID":1179,"propertyName":"value"}

[DEBUG] 21:12:16: Incoming event:{"deviceID":132,"type":"property","propertyName":"value"}

[DEBUG] 21:12:33: Incoming event:{"type":"property","deviceID":132,"propertyName":"value"}

[DEBUG] 21:13:03: Incoming event:{"type":"property","propertyName":"value","deviceID":132}

[DEBUG] 21:16:03: Incoming event:{"propertyName":"value","type":"property","deviceID":132}

[DEBUG] 21:19:26: Incoming event:{"deviceID":1179,"propertyName":"value","type":"property"}

[DEBUG] 21:19:31: Incoming event:{"type":"property","deviceID":1179,"propertyName":"value"}

[DEBUG] 21:20:23: Incoming event:{"deviceID":1179,"propertyName":"value","type":"property"}

[DEBUG] 21:20:39: Incoming event:{"deviceID":1179,"type":"property","propertyName":"value"}

[DEBUG] 21:21:01: Incoming event:{"propertyName":"value","deviceID":132,"type":"property"}

[DEBUG] 21:22:10: Couldn't post event (dead?), dropping:{"propertyName":"value","type":"property","deviceID":132}
[DEBUG] 21:22:14: Couldn't post event (dead?), dropping:{"type":"property","propertyName":"value","deviceID":132}
[DEBUG] 21:23:13: Couldn't post event (dead?), dropping:{"type":"property","propertyName":"value","deviceID":1179}
[DEBUG] 21:24:36: Couldn't post event (dead?), dropping:{"type":"property","deviceID":132,"propertyName":"value"}

Re: EventRunner

Posted: 21 Sep 2019, 08:52
by jang
maxxar wrote: 20 Sep 2019, 23:41 Två kvällar i rad har min Eventrunner stannat då har det sett ut så här loggen
Kör
local _version,_fix = "3.0","B63" -- Sep 5, 2019

1179 är en motion sensor med nybytt batteri och 132 är en door sensor
Edit: såg att 132 har batterivarning men den har inte varit död vid tillfällena

Vad betyder detta?

Lite osäker på när det började, har nyligen uppgraderat från 2.0 till 3.0 men även bytt batterier i några sensorer

Har jag fått koden rätt för denna regel efter uppgraderingen till 3.0?

--Skickar ett push att kylen stått öppen i 3 min och repeteras uppåt 3,6,9 osv och en notis loggas i logfönstret
rule("trueFor(00:03,kok.kylen:breached) => allatelefoner:msg=frm('Kylen har stått öppen i %s min',3*repeat()); log('Notis kylen skickad!')")

Code: Select all

[DEBUG] 21:12:03: Incoming event:{"type":"property","propertyName":"value","deviceID":1179}

[DEBUG] 21:12:12: Incoming event:{"type":"property","deviceID":1179,"propertyName":"value"}

[DEBUG] 21:12:16: Incoming event:{"deviceID":132,"type":"property","propertyName":"value"}

[DEBUG] 21:12:33: Incoming event:{"type":"property","deviceID":132,"propertyName":"value"}

[DEBUG] 21:13:03: Incoming event:{"type":"property","propertyName":"value","deviceID":132}

[DEBUG] 21:16:03: Incoming event:{"propertyName":"value","type":"property","deviceID":132}

[DEBUG] 21:19:26: Incoming event:{"deviceID":1179,"propertyName":"value","type":"property"}

[DEBUG] 21:19:31: Incoming event:{"type":"property","deviceID":1179,"propertyName":"value"}

[DEBUG] 21:20:23: Incoming event:{"deviceID":1179,"propertyName":"value","type":"property"}

[DEBUG] 21:20:39: Incoming event:{"deviceID":1179,"type":"property","propertyName":"value"}

[DEBUG] 21:21:01: Incoming event:{"propertyName":"value","deviceID":132,"type":"property"}

[DEBUG] 21:22:10: Couldn't post event (dead?), dropping:{"propertyName":"value","type":"property","deviceID":132}
[DEBUG] 21:22:14: Couldn't post event (dead?), dropping:{"type":"property","propertyName":"value","deviceID":132}
[DEBUG] 21:23:13: Couldn't post event (dead?), dropping:{"type":"property","propertyName":"value","deviceID":1179}
[DEBUG] 21:24:36: Couldn't post event (dead?), dropping:{"type":"property","deviceID":132,"propertyName":"value"}
Ooops.
'repeat' är bytt mot 'again' i trueFor regler.
Jag har en bugg i ER så om du använder 'repeat' som en funktion så blir det en oändlig loop (som i sin tur gör att ER inte kan ta emot events därav ditt felmeddelande). 'repeat' används nu som en 'repeat' ...'until' konstruktion. Jag ska fixa buggen i nästa version så att man får ett korrekt felmeddelande.
Snabb fix nu: byt repeat mot again i din trueFor regel.

Re: EventRunner

Posted: 21 Sep 2019, 21:10
by maxxar
jang wrote: 21 Sep 2019, 08:52
maxxar wrote: 20 Sep 2019, 23:41 Två kvällar i rad har min Eventrunner stannat då har det sett ut så här loggen
Kör
local _version,_fix = "3.0","B63" -- Sep 5, 2019

1179 är en motion sensor med nybytt batteri och 132 är en door sensor
Edit: såg att 132 har batterivarning men den har inte varit död vid tillfällena

Vad betyder detta?

Lite osäker på när det började, har nyligen uppgraderat från 2.0 till 3.0 men även bytt batterier i några sensorer

Har jag fått koden rätt för denna regel efter uppgraderingen till 3.0?

--Skickar ett push att kylen stått öppen i 3 min och repeteras uppåt 3,6,9 osv och en notis loggas i logfönstret
rule("trueFor(00:03,kok.kylen:breached) => allatelefoner:msg=frm('Kylen har stått öppen i %s min',3*repeat()); log('Notis kylen skickad!')")

Code: Select all

[DEBUG] 21:12:03: Incoming event:{"type":"property","propertyName":"value","deviceID":1179}

[DEBUG] 21:12:12: Incoming event:{"type":"property","deviceID":1179,"propertyName":"value"}

[DEBUG] 21:12:16: Incoming event:{"deviceID":132,"type":"property","propertyName":"value"}

[DEBUG] 21:12:33: Incoming event:{"type":"property","deviceID":132,"propertyName":"value"}

[DEBUG] 21:13:03: Incoming event:{"type":"property","propertyName":"value","deviceID":132}

[DEBUG] 21:16:03: Incoming event:{"propertyName":"value","type":"property","deviceID":132}

[DEBUG] 21:19:26: Incoming event:{"deviceID":1179,"propertyName":"value","type":"property"}

[DEBUG] 21:19:31: Incoming event:{"type":"property","deviceID":1179,"propertyName":"value"}

[DEBUG] 21:20:23: Incoming event:{"deviceID":1179,"propertyName":"value","type":"property"}

[DEBUG] 21:20:39: Incoming event:{"deviceID":1179,"type":"property","propertyName":"value"}

[DEBUG] 21:21:01: Incoming event:{"propertyName":"value","deviceID":132,"type":"property"}

[DEBUG] 21:22:10: Couldn't post event (dead?), dropping:{"propertyName":"value","type":"property","deviceID":132}
[DEBUG] 21:22:14: Couldn't post event (dead?), dropping:{"type":"property","propertyName":"value","deviceID":132}
[DEBUG] 21:23:13: Couldn't post event (dead?), dropping:{"type":"property","propertyName":"value","deviceID":1179}
[DEBUG] 21:24:36: Couldn't post event (dead?), dropping:{"type":"property","deviceID":132,"propertyName":"value"}
Ooops.
'repeat' är bytt mot 'again' i trueFor regler.
Jag har en bugg i ER så om du använder 'repeat' som en funktion så blir det en oändlig loop (som i sin tur gör att ER inte kan ta emot events därav ditt felmeddelande). 'repeat' används nu som en 'repeat' ...'until' konstruktion. Jag ska fixa buggen i nästa version så att man får ett korrekt felmeddelande.
Snabb fix nu: byt repeat mot again i din trueFor regel.
Ah, grymt tack!
Har ändrat det och patchat till senaste versionen

Re: EventRunner

Posted: 21 Sep 2019, 21:11
by maxxar
maxxar wrote: 21 Sep 2019, 21:10
jang wrote: 21 Sep 2019, 08:52
maxxar wrote: 20 Sep 2019, 23:41 Två kvällar i rad har min Eventrunner stannat då har det sett ut så här loggen
Kör
local _version,_fix = "3.0","B63" -- Sep 5, 2019

1179 är en motion sensor med nybytt batteri och 132 är en door sensor
Edit: såg att 132 har batterivarning men den har inte varit död vid tillfällena

Vad betyder detta?

Lite osäker på när det började, har nyligen uppgraderat från 2.0 till 3.0 men även bytt batterier i några sensorer

Har jag fått koden rätt för denna regel efter uppgraderingen till 3.0?

--Skickar ett push att kylen stått öppen i 3 min och repeteras uppåt 3,6,9 osv och en notis loggas i logfönstret
rule("trueFor(00:03,kok.kylen:breached) => allatelefoner:msg=frm('Kylen har stått öppen i %s min',3*repeat()); log('Notis kylen skickad!')")

Code: Select all

[DEBUG] 21:12:03: Incoming event:{"type":"property","propertyName":"value","deviceID":1179}

[DEBUG] 21:12:12: Incoming event:{"type":"property","deviceID":1179,"propertyName":"value"}

[DEBUG] 21:12:16: Incoming event:{"deviceID":132,"type":"property","propertyName":"value"}

[DEBUG] 21:12:33: Incoming event:{"type":"property","deviceID":132,"propertyName":"value"}

[DEBUG] 21:13:03: Incoming event:{"type":"property","propertyName":"value","deviceID":132}

[DEBUG] 21:16:03: Incoming event:{"propertyName":"value","type":"property","deviceID":132}

[DEBUG] 21:19:26: Incoming event:{"deviceID":1179,"propertyName":"value","type":"property"}

[DEBUG] 21:19:31: Incoming event:{"type":"property","deviceID":1179,"propertyName":"value"}

[DEBUG] 21:20:23: Incoming event:{"deviceID":1179,"propertyName":"value","type":"property"}

[DEBUG] 21:20:39: Incoming event:{"deviceID":1179,"type":"property","propertyName":"value"}

[DEBUG] 21:21:01: Incoming event:{"propertyName":"value","deviceID":132,"type":"property"}

[DEBUG] 21:22:10: Couldn't post event (dead?), dropping:{"propertyName":"value","type":"property","deviceID":132}
[DEBUG] 21:22:14: Couldn't post event (dead?), dropping:{"type":"property","propertyName":"value","deviceID":132}
[DEBUG] 21:23:13: Couldn't post event (dead?), dropping:{"type":"property","propertyName":"value","deviceID":1179}
[DEBUG] 21:24:36: Couldn't post event (dead?), dropping:{"type":"property","deviceID":132,"propertyName":"value"}
Ooops.
'repeat' är bytt mot 'again' i trueFor regler.
Jag har en bugg i ER så om du använder 'repeat' som en funktion så blir det en oändlig loop (som i sin tur gör att ER inte kan ta emot events därav ditt felmeddelande). 'repeat' används nu som en 'repeat' ...'until' konstruktion. Jag ska fixa buggen i nästa version så att man får ett korrekt felmeddelande.
Snabb fix nu: byt repeat mot again i din trueFor regel.
Ah, grymt tack!
Har ändrat det och patchat till senaste versionen så nu funkar det nog bättre :)

Re: EventRunner

Posted: 05 Oct 2019, 22:01
by maxxar
Är det något ändrat i msg=frm i v3.0 av Eventrunner
Får detta fel när jag använder msg=frm som jag haft tidigare se nedan

Edit: Provade även att bara ta bort frm men det gick inte.

Code: Select all

[DEBUG] 21:46:27: Incoming event:{"type":"property","propertyName":"value","deviceID":1179}

[DEBUG] 21:47:44: Error in 'Rule:11[trueFor(00:03,kok.kylen:breached) => allatelefoner:msg=frm('Kylen har stått öp...]': /opt/fibaro/scenes/793.lua:2052: No such function:frm

[DEBUG] 21:47:44:
[DEBUG] 21:47:44: Line 2050: stat,res=(instr[i[1]] or instr['%call'])(stack,i[2],env,i)
[DEBUG] 21:47:44: Line 2051: postTrace(i,args,stack,env.cp)
[DEBUG] 21:47:44: Line 2052:>>> else stat,res=(instr[i[1]] or instr['%call'])(stack,i[2],env,i) end
[DEBUG] 21:47:44: Line 2053: env.cp = env.cp+1
[DEBUG] 21:47:44: Line 2054: end --until env.cp > #code or stat
[DEBUG] 21:47:44:

[DEBUG] 21:47:50: Incoming event:{"type":"property","deviceID":

Re: EventRunner

Posted: 06 Oct 2019, 16:05
by jang
maxxar wrote: 05 Oct 2019, 22:01 Är det något ändrat i msg=frm i v3.0 av Eventrunner
Får detta fel när jag använder msg=frm som jag haft tidigare se nedan

Edit: Provade även att bara ta bort frm men det gick inte.

Code: Select all

[DEBUG] 21:46:27: Incoming event:{"type":"property","propertyName":"value","deviceID":1179}

[DEBUG] 21:47:44: Error in 'Rule:11[trueFor(00:03,kok.kylen:breached) => allatelefoner:msg=frm('Kylen har stått öp...]': /opt/fibaro/scenes/793.lua:2052: No such function:frm

[DEBUG] 21:47:44:
[DEBUG] 21:47:44: Line 2050: stat,res=(instr[i[1]] or instr['%call'])(stack,i[2],env,i)
[DEBUG] 21:47:44: Line 2051: postTrace(i,args,stack,env.cp)
[DEBUG] 21:47:44: Line 2052:>>> else stat,res=(instr[i[1]] or instr['%call'])(stack,i[2],env,i) end
[DEBUG] 21:47:44: Line 2053: env.cp = env.cp+1
[DEBUG] 21:47:44: Line 2054: end --until env.cp > #code or stat
[DEBUG] 21:47:44:

[DEBUG] 21:47:50: Incoming event:{"type":"property","deviceID":
Ja, I v3.0 så bytte 'frm' namn till 'fmt' - kommer inte ihåg varför jag tyckte det var en nödvändig förändring.
Om du byter till 'fmt' ska det fungera.

Btw. Om man inuti Main() kör

Code: Select all

 ScriptEngine.listInstructions()
 
så skrivs alla nuvarande instruktioner i ER ut. Utan dokumentation dock men man kan få en känsla för om en funktion man försöker använda finns.

Re: EventRunner

Posted: 10 Oct 2019, 20:39
by jang
Ett litet tips.
Typisk är att man i ER schedulera saker som ska hända vid vissa tider.
Ex tända utelampor vid solnedgång - 10min

Code: Select all

 rule("@sunset-00:10 => uteLampor:on")
 
I en tidigare post så visade jag hur man kunde använda fibaro globala istället.
Här sätter vi fibaro global 'afton' till solnedgång - 10min och använder den i regel 2.

Code: Select all

rule("$afton = sunset-00:10")
rule("@$afton = uteLampor:on")
Problemet kan vara att man kommer hem före solnedgången och det är lite mörkt ute och man tycker att lamporna skulle ha tänts tidigare.
Så istället för att tänka att saker ska köra på speciella tider så tänker man att de ska köra vid speciella 'event' - och olika 'actions' triggar dessa event.
Ett event skrivs i ER som #event och är samma sak som en Lua tabell {type='event'}. #event{val=9} är samma som {type='event', val=9}

När vi vill tända lamporna är då när vi ser eventet #afton (samma som {type='afton'})

Code: Select all

rule("#afton & uteLampor:isAllOff => uteLampor:on")
När vi ser eventet #afton och alla utelampor är släckta så tänder vi lamporna. (Om man har programmerat en del så kan man se det här som en subrutin som kan anropas från andra regler om de postar ett #afton event)

Nu behöver vi en regel när vi ska 'posta' eventet #afton. Naturligt är att vi gör det vi en tidpunkt som i exemplet ovan

Code: Select all

rule("@$afton => post(#afton)")
(Fibaro global 'afton' var satt till sunset-00:10)
Vi har inte åstadkommit ngt utöver den ursprungliga regeln. Vi tänder vid soluppgången - 10min, men vi gör det genom att posta ett event till en annan regel som tänder lamporna.

Fördel med den uppdelningen är att vi kan posta samma event vid andra händelser.

Code: Select all

rule("keyfob:central.key=='2' & 15:00..$afton => post(#afton)")
rule("switch:value & 15:00..$afton => post(#afton)")
Här trigger vi på om ngn trycker på knapp 2 på en keyfob och postar då också 'afton' eventet som tänder lamporna.
Vi trigger också på om ngn slår om en knapp med ID 'switch' och postar då också.
(vi testar också att tiden är mellan 15:00 och sunset-10 så att vi inte triggar dessa av misstag för tidigt)

Så när jag kommer hem före solnedgången och det är lite mörkt ute och tycker att lamporna skulle ha tänts tidigare så trycket jag på min keyfob och triggar 'afton'.

Den här modellen funkar för alla "dags" event som man ibland vill skjuta fram eller tillbaka. På morgonen kan 'morgon' eventet triggas av en tid eller att ngn stiger upp och triggar en rörelsesensor - men samma morgon-actions ska köra. När det är dags att sova är också en sådan typ av event som många olika actions kan trigga.

Re: EventRunner

Posted: 11 Oct 2019, 20:38
by sonnyboy
jang wrote: 11 Oct 2019, 19:14 Jag har lagt in 'dim' som en standard feature i ER v3 B67.

Code: Select all

fibaro:call(199,'dim',20,'up',1,'outExpo',0,99)
--dimmar upp device 199 under 20s, med 1s steg, funktion 'outExpo' och start 0 och stop 99
fibaro:call(199,'dim',20)
--dimmar upp device 199 under 20s, med 1s steg, funktion 'linear' och start 0 och stop 99
med EventScript regler blir det

Code: Select all

rule("@05:30 => 199:dim={20,'up',1,'outExpo',0,99}")
-- eller
rule("@05:30 => 199:dim={20,'up'}") -- defaults to linear
Fungerar galant :)
Tackar så mycket!

Re: EventRunner

Posted: 13 Oct 2019, 10:39
by PeterM5
Är det möjligt att använda dimmer funktionen tvärtom, börja på 99 0ch sänka till 5.
Jag har provat med 'down istället för 'up', men det funkar ej.

Re: EventRunner

Posted: 13 Oct 2019, 11:54
by Systemfel
rule("@05:30 => 199:dim={20,'up',1,'outExpo',0,99}")
-- eller
rule("@05:30 => 199:dim={20,'up'}") -- defaults to linear


kan inte mycket om vd,Men kan man sätta tiden själv och så det blir som en Wake upp light ?
kan tänka mig det är en del kod på det. ?
om ens det går att göra ?

Re: EventRunner

Posted: 13 Oct 2019, 12:48
by jang
PeterM5 wrote: 13 Oct 2019, 10:39 Är det möjligt att använda dimmer funktionen tvärtom, börja på 99 0ch sänka till 5.
Jag har provat med 'down istället för 'up', men det funkar ej.
Jo, men det är kanske lite ointuitivt då start alltid är det minsta värdet och stop det högsta.

Code: Select all

  rule("199:dim={20,'down',1,'linear',5,99}")
 

Re: EventRunner

Posted: 13 Oct 2019, 13:14
by jang
Systemfel wrote: 13 Oct 2019, 11:54 rule("@05:30 => 199:dim={20,'up',1,'outExpo',0,99}")
-- eller
rule("@05:30 => 199:dim={20,'up'}") -- defaults to linear


kan inte mycket om vd,Men kan man sätta tiden själv och så det blir som en Wake upp light ?
kan tänka mig det är en del kod på det. ?
om ens det går att göra ?
Om du gör en VD per lampa så är det ganska enkelt.
Om VDn kan sätta en fibaro global. Ex 'minLampa' till en Lua tabell av typ
Ex. {id=199, time='05:30', params={20,1,dir='up','linear',0, 99}}
så kan du ha en regel i ER av typ

Code: Select all

rule("@time($minLampa.time) => $minLampa.id:dim=$minLampa.params")
Jag har just uppgraderat till MacOS Catalina och slåss med att få ZeroBrane att fungera - när jag lyckats kan jag återkomma med ett VD exempel.

Re: EventRunner

Posted: 13 Oct 2019, 13:53
by RH_Dreambox
Vi vill ha ett varningsljus som blinkar en stund om någon skulle få för sig att smita in på baksidan av vårt garage.
Ding-dong regeln tyckte jag var en utmärkt kod för detta och den ser ut som nedan.

Code: Select all

  rule("@@00:00:01 & 23:00..06:45 & sensor.garage_pir:breached => f=!f; || f >> garage.lampa:on || true >> garage.lampa:off")
Blinktidens längd styrs av en parameter i rörelse-sensorn och är satt till ca 15 sekunder.
Ett litet krux är dock att lampan, beroende på blinktiden, inte alltid slutar med att lampan är släckt.
Så kan man lägga till någon klurig kod i regeln som alltid ser till att lampan släcks, eller måste man lägga till ytterligare en regel för detta?

Re: EventRunner

Posted: 13 Oct 2019, 14:29
by jang
RH_Dreambox wrote: 13 Oct 2019, 13:53 Vi vill ha ett varningsljus som blinkar en stund om någon skulle få för sig att smita in på baksidan av vårt garage.
Ding-dong regeln tyckte jag var en utmärkt kod för detta och den ser ut som nedan.

Code: Select all

  rule("@@00:00:01 & 23:00..06:45 & sensor.garage_pir:breached => f=!f; || f >> garage.lampa:on || true >> garage.lampa:off")
Blinktidens längd styrs av en parameter i rörelse-sensorn och är satt till ca 15 sekunder.
Ett litet krux är dock att lampan, beroende på blinktiden, inte alltid slutar med att lampan är släckt.
Så kan man lägga till någon klurig kod i regeln som alltid ser till att lampan släcks, eller måste man lägga till ytterligare en regel för detta?
Ja det funkar men problemet är att den kör varje sekund dygnet runt för att kolla om den ska blinka. Inte så effektivt. Det finns kommandon för att slå på och av regler men i det här fallet skulle jag koda en regel som i första hand triggar på sensorn (och tidsintervallet) och sedan loopar och blinkar lampan tills sensorn blir safe

Code: Select all

  rule([[sensor.garage_pir:breached & 23:00..06:45 => 
    repeat garage.lampa:toggle; wait(1) until sensor.garage_pir:safe; 
    garage.lampa:off]])
Här används "repeat ... until <test>" för att blinka tills sensorn blir 'safe'. Sedan släcker vi den för säkerhets skull efter loopen om den skulle råka stanna i tänt läge. I loopen har vi också en 'wait' på 1 sekund. En repeat loop går för fort utan en wait i det här fallet.