Page 22 of 25

Re: EventRunner

Posted: 12 Jul 2020, 17:24
by RH_Dreambox
@jang
Ett stort tack för din hjälp. Nu har jag kommit igång med några enkla regler i ER4 som en test, och det funkar bra.
Men så var det det här med triggers....

I ER3 har jag två Minimote fjärrkontroller där jag har följande rader i Headern
19 sceneActivation
21 sceneActivation

Men det finns ju inget (Conditions/Triggers)-fönster i en QA, så var skall dessa ligga då? Skall jag skapa en tom scen där dessa triggers placeras, en scen som kommunicerar med ER4 på något vis??
Jag ser att du har en Keyfob som exempel i din kod, men ingen trigger.

Re: EventRunner

Posted: 12 Jul 2020, 20:54
by jang
Nej, det är det fiffiga - i QA behöver du inte deklarera några triggers. ER4 sätter upp en lyssnare på alla event i systemet och får de automatiskt.

Re: EventRunner

Posted: 13 Jul 2020, 15:36
by RH_Dreambox
jang wrote: 12 Jul 2020, 20:54 Nej, det är det fiffiga - i QA behöver du inte deklarera några triggers. ER4 sätter upp en lyssnare på alla event i systemet och får de automatiskt.
Ja, vad skall man säga..., du har överträffat dig själv, igen :D

Triggern känner av min Minimote, men QA kraschar när jag trycker på någon av knapparna.
Har jag skrivit regeln fel, eller är det något annat som strular?
Så här ser deklaration och regler ut:

Code: Select all

 HT = { 
    minimote = 49,
    lightTBK = 35,
    lightAeon = 37
    }

-- MINIMOTE REMOTE -----------------------------------------
  rule("minimote:scene==1 => lightAeon:on")     -- Tänd Aeon
  rule("minimote:scene==2 => lightAeon:off")    -- Släck Aeon
  rule("minimote:scene==3 => lightTBK:on")	-- Tänd TBK
  rule("minimote:scene==4 => lightTBK:off")	-- Släck TBK
Och här är debugen...
[2020-07-13] [15:25:00] [DEBUG] [QUICKAPP46]: -------------------------------------- EventRunner4, (ID:46) --------------------------------------
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: Events 0.2, fix3
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: IP address:192.168.1.26
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: Setting up device support..
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: Setting up event engine..
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: Setting up remote support..
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: Setting up autopatch support..
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: Setting up EventScript support..
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: Sunrise:04:27, Sunset:21:56
[2020-07-13] [15:25:00] [DEBUG] [QUICKAPP46]: ------------------------------------- Setting up rules (main) -------------------------------------
[2020-07-13] [15:25:00] [DEBUG] [QUICKAPP46]: Rule:1[minimote:scene==1 => lightAeon:on] = OK
[2020-07-13] [15:25:00] [DEBUG] [QUICKAPP46]: Rule:2[minimote:scene==2 => lightAeon:off] = OK
[2020-07-13] [15:25:00] [DEBUG] [QUICKAPP46]: Rule:3[minimote:scene==3 => lightTBK:on] = OK
[2020-07-13] [15:25:00] [DEBUG] [QUICKAPP46]: Rule:4[minimote:scene==4 => lightTBK:off] = OK
[2020-07-13] [15:25:00] [DEBUG] [QUICKAPP46]: --------------------------------------------- Running ---------------------------------------------
[2020-07-13] [15:25:00] [TRACE] [QUICKAPP46]: Polling for triggers..
[2020-07-13] [15:25:12] [ERROR] [QUICKAPP46]: QuickApp crashed
[2020-07-13] [15:25:12] [ERROR] [QUICKAPP46]: line: 2496 attempt to index a nil value (field 'activation')

@jang ett nytt test idag gav lite mer info med fibaro.call

[2020-07-14] [08:57:09] [TRACE] [QUICKAPP46]: Polling for triggers..
[2020-07-14] [09:00:32] [DEBUG] [QUICKAPP46]: fibaro.call(37,"turnOn") => nil
[2020-07-14] [09:00:33] [ERROR] [QUICKAPP46]: QuickApp crashed
[2020-07-14] [09:00:33] [ERROR] [QUICKAPP46]: line: 2496 attempt to index a nil value (field 'activation')

Re: EventRunner

Posted: 14 Jul 2020, 10:26
by jang
Hej, jag har ingen 'sceneActivation' device numera så jag hade en bug i ER4.
Tyvärr verkar det som om eventformatet har ändrats mellan HC2 och HC3 så jag är lite osäker vad som är korrekt.
Jag har lagt upp en ny version av EventRunner4 på min GitHub (fix4) https://github.com/jangabrielsson/EventRunner som kanske funkar med sceneActivation

