EventRunner 4 - QuickApp HC3

Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

Tror jag har hittat en ny Bugg eller bugg i fibaros grejer Jang jag har en fibaro switch on off till min portbelysning och om jag använder
denna rad så fungerar det inte .

Code: Select all

rule("@{catch,03:40} & Garageportenbel:isOn & wday('mon-sat') => GarageportBel:off")
får detta fel

Code: Select all

[2021-08-12] [17:08:36] [ERROR] [QUICKAPP582]: in Rule:43[@{catch,03:40} & Garageportenbel:isOn & wday('mon-sat') => GarageportBel:off]: attempt to get length of a nil value
Men tar jag bort catch så fungerar den..

Code: Select all

rule("@03:40 & Garageportenbel:isOn & wday('mon-sat') => GarageportBel:off")
Har även catch på tändnigen där får jag inget fel alls

Code: Select all

rule("@{catch,sunset+01:20} & wday('mon-fri') => GarageportBel:on")
Detta är ju ingen stor grej e ju bara köra utan catch så e det löst
kör senaste versionen av Eventrunner 4

Men så du vet :) ha en fin dag
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 360
Joined: 05 Jan 2014, 00:44
7
Location: Stockholm

Håller med om att felmeddelandet inte är så bra, men

Code: Select all

rule("@{catch,03:40} & Garageportenbel:isOn & wday('mon-sat') => GarageportBel:off")
har 2 olika stavningar av Garageportenbel/GarageportBel... är det två olika enheter?
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

jang wrote: 13 Aug 2021, 08:47 Håller med om att felmeddelandet inte är så bra, men

Code: Select all

rule("@{catch,03:40} & Garageportenbel:isOn & wday('mon-sat') => GarageportBel:off")
har 2 olika stavningar av Garageportenbel/GarageportBel... är det två olika enheter?
Tack hehe det såg jag inte ens aja så är det har väll ändrat det någon gång under resan har nu tagit bort så det är samma
tack för hjälpen :) önskar dig en trevlig helg
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

Hallå alla hoppas allt är väl med er där ute .
Har ett problem försöker göra så att om dörren öppnas och ingen lampa e tänd så ska den tända en spotlight som jag har i taket
men som det är nu tänds lampan om jag tänder någon annan lampa som är med i koden .. Någon som sitter på ett svar varför den gör så ? använder is:Off för att kolla att belysningen e släckt..

Code: Select all

Koksdorrsbel = 616  koksdorrsensor = 643 kokfonster = 638 kokso = 606 spotkylfrys = 586 Takspottarbets = 591 Luxsensorer = {339,417,428}
rule("koksdorrsensor:breached & 22:00..05:00  & kokso:isOff | spotkylfrys:isOff | Takspottarbets:isOff => Koksdorrsbel:value=10")
rule("trueFor(00:02,koksdorrsensor:safe) & Koksdorrsbel:isOn => Koksdorrsbel:off")
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 360
Joined: 05 Jan 2014, 00:44
7
Location: Stockholm

Den första regeln ska använda AND '&' istället för OR '|'.

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & kokso:isOff & spotkylfrys:isOff & Takspottarbets:isOff => Koksdorrsbel:value=10")
Det läses som "om dörren öppen och alla lampor släckta och tid är 22:00-05:00 då ..."

