EventRunner

PeterM5
Medlem
Posts: 47
Joined: 13 Jul 2016, 10:55

21 Feb 2020, 21:00

jang wrote:
20 Feb 2020, 22:31
PeterM5 wrote:
20 Feb 2020, 21:25
Jag har en Fibaro Single Switch 2
Hur kan en regel se ut om jag vill styra Switch 2 trådlöst när jag klickar en gång på Switch 1?

Switch 1 = 389
Switch 2 = 326
När man slår på switch1 så slås switch 2 på och när man slår av 1 så slås 2 av?

Code: Select all

Rule.eval("389:value => 326:value=389:value")
När 389 ändrar värde så sätts 326's värde till 389's värde.
Det blir en fördröjning, jag styr en dimmer 2 med en switch.
Finns det någon lösning på det?

Code: Select all

Switch 1 = 389 --SingleSwitch 2
Dimmer 2 = 326 --Dimmer 2

Rule.eval("389:isOn => 326:value=60")
Rule.eval("389:isOff => 326:value=0")
jang
Medlem
Posts: 262
Joined: 05 Jan 2014, 00:44
Location: Stockholm

22 Feb 2020, 12:10

PeterM5 wrote:
21 Feb 2020, 21:00

Det blir en fördröjning, jag styr en dimmer 2 med en switch.
Finns det någon lösning på det?

Code: Select all

Switch 1 = 389 --SingleSwitch 2
Dimmer 2 = 326 --Dimmer 2

Rule.eval("389:isOn => 326:value=60")
Rule.eval("389:isOff => 326:value=0")
Hur lång fördröjning?
PeterM5
Medlem
Posts: 47
Joined: 13 Jul 2016, 10:55

22 Feb 2020, 12:27

jang wrote:
22 Feb 2020, 12:10
PeterM5 wrote:
21 Feb 2020, 21:00

Det blir en fördröjning, jag styr en dimmer 2 med en switch.
Finns det någon lösning på det?

Code: Select all

Switch 1 = 389 --SingleSwitch 2
Dimmer 2 = 326 --Dimmer 2

Rule.eval("389:isOn => 326:value=60")
Rule.eval("389:isOff => 326:value=0")
Hur lång fördröjning?
30 sekunder
Systemfel
Medlem
Posts: 234
Joined: 14 Jan 2015, 01:02

22 Feb 2020, 13:33

PeterM5 wrote:
22 Feb 2020, 12:27
jang wrote:
22 Feb 2020, 12:10
PeterM5 wrote:
21 Feb 2020, 21:00

Det blir en fördröjning, jag styr en dimmer 2 med en switch.
Finns det någon lösning på det?

Code: Select all

Switch 1 = 389 --SingleSwitch 2
Dimmer 2 = 326 --Dimmer 2

Rule.eval("389:isOn => 326:value=60")
Rule.eval("389:isOff => 326:value=0")
Hur lång fördröjning?
30 sekunder
Du har inte varit inne i själva inställningarna i dimmern ? eller switchen ?
Börjat pilla lite på min Fibaro home center 2 ( och det går bra )
PeterM5
Medlem
Posts: 47
Joined: 13 Jul 2016, 10:55

22 Feb 2020, 14:00

Systemfel wrote:
22 Feb 2020, 13:33
PeterM5 wrote:
22 Feb 2020, 12:27
jang wrote:
22 Feb 2020, 12:10


Hur lång fördröjning?
30 sekunder
Du har inte varit inne i själva inställningarna i dimmern ? eller switchen ?
Jo, jag har ändrat lite inställningar, vilka parametrar kan påverka detta?
jang
Medlem
Posts: 262
Joined: 05 Jan 2014, 00:44
Location: Stockholm

22 Feb 2020, 14:56

PeterM5 wrote:
22 Feb 2020, 14:00
Systemfel wrote:
22 Feb 2020, 13:33
PeterM5 wrote:
22 Feb 2020, 12:27


