Page 20 of 25

Re: EventRunner

Posted: 09 Mar 2020, 18:34
by jang
RH_Dreambox wrote: 09 Mar 2020, 11:50 Tack @jang !
Jag kompletterade koden med några tider också, så att man inte väcks mitt i natten om temperaturen skulle stämma.
Men om jag behöver göra reset på "once", kan jag inte då bara skriva en regel som jag triggar tex. kl. 08:00 att "sensor.temp_golv:temp == 0"?

Code: Select all

  -- UTERUM ##################################
  rule([[
      once(sensor.temp_golv:temp >= 15) & 08:00..20:00 =>
      $TTS = 'Meddelande från växthuset! Växterna kan ställas ut, nu!&vol=12'
    ]])

  rule([[
      once(sensor.temp_golv:temp <= 10) & 08:00..20:00 =>
      $TTS = 'Meddelande från växthuset! Nu är det dax, ta in växterna, nu!&vol=12'
    ]])
Din property :temp förklarar också varför några andra av mina regler inte fungerar :oops: :oops:
Och nu hittade jag också fler propertys i det du skrivit om property functions.
Men,
är :power och :lux detsamma som :value? Kan man använda vilket som?
Ja det kan man. Det är samma ’Value’ property på dessa enheter. Men det kan vara enklare att läsa reglerna och förstå vad man gjort om man använder :temp för temperatur istället för det generella ’value’

Re: EventRunner

Posted: 09 Mar 2020, 19:40
by sonnyboy
Texan wrote: 09 Mar 2020, 18:27 Går det att tända och släcka lampor efter lux värde på en eller flera sensorer mellan 09:00 och 18:00.
Skulle vilja tända lampor när det blir mulet på dagen och släcka ifall det blir ljust igen.
Så här har jag gjort, dock så hämtar jag luxvärdet från en global variabel som hämtar värdet va 5 minut.
Blir lite som en Hysteres, annars så skulle värdet upppdateras varje minut och då kan det bli lite av och på och det vill jag inte.

Code: Select all

rule("$Sun <'25' => VD.Garaget_Stolpe:btn=1; farstukvist.tak:on")
rule("$Sun >'26' => VD.Garaget_Stolpe:btn=2; farstukvist.tak:off")

Re: EventRunner

Posted: 09 Mar 2020, 20:23
by Texan
sonnyboy wrote: 09 Mar 2020, 19:40
Texan wrote: 09 Mar 2020, 18:27 Går det att tända och släcka lampor efter lux värde på en eller flera sensorer mellan 09:00 och 18:00.
Skulle vilja tända lampor när det blir mulet på dagen och släcka ifall det blir ljust igen.
Så här har jag gjort, dock så hämtar jag luxvärdet från en global variabel som hämtar värdet va 5 minut.
Blir lite som en Hysteres, annars så skulle värdet upppdateras varje minut och då kan det bli lite av och på och det vill jag inte.

Code: Select all

rule("$Sun <'25' => VD.Garaget_Stolpe:btn=1; farstukvist.tak:on")
rule("$Sun >'26' => VD.Garaget_Stolpe:btn=2; farstukvist.tak:off")
:oops: Hur har du gjort den globala variabeln, och hur är det gjort så att den hämtar var 5:e minut?

Re: EventRunner

Posted: 09 Mar 2020, 20:52
by sonnyboy
Texan wrote: 09 Mar 2020, 18:27 :oops: Hur har du gjort den globala variabeln, och hur är det gjort så att den hämtar var 5:e minut?
Jag har en VD med en ESP8266 med esp easy på som läser av en BH1750.
Vad har du som du tar luxvärdet ifrån?
Det är enkelt att få värdet från en enhet till en global variabel.

Code: Select all

fibaro:setGlobal("Sun", value)

Re: EventRunner

Posted: 09 Mar 2020, 22:48
by Texan
sonnyboy wrote: 09 Mar 2020, 20:52
Texan wrote: 09 Mar 2020, 18:27 :oops: Hur har du gjort den globala variabeln, och hur är det gjort så att den hämtar var 5:e minut?
Jag har en VD med en ESP8266 med esp easy på som läser av en BH1750.
Vad har du som du tar luxvärdet ifrån?
Det är enkelt att få värdet från en enhet till en global variabel.

Code: Select all

fibaro:setGlobal("Sun", value)
Jag har en Aeon Multisensor 6 som matas via "usb"