Om du ville att den ska tändas om någon lampa är släckt, använder du OR

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & (kokso:isOff | spotkylfrys:isOff | Takspottarbets:isOff) => Koksdorrsbel:value=10")
Observera att man måste använda paranteser runt OR testerna eftersom AND binder hårdare (har högre prioritet, Utan paranteser hade det tolkats som

Code: Select all

rule("(koksdorrsensor:breached & 22:00..05:00 & kokso:isOff) | spotkylfrys:isOff | Takspottarbets:isOff => Koksdorrsbel:value=10")
...vilket inte är vad vi ville.

Om man har ett antal enheter man vill göra samma test på kan man gruppera dem i den lista.

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & {kokso:,spotkylfrys,Takspottarbets}:isOff => Koksdorrsbel:value=10")
Samma som mitt första exempel.

Regel 2 borde funka som den är.
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

jang wrote: 02 Nov 2021, 07:39 Den första regeln ska använda AND '&' istället för OR '|'.

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & kokso:isOff & spotkylfrys:isOff & Takspottarbets:isOff => Koksdorrsbel:value=10")
Det läses som "om dörren öppen och alla lampor släckta och tid är 22:00-05:00 då ..."

Om du ville att den ska tändas om någon lampa är släckt, använder du OR

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & (kokso:isOff | spotkylfrys:isOff | Takspottarbets:isOff) => Koksdorrsbel:value=10")
Observera att man måste använda paranteser runt OR testerna eftersom AND binder hårdare (har högre prioritet, Utan paranteser hade det tolkats som

Code: Select all

rule("(koksdorrsensor:breached & 22:00..05:00 & kokso:isOff) | spotkylfrys:isOff | Takspottarbets:isOff => Koksdorrsbel:value=10")
...vilket inte är vad vi ville.

Om man har ett antal enheter man vill göra samma test på kan man gruppera dem i den lista.

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & {kokso:,spotkylfrys,Takspottarbets}:isOff => Koksdorrsbel:value=10")
Samma som mitt första exempel.

Regel 2 borde funka som den är.
Tack jang ska absolut testa detta :) du är en klippa visste inte det gick att sammans sätta lamaporna så blir fixa detta i morgon
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

jang wrote: 02 Nov 2021, 07:39 Den första regeln ska använda AND '&' istället för OR '|'.

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & kokso:isOff & spotkylfrys:isOff & Takspottarbets:isOff => Koksdorrsbel:value=10")
Det läses som "om dörren öppen och alla lampor släckta och tid är 22:00-05:00 då ..."

Om du ville att den ska tändas om någon lampa är släckt, använder du OR

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & (kokso:isOff | spotkylfrys:isOff | Takspottarbets:isOff) => Koksdorrsbel:value=10")
Observera att man måste använda paranteser runt OR testerna eftersom AND binder hårdare (har högre prioritet, Utan paranteser hade det tolkats som

Code: Select all

rule("(koksdorrsensor:breached & 22:00..05:00 & kokso:isOff) | spotkylfrys:isOff | Takspottarbets:isOff => Koksdorrsbel:value=10")
...vilket inte är vad vi ville.

Om man har ett antal enheter man vill göra samma test på kan man gruppera dem i den lista.

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & {kokso:,spotkylfrys,Takspottarbets}:isOff => Koksdorrsbel:value=10")
Samma som mitt första exempel.

Regel 2 borde funka som den är.
Hej jang får ett fel när jag testar koden

Code: Select all

[2021-11-04] [00:03:41] [ERROR] [QUICKAPP582]: Error in 'koksdorrsensor:breached & 18:00..22:00 & {kokso:,spotkylfrys,Takspottarbets}:isOff => Koksdorrsbel:value=60': ./include/EventRunner.lua:2060: attempt to index a nil value (field '?')[2021-11-04] [00:03:41] [ERROR] [QUICKAPP582]: main() error:./include/EventRunner.lua:2372: Main() ERROR:./include/EventRunner.lua:2207: ./include/EventRunner.lua:2060: attempt to index a nil value (field '?')

Code: Select all

Koksdorrsbel = 616  koksdorrsensor = 643 kokfonster = 638 kokso = 606 spotkylfrys = 586 Takspottarbets = 591 Luxsensorer = {339,417,428}
Lux_Matbordet = 339 
rule("koksdorrsensor:breached & 18:00..22:00 & {kokso:,spotkylfrys,Takspottarbets}:isOff => Koksdorrsbel:value=60")
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 360
Joined: 05 Jan 2014, 00:44
7
Location: Stockholm

Sorry, min bug. Ingent : efter kokso i listan av enheter.

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & {kokso,spotkylfrys,Takspottarbets}:isOff => Koksdorrsbel:value=10")
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

jang wrote: 04 Nov 2021, 19:22 Sorry, min bug. Ingent : efter kokso i listan av enheter.

Code: Select all

rule("koksdorrsensor:breached & 22:00..05:00 & {kokso,spotkylfrys,Takspottarbets}:isOff => Koksdorrsbel:value=10")
tackar det fungerar ..

Tänkte att den hörd nog inte hemma där ..
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 360
Joined: 05 Jan 2014, 00:44
7
Location: Stockholm

Jag har jobbat lite med att hitta ett bättre sätt att uppdatera ER4 på.
Jag har kommit upp med en ny QA, 'QAUpdater' som gör jobbet
https://forum.fibaro.com/topic/31180-tu ... ent=239026

Fördelen är att man kan installera olika versioner av ER4 och backa till den föregående om ngt skulle bli fel.

Just nu kan man upgrade till v0.66 som är en ny version som bygger på mitt 'fibaroExtra.lua' bibliotek, så det är en ganska stor omskrivning. Fördelen är att det är lättare att jobba med och delas med mina andra QAs jag utvecklar vilket gör att buggar hittas fortare.

QAUpdater kan också installer en ny kopia av ER4 (av önskad version) så det är en ganska bra QA för att installera ER4 med också.

Den är fortfarande ganska ny men jag har testat ett tag och själva QAUpdater verkar fungera ganska bra, men det kan fortfarande vara buggar i ER4 v0.66 - men det ska alltid gå att backa.

Över tid kommer en del av mina andra QAs att gå att installera/uppgradera med den också (just nu bara ChildrenOfHue samt QAUpdater själv).

För tillfället kan inte ER4 uppdatera sig själv men det kommer en version där reglerna ser likadana ut men den pratar med QAUpdater för att göra jobbet - det vill säga, om man vill ha automatisk uppdatering och skrämma familjen när alla lampor går på mitt i natten :-)
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

jang wrote: 15 Nov 2021, 21:14 Jag har jobbat lite med att hitta ett bättre sätt att uppdatera ER4 på.
Jag har kommit upp med en ny QA, 'QAUpdater' som gör jobbet
https://forum.fibaro.com/topic/31180-tu ... ent=239026

Fördelen är att man kan installera olika versioner av ER4 och backa till den föregående om ngt skulle bli fel.

Just nu kan man upgrade till v0.66 som är en ny version som bygger på mitt 'fibaroExtra.lua' bibliotek, så det är en ganska stor omskrivning. Fördelen är att det är lättare att jobba med och delas med mina andra QAs jag utvecklar vilket gör att buggar hittas fortare.

QAUpdater kan också installer en ny kopia av ER4 (av önskad version) så det är en ganska bra QA för att installera ER4 med också.

Den är fortfarande ganska ny men jag har testat ett tag och själva QAUpdater verkar fungera ganska bra, men det kan fortfarande vara buggar i ER4 v0.66 - men det ska alltid gå att backa.

Över tid kommer en del av mina andra QAs att gå att installera/uppgradera med den också (just nu bara ChildrenOfHue samt QAUpdater själv).

För tillfället kan inte ER4 uppdatera sig själv men det kommer en version där reglerna ser likadana ut men den pratar med QAUpdater för att göra jobbet - det vill säga, om man vill ha automatisk uppdatering och skrämma familjen när alla lampor går på mitt i natten :-)
Har tagit ner den och ska testa :)
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