30 sekunder
Du har inte varit inne i själva inställningarna i dimmern ? eller switchen ?
Jo, jag har ändrat lite inställningar, vilka parametrar kan påverka detta?
Så, EventRunner scenen triggar på switchen (du har deklarerat %% property <switch> value i headers)
Efter scenen har triggat så brukar det ta 200~300ms innan regeln anropas - så om det tar mer än 1s så ligger fördröjningen ngn annanstans.
Man kan se att ER loggar "incoming trigger" när scenen blir triggad.
Sedan kan man se när fibaro:call(id,"setValue"... anropas
Då har du in<->ut tiderna från ER. Skulle vara förvånad om det är över 1s.

Om du inte ser dessa logmeddelanden sätt

Code: Select all

_debugFlags.triggers = true
_debugFlags.fcall=true
i början av ER.
PeterM5
Medlem
Posts: 47
Joined: 13 Jul 2016, 10:55

22 Feb 2020, 16:32

jang wrote:
22 Feb 2020, 14:56
PeterM5 wrote:
22 Feb 2020, 14:00
Systemfel wrote:
22 Feb 2020, 13:33


Du har inte varit inne i själva inställningarna i dimmern ? eller switchen ?
Jo, jag har ändrat lite inställningar, vilka parametrar kan påverka detta?
Så, EventRunner scenen triggar på switchen (du har deklarerat %% property <switch> value i headers)
Efter scenen har triggat så brukar det ta 200~300ms innan regeln anropas - så om det tar mer än 1s så ligger fördröjningen ngn annanstans.
Man kan se att ER loggar "incoming trigger" när scenen blir triggad.
Sedan kan man se när fibaro:call(id,"setValue"... anropas
Då har du in<->ut tiderna från ER. Skulle vara förvånad om det är över 1s.

Om du inte ser dessa logmeddelanden sätt

Code: Select all

_debugFlags.triggers = true
_debugFlags.fcall=true
i början av ER.
Jag först med återställning av parametrarna i "Switch 1 = 389", det hjälpte inget.
När jag gjorde en mjukvaruåterställning så fungerar det som tänkt, med ca 1 s fördröjning.
Tack båda för hjälpen.
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1063
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

23 Feb 2020, 12:11

@jang
Finns det något sätt att i ER skicka med en "kommando-sträng" vid start av en scen?
I en vanlig LUA-scen skriver jag så här:

Code: Select all

fibaro:startScene('ID',{"Text att läsas upp","IP-nummer:8080",Volym})
Scenen aktiveras, bearbetar datan och skickar den till angivet IP-nummer.

Den här funkar inte , men det skulle kunna vara något liknande.

Code: Select all

rule("@15:00 => scen.TTS:start, {"IP-nummer:8080",Volym}")
HC3 med ER4 , 2 st HC2 4.600 med ER 3
jang
Medlem
Posts: 262
Joined: 05 Jan 2014, 00:44
Location: Stockholm

23 Feb 2020, 12:32

RH_Dreambox wrote:
23 Feb 2020, 12:11
@jang
Finns det något sätt att i ER skicka med en "kommando-sträng" vid start av en scen?
I en vanlig LUA-scen skriver jag så här:

Code: Select all

fibaro:startScene('ID',{"Text att läsas upp","IP-nummer:8080",Volym})
Scenen aktiveras, bearbetar datan och skickar den till angivet IP-nummer.

Den här funkar inte , men det skulle kunna vara något liknande.

Code: Select all

rule("@15:00 => scen.TTS:start, {"IP-nummer:8080",Volym}")
Det här borde fungera

Code: Select all

rule("@15:00 => scen.TTS:start={"IP-nummer:8080",Volym}")
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1063
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

23 Feb 2020, 12:47

@jang
Tack för snabbt svar, men i brådskan så klantade jag till det och glömde att det även skulle innehålla ett meddelande :oops:
Så här skulle det sett ut, men det accepterade inte ER. Det kanske måste vara någon mer parentes för att kapsla in den skickade strängen?

Code: Select all

rule("@11:40 => scen.TTS:start={"Meddelande","IP-nummer:8080",Volym}")
HC3 med ER4 , 2 st HC2 4.600 med ER 3
jang
Medlem
Posts: 262
Joined: 05 Jan 2014, 00:44
Location: Stockholm

23 Feb 2020, 13:02

RH_Dreambox wrote:
23 Feb 2020, 12:47
@jang
Tack för snabbt svar, men i brådskan så klantade jag till det och glömde att det även skulle innehålla ett meddelande :oops:
Så här skulle det sett ut, men det accepterade inte ER. Det kanske måste vara någon mer parentes för att kapsla in den skickade strängen?

Code: Select all

rule("@11:40 => scen.TTS:start={"Meddelande","IP-nummer:8080",Volym}")
Strängarna blir fel - du måste ha ' inuti " strängar och vice versa.

Code: Select all

rule("@11:40 => scen.TTS:start={'Meddelande','IP-nummer:8080',Volym}")
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1063
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

23 Feb 2020, 13:16

Ja, med rätt styrtecken gick det bättre :-)
Men det tycks bara fungera med text utan å, ä och ö. Jag antar att det har med LUA att göra.
Texten som läses upp innehåller även styrtecken för å, ä och ö :-(

Code: Select all

[DEBUG] 12:10:00: URL [ /tts=Nu%20är%20det%20snart%20dax%20för%20lunch&vol=12 ]
[DEBUG] 12:10:00: 🎬1/1 192.168.1.16 🔊 Nu är det snart dax för lunch ⧗5.95🎵12 [✔]
HC3 med ER4 , 2 st HC2 4.600 med ER 3
jang
Medlem
Posts: 262
Joined: 05 Jan 2014, 00:44
Location: Stockholm

23 Feb 2020, 14:11

RH_Dreambox wrote:
23 Feb 2020, 13:16
Ja, med rätt styrtecken gick det bättre :-)
Men det tycks bara fungera med text utan å, ä och ö. Jag antar att det har med LUA att göra.
Texten som läses upp innehåller även styrtecken för å, ä och ö :-(

Code: Select all

[DEBUG] 12:10:00: URL [ /tts=Nu%20är%20det%20snart%20dax%20för%20lunch&vol=12 ]
[DEBUG] 12:10:00: 🎬1/1 192.168.1.16 🔊 Nu är det snart dax för lunch ⧗5.95🎵12 [✔]
Nä det är mera Fibaros fel . De gör ngt konstigt när de skickar argument mellan scener. Vad man kan göra är att urlencode/urldecode argumenten när de skickas mellan scener (ER gör det med event)
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1063
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

23 Feb 2020, 16:00

Nä det är mera Fibaros fel . De gör ngt konstigt när de skickar argument mellan scener. Vad man kan göra är att urlencode/urldecode argumenten när de skickas mellan scener (ER gör det med event)
Jag letade runt lite på nätet och fann också att det berodde på en brist i Fibaro. Men där stod också att man kunde använda en global variabel för att "tvätta rent" texten.
Till min nuvarande TTS-lösning använder jag just en global variabel, TTS , och den fungerar ju bevisligen.

Men den scen som jag har använt för att skicka TTS har stora brister med bland annat felhantering, så nu letade jag en ny lösning och fann en som @cag014 på Fibaros forum skrivit.
Kruxet var bara att den inte hanterade våra svenska tecken, men om man modifierar scenen till att lyssna på en global variabel i stället så lär det fungera.
Så nu jag skall titta på vad som behöver ändras i den scenen för att den skall fungera.
Men tack för hjälpen!
HC3 med ER4 , 2 st HC2 4.600 med ER 3
PeterM5
Medlem
Posts: 47
Joined: 13 Jul 2016, 10:55

24 Feb 2020, 13:46

jang wrote:
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.
Går det att återställa larmet genom att släcka den lampan som blinkar på väggbrytaren?
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1063
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

24 Feb 2020, 17:08

Går det att återställa larmet genom att släcka den lampan som blinkar på väggbrytaren?
Nej tyvärr, den fortsätter att blinka tills den i switchen inställda tiden har löpt ut.
HC3 med ER4 , 2 st HC2 4.600 med ER 3
jang
Medlem
Posts: 262
Joined: 05 Jan 2014, 00:44
Location: Stockholm

24 Feb 2020, 22:51

RH_Dreambox wrote:
24 Feb 2020, 17:08
Går det att återställa larmet genom att släcka den lampan som blinkar på väggbrytaren?
Nej tyvärr, den fortsätter att blinka tills den i switchen inställda tiden har löpt ut.
Är det såhär du vill ha det?

Code: Select all

  rule([[sensor.garage_pir:breached => 
    local lampa,state =  garage.lampa,nil;
    repeat lampa:toggle; state=lampa:value; wait(1) until sensor.garage_pir:safe | state~=lampa:value; 
    lampa:off]])
Vi sparar lampans 'state' före 1s vilan, sedan kollar vi om dess 'state' ändrats efter vilan, om så har ngn klickat på knappen, och isåfall avslutar vi loopen.

Så om lampan blinkar kan vi klicka på dess knapp så slutar den blinka (om vi har otur kan vi behöva klicka 2 ggr)
PeterM5
Medlem
Posts: 47
Joined: 13 Jul 2016, 10:55

24 Feb 2020, 23:57

jang wrote:
24 Feb 2020, 22:51
RH_Dreambox wrote:
24 Feb 2020, 17:08
Går det att återställa larmet genom att släcka den lampan som blinkar på väggbrytaren?
Nej tyvärr, den fortsätter att blinka tills den i switchen inställda tiden har löpt ut.
Är det såhär du vill ha det?

Code: Select all

  rule([[sensor.garage_pir:breached => 
    local lampa,state =  garage.lampa,nil;
    repeat lampa:toggle; state=lampa:value; wait(1) until sensor.garage_pir:safe | state~=lampa:value; 
    lampa:off]])
Vi sparar lampans 'state' före 1s vilan, sedan kollar vi om dess 'state' ändrats efter vilan, om så har ngn klickat på knappen, och isåfall avslutar vi loopen.

Så om lampan blinkar kan vi klicka på dess knapp så slutar den blinka (om vi har otur kan vi behöva klicka 2 ggr)
Ja, så vill jag ha det, testar och återkommer.
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1063
Joined: 03 Jan 2015, 16:49
Location: Vegby
Contact:

25 Feb 2020, 14:28

@PeterM5 Kolla du också för säkerhets skull, men när jag testade så blev det bara ett blink på de inställda 30 sekunderna. Men kanske har jag missat något?
Vi sparar lampans 'state' före 1s vilan, sedan kollar vi om dess 'state' ändrats efter vilan, om så har ngn klickat på knappen, och isåfall avslutar vi loopen.
@jang Är jag helt ute och reser om jag säger att efter 1 sek paus så ändras ju statusen av regeln och villkoret för att stänga av uppfylls?
HC3 med ER4 , 2 st HC2 4.600 med ER 3
jang
Medlem
Posts: 262
Joined: 05 Jan 2014, 00:44
Location: Stockholm

25 Feb 2020, 16:35

RH_Dreambox wrote:
25 Feb 2020, 14:28
@jang Är jag helt ute och reser om jag säger att efter 1 sek paus så ändras ju statusen av regeln och villkoret för att stänga av uppfylls?
Jo, men vi sparar lampan's state, gör wait(1), och sedan ser vi om state~=lampans värde, isåfall har ngn mixtrat med lampan och vi avslutar repeat loopen

Code: Select all

 ... state=lampa:value; wait(1) until state~=lampa:value;
Om man har otur så klickar man på lampan när koden exekverar instr före. Dvs

Code: Select all

repeat lampa:toggle; ...
och då får vi samma värde . det var därför jag sa att man kanske får klicka på switchen 2ggr.
Rent sannolikhetsmässigt spenderar man mest tid i wait(1) så ofta borde 1 klick funka.
Post Reply