Re: EventRunner

Posted: 10 Mar 2020, 08:57
by jang
Din sensor returnerar 'lux' värdet i propertyn :value - eller :lux som är samma (En Aeon Multisensor 6 skapar flera deviceID varav en är ljussensorn)

En regel kan se ut som

Code: Select all

rule("sensor=99; lampor={77,66}")
rule("once(sensor:lux < 50) & 09:00..18:00 > lampor:on")
rule("once(sensor:lux >= 50) & 09:00..18:00 > lampor:off")
'once' så att den inte triggar flera gånger på värde under 50 (eller över 50) - jag vet inte om värdet 50 är rätt.

Om du har flera ljussensorer kan man ta medelvärdet av dem...

Code: Select all

rule("sensors={99,100}; lampor={77,66}")
rule("once(average(sensors:lux) < 50) & 09:00..18:00 > lampor:on")
rule("once(average(sensors:lux) > 50) & 09:00..18:00 > lampor:off")

Re: EventRunner

Posted: 20 Mar 2020, 19:18
by Texan
jang wrote: 10 Mar 2020, 08:57 Din sensor returnerar 'lux' värdet i propertyn :value - eller :lux som är samma (En Aeon Multisensor 6 skapar flera deviceID varav en är ljussensorn)

En regel kan se ut som

Code: Select all

rule("sensor=99; lampor={77,66}")
rule("once(sensor:lux < 50) & 09:00..18:00 > lampor:on")
rule("once(sensor:lux >= 50) & 09:00..18:00 > lampor:off")
'once' så att den inte triggar flera gånger på värde under 50 (eller över 50) - jag vet inte om värdet 50 är rätt.

Om du har flera ljussensorer kan man ta medelvärdet av dem...

Code: Select all

rule("sensors={99,100}; lampor={77,66}")
rule("once(average(sensors:lux) < 50) & 09:00..18:00 > lampor:on")
rule("once(average(sensors:lux) > 50) & 09:00..18:00 > lampor:off")
Får följande fel :oops:

Re: EventRunner

Posted: 20 Mar 2020, 20:57
by jang
Sorry, jag måste ha somnat vid ratten...
Sista '>' ska vara en pil '=>'

Code: Select all

rule("sensors={99,100}; lampor={77,66}")
rule("once(average(sensors:lux) < 50) & 09:00..18:00 => lampor:on")
rule("once(average(sensors:lux) > 50) & 09:00..18:00 => lampor:off")

Re: EventRunner

Posted: 24 Mar 2020, 20:28
by sonnyboy
Snart är det dags för Earth hour igen :) är det någon som har en färdig rule och vill dela med sig?

Re: EventRunner

Posted: 24 Mar 2020, 20:51
by Texan
jang wrote: 20 Mar 2020, 20:57 Sorry, jag måste ha somnat vid ratten...
Sista '>' ska vara en pil '=>'

Code: Select all

rule("sensors={99,100}; lampor={77,66}")
rule("once(average(sensors:lux) < 50) & 09:00..18:00 => lampor:on")
rule("once(average(sensors:lux) > 50) & 09:00..18:00 => lampor:off")
Perfekt - Tackar

Re: EventRunner

Posted: 25 Mar 2020, 11:09
by RH_Dreambox
sonnyboy wrote: 24 Mar 2020, 20:28 Snart är det dags för Earth hour igen :) är det någon som har en färdig rule och vill dela med sig?
Den här tror jag @jang har gjort, så den bör fungera.

Code: Select all

-- EARTH HOUR #######################################
lights={46,156,135,85,81,11,13,23,25,87,7,15,17,9,121} -- eller hämta värden från HomeTable
rule("earthDates={2019/3/30/20:30,2020/3/28/20:30}")
rule("dolist(v,earthDates,log(osdate('Earth hour %c',v)) & post(#earthHour,v))")
rule("#earthHour => states = lights:value; lights:off; wait(01:00); lights:value = states")

Re: EventRunner

Posted: 25 Mar 2020, 12:42
by sonnyboy
RH_Dreambox wrote: 25 Mar 2020, 11:09
sonnyboy wrote: 24 Mar 2020, 20:28 Snart är det dags för Earth hour igen :) är det någon som har en färdig rule och vill dela med sig?
Den här tror jag @jang har gjort, så den bör fungera.

Code: Select all

