EventRunner 4 - QuickApp HC3

Systemfel
Medlem
Posts: 364
Joined: 14 Jan 2015, 01:02
7

Systemfel wrote: 14 Jul 2022, 18:06
jang wrote: 14 Jul 2022, 09:23 Jag uppdaterade just ER4 och adderade support för autoupdate med hjälp av regler som förr.
Men, QAUpdater måste vara installerad eftersom ER4 numera ber QAUpdater att bli uppdaterad...
...och om det blir fel kan man gå in i QAUpdater och backa ER4 versionen...
Det finns en aktuell diskussion i Fibaro forumet och eventrunner tråden om det.
Perfekt Men hoss mig vill den inte uppdatera den vill inte ens lägga in eventrunner så det går att uppdatera den. ska testa ta ner en ny eventrunner och ladda in den filen. kan ju vara så att det har hänt något med alla uppdateringar mm eller om man råkat radera något.. reglerna kan man ju bara lätt föra över

Tog en ny fil och får den att uppdatera till denna version.
[2022-07-14] [19:02:35] [DEBUG] [QUICKAPP763]: QA EventRunner 4 - version:v0.5fix80 (QA toolbox 0.25)
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 379
Joined: 05 Jan 2014, 00:44
8
Location: Stockholm

Om du lägger in QAUpdater så kan du välja "Install" knappen så installerar den EventRunner åt dig.
Klicka först på <Updates> för att välja EventRunner4
Sedan på <version> så att det blir sista versionen (0.83)
och klicka sedan på <Install> då får du en ny ER QA som du kan föra över reglerna till.

Tyvärr fungerar QA UI dåligt i nuvarande FW from Fibaro så att man kan behöva flippa mellan tabbar för att se uppdateringar på labels. Jag brukar hoppa mellan "Variables" och "Edit & Preview" tabben.

Dessutom håller jag med om att mitt val av knappar etc inte är det mest intuitiva - men det var svårt att få till ngt bra.
Systemfel
Medlem
Posts: 364
Joined: 14 Jan 2015, 01:02
7

jang wrote: 14 Jul 2022, 21:48 Om du lägger in QAUpdater så kan du välja "Install" knappen så installerar den EventRunner åt dig.
Klicka först på <Updates> för att välja EventRunner4
Sedan på <version> så att det blir sista versionen (0.83)
och klicka sedan på <Install> då får du en ny ER QA som du kan föra över reglerna till.

Tyvärr fungerar QA UI dåligt i nuvarande FW from Fibaro så att man kan behöva flippa mellan tabbar för att se uppdateringar på labels. Jag brukar hoppa mellan "Variables" och "Edit & Preview" tabben.

Dessutom håller jag med om att mitt val av knappar etc inte är det mest intuitiva - men det var svårt att få till ngt bra.
Jag har nu lyckats uppdatera till version 0.82

Uppdatering Ahhh Nu förstog jag hur den funka sorry man e så trög i bland..
testade version 0.84 men där kan jag inte stänga av debug alls så den liksom flödar hela så kör 0.82 så länge.

Får dock ett konstigt meddelande på mina sensorer där jag har flera lux mätare..
[2022-07-15] [17:03:26] [TRACE] [QUICKAPP763]: Luxvärdet i Huset:table: 0xaaaad27c1dd0

kanske behöver skriva om det på något sätt när det är medel på luxen från flera sensorer ?
koden ser ut så här

Code: Select all

Luxsensorshuset={339,417,428}
rule("(average(Luxsensorshuset:lux)) & $Styrning=='On' => log('Luxvärdet i Huset:%s',Luxsensorshuset:lux)")
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 379
Joined: 05 Jan 2014, 00:44
8
Location: Stockholm

I början av main så kan du slå av vissa debugflaggor.

Code: Select all

_debugFlags.trigger = false -- log incoming triggers.   SLÅ AV
_debugFlags.trigger2 = false -- log incoming triggers SLÅ AV
_debugFlags.sourceTrigger = false -- SLÅ AV
_debugFlags.fcall=true     -- log fibaro.call
_debugFlags.post = true    -- log internal posts
_debugFlags.rule=true      -- log rules being invoked (true or false)
_debugFlags.ruleTrue=true  -- log only rules that are true
_debugFlags.pubsub=true    -- log only rules that are true
_debugFlags.extendedErrors=true
------------- Put your rules inside QuickApp:main() -------------------

function QuickApp:main()    -- EventScript version
  local rule = function(...) return self:evalScript(...) end          -- old rule function
  self:enableTriggerType({"device","global-variable","custom-event","profile","alarm","location","quickvar","user"}) -- types of events we want
  fibaro.debugFlags.sourceTrigger=false -- SLÅ AV 
  local HT = { 
    keyfob = 26, 
    motion= 21,
    temp = 22,
    lux = 23,
  }