Har en liten fundering ..

Hittade denna koden till Eventrunner men den vill sig inte fungera i eventrunner 4
skulle fungera utmärkt om man vill hitta på något med s1 knappen så man kan stänga av det automatiska och sätta belysning till manuell 7
nu vet jag ju att detta är winter sommar regler men det går ju modifiera undrar fungerar Event.section
@jang ?

Code: Select all

Event.SECTION='Winter'      -- Winter rules

Rule.eval("@sunset => xmasTree:on")      

Event.SECTION='Summer'     -- Summer rules

Rule.eval("@sunset => lamp:on")      

Event.SECTION=nil     -- rest of rules doesn't belong to any section

Rule.eval([[@{catch,00:00} =>       
	|| month('dec-jan') >> enable('Winter'); disable('Summer')
	|| month('jun-aug') >> enable('Summer'); disable('Winter')
	]])
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 360
Joined: 05 Jan 2014, 00:44
7
Location: Stockholm

'Event' är inte fördefinerad längre men finns i self.EM.
Gör såhär:

Code: Select all

local Event = self.EM
Event.SECTION='Winter'      -- Winter rules

Rule.eval("@sunset => xmasTree:on")      

Event.SECTION='Summer'     -- Summer rules

Rule.eval("@sunset => lamp:on")      

Event.SECTION=nil     -- rest of rules doesn't belong to any section

Rule.eval([[@{catch,00:00} =>       
	|| month('dec-jan') >> enable('Winter'); disable('Summer')
	|| month('jun-aug') >> enable('Summer'); disable('Winter')
	]])
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

Hallå i kylan Har en fundering och jag har inte en susning hur mn gör detta inte ens säkert det går eller är kanske för jobbigt att göra men får ju ställa frågan i allfall..