-- EARTH HOUR #######################################
lights={46,156,135,85,81,11,13,23,25,87,7,15,17,9,121} -- eller hämta värden från HomeTable
rule("earthDates={2019/3/30/20:30,2020/3/28/20:30}")
rule("dolist(v,earthDates,log(osdate('Earth hour %c',v)) & post(#earthHour,v))")
rule("#earthHour => states = lights:value; lights:off; wait(01:00); lights:value = states")
Tackar, den jag har men tyckte inte den funkade, får kolla lite nu på lunchen :)
Det måste ju fungera på lördag!

Re: EventRunner

Posted: 25 Mar 2020, 12:56
by sonnyboy
Något som inte rimmar med detta, har du något förslag?

[DEBUG] 11:47:05: Earth hour Wed Mar 25 11:47:05 2020
[DEBUG] 11:47:06: Error in 'dolist(v,earthDates,log(osdate('Earth hour %c',v)) & post(#earthHour,v))': /opt/fibaro/scenes/323.lua:2084: No such function:dolist

[DEBUG] 11:47:06:
[DEBUG] 11:47:06: Line 2082: stat,res=(instr[i[1]] or instr['%call'])(stack,i[2],env,i)
[DEBUG] 11:47:06: Line 2083: postTrace(i,args,stack,env.cp)
[DEBUG] 11:47:06: Line 2084:>>> else stat,res=(instr[i[1]] or instr['%call'])(stack,i[2],env,i) end
[DEBUG] 11:47:06: Line 2085: env.cp = env.cp+1
[DEBUG] 11:47:06: Line 2086: end --until env.cp > #code or stat
[DEBUG] 11:47:06:

[DEBUG] 11:47:06: Error loading rules:/opt/fibaro/scenes/323.lua:2252: /opt/fibaro/scenes/323.lua:2084: No such function:dolist

Re: EventRunner

Posted: 25 Mar 2020, 13:40
by jang
'dolist' försvann i ER2... nu i ER3 ser det mer ut som Lua med en "for .. pairs(...) do .... end"

Code: Select all

-- EARTH HOUR #######################################
lights={46,156,135,85,81,11,13,23,25,87,7,15,17,9,121} -- eller hämta värden från HomeTable
rule("earthDates={2019/3/30/20:30,2020/3/28/20:30}")
rule("for _,v in ipairs(earthDates) do log(osdate('Earth hour %c',v)); post(#earthHour,v) end")
rule("#earthHour => states = lights:value; lights:off; wait(01:00); lights:value = states")
Ett problem kan vara att de lampor man vill slå av måste support "turnOff" (fibaro:call(id,"turnOff")) vilket de flest gör.
Om ni vill testa så kan ni lägga till reglerna

Code: Select all

rule("#earthHour2 => states = lights:value; lights:off; wait(00:00:10); lights:value = states")
rule("@now+00:00:05 => post(#earthHour2)")
Så kommer den 5sek efter ni startat om ER att posta en #earthHour2 som släcker i 10s. Då ser ni om lamporna släcker korrekt, och tänder igen. Värre om det går fel med hela familjen som åskådare ...och domare... :-)

Re: EventRunner

Posted: 25 Mar 2020, 14:35
by sonnyboy
jang wrote: 25 Mar 2020, 13:40 'dolist' försvann i ER2... nu i ER3 ser det mer ut som Lua med en "for .. pairs(...) do .... end"

Code: Select all

-- EARTH HOUR #######################################
--lights={ 252,248 } -- eller hämta värden från HomeTable
--rule("earthDates={2020/3/25/13:13,2021/3/27/20:30,2022/3/26/20:30}")
--rule("for _,v in ipairs(earthDates) do log(osdate('Earth hour %c',v)); post(#earthHour,v) end")
--rule("#earthHour => states = lights:value; lights:off; wait(00:02); lights:value = states")
Detta släcker finfint, men den tänder inte igen?
Testar just nu med 2 st Fibaro wallplugs