Problemet med din regel är att
Luxsensorshuset:lux
returnerar en lua table med lux värdena för devices i Luxsensorshuset.
Du räknar ut average på den i början av regeln.
Om du vill logga värdet så får du räkna ut det igen.
I din regel så räknar du ut average men du använder inte värdet till ngt,
Skulle göra såhär

Code: Select all

Luxsensorshuset={339,417,428}
X = 200
rule("Luxsensorshuset:lux & $Styrning=='On' => log('Luxvärdet i Huset:%s',average(Luxsensorshuset:lux))").start()
rule("once(average(Luxsensorshuset:lux) > X) & $Styrning=='On' => log('Luxvärdet I Huset > %s',X)").start()
rule("once(average(Luxsensorshuset:lux) <= X) & $Styrning=='On' => log('Luxvärdet I Huset <= %s',X)").start()
.start() gör att regeln körs direkt när den definieras. Annars kommer regeln att köras första gången då ngt lux värde ändras.
once(...) gör att villkoret blir sant så måste det bli falskt innan det kan bli sant igen. Det gör att vi bara triggar en gång då vi är över X och under X
Systemfel
Medlem
Posts: 364
Joined: 14 Jan 2015, 01:02
7

jang wrote: 16 Jul 2022, 09:29 I början av main så kan du slå av vissa debugflaggor.

Code: Select all

_debugFlags.trigger = false -- log incoming triggers.   SLÅ AV
_debugFlags.trigger2 = false -- log incoming triggers SLÅ AV
_debugFlags.sourceTrigger = false -- SLÅ AV
_debugFlags.fcall=true     -- log fibaro.call
_debugFlags.post = true    -- log internal posts
_debugFlags.rule=true      -- log rules being invoked (true or false)
_debugFlags.ruleTrue=true  -- log only rules that are true
_debugFlags.pubsub=true    -- log only rules that are true
_debugFlags.extendedErrors=true
------------- Put your rules inside QuickApp:main() -------------------

function QuickApp:main()    -- EventScript version
  local rule = function(...) return self:evalScript(...) end          -- old rule function
  self:enableTriggerType({"device","global-variable","custom-event","profile","alarm","location","quickvar","user"}) -- types of events we want
  fibaro.debugFlags.sourceTrigger=false -- SLÅ AV 
  local HT = { 
    keyfob = 26, 
    motion= 21,
    temp = 22,
    lux = 23,
  }
Jo jag skrev false på debug reglerna men endån kom det upp hela tiden ska testa igen . för det fungerar på version 0.82
det är förmodligen jag som gör fel ..


Problemet med din regel är att
Luxsensorshuset:lux
returnerar en lua table med lux värdena för devices i Luxsensorshuset.
Du räknar ut average på den i början av regeln.
Om du vill logga värdet så får du räkna ut det igen.
I din regel så räknar du ut average men du använder inte värdet till ngt,
Skulle göra såhär

Code: Select all

Luxsensorshuset={339,417,428}
X = 200
rule("Luxsensorshuset:lux & $Styrning=='On' => log('Luxvärdet i Huset:%s',average(Luxsensorshuset:lux))").start()
rule("once(average(Luxsensorshuset:lux) > X) & $Styrning=='On' => log('Luxvärdet I Huset > %s',X)").start()
rule("once(average(Luxsensorshuset:lux) <= X) & $Styrning=='On' => log('Luxvärdet I Huset <= %s',X)").start()
.start() gör att regeln körs direkt när den definieras. Annars kommer regeln att köras första gången då ngt lux värde ändras.
once(...) gör att villkoret blir sant så måste det bli falskt innan det kan bli sant igen. Det gör att vi bara triggar en gång då vi är över X och under X
okej ska testa det . jo jag använder värdena i några Ruls faktist samtidigt som jag plockar ut dom med den reglen för att se
tack för svar och hjälp ska labborera lite med detta i kväll :)
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
Systemfel
Medlem
Posts: 364
Joined: 14 Jan 2015, 01:02
7

jang wrote: 16 Jul 2022, 09:29 I början av main så kan du slå av vissa debugflaggor.

Code: Select all

_debugFlags.trigger = false -- log incoming triggers.   SLÅ AV
_debugFlags.trigger2 = false -- log incoming triggers SLÅ AV
_debugFlags.sourceTrigger = false -- SLÅ AV
_debugFlags.fcall=true     -- log fibaro.call
_debugFlags.post = true    -- log internal posts
_debugFlags.rule=true      -- log rules being invoked (true or false)
_debugFlags.ruleTrue=true  -- log only rules that are true
_debugFlags.pubsub=true    -- log only rules that are true
_debugFlags.extendedErrors=true
------------- Put your rules inside QuickApp:main() -------------------

