Page 21 of 25

Re: EventRunner

Posted: 27 Mar 2020, 20:24
by sonnyboy
Vad är felet i denna rule den vill inte exekvera?
rule("@2020/3/27/19:19 => VD.julgran:btn=2")
Jag har såklart koll på tiden ;) men det kommer inget i loggen alla vid tidpunkten :?
Tar jag bort @ så kommer detta i loggen,
[DEBUG] 19:49:39: Error in '2020/3/27/19:45 => VD.julgran:btn=2': /opt/fibaro/scenes/323.lua:1952: no triggers found in header

Re: EventRunner

Posted: 28 Mar 2020, 08:43
by jang
sonnyboy wrote: 27 Mar 2020, 20:24 Vad är felet i denna rule den vill inte exekvera?
rule("@2020/3/27/19:19 => VD.julgran:btn=2")
Jag har såklart koll på tiden ;) men det kommer inget i loggen alla vid tidpunkten :?
Tar jag bort @ så kommer detta i loggen,
[DEBUG] 19:49:39: Error in '2020/3/27/19:45 => VD.julgran:btn=2': /opt/fibaro/scenes/323.lua:1952: no triggers found in header
'@' operatorn kallas också 'daily', så det måste vara en tid under dagen 00-24, detta eftersom den repeteras dagligen,
Därför kan man inte använda det långa tidsformatet med månad, år dag.
OM du vill sätta en trigger på ett visst datum så finns det lite olika sätt du kan göra det på.

Code: Select all

rule("wait(2020/4/3/19:19); VD.julgran:btn=2")
Det är ingen regel, utan ett 'expression' som körs när ER startar upp och väntar till rätt datum och sedan klickar på knappen

Code: Select all

rule("post(#xmastree,2020/4/3/19:19)")
rule("#xmastree => VD.julgran:btn=2")
Postar ett event till rätt dag och triggar på det

Code: Select all

rule("@19:19 & day('3') & month('april') =>  VD.julgran:btn=2")
Kolla varje dag 19:19 om det är rätt tid

Re: EventRunner

Posted: 01 Apr 2020, 11:06
by PeterM5
Jag har en takskjutport.
Fibaro knapp FGPB101 Id =419
Smartimplant reläutgång 1 id = 414

Funktionen på porten är,
1 tryck=porten öppnar
1 tryck=porten stänger
när porten är i rörelse och jag trycker då stannar den, nästa tryck går den åt motsatt håll.
Jag har försökt att lägga in det i EventRunner men ej lyckats, är det någon som kan hjälpa mig med det?
Monterat en brytare också för att skicka sms när porten öppnas.

Denna scenen funkar,

