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
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")
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
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.
Re: EventRunner
Posted: 09 Mar 2020, 22:48
by Texan
sonnyboy wrote: ↑09 Mar 2020, 20:52
Texan wrote: ↑09 Mar 2020, 18:27
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.
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
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
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.
Men jag skall göra vad jag kan för att hitta fler tillämpningar.
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