function QuickApp:main()    -- EventScript version
  local rule = function(...) return self:evalScript(...) end          -- old rule function
  self:enableTriggerType({"device","global-variable","custom-event","profile","alarm","location","quickvar","user"}) -- types of events we want
  fibaro.debugFlags.sourceTrigger=false -- SLÅ AV 
  local HT = { 
    keyfob = 26, 
    motion= 21,
    temp = 22,
    lux = 23,
  }
Problemet med din regel är att
Luxsensorshuset:lux
returnerar en lua table med lux värdena för devices i Luxsensorshuset.
Du räknar ut average på den i början av regeln.
Om du vill logga värdet så får du räkna ut det igen.
I din regel så räknar du ut average men du använder inte värdet till ngt,
Skulle göra såhär

Code: Select all

Luxsensorshuset={339,417,428}
X = 200
rule("Luxsensorshuset:lux & $Styrning=='On' => log('Luxvärdet i Huset:%s',average(Luxsensorshuset:lux))").start()
rule("once(average(Luxsensorshuset:lux) > X) & $Styrning=='On' => log('Luxvärdet I Huset > %s',X)").start()
rule("once(average(Luxsensorshuset:lux) <= X) & $Styrning=='On' => log('Luxvärdet I Huset <= %s',X)").start()
.start() gör att regeln körs direkt när den definieras. Annars kommer regeln att köras första gången då ngt lux värde ändras.
once(...) gör att villkoret blir sant så måste det bli falskt innan det kan bli sant igen. Det gör att vi bara triggar en gång då vi är över X och under X

Hej Igen :)
Jag funderar på hur man kan ändra deciamal eller rentav ta bort det så det visar tex 114,3 ex eller bara heltal 114 ? antar att det kanske blir mycket kod ?
eller det kasnek inte går utan att skriva fyra sidor kod ?
2022-07-19] [07:20:39] [TRACE] [QUICKAPP763]: Luxvärdet i Huset:114.33333333333
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
jang
Medlem
Posts: 379
Joined: 05 Jan 2014, 00:44
8
Location: Stockholm

Så, log() använder string.format för att formatera utskriften. Vanligen använder vi '%s' för att skriva ut ett värde. %s gör i princip tostring() på värden, så ett decimaltal får så många decimaler som det finns.
Men, det finns många andra formateringskoder.
%f skriver ut ett decimaltal, och vi kan specificera antal med %.xf där x är antal decimaler.

Code: Select all

log("Värde är %1.f',math.pi)
skriver ut avrundat till en decimal

Code: Select all

log("Värde är %0.f',math.pi) 
skriver ut avrundat till 0 decimaler - dvs ett heltal
Om du alltid vill ha 2 decimaler (ex. 3.1 ska skrivas 3.10) så blir det

Code: Select all

log("Värde är %02.f',3.1)
Systemfel
Medlem
Posts: 364
Joined: 14 Jan 2015, 01:02
7

jang wrote: 20 Jul 2022, 06:20 Så, log() använder string.format för att formatera utskriften. Vanligen använder vi '%s' för att skriva ut ett värde. %s gör i princip tostring() på värden, så ett decimaltal får så många decimaler som det finns.
Men, det finns många andra formateringskoder.
%f skriver ut ett decimaltal, och vi kan specificera antal med %.xf där x är antal decimaler.

Code: Select all

log("Värde är %1.f',math.pi)
skriver ut avrundat till en decimal

Code: Select all

log("Värde är %0.f',math.pi) 
skriver ut avrundat till 0 decimaler - dvs ett heltal
Om du alltid vill ha 2 decimaler (ex. 3.1 ska skrivas 3.10) så blir det

Code: Select all

log("Värde är %02.f',3.1)
Tack Jang Funkar super duper
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
Systemfel
Medlem
Posts: 364
Joined: 14 Jan 2015, 01:02
7

Hej i värmen.. Jag såg på fibaros forum att du Jang Har börjat titta lite på #user

Code: Select all

rule("#user{id=2,value='action',data={id=756,actionName='turnOn'}} => log(' Kent har Öppnat  Garage porten')")
Har fått det att fungera med en fibaro plugg och garage porten och den visar user där eller ja vem som öppnat garageporten i log eller msg

Nu satt jag och funderade lite på User till låset på huset då jag har idlock Om någon öppnar via fibaro appen så hade ju det varit bra om man kunde se vem som öppnade låset med appen.

Tänkte jag kunde få att fungera men riktigt så enkelt var det ju inte.
användare e ju 2 och låset e729

Code: Select all

rule("#user{id=2,value='action',data={id=729,actionName='Lock'}} => log('Låset är låst')")

Code: Select all

rule("#Lock{id=729,mode='Manual',status='Unlock'} => log('Lås öppet - manuellt')")
Ha en riktigt fin dag :)
kör Hc3 och det fungerar bättre och bätttre sakta men säkert :D
Post Reply