Kan du modifiera regeln såhär och testa och posta log meddelande. Jag är intresserad av hur hela sceneActivation eventet ser ut nuförtiden.

Code: Select all

 rule("minimote:scene==1 => log('Activation:%s',env.event); lightAeon:on")     -- Tänd Aeon
 
Om den inte triggar så kan du prova

Code: Select all

 rule("minimote:scene => log('Activation:%s',env.event)") 
 
...så att vi får se eventet.
P.S Vilka filformat får man attacha till en post? Gick inte att lägga upp .fqa verkar det som.

Re: EventRunner

Posted: 14 Jul 2020, 13:26
by RH_Dreambox
@jang
Fix 4 fungerar med Minimote. Nedan är loggen för tänd Aeon och sedan släck Aeon.
Beträffande filformatet som inte kan bifogas så är det bästa att "Zippa" filen. ".fqa" kanske räknas till kategorin skadlig kod, men det borde inte gälla din kod :D

[2020-07-14] [13:15:38] [DEBUG] [QUICKAPP46]: -------------------------------------- EventRunner4, (ID:46) --------------------------------------
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: Events 0.2, fix4
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: IP address:192.168.1.26
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: Setting up device support..
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: Setting up event engine..
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: Setting up remote support..
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: Setting up autopatch support..
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: Setting up EventScript support..
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: Sunrise:04:28, Sunset:21:54
[2020-07-14] [13:15:38] [DEBUG] [QUICKAPP46]: ------------------------------------- Setting up rules (main) -------------------------------------
[2020-07-14] [13:15:38] [DEBUG] [QUICKAPP46]: Rule:1[minimote:scene==1 => log('Activation:%s',env.event); lightAeon:on] = OK
[2020-07-14] [13:15:38] [DEBUG] [QUICKAPP46]: Rule:2[minimote:scene==2 => log('Activation:%s',env.event); lightAeon:off] = OK
[2020-07-14] [13:15:38] [DEBUG] [QUICKAPP46]: Rule:3[minimote:scene==3 => lightTBK:on] = OK
[2020-07-14] [13:15:38] [DEBUG] [QUICKAPP46]: Rule:4[minimote:scene==4 => lightTBK:off] = OK
[2020-07-14] [13:15:38] [DEBUG] [QUICKAPP46]: --------------------------------------------- Running ---------------------------------------------
[2020-07-14] [13:15:38] [TRACE] [QUICKAPP46]: Polling for triggers..
[2020-07-14] [13:15:38] [DEBUG] [QUICKAPP46]: Posting {"type":"startup"} at Tue Jul 14 13:15:38
[2020-07-14] [13:16:00] [DEBUG] [QUICKAPP46]: [true]>>'Rule:1[minimote:scene==1 => log('Activation:%s',env.event); lightAeon:on]'
[2020-07-14] [13:16:00] [TRACE] [QUICKAPP46]: Activation:{"type":"device","id":49,"value":1,"data":{"deviceId":49,"sceneId":1,"name":""},"_sh":true,"property":"sceneActivationEvent"}
[2020-07-14] [13:16:00] [DEBUG] [QUICKAPP46]: fibaro.call(37,"turnOn") => nil
[2020-07-14] [13:16:00] [DEBUG] [QUICKAPP46]: [false]>>'Rule:2[minimote:scene==2 => log('Activation:%s',env.event); lightAeon:off]'
[2020-07-14] [13:16:00] [DEBUG] [QUICKAPP46]: [false]>>'Rule:3[minimote:scene==3 => lightTBK:on]'
[2020-07-14] [13:16:00] [DEBUG] [QUICKAPP46]: [false]>>'Rule:4[minimote:scene==4 => lightTBK:off]'
[2020-07-14] [13:16:06] [DEBUG] [QUICKAPP46]: [false]>>'Rule:1[minimote:scene==1 => log('Activation:%s',env.event); lightAeon:on]'
[2020-07-14] [13:16:06] [DEBUG] [QUICKAPP46]: [true]>>'Rule:2[minimote:scene==2 => log('Activation:%s',env.event); lightAeon:off]'
[2020-07-14] [13:16:06] [TRACE] [QUICKAPP46]: Activation:{"type":"device","id":49,"value":2,"data":{"deviceId":49,"sceneId":2,"name":""},"_sh":true,"property":"sceneActivationEvent"}
[2020-07-14] [13:16:06] [DEBUG] [QUICKAPP46]: fibaro.call(37,"turnOff") => nil
[2020-07-14] [13:16:06] [DEBUG] [QUICKAPP46]: [false]>>'Rule:3[minimote:scene==3 => lightTBK:on]'
[2020-07-14] [13:16:06] [DEBUG] [QUICKAPP46]: [false]>>'Rule:4[minimote:scene==4 => lightTBK:off]'