--[[
%% properties
414 value
%% weather
%% events
419 CentralSceneEvent 1 Pressed
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
( (startSource["type"] == "event" and startSource["event"]["type"] == "CentralSceneEvent") )
or
startSource["type"] == "other"
)
then
fibaro:call(414, "turnOn");
fibaro:call(414, "turnOff");
end

Re: EventRunner

Posted: 01 Apr 2020, 13:49
by jang
PeterM5 wrote: 01 Apr 2020, 11:06 Jag har en takskjutport.
Fibaro knapp FGPB101 Id =419
Smartimplant reläutgång 1 id = 414

Funktionen på porten är,
1 tryck=porten öppnar
1 tryck=porten stänger
när porten är i rörelse och jag trycker då stannar den, nästa tryck går den åt motsatt håll.
Jag har försökt att lägga in det i EventRunner men ej lyckats, är det någon som kan hjälpa mig med det?
Monterat en brytare också för att skicka sms när porten öppnas.

Denna scenen funkar,

--[[
%% properties
414 value
%% weather
%% events
419 CentralSceneEvent 1 Pressed
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
( (startSource["type"] == "event" and startSource["event"]["type"] == "CentralSceneEvent") )
or
startSource["type"] == "other"
)
then
fibaro:call(414, "turnOn");
fibaro:call(414, "turnOff");
end
Du slår. på och sedan direkt av - är det för att byta riktning?
Isåfall är den här ER regeln ekvivalent...

Code: Select all


--[[
%% events
419 CentralSceneEvent 1 Pressed
--]]
port = 414
button = 419
Rule.eval("button:central.keyId==1 => port:on; port:off")

Re: EventRunner

Posted: 01 Apr 2020, 20:42
by PeterM5
jang wrote: 01 Apr 2020, 13:49
PeterM5 wrote: 01 Apr 2020, 11:06 Jag har en takskjutport.
Fibaro knapp FGPB101 Id =419
Smartimplant reläutgång 1 id = 414

Funktionen på porten är,
1 tryck=porten öppnar
1 tryck=porten stänger
när porten är i rörelse och jag trycker då stannar den, nästa tryck går den åt motsatt håll.
Jag har försökt att lägga in det i EventRunner men ej lyckats, är det någon som kan hjälpa mig med det?
Monterat en brytare också för att skicka sms när porten öppnas.

Denna scenen funkar,

--[[
%% properties
414 value
%% weather
%% events
419 CentralSceneEvent 1 Pressed
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
( (startSource["type"] == "event" and startSource["event"]["type"] == "CentralSceneEvent") )
or
startSource["type"] == "other"
)
then
fibaro:call(414, "turnOn");
fibaro:call(414, "turnOff");
end
Du slår. på och sedan direkt av - är det för att byta riktning?
Isåfall är den här ER regeln ekvivalent...

Code: Select all


--[[
%% events
419 CentralSceneEvent 1 Pressed
--]]
port = 414
button = 419
Rule.eval("button:central.keyId==1 => port:on; port:off")
Det stämmer, det fungerar som tänkt.
Lite fördröjning blir det mellan knapptryck och innan porten rör sig, men det får man väl räkna med.
Fjärrkontrollerna som följer med reagerar direkt.

Tack för hjälpen :D

Re: EventRunner

Posted: 02 Apr 2020, 09:29
by MastrUsr

PeterM5 wrote:
jang wrote: 01 Apr 2020, 13:49
PeterM5 wrote: 01 Apr 2020, 11:06 Jag har en takskjutport.
Fibaro knapp FGPB101 Id =419
Smartimplant reläutgång 1 id = 414

Funktionen på porten är,
1 tryck=porten öppnar
1 tryck=porten stänger
när porten är i rörelse och jag trycker då stannar den, nästa tryck går den åt motsatt håll.
Jag har försökt att lägga in det i EventRunner men ej lyckats, är det någon som kan hjälpa mig med det?
Monterat en brytare också för att skicka sms när porten öppnas.

Denna scenen funkar,

--[[
%% properties
414 value
%% weather
%% events
419 CentralSceneEvent 1 Pressed
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
( (startSource["type"] == "event" and startSource["event"]["type"] == "CentralSceneEvent") )
or
startSource["type"] == "other"
)
then
fibaro:call(414, "turnOn");
fibaro:call(414, "turnOff");
end
Du slår. på och sedan direkt av - är det för att byta riktning?
Isåfall är den här ER regeln ekvivalent...

Code: Select all


--[[
%% events
419 CentralSceneEvent 1 Pressed
--]]
port = 414
button = 419
Rule.eval("button:central.keyId==1 => port:on; port:off")
Det stämmer, det fungerar som tänkt.
Lite fördröjning blir det mellan knapptryck och innan porten rör sig, men det får man väl räkna med.
Fjärrkontrollerna som följer med reagerar direkt.

Tack för hjälpen :D
Jag har också en portöppnare och har skrivit en egen kod i z-uno med lite finesser.. Hur som helst så har jag satt ett dubbelklick på lampknappen innanför ytterdörren för att öppna min port. Då är det alltid öppet när jag tagit på skorna och gått ut :)

Skickat från min SM-N960F via Tapatalk


Re: EventRunner

Posted: 31 May 2020, 22:58
by Systemfel
Tjenare alla har en lite enkel fråga om event runner hittar inget på detta direkt när jag sökt.

Om jag tex har en switch on off och jag sätter i gång lampan men vill att den ska stängas efter 5 min automatiskt Behöver en liten säkerhets grej till mina popup vatten spridare om någon skulle sätta i gång dessa av misstag som har hänt så ska det stängas auto efter en tid .
styr magnetventilerna med ström på och dom är aktiva och är där ingen ström så e dom stängda

ha en go vecka nu :) och tack för hjälpen

Re: EventRunner

Posted: 01 Jun 2020, 04:10
by jang
Systemfel wrote: 31 May 2020, 22:58 Om jag tex har en switch on off och jag sätter i gång lampan men vill att den ska stängas efter 5 min automatiskt Behöver en liten säkerhets grej till mina popup vatten spridare om någon skulle sätta i gång dessa av misstag som har hänt så ska det stängas auto efter en tid .
styr magnetventilerna med ström på och dom är aktiva och är där ingen ström så e dom stängda
ha en go vecka nu :) och tack för hjälpen

Code: Select all

Rule.eval("switch=77")
Rule.eval("trueFor(00:05,switch:isOn) => switch:off")
...och deklarera "%% properties 77 value" i headern.

Om device 77 är på i 5min så stängs den av.
Finns det undantag då den ska vara på längre?

Re: EventRunner

Posted: 01 Jun 2020, 13:07
by RH_Dreambox
Om jag tex har en switch on off och jag sätter i gång lampan men vill att den ska stängas efter 5 min automatiskt Behöver en liten säkerhets grej till mina popup vatten spridare om någon skulle sätta i gång dessa av misstag som har hänt så ska det stängas auto efter en tid .
styr magnetventilerna med ström på och dom är aktiva och är där ingen ström så e dom stängda
Efter två "översvämningar" i växthuset då den automatiska bevattningen krånglade (kommunikationsproblem) så konfigurerade jag relä-switchen så att de stänger av sig självt efter 5 min.
Så vill du ha både "hängslen och livrem" och använder en Fibaro relä-switch, så programmerar du parameter 4 (enkelswitch) eller 4 och 5 (dubbelswitch) till 5 min. Skulle nu din HC2 krångla så kommer relä-switchen ändå att stänga av vattnet automatiskt efter 5 min.
EDIT:
Om din bevattning skall vara igång längre perioder än 5 min. så funkar inte den här lösningen så bra. Eftersom relät stänger av efter 5 min. så måste du trigga igång bevattningen igen efter varje 5 min. cykel.

Re: EventRunner

Posted: 01 Jun 2020, 22:24
by Systemfel
RH_Dreambox wrote: 01 Jun 2020, 13:07
Om jag tex har en switch on off och jag sätter i gång lampan men vill att den ska stängas efter 5 min automatiskt Behöver en liten säkerhets grej till mina popup vatten spridare om någon skulle sätta i gång dessa av misstag som har hänt så ska det stängas auto efter en tid .
styr magnetventilerna med ström på och dom är aktiva och är där ingen ström så e dom stängda
Efter två "översvämningar" i växthuset då den automatiska bevattningen krånglade (kommunikationsproblem) så konfigurerade jag relä-switchen så att de stänger av sig självt efter 5 min.
Så vill du ha både "hängslen och livrem" och använder en Fibaro relä-switch, så programmerar du parameter 4 (enkelswitch) eller 4 och 5 (dubbelswitch) till 5 min. Skulle nu din HC2 krångla så kommer relä-switchen ändå att stänga av vattnet automatiskt efter 5 min.
EDIT:
Om din bevattning skall vara igång längre perioder än 5 min. så funkar inte den här lösningen så bra. Eftersom relät stänger av efter 5 min. så måste du trigga igång bevattningen igen efter varje 5 min. cykel.
Problemet är att jag har inte fibaro switchar utan någon plugin som saknar templets så jag kan inte göra att pluggen stänger sig själv tyväärr. men tack för ideen :)