kan man hämta en tid från en global veriabel och sätta in den i rule("trueFor(00:05,sensor:safe)
I trueFor tiden 00:05 delvis så om man kan ändra tiden genom en Quick App med hjälp av en Globalvariabel Tex

Så TrueFor( $Tid == 'Value',sensor:safe ? delvis den läser siffrorna från variablen... Hoppas ni förstår

Jag har ju gjort så här som test och det fungerar ju om man har gjort några förinställda tider i en variabel som den kan välja .
och detta kan ju säkert snyggas till dock så det blir mindre rader kod.. Funderar på att kunna göra lite Qa styrningar av rumen delvis finns en qa per rum så kan man ändra värdena i det rummet..
Har lyckats göra en till Min dotters rum där hon kan styra om det ska vara i gång ändra lite men det blir väldigt mycket kod ..

Code: Select all

rule("trueFor(00:20,Rorelse_Rum2:safe) & $Rum2_Auto_Off=='20' & Taklampan_Rum2:isOn & 06:00..21:00 & $Styrning=='On'=> log('Bel tak (Släcker Belysning) ingen rörelse 20 Min Rum2'); Taklampan_Rum2:off")

rule("trueFor(00:15,Rorelse_Rum2:safe) & $Rum2_Auto_Off=='15' & Taklampan_Rum2:isOn  & 06:00..21:00 & $Styrning=='On'=> log('Bel tak (Släcker Belysning) ingen rörelse 15 Min Rum2'); Taklampan_Rum2:off")

Ha en go Dag /kväll Natt nu och alla ideer är absolut välkommna oavsett :)
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 360
Joined: 05 Jan 2014, 00:44
7
Location: Stockholm

Ja, det funkar faktiskt.
När ett värde är läses från en global variable (som alltid är en sträng) så konverteras den om möjligt.
OM det ser ut som en tid "HH:MM" eller "HH:MM:SS" så konverteras den till en tid.
En "tid" är minuter is sekunder. Så 10:00 representeras som 36000 i ER.
Om det är en json kodad tabell så konverteras den till en tabell.
Om det är strängen "true" eller "false" konverteras det till en boolean.

Code: Select all

 rule("$V='10:00'")
 rule("trueFor($V, 77:isOn) => log('ON')")
kollar om dev 77 är på I 10 timmar.

Code: Select all

 rule("$V={a = 44, b=77}")
 rule("log('b=%s', $V.b')")
Här händer det en del. Tilldelningen i första regeln json kodar tabellen innan den sätter den globala variablen.
Andra regeln hämtar värde, packar upp json värdet och hämtar nyckeln 'b'
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

jang wrote: 30 Nov 2021, 07:37 Ja, det funkar faktiskt.
När ett värde är läses från en global variable (som alltid är en sträng) så konverteras den om möjligt.
OM det ser ut som en tid "HH:MM" eller "HH:MM:SS" så konverteras den till en tid.
En "tid" är minuter is sekunder. Så 10:00 representeras som 36000 i ER.
Om det är en json kodad tabell så konverteras den till en tabell.
Om det är strängen "true" eller "false" konverteras det till en boolean.

Code: Select all

 rule("$V='10:00'")
 rule("trueFor($V, 77:isOn) => log('ON')")
kollar om dev 77 är på I 10 timmar.

Code: Select all

 rule("$V={a = 44, b=77}")
 rule("log('b=%s', $V.b')")
Här händer det en del. Tilldelningen i första regeln json kodar tabellen innan den sätter den globala variablen.
Andra regeln hämtar värde, packar upp json värdet och hämtar nyckeln 'b'
Får ta och testa och se om det fungerar.. hade ju minskat kodraderna en hel del och man skulle ju kunna ändra en hel del med hjälp av en qa i ett rum utan att fysikt gåin och ändra raderna..

Har en fundering som jag stirra mig riktigt trött på i går kväll/natt och det är ta ut värdet från "value" på en lampa så den skriver ut det i en qa så man kan se aktuellt värde på en lampa.. Har läst om Tabel mm på fibaro forumet men blir inte klokare .... Aja börjar med den första vinsten att kunna ändra Truefor
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
Systemfel
Medlem
Posts: 338
Joined: 14 Jan 2015, 01:02
6

jang wrote: 30 Nov 2021, 07:37 Ja, det funkar faktiskt.
När ett värde är läses från en global variable (som alltid är en sträng) så konverteras den om möjligt.
OM det ser ut som en tid "HH:MM" eller "HH:MM:SS" så konverteras den till en tid.
En "tid" är minuter is sekunder. Så 10:00 representeras som 36000 i ER.
Om det är en json kodad tabell så konverteras den till en tabell.
Om det är strängen "true" eller "false" konverteras det till en boolean.

Code: Select all

 rule("$V='10:00'")
 rule("trueFor($V, 77:isOn) => log('ON')")
kollar om dev 77 är på I 10 timmar.

Code: Select all

 rule("$V={a = 44, b=77}")
 rule("log('b=%s', $V.b')")
Här händer det en del. Tilldelningen i första regeln json kodar tabellen innan den sätter den globala variablen.
Andra regeln hämtar värde, packar upp json värdet och hämtar nyckeln 'b'
Det fungerar riktigt bra :) så nu spånar man vidare på detta Tack Jang
Det fungerar att ändra 66:value= $test ") ljus styrkan med bara man har ett mellan rum mellan = & $test ..


Nu har jag hittat en bugg och det är inte din utan fibaros och det är att användare med appel telefoner inte kan öppna en egen gjord Qa trots man har gett den alla rättigheter ..

Nu verkar det fungera mycket skummt detta.. ajja

Tack Jang än engång Du e grym :)
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
Post Reply