Du har rätt, det är ngt skumt med det här - jag återkommer....RH_Dreambox wrote: ↑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?
@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?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.
EventRunner
Ok, jag har en wall-plug, och det visar sig att om man om man läser värdet, slår på pluggen och sedan läser värdet igen så hinner inte HC2:an uppdatera värdet. ER är för snabb Här har jag en åsikt att Fibaro borde optimistiskt uppdatera värdet och sedan om det visade sig vara fel så sätta tillbaka det till gamla värdet - men jag kan förstå att det här var enklare.jang wrote: ↑25 Feb 2020, 16:56Du har rätt, det är ngt skumt med det här - jag återkommer....RH_Dreambox wrote: ↑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?
@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?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 man testar:
Code: Select all
print(fibaro.getValue(17,"value"))
fibaro.call(17,"turnOn")
print(fibaro.getValue(17,"value"))
Den här koden funkar för mig med min wall plug.
Code: Select all
rule([[sensor.garage_pir:breached =>
local lampa,state = garage.lampa,nil;
repeat state=lampa:value; lampa:toggle; wait(1) until sensor.garage_pir:safe | state==lampa:value;
lampa:off]])
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Ja den koden fungerade bättre, så nu borde även @PeterM5 bli nöjdDen här koden funkar för mig med min wall plug.
CODE: SELECT ALL
rule([[sensor.garage_pir:breached =>
local lampa,state = garage.lampa,nil;
repeat state=lampa:value; lampa:toggle; wait(1) until sensor.garage_pir:safe | state==lampa:value;
lampa:off]])
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Det fungerar som tänkt när jag testarRH_Dreambox wrote: ↑25 Feb 2020, 17:36Ja den koden fungerade bättre, så nu borde även @PeterM5 bli nöjdDen här koden funkar för mig med min wall plug.
CODE: SELECT ALL
rule([[sensor.garage_pir:breached =>
local lampa,state = garage.lampa,nil;
repeat state=lampa:value; lampa:toggle; wait(1) until sensor.garage_pir:safe | state==lampa:value;
lampa:off]])
Men när jag ska lägga till min lampa i hallen och sensorn i garaget får jag felmeddelande.
Hur ska koden se ut med mina device?
Code: Select all
--[[
%% properties
298 value
381 value
--]]
HT =
{
hall = {lampa = 298},
bilplats = {sensor = 381},
}
rule([[HT.bilplats.sensor:breached =>
HT.hall.lampa,state = HT.hall.lampa,nil;
repeat state=HT.hall.lampa:value; HT.hall.lampa:toggle; wait(1) until HT.bilplats.sensor:safe | state==HT.hall.lampa:value;
HT.hall.lampa:off]])
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Så här skall din regel se ut.
Vill du inte ha tidsintervallet så tar du bort detta ( & 23:00..06:00 ).
Vill du inte ha tidsintervallet så tar du bort detta ( & 23:00..06:00 ).
Code: Select all
rule([[bilplats.sensor:breached & 23:00..06:00 =>
local lampa,state = hall.lampa,nil;
repeat state=lampa:value; lampa:toggle; wait(1) until bilplats.sensor:safe | state==lampa:value;
lampa:off]])
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
dvs om du gjortRH_Dreambox wrote: ↑26 Feb 2020, 12:54 Så här skall din regel se ut.
Vill du inte ha tidsintervallet så tar du bort detta ( & 23:00..06:00 ).Code: Select all
rule([[bilplats.sensor:breached & 23:00..06:00 => local lampa,state = hall.lampa,nil; repeat state=lampa:value; lampa:toggle; wait(1) until bilplats.sensor:safe | state==lampa:value; lampa:off]])
Code: Select all
Util.defvars(HT)
jang wrote: ↑26 Feb 2020, 13:08dvs om du gjortRH_Dreambox wrote: ↑26 Feb 2020, 12:54 Så här skall din regel se ut.
Vill du inte ha tidsintervallet så tar du bort detta ( & 23:00..06:00 ).Code: Select all
rule([[bilplats.sensor:breached & 23:00..06:00 => local lampa,state = hall.lampa,nil; repeat state=lampa:value; lampa:toggle; wait(1) until bilplats.sensor:safe | state==lampa:value; lampa:off]])
Code: Select all
Util.defvars(HT)
Code: Select all
rule([[HT.bilplats.sensor:breached | HT.outserverroom.sensor:breached & $TOD=='Sleep' =>
local lampa,state = HT.kontor.lampa,nil;
repeat state=lampa:value; lampa:toggle; wait(1) until trueFor(00:02:00,HT.bilplats.sensor:safe) | state==lampa:value;
lampa:off]])
Går det att använda en global variabel också, jag får inte detta att fungera?
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet
PeterM5 wrote: ↑26 Feb 2020, 22:03jang wrote: ↑26 Feb 2020, 13:08dvs om du gjortRH_Dreambox wrote: ↑26 Feb 2020, 12:54 Så här skall din regel se ut.
Vill du inte ha tidsintervallet så tar du bort detta ( & 23:00..06:00 ).Code: Select all
rule([[bilplats.sensor:breached & 23:00..06:00 => local lampa,state = hall.lampa,nil; repeat state=lampa:value; lampa:toggle; wait(1) until bilplats.sensor:safe | state==lampa:value; lampa:off]])
Code: Select all
Util.defvars(HT)
Tack, nu funkar det.Code: Select all
rule([[HT.bilplats.sensor:breached | HT.outserverroom.sensor:breached & $TOD=='Sleep' => local lampa,state = HT.kontor.lampa,nil; repeat state=lampa:value; lampa:toggle; wait(1) until trueFor(00:02:00,HT.bilplats.sensor:safe) | state==lampa:value; lampa:off]])
Går det att använda en global variabel också, jag får inte detta att fungera?
Code: Select all
rule([[$TOD=='Sleep' & HT.bilplats.sensor:breached | HT.outserverroom.sensor:breached =>
local lampa,state = HT.kontor.lampa,nil;
repeat state=lampa:value; lampa:toggle; wait(1) until trueFor(00:02:00,HT.bilplats.sensor:safe) | state==lampa:value;
lampa:off]])
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet
Du kan inte använda trueFor inuti en while loop sådär. trueFor får endast användas på vänstersidan av '=>*.PeterM5 wrote: ↑26 Feb 2020, 22:13Nu verkar det funka, tack för all hjälpCode: Select all
rule([[$TOD=='Sleep' & HT.bilplats.sensor:breached | HT.outserverroom.sensor:breached => local lampa,state = HT.kontor.lampa,nil; repeat state=lampa:value; lampa:toggle; wait(1) until trueFor(00:02:00,HT.bilplats.sensor:safe) | state==lampa:value; lampa:off]])
Dessutom har '&' högre prioritet än '|'.
Jag tror du måste skriva
Code: Select all
rule([[$TOD=='Sleep' & (HT.bilplats.sensor:breached | HT.outserverroom.sensor:breached) =>
local lampa, sensor, state = HT.kontor.lampa, HT.bilplats.sensor, nil;
repeat state=lampa:value; lampa:toggle; wait(1) until (sensor:safe & sensor:last > 00:02) | state==lampa:value;
lampa:off]])
I repeat loopen testar vi om sensorn är safe och om :last (vilket är tiden sedan sista förändringen) är större an 2min. Nu kommer den att blinka 2min+(sensorns tid för återställning efter den varit breached) efter den blir breached.
Jag har testat nu, men lampan tänds bara en eller två ggr efter det inget.jang wrote: ↑27 Feb 2020, 08:15Du kan inte använda trueFor inuti en while loop sådär. trueFor får endast användas på vänstersidan av '=>*.PeterM5 wrote: ↑26 Feb 2020, 22:13Nu verkar det funka, tack för all hjälpCode: Select all
rule([[$TOD=='Sleep' & HT.bilplats.sensor:breached | HT.outserverroom.sensor:breached => local lampa,state = HT.kontor.lampa,nil; repeat state=lampa:value; lampa:toggle; wait(1) until trueFor(00:02:00,HT.bilplats.sensor:safe) | state==lampa:value; lampa:off]])
Dessutom har '&' högre prioritet än '|'.
Jag tror du måste skriva
Jag grupperade breached enheterna med () så att det tolkas (sleep & (bilplats | outserverroom)) - utan parenteser tolkades det som ((sleep & bilplats) | outserverroom)Code: Select all
rule([[$TOD=='Sleep' & (HT.bilplats.sensor:breached | HT.outserverroom.sensor:breached) => local lampa, sensor, state = HT.kontor.lampa, HT.bilplats.sensor, nil; repeat state=lampa:value; lampa:toggle; wait(1) until (sensor:safe & sensor:last > 00:02) | state==lampa:value; lampa:off]])
I repeat loopen testar vi om sensorn är safe och om :last (vilket är tiden sedan sista förändringen) är större an 2min. Nu kommer den att blinka 2min+(sensorns tid för återställning efter den varit breached) efter den blir breached.
Det som jag sa funkade igår, verkade blinka som det skulle förutom att jag inte hade testat sensorn outserverroom.
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet
Det är väl 2 olika sensorer vi pratar om?
Jag skulle dela upp det i 2 regler för tydlighetens skull
Code: Select all
rule([[$TOD=='Sleep' & HT.bilplats.sensor:breached =>
local lampa, sensor, state = HT.kontor.lampa, HT.bilplats.sensor, nil;
repeat state=lampa:value; lampa:toggle; wait(1) until (sensor:safe & sensor:last > 00:02) | state==lampa:value;
lampa:off]])
rule([[$TOD=='Sleep' & HT.outserverroom.sensor:breached =>
local lampa, sensor, state = HT.kontor.lampa, HT.outserverroom.sensor, nil;
repeat state=lampa:value; lampa:toggle; wait(1) until (sensor:safe & sensor:last > 00:02) | state==lampa:value;
lampa:off]])
Code: Select all
larmSensors = { HT.bilplats.sensor, HT.outserverroom.sensor}
rule([[$TOD=='Sleep' & larmSensors:breached =>
local lampa, state = HT.kontor.lampa, nil;
repeat state=lampa:value; lampa:toggle; wait(1) until (larmSensors:safe & min(larmSensors:last) > 00:02) | state==lampa:value;
lampa:off]])
Last edited by jang on 01 Mar 2020, 13:04, edited 1 time in total.
Jag har testat båda nu.jang wrote: ↑28 Feb 2020, 12:04Det är väl 2 olika sensorer vi pratar om?
Jag skulle dela upp det i 2 regler för tydlighetens skull
en kombinerad variant, lite mer komplexCode: Select all
rule([[$TOD=='Sleep' & HT.bilplats.sensor:breached => local lampa, sensor, state = HT.kontor.lampa, HT.bilplats.sensor, nil; repeat state=lampa:value; lampa:toggle; wait(1) until (sensor:safe & sensor:last > 00:02) | state==lampa:value; lampa:off]]) rule([[$TOD=='Sleep' & HT.outserverroom.sensor:breached => local lampa, sensor, state = HT.kontor.lampa, HT.outserverroom.sensor, nil; repeat state=lampa:value; lampa:toggle; wait(1) until (sensor:safe & sensor:last > 00:02) | state==lampa:value; lampa:off]])
Code: Select all
larmSensors = { HT.bilplats.sensor, HT.outserverroom.sensor} rule([[$TOD=='Sleep' & larmSensors:breached => local lampa, state = HT.kontor.lampa, nil; repeat state=lampa:value; lampa:toggle; wait(1) until (larmSensors:safe & min(sensor:last) > 00:02) | state==lampa:value; lampa:off]])
Funkar bra förutom att det slutar blinka när sensorn är safe, jag får det inte att funka med 2 minuters väntetid.
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet
Ok, det var en liten bug i den sista varianten, den kombinerade, ska testa mot larmSensors i 'until' testet. Jag har ändrat i min post.
Jag förstår inte varför den slår av efter 2 blink. verkar som "last modified" inte blir rätt på sensorn?
Kan du prova den här varianten
Code: Select all
rule([[$TOD=='Sleep' & HT.bilplats.sensor:breached =>
local lampa, sensor, state = HT.kontor.lampa, HT.bilplats.sensor, nil;
LBBD=now+00:02;
repeat state=lampa:value; lampa:toggle; wait(1) until (sensor:safe & now > LBBD) | state==lampa:value;
lampa:off]])
Tack, nu har jag testat.jang wrote: ↑01 Mar 2020, 13:31Ok, det var en liten bug i den sista varianten, den kombinerade, ska testa mot larmSensors i 'until' testet. Jag har ändrat i min post.
Jag förstår inte varför den slår av efter 2 blink. verkar som "last modified" inte blir rätt på sensorn?
Kan du prova den här variantenLBBD = Last Breached Bilplats DelayCode: Select all
rule([[$TOD=='Sleep' & HT.bilplats.sensor:breached => local lampa, sensor, state = HT.kontor.lampa, HT.bilplats.sensor, nil; LBBD=now+00:02; repeat state=lampa:value; lampa:toggle; wait(1) until (sensor:safe & now > LBBD) | state==lampa:value; lampa:off]])
Jag testade med en lampa, Dimmer2 och den strulade först.
Parameter 34 var satt till 1 och jag satte den till 0 istället, jag fick för mig att den inte hann stänga av riktigt innan den skulle tändas igen.
Kan det stämma, nu fungerar det som tänkt iallafall.
Tack för hjälpen
"Parameter 34
Soft-Start functionality
Time required to warm up the filament of halogen bulb.
0 - no soft-start
1 - short soft-start (0,1s)
Standardvärde
2 - long soft-start (0,5s)"
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Jag försöker skriva en regel som med hjälp av temperaturen skall tala om för mig när det är dax att ställa ut eller ta in växterna från växthuset.
Men jag tänker fel någonstans, för inte ens dessa enkla regler fungerar.
Testar jag med klockslag fungerar det , men inte med temperaturen som trigger. (tempsensorn finns med i headern)
Nästa karamell är att det får inte bli tjatiga upprepningar vid en temperaturförändring, utan jag skall bara påminnas en eller högst två gånger.
"once" har jag sett någonstans, men jag hittar inte hur det används. Nollställs "once" en gång per dygn eller hur funkar det?
Men jag tänker fel någonstans, för inte ens dessa enkla regler fungerar.
Code: Select all
rule("@sensor.temp_golv >= 15 => $TTS = 'Nu kan du ställa ut växterna.&vol=12'")
rule("@sensor.temp_golv <= 10 => $TTS = 'Nu är det dax att ta in växterna.&vol=12'")
Nästa karamell är att det får inte bli tjatiga upprepningar vid en temperaturförändring, utan jag skall bara påminnas en eller högst två gånger.
"once" har jag sett någonstans, men jag hittar inte hur det används. Nollställs "once" en gång per dygn eller hur funkar det?
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Jag antar det, för tar jag bort @ så får jag ett felmeddelande
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Om sensor.temp_golv är en device (en integer) så ska regeln se ut som
:temp hämtar temperaturen (vilket är samma som :value)
Om du bara vill ha en gång
Då måste den gå under 15 för att trigga igen. (dvs villkoret måste bli falskt innan det kan bli sant igen)
Det finns lite hyss för att återställa den varje dygn om du behöver det - hör av dig isåfall.
@ tolkar värdet efter som en tid vilket kan bli mycket konstigt...
Code: Select all
rule("sensor.temp_golv:temp >= 15 => $TTS = 'Nu kan du ställa ut växterna.&vol=12'")
Om du bara vill ha en gång
Code: Select all
rule("once(sensor.temp_golv:temp >= 15) => $TTS = 'Nu kan du ställa ut växterna.&vol=12'")
Det finns lite hyss för att återställa den varje dygn om du behöver det - hör av dig isåfall.
@ tolkar värdet efter som en tid vilket kan bli mycket konstigt...
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
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"?
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?
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'
]])
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?
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087