Re: EventRunner

Posted: 01 Jun 2020, 22:24
by Systemfel
jang wrote: 01 Jun 2020, 04:10
Systemfel wrote: 31 May 2020, 22:58 Om jag tex har en switch on off och jag sätter i gång lampan men vill att den ska stängas efter 5 min automatiskt Behöver en liten säkerhets grej till mina popup vatten spridare om någon skulle sätta i gång dessa av misstag som har hänt så ska det stängas auto efter en tid .
styr magnetventilerna med ström på och dom är aktiva och är där ingen ström så e dom stängda
ha en go vecka nu :) och tack för hjälpen

Code: Select all

Rule.eval("switch=77")
Rule.eval("trueFor(00:05,switch:isOn) => switch:off")
...och deklarera "%% properties 77 value" i headern.

Om device 77 är på i 5min så stängs den av.
Finns det undantag då den ska vara på längre?
Tack för koden :)

Re: EventRunner

Posted: 04 Jun 2020, 10:47
by Stefan
Hej
har nu haft tid (karantän) att övergå till ER. Fungerar kanon. Har lite svårt att förstå IOSLocator. Hittar ingen "tutorial" någonstans, finns det?

Re: EventRunner

Posted: 05 Jun 2020, 08:59
by jang
Stefan wrote: 04 Jun 2020, 10:47 Hej
har nu haft tid (karantän) att övergå till ER. Fungerar kanon. Har lite svårt att förstå IOSLocator. Hittar ingen "tutorial" någonstans, finns det?
Nja, det finns lite posts i FIbaro forumet...