Re: EventRunner

Posted: 15 Jul 2020, 17:13
by RH_Dreambox
@jang vad är detta för något (ER4 fix 4)? Jag har inga enheter eller något annat med dessa ID, jag kör bara en test med Minimote enligt tidigare inlägg.
Det finns heller ingen regel med tiden 17:00, inga tidsregler över huvud taget.

[2020-07-15] [17:00:24] [DEBUG] [QUICKAPP46]: Unhandled event:{"data":{"id":219},"type":"RoomModifiedEvent"} -- please report
[2020-07-15] [17:00:24] [DEBUG] [QUICKAPP46]: Unhandled event:{"data":{"id":220},"type":"RoomModifiedEvent"} -- please report
[2020-07-15] [17:00:24] [DEBUG] [QUICKAPP46]: Unhandled event:{"data":{"id":221},"type":"RoomModifiedEvent"} -- please report
[2020-07-15] [17:00:24] [DEBUG] [QUICKAPP46]: Unhandled event:{"data":{"id":222},"type":"RoomModifiedEvent"} -- please report
[2020-07-15] [17:00:24] [DEBUG] [QUICKAPP46]: Unhandled event:{"data":{"id":223},"type":"RoomModifiedEvent"} -- please report

Re: EventRunner

Posted: 15 Jul 2020, 21:24
by jang
RH_Dreambox wrote: 15 Jul 2020, 17:13 @jang vad är detta för något (ER4 fix 4)? Jag har inga enheter eller något annat med dessa ID, jag kör bara en test med Minimote enligt tidigare inlägg.
Det finns heller ingen regel med tiden 17:00, inga tidsregler över huvud taget
Det är bara ER4 som rapporterar att den ser ett event som den inte sett förut (och som det inte finns ngn handler för).
I nya versionen kommer det att finnas en flagga för att stänga av det. Men den kommer att vara på som default då jag gärna ser att folk rapporterar nya typer av event till mig. Fibaro har inte dokumenterat någonstans alla typer av event så det är lite osäkert vad som dyker upp.

Nåväl, jag har gjort lite framsteg så det kommer en ny version på fredag som har support för fler typer av event (inklusive 'RoomModifiedEvent') så vi bör se färre varningar.

Så ngn har modifierat ett antal rum (ändrat namn eller icon eller...) vilket har genererat ett 'RoomModifiedEvent'

Re: EventRunner

Posted: 17 Jul 2020, 12:12
by jang

Re: EventRunner

Posted: 17 Jul 2020, 16:59
by RH_Dreambox
@jang
Jag har lite problem med nya ER4 (0.2 fix1)
Mina Minimote slutade fungera i den versionen, och jag förstår inte riktigt vad du menar med att deklarera denna trigger separat.
Jag gjorde ett tafatt försök att skriva in sceneActivation på raden nedan, men det fungerade inte heller.
Skall den kanske inte heta sceneActivation?

Code: Select all

self:enableTriggerType({"device","global-variable","custom-event","sceneActivation"}) -- types of events we want

Re: EventRunner

Posted: 17 Jul 2020, 21:21
by jang
Sorry, specialfixen för sceneActivationEvent följde inte med till senaste releasen.
Jag har lagt upp en v 0.3 fix3 där det borde funka.
...och du behöver bara deklarera "device" som trigger.

Re: EventRunner

Posted: 18 Jul 2020, 09:37
by RH_Dreambox
@jang , är det inte tänkt så att man skall kunna ladda ned lua-koden av ER4 och kopiera över den gamla koden?
När jag gör på det sättet craschar QA med ett felmeddelande på den sista raden (require("QA_toolbox")).

[2020-07-18] [09:27:13] [ERROR] [QUICKAPP67]: QuickApp crashed
[2020-07-18] [09:27:13] [ERROR] [QUICKAPP67]: line: 1970 attempt to call a nil value (global 'require')

Att installera en ny QA varje gång medför att dess ID vandrar iväg på ett allt högre nummer. Det vore trevligt om jag kunde behållit samma låga ID som den fick första gången.

