EventRunner

jang
Medlem
Posts: 175
Joined: 05 Jan 2014, 00:44
Location: Stockholm

26 Aug 2019, 19:29

Japp, sorry för det.
'stop' är för roller shutter numera.
Scener startas med :start och stoppas med :kill
PeterM5
Ny medlem
Posts: 22
Joined: 13 Jul 2016, 10:55

04 Sep 2019, 20:27

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.
sonnyboy
Proffsmedlem
Posts: 648
Joined: 26 Sep 2013, 08:05
Location: Västerås

04 Sep 2019, 21:22

@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 :)
Fibaro HomeCenter 2
Fw 4.550
BeyondMeasure 1.10
EventRunner
PeterM5
Ny medlem
Posts: 22
Joined: 13 Jul 2016, 10:55

06 Sep 2019, 16:05

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?
RH_Dreambox
Proffsmedlem
Posts: 990
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

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!
2 st HC2 4.560 - EventRunner 3
jang
Medlem
Posts: 175
Joined: 05 Jan 2014, 00:44
Location: Stockholm

15 Sep 2019, 23:10

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.
maxxar
Medlem
Posts: 115
Joined: 06 Sep 2012, 13:30

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"}
jang
Medlem
Posts: 175
Joined: 05 Jan 2014, 00:44
Location: Stockholm

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.
maxxar
Medlem
Posts: 115
Joined: 06 Sep 2012, 13:30

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
maxxar
Medlem
Posts: 115
Joined: 06 Sep 2012, 13:30

21 Sep 2019, 21:11

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 :)
maxxar
Medlem
Posts: 115
Joined: 06 Sep 2012, 13:30

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":
jang
Medlem
Posts: 175
Joined: 05 Jan 2014, 00:44
Location: Stockholm

06 Oct 2019, 16:05

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.
jang
Medlem
Posts: 175
Joined: 05 Jan 2014, 00:44
Location: Stockholm

10 Oct 2019, 20:39

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.
sonnyboy
Proffsmedlem
Posts: 648
Joined: 26 Sep 2013, 08:05
Location: Västerås

11 Oct 2019, 20:38

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!
Fibaro HomeCenter 2
Fw 4.550
BeyondMeasure 1.10
EventRunner
PeterM5
Ny medlem
Posts: 22
Joined: 13 Jul 2016, 10:55

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.
Systemfel
Medlem
Posts: 202
Joined: 14 Jan 2015, 01:02

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 ?
Börjat pilla lite på min Fibaro home center 2 ( och det går bra )
jang
Medlem
Posts: 175
Joined: 05 Jan 2014, 00:44
Location: Stockholm

13 Oct 2019, 12:48

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}")
 
jang
Medlem
Posts: 175
Joined: 05 Jan 2014, 00:44
Location: Stockholm

13 Oct 2019, 13:14

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.
RH_Dreambox
Proffsmedlem
Posts: 990
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

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?
2 st HC2 4.560 - EventRunner 3
jang
Medlem
Posts: 175
Joined: 05 Jan 2014, 00:44
Location: Stockholm

13 Oct 2019, 14:29

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.
Post Reply