Men du konfigurerar upp ioslocator scenes genom att definiera en tabell med "places" och "users".
Om du har en fibaro global med din "HomeTable" kan du stoppa in den i den också. Det viktiga är att du har 2 nycklar, "places", och "users" på toppnivå i tabellen.
Om du lägger in den i din globala variabel HomeTable så ska du sätta _test=false i början.
Om _test=true så använder den den definierade lua variabeln HomeTable i ioslocator koden nedan.
Första värdet i "places" ska vara det som är hemma. Används för att kolla om huset är tomt eller inte.

Code: Select all

local _test = true                -- use local HomeTable variable instead of fibaro global
local homeLatitude,homeLongitude  -- set to first place in HomeTable.places list

HomeTable = [[
{"places":[
    {"longitude":17.9876023512,"dist":0.6,"latitude":60.7879477,"name":"Home"},
    {"longitude":17.955049,"dist":0.8,"latitude":59.405818,"name":"Ericsson"},
    {"longitude":18.080638,"dist":0.8,"latitude":59.52869,"name":"Vallentuna"},
    {"longitude":17.648488,"dist":0.8,"latitude":59.840704,"name":"Polacksbacken"},
    {"longitude":17.5951,"dist":0.8,"latitude":59.850153,"name":"Flogsta"},
    {"longitude":18.120588,"dist":0.5,"latitude":59.303781,"name":"Rytmus"}
  ],
"users":{
    "daniela":{"phone":777,"icloud":{"pwd":"XXXX","user":"XXX@XXX.com"},"name":"Daniela"},
    "jan":{"phone":411,"icloud":{"pwd":"XXXX","user":"XXX@XXX.com"},"name":"Jan"},
    "tim":{"phone":888,"icloud":{"pwd":"XXXXX","user":"XXX@XXX.com"},"name":"Tim"},
    "max":{"phone":888,"icloud":{"pwd":"XXXXX","user":"XXX@XXX.com"},"name":"Max"}
  },
}
]]
så, om du får igång ioslocator så kommer den i loggen att skriva ut vilka users den hittar allteftersom (den kollar en användare ca var 30s)

Så, i din ER scen där du vill trigga på location definerar du regler för att få location/presence events
ER commander 'subscribe' säger att scenen vill ha events av typen som specificeras. ioslocator kommer att skicka event av den typen till alla ER scener som "prenumererar".

Code: Select all

Rule.eval("subscribe(#presence{ios=true})") -- receive presence events from the iOSLOcator
Rule.eval("subscribe(#location{ios=true})") -- receive location events from the iOSLOcator
Sedan definerar du regler som triggar på de inkommande events från ioslocator.

Code: Select all

Rule.eval("#location{ios=true,user='$user',place='$place'} => log('User %s, place %s',user,place)")
Rule.eval("#presence{ios=true,state='home'} => log('Someone at home %s',env.event.who)") 
Rule.eval("#presence{ios=true,state='allaway'} => log('Home is empty')") 
För #location events så är det user och place som är intressant. place kommer att vara en plats definerad i tabellen ovan eller 'away'
För #presence är state intressant, är 'home' eller 'allaway'. Om state='home' finns det ett till fält 'who' med vilka som är hemma.

Re: EventRunner

Posted: 04 Jul 2020, 09:12
by RH_Dreambox
@jang ,
Finns det någon fullt fungerande ER till HC3? Är det i så fall den du kallar ER4?
Jag går i köp-tankar och känner att jag behöver lite nya utmaningar frampå höstkanten :-)