EDIT:
Såg nu att det var ToolBox-delen som saknades i Lua-koden, så vi glömmer detta tills vidare :-)

Re: EventRunner

Posted: 18 Jul 2020, 14:15
by jang
Jag kommer snart att fixa autopatch funktionen- då löser det sig.
Jag är uppe i 1400+ i device nummer :D

Re: EventRunner

Posted: 24 Jul 2020, 12:33
by jang
jang wrote: 18 Jul 2020, 14:15 Jag kommer snart att fixa autopatch funktionen- då löser det sig.
Jag är uppe i 1400+ i device nummer :D
Ok, ny version ute.
Med nya firmware så kan QuickApps bestå av flera filer. ER4 är uppdelad i 3 filer, main, EventRunner och Toolbox. Man lägger in sina reglerna i 'main' filen. De andra ska man inte behöva röra. Det finns dessutom ett exempel på en regel som kollar om det har kommit någon ny version av "EventRunner" eller "Toolbox" och en bortkommenterad regel som autopatchar dem isåfall.

Re: EventRunner

Posted: 15 Aug 2020, 09:18
by RH_Dreambox
@jang
Den senaste uppdateringen vill sig inte av någon anledning. Säger dig loggen något?
EDIT: Skall det stå Util.updayeFile eller skulle det stått Util.updateFile?