Men efter en stund så crashar ER
[DEBUG] 13:12:17: for _,v in ipairs(earthDates) do log(osdate('Earth hour %c',v)); post(#earthHour,v) end = nil
[DEBUG] 13:12:17: Rule:4[#earthHour => states = lights:value; lights:off; wait(00:02); lights:value = sta...] = OK
[DEBUG] 13:13:00: [{"type":"earthHour"}]>>'Rule:4[#earthHour => states = lights:value; lights:off; wait(00:02); lights:value = sta...]'
[DEBUG] 13:18:29: Aborting: Server not started yet
[DEBUG] 13:18:39: Aborting: Server not started yet
[DEBUG] 13:21:46: Aborting: Server not started yet
[DEBUG] 13:22:21: Aborting: Server not started yet
[DEBUG] 13:22:27: Aborting: Server not started yet

Re: EventRunner

Posted: 25 Mar 2020, 16:09
by RH_Dreambox
Ja, det blev samma fel hos mig. Men jag blir inte klok på varför.

Re: EventRunner

Posted: 25 Mar 2020, 21:42
by jang
RH_Dreambox wrote: 25 Mar 2020, 16:09 Ja, det blev samma fel hos mig. Men jag blir inte klok på varför.
Sorry, det var ett fel sedan jag flyttade från ER2 till ER3. Koden för att tilldela en lista av devices en lista utav värden var trasig och det verkar inte som ngn använder det förutom i earthHour exemplet.
Dvs.
a = {17,42}:value
tilldelar 'a' listan {"0","0"} om både 17 och 41 är av. Det funkade.
{17,42}={"0","0"} skulle tilldela 17:value=0 och 42:value=0 men den koden hade fallit bort när jag gick från ER2 till ER3.
Nu har jag pushat ER3 fixB89 som rättar till det.
Vi hinner fortfarande till på lördag :-)

Re: EventRunner

Posted: 25 Mar 2020, 21:48
by sonnyboy
jang wrote: 25 Mar 2020, 21:42
RH_Dreambox wrote: 25 Mar 2020, 16:09 Ja, det blev samma fel hos mig. Men jag blir inte klok på varför.
Sorry, det var ett fel sedan jag flyttade från ER2 till ER3. Koden för att tilldela en lista av devices en lista utav värden var trasig och det verkar inte som ngn använder det förutom i earthHour exemplet.
Dvs.
a = {17,42}:value
tilldelar 'a' listan {"0","0"} om både 17 och 41 är av. Det funkade.
{17,42}={"0","0"} skulle tilldela 17:value=0 och 42:value=0 men den koden hade fallit bort när jag gick från ER2 till ER3.
Nu har jag pushat ER3 fixB89 som rättar till det.
Vi hinner fortfarande till på lördag :-)
Nu funkade det :D
Lördagen är räddad, @jang tack så mycket!!

Re: EventRunner

Posted: 26 Mar 2020, 11:10
by RH_Dreambox
Sorry, det var ett fel sedan jag flyttade från ER2 till ER3. Koden för att tilldela en lista av devices en lista utav värden var trasig och det verkar inte som ngn använder det förutom i earthHour exemplet.
Jag skulle tro att det beror på att vi "amatörer" inte begriper oss på dina avancerade funktioner, och kan bara använda dem med hjälp från dig. :D
Men jag skall göra vad jag kan för att hitta fler tillämpningar. :o

Re: EventRunner

Posted: 27 Mar 2020, 20:17
by Systemfel
jang wrote: 25 Mar 2020, 13:40 'dolist' försvann i ER2... nu i ER3 ser det mer ut som Lua med en "for .. pairs(...) do .... end"

Code: Select all

-- EARTH HOUR #######################################
lights={46,156,135,85,81,11,13,23,25,87,7,15,17,9,121} -- eller hämta värden från HomeTable
rule("earthDates={2019/3/30/20:30,2020/3/28/20:30}")
rule("for _,v in ipairs(earthDates) do log(osdate('Earth hour %c',v)); post(#earthHour,v) end")
rule("#earthHour => states = lights:value; lights:off; wait(01:00); lights:value = states")
Ett problem kan vara att de lampor man vill slå av måste support "turnOff" (fibaro:call(id,"turnOff")) vilket de flest gör.
Om ni vill testa så kan ni lägga till reglerna

Code: Select all

rule("#earthHour2 => states = lights:value; lights:off; wait(00:00:10); lights:value = states")
rule("@now+00:00:05 => post(#earthHour2)")
Så kommer den 5sek efter ni startat om ER att posta en #earthHour2 som släcker i 10s. Då ser ni om lamporna släcker korrekt, och tänder igen. Värre om det går fel med hela familjen som åskådare ...och domare... :-)

Då var det fixat tack då blir det Earth Hour för mig med :) första gången :) är det bara lägga till datumen sen lär väll ändra sig till nästa år