Re: EventRunner

Posted: 05 Jul 2020, 10:19
by jang
RH_Dreambox wrote: 04 Jul 2020, 09:12 @jang ,
Finns det någon fullt fungerande ER till HC3? Är det i så fall den du kallar ER4?
Jag går i köp-tankar och känner att jag behöver lite nya utmaningar frampå höstkanten :-)
Ja, det låter som en rejäl utmaning :D
Skämt åsido, den är inte så dum och jag ser att det går åt rätt håll.
Ja, jag började på ER4 som är en QA version of ER. Sedan blev jag distraherad men en del andra projekt så jag har inte gjort så mycket på den de sista 2 månaderna. Å andra sidan har jag börjat få ganska bra insikter i hur HC3:an fungerar och hur man bör koda så jag tänker ta ett nytt tag om 2 veckor då min semester infaller. Vad man vill ha kvar är ER reglerna och gärna så "bakåtkompatibelt" som möjligt. HC3 har en del nya device kommandon och "properties" från devices hanteras lite olika så det är möjligt att man måste ändra lite i sina regler - men jag ska försöka dokumentera det.
Jag kommer att lyfta bort Hue supporten från scenen - det ska gå att använda QA plugins nu när de kan vara egna devices.

Re: EventRunner

Posted: 05 Jul 2020, 12:04
by RH_Dreambox
jang wrote: 05 Jul 2020, 10:19
RH_Dreambox wrote: 04 Jul 2020, 09:12 @jang ,
Finns det någon fullt fungerande ER till HC3? Är det i så fall den du kallar ER4?
Jag går i köp-tankar och känner att jag behöver lite nya utmaningar frampå höstkanten :-)
Ja, det låter som en rejäl utmaning :D
Skämt åsido, den är inte så dum och jag ser att det går åt rätt håll.
Ja, jag började på ER4 som är en QA version of ER. Sedan blev jag distraherad men en del andra projekt så jag har inte gjort så mycket på den de sista 2 månaderna. Å andra sidan har jag börjat få ganska bra insikter i hur HC3:an fungerar och hur man bör koda så jag tänker ta ett nytt tag om 2 veckor då min semester infaller. Vad man vill ha kvar är ER reglerna och gärna så "bakåtkompatibelt" som möjligt. HC3 har en del nya device kommandon och "properties" från devices hanteras lite olika så det är möjligt att man måste ändra lite i sina regler - men jag ska försöka dokumentera det.
Jag kommer att lyfta bort Hue supporten från scenen - det ska gå att använda QA plugins nu när de kan vara egna devices.
Jag bugar och tackar för en ER4 till hösten ;) Men jag förstår inte hur du hinner med allt som du skriver på Fibaros forum! Det är ju gigantiskt mycket information som du öser ur dig.
Det sägs att Fibaros programmerare slukar din information och använder dina manualer som sina handböcker :lol:

Re: EventRunner

Posted: 05 Jul 2020, 18:23
by jang
RH_Dreambox wrote: 05 Jul 2020, 12:04 Det sägs att Fibaros programmerare slukar din information och använder dina manualer som sina handböcker :lol:
Well, det här med Fibaros programmerare är ett intressant ämne. Min mentala model är att Fibaros FW verkar utvecklas av ngn konsultfirma. Inget ont om konsultfirmor. Men man kan fråga sig om deras (konsulternas) hem är beroende av HC3:or och respektive som undrar varför inget fungerar? :D
Jag tror inte det och det förklarar varför det tar så lång tid att få fixar. Ett argument varför releaser tar tid är att man kör mycket tester och verifieringar innan man släpper en kod - vad jag hör från "inne-gänget" på Fibaro forum verkar det inte vara en förklaring.
Det som stör mig är att Fibaros målgrupp verkar vara installatörer och inte vanliga användare som gärna bidrar med kod.
Det vi får nu är en utvecklingsmiljö som är för svår för icke programmerare (block scener ser förrädiskt enkla ut...), men samtidigt för begränsande för folk som kan programmera (alla funktioner och standardbibliotek som saknas i Lua). Det är lite tråkigt att de inte förstår vilket segment de måste tävla i.
Det var en lång tråd om detta när HC3:an skulle introduceras: https://forum.fibaro.com/topic/48026-ho ... ent=200203