[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: ------------------------------------- Setting up rules (main) -------------------------------------
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: Rule:1[minimote:scene==1 => log('Activation:%s',env.event); lightAeon:on] = OK
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: Rule:2[minimote:scene==2 => log('Activation:%s',env.event); lightAeon:off] = OK
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: Rule:3[minimote:scene==3 => lightTBK:on] = OK
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: Rule:4[minimote:scene==4 => lightTBK:off] = OK
[2020-08-15] [09:14:08] [TRACE] [QUICKAPP115]: Catching up:Rule:5[@{catch,05:00} => Util.checkForUpdates()]
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: Rule:5[@{catch,05:00} => Util.checkForUpdates()] = OK
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: Rule:6[#File_update{} => log('New file version:%s - %s',env.event.file,env.event.versio...] = OK
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: Rule:7[#File_update{} => Util.updayeFile(env.event.file)] = OK
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: --------------------------------------------- Running ---------------------------------------------
[2020-08-15] [09:14:08] [DEBUG] [QUICKAPP115]: [true]>>'Rule:5[@{catch,05:00} => Util.checkForUpdates()]'
[2020-08-15] [09:14:09] [DEBUG] [QUICKAPP115]: [{"type":"File_update"}]>>'Rule:6[#File_update{} => log('New file version:%s - %s',env.event.file,env.event.versio...]'
[2020-08-15] [09:14:09] [TRACE] [QUICKAPP115]: New file version:EventRunner4Engine.lua - v0.5fix3
[2020-08-15] [09:14:09] [DEBUG] [QUICKAPP115]: [{"type":"File_update"}]>>'Rule:7[#File_update{} => Util.updayeFile(env.event.file)]'
[2020-08-15] [09:14:09] [ERROR] [QUICKAPP115]: in Rule:7[#File_update{} => Util.updayeFile(env.event.file)]: {"msg":"Error executing instruction:'[\"%calls\",2]'","src":"Rule:7[#File_update{} => Util.updayeFile(env.event.file)]","ERR":true,"err":".\/include\/EventRunner.lua:1593: No such function:nil"}

Re: EventRunner

Posted: 15 Aug 2020, 09:28
by jang
Yep, felstavning
updayeFile -> updateFile

Re: EventRunner

Posted: 23 Sep 2020, 09:33
by MastrUsr
Tjena! Försökte men failade...

Vill få en notis i telefonen när klockan är 21:30 och en enhets värde är skilt från 0, gärna var 15 min (max 3 gånger inkl. 21:30) om tillståndet kvarstår.

Jag kom inte längre än så här, men det funkade inte...

rule("@21:30 & portstatus != 0 => telefon.eric:msg=('Garageporten är öppen')")

Re: EventRunner

Posted: 23 Sep 2020, 12:33
by forumadmin
jang wrote: 14 Jul 2020, 10:26 Hej, jag har ingen 'sceneActivation' device numera så jag hade en bug i ER4.
Tyvärr verkar det som om eventformatet har ändrats mellan HC2 och HC3 så jag är lite osäker vad som är korrekt.
Jag har lagt upp en ny version av EventRunner4 på min GitHub (fix4) https://github.com/jangabrielsson/EventRunner som kanske funkar med sceneActivation

Kan du modifiera regeln såhär och testa och posta log meddelande. Jag är intresserad av hur hela sceneActivation eventet ser ut nuförtiden.

Code: Select all

 rule("minimote:scene==1 => log('Activation:%s',env.event); lightAeon:on")     -- Tänd Aeon
 
Om den inte triggar så kan du prova

Code: Select all

 rule("minimote:scene => log('Activation:%s',env.event)") 
 
...så att vi får se eventet.
P.S Vilka filformat får man attacha till en post? Gick inte att lägga upp .fqa verkar det som.
Detta ska vara åtgärdat nu, beklagar dröjsmålet!
Har du lust att lägga upp en ny tråd för EventRunner4 med filen och en snabb intro?

Re: EventRunner

Posted: 05 Oct 2020, 11:28
by MastrUsr
Jag är en pajas och glömde att man använder ~= i lua och inte !=.

Code: Select all

rule("@21:30 & läsare1.portstatus:value~=0 => telefon.eric:msg=('Garageporten är öppen')")
Jag verkar även fått till repeat, efter lite tragglande :)

Code: Select all

rule([[läsare1.portstatus==0 & @21:30 => tid=now+00:50; repeat telefon.eric:msg=('Garageporten är öppen'); wait(15:00); until now>tid | läsare1.portstatus==0; telefon.eric:msg=('Garageporten är stängd')]])
MastrUsr wrote: 23 Sep 2020, 09:33 Tjena! Försökte men failade...

Vill få en notis i telefonen när klockan är 21:30 och en enhets värde är skilt från 0, gärna var 15 min (max 3 gånger inkl. 21:30) om tillståndet kvarstår.

Jag kom inte längre än så här, men det funkade inte...

rule("@21:30 & portstatus != 0 => telefon.eric:msg=('Garageporten är öppen')")

Re: EventRunner

Posted: 05 Oct 2020, 16:28
by jang
MastrUsr wrote: 05 Oct 2020, 11:28 Jag är en pajas och glömde att man använder ~= i lua och inte !=.

Code: Select all

rule("@21:30 & läsare1.portstatus:value~=0 => telefon.eric:msg=('Garageporten är öppen')")
Jag verkar även fått till repeat, efter lite tragglande :)

Code: Select all

rule([[läsare1.portstatus==0 & @21:30 => tid=now+00:50; repeat telefon.eric:msg=('Garageporten är öppen'); wait(15:00); until now>tid | läsare1.portstatus==0; telefon.eric:msg=('Garageporten är stängd')]])
MastrUsr wrote: 23 Sep 2020, 09:33 Tjena! Försökte men failade...

Vill få en notis i telefonen när klockan är 21:30 och en enhets värde är skilt från 0, gärna var 15 min (max 3 gånger inkl. 21:30) om tillståndet kvarstår.

Jag kom inte längre än så här, men det funkade inte...

rule("@21:30 & portstatus != 0 => telefon.eric:msg=('Garageporten är öppen')")
Ursäkta, jag hade missat den här frågan... men du löste det :-)
Ska det inte vara "@21:30 & läsare1.portstatus>0 ...." dvs öppen är status > 0

Man kan skriva en sådan här. regel på lite olika sätt. Ett annat är trueFor...repeat

Code: Select all

rule("@21:15 & trueFor(00:15,läsare1.portstatus>0) =>  telefon.eric:msg=('Garageporten är öppen'); repeat(3)")
rule([[läsare1.portstatus==0 &  21:30..22:30 =>  telefon.eric:msg=('Garageporten är stängd')")
...eller en while loop. Här kan man fråga sig vad som ska hända om porten fortfarande är öppen efter 3 påminnelser

Code: Select all

rule([[@21:15 =>
           local t=now; 
           while läsare1.portstatus>0 & t+00:50 > now do 
                  telefon.eric:msg=('Garageporten är öppen'); 
                  wait(00:15) 
            end;  
            if läsare1.portstatus>0 then 
                  telefon.frugan:msg=('Eric har fortfarande inte stängt garageporten!')
            else  
                  telefon.eric:msg=('Garageporten är stängd')
            end]])

Re: EventRunner

Posted: 06 Oct 2020, 08:25
by MastrUsr
Självklart smög det in sig ett fel... Det kan vara läsare1.portstatus>0 men jag väljer att använda läsare1.portstatus~=0. Varför? Tja...

Det där med frugan var ju en mycket bra idé! Kommer aldrig glömma garaget mer än en gång! :twisted: Snor den istället, tack!