Nåväl, QA modellen är ett lyft och jag ser lite tecken på förbättringar... och den borde snart kunna vara bättre än HC2:an.

Re: EventRunner

Posted: 08 Jul 2020, 23:08
by maxxar
Ja, samma här funderar oxå på att gå över till HC3 framöver men kan ju inte göra det om det inte finns en ER som funkar för den :) så det låter mycket hopfullt att du börjat utveckla en version till den oxå.
HC2'an har aldrig varit så stabil som den är nu med ER, men man vet aldrig när Fibaro slutar att supportera den och lägger allt krut på HC3.

Re: EventRunner

Posted: 11 Jul 2020, 16:24
by RH_Dreambox
@jang
Jag skulle verkligen behöva din hjälp!
Sitter här med en nyinskaffad HC3 och försöker få igång några enkla regler typ tänd/släck lampa i ER4.
Jag trodde att backen skulle bli brant, men det blev en klippvägg! Det hade nog blivit enklare om jag inte hade haft en HC2 tidigare!!!

Fråga 1.
Du skrev att ER4 är en QA-version av ER, betyder det att jag skall skapa en QA med din kod, eller skall jag göra som jag gjort nu med en scen?

Nu jag kör scenen så får jag ett felmeddelande "[2020-07-11] [15:39:33] [ERROR] [SCENE1]: (load):159: attempt to index a nil value (global 'QuickApp')". Koden stoppar här:

function QuickApp:turnOn() self:updateProperty("value", true) end
function QuickApp:turnOff() self:updateProperty("value", false) end

Betyder det att det fattas en QA för att att skall rulla igång?

Fråga 2.
Du har flera function main(), skall någon av dessa raderas?
######################################
function main()
Rule.eval("log('afoo=%s',afoo(7,8))")
end

function main() -- EventScript version
local rule = Rule.eval
######################################

Fråga 3.
Det finns även en function mainLua, ersätter den de ovanstående?
######################################
function mainLua() -- Lua version
######################################

Fråga 4.
Om jag har några triggers som i ER3 skrevs in i headern, skrivs dessa nu in i conditions? ID 32 och 33 är tempsensor och fuktsensor.

######################################
{
operator = "any",
conditions = {
{
type = "device",
id = 32,
property = "value",
operator = "==",
value = true,
isTrigger = true
},
{
type = "device",
id = 33,
property = "value",
operator = "==",
value = true,
isTrigger = true
}
}
}
######################################

Fråga 5.
Hur ser den "tvättade" inledningskoden ut i ER4? D.v.s utan Hue, ingen NodeRed mm. utan bara vanlig Z-wave. Det blir lite enklare att komma igång utan dessa "tillbehör".

Kanske borde vi starta en ny tråd om ER4....

Re: EventRunner

Posted: 11 Jul 2020, 20:34
by jang
Fråga 1.
EventRunner på HC3 är en QA och heter EventRunner4. https://forum.fibaro.com/topic/31180-tu ... ent=207163
Du installerar den och sedan öppnar man koden för den i editorn och lägger till sina regler, ungefär som på HC2:an.
Det borde gå att installera den men jag gick just på semester så jag kommer att komma med lite uppdateringar under juli.

Fråga 2.
Det är 2 exempel på main() funktioner. En med eventscript regler och en med lua regler.

Fråga 3.
Ops, fanns visst en 3dje version av main - nåväl ta bort alla utom en.

Fråga 4.
Scener undviker jag numera på HC3:an - åtminstone till de värsta buggarna är fixade.
Men ja, man sätter upp en 'conditions table' numera. Många på forumet kämpar med dessa....

Fråga 5.
Den enklaste är bara

Code: Select all

local _debugFlags = {  fcall=true  } 
local Util,Device,Event,Remote,Patch,Extras,Rule,Trigger
local triggerInterval = 500

function main()    -- EventScript version
  local rule = Rule.eval

  HT = { 
    keyfob = 26, 
    motion= 21,
    temp = 22, lux = 23,
    motionHC2 = 44,
    lightHC2 = 45, 
    tempHC2 = 46
  }

  Util.defvars(HT)
  Util.reverseMapDef(HT)

  rule("keyfob:central => log('Key:%s',env.event.value.keyId)")

end