Programmering i HC2 - fastnat

aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Hej,
Fick tipset att vända mig till detta forum för experthjälp :)
Har problem med en scen som är uppbyggd med blockprogrammering där hänsyn skall tas till både en variabel samt tid. Se nedan testscen där hänsyn inte tas till tid utan lampan tänds direkt när den aktiveras.
scene2.png
scene2.png (4.57 KiB) Viewed 17004 times
scene3.png
HC2 - 4.080
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1203
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Menar du att lampan tänds direkt når du aktiverar variabeln "Hemma-Borta" till "Borta" oavsett vad klockan är?
Eller tänds lampan 18:00 oavsett om variabeln är satt till "Hemma" eller "Borta". I det senare fallet så har den globala variabeln inte satts riktigt.
Kolla för säkerhets skull i Variabelpanelen vad som står där.
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
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Tack för svar.
Jag menar att lampan tänds direkt när jag aktiverar variablen "Hemma_Borta" till "Borta" oavsett vad klockan är. Lampan tänds direkt utan hänsyn till tidsangivelserna. Jag har provat att vända på tiderna och variablen så tiderna kommer först men det spelar ingen roll.
HC2 - 4.080
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1203
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Jag gjorde en test med en scen och en blockscen som din och det verkar vara en bug här. I annat fall så är det en tankevurpa i huvudet på mig :-).

Kör jag scenen med setGlobal så tänds som du säger lampan oavsett tid, vilket den inte borde göra.
Om man däremot sätter variabeln "Hemma_Borta" i variabelpanelen manuellt så verkar det fungera.

Testa du också med att manuellt sätta variabeln och kolla vad som händer. Det kanske är ett ärende för http://www.bugzilla.fibaro.com
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
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Det hände faktiskt inget alls när jag gjorde som du beskriver :?
Jag ändrade variabeln i variabelpanelen, antar att det var rätt?
HC2 - 4.080
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1203
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Men hade du satt en tid som inföll när lampan skulle tändas? Det kan vara en liten eftersläpning på tiden, kanske en halv minut.
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
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Absolut, satte en tid två minuter fram och väntade men lampan tändes aldrig. Märkligt :?
HC2 - 4.080
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Men det kan ju omöjligt bara vara jag som använder denna funktionen. Att tända en lampa med tidsscheman om man har ställt sig själv i bortaläge/lämnat hemmet?! :)

Hur har alla andra löst det undrar ju förstås jag? :)
HC2 - 4.080
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1203
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Nej, det borde ju fungera så som du vill. Jag förstår bara inte varför den beter sig så.
Det kan ju vara något jag förbisett, det är ibland lätt att missa enkla självklara detaljer :-)

Men för mig tändes lampan på utsatt tid då jag i variabelpanelen hade satt variabeln manuellt.
Sedan ändrade jag funktionen till att släcka lampan viss tid då parametern ändrats till Hemma. Och det funkade med.
Jag skall testa igen senare. Nu hinner jag inte eftersom jag har raderat testen.
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
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Strålande, tack för din hjälp så länge!
HC2 - 4.080
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Om man ändrar en global variabel i variabelpanelen så skapas aldrig någon trigger för scener. Om man vill få även triggning att ske pga ändrat värde så måste man sätta värdet via en scene eller VD.
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Tack Bamsefar, tanken är ju att jag ska ändra variabler med scener.

Har du någon idé kring varför min scen inte tar hänsyn till tidsangivelsen utan bara variabeln?
HC2 - 4.080
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Lyckades komma en bra bit längre men med hjälp av en virtual device istället för en lua-scen.
La in följande kod i main på virtual device och det fungerade;

Code: Select all

local currentDate = os.date("*t");
if ( currentDate.hour > 21 and currentDate.hour < 05 ) and 
 ( fibaro:getGlobalValue("Hemma_Borta") == "Borta" ) 
then
	fibaro:call(41, "turnOn");
end

delay = 10  -- antal sekunder att vänta till nästa koll, i detta fall tio sekunder
fibaro:sleep(delay*1000) -- väntar i antal millisekunder
Dock undrar jag hur jag kan lägga en timer som stänger av lampan igen efter sju timmar? Skulle också vilja tända den vid 21:00 mån, ons, fre och vid 21:30 tis, tor, lör. Går detta att göra?
HC2 - 4.080
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Rent generellt så rekommenderar jag att man INTE har kod av denna typ i main på en VD. Och skälet är att den koden körs i princip varje sekund (eller var tredje för att antagligen vara mera exakt) - dvs några sådana och du har fullt sjå med din HC2 rent prestandamässigt. Nu har du ju lagt en sleep(10*1000) - så det underlättar såklart. Men rent generellt alltså... 8-)

Visst kan du skala en LUA scen som fixar allt det du beskriver, du kan testa något i denna stil antar jag (nedanstående är ej testat utan skrivet fritt från minnet, så fel kan finnas):

Code: Select all

Veckodag = os.date("%A")
if Veckodag == "Monday" or Veckodag == "Wednesday" or Veckodag == "Friday" then
  <do stuff>
end
Sedan vet jag inte om jag skulle testa tiden på det sättet du gör, jag tror du gör det enklare för dig om du gör såhär:

Code: Select all

	LCurrentDate = os.date("*t") -- Current Date&Time in table format
	if ( string.format("%02d", LCurrentDate.hour) .. ":" .. string.format("%02d", LCurrentDate.min) == "09:05" ) then
		fibaro:startScene(16) -- Start a scene.....
	end 
Så nu är det bara å starta hacka ;-)
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Jag vände lite grann på det. Få se nu om jag tänkt rätt.
Först och främst så kör jag en scen som ändrar min variabel till borta-läge.

Då körs detta, OM tiden är mellan 18-05:

Code: Select all

local currentDate = os.date("*t");
if ( currentDate.hour > 18 and currentDate.hour < 05 ) and 
 ( fibaro:getGlobalValue("Hemma_Borta") == "Borta" ) 
then
      fibaro:startScene(80)
end

delay = 10  -- antal sekunder att vänta till nästa koll, i detta fall en timme
fibaro:sleep(delay*1000) -- väntar i antal millisekunder
Detta startar i sin tur en scen som är uppbyggd enligt följande och i sin tur tänder en lampa vid ett exakt klockslag och är tänd i för närvarande 300 sekunder;
2231.png
HC2 - 4.080
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Hm, detta funkar ju inte eftersom scenen måste stå som aktiv och då körs den varje dag, inte bara när jag satt mig i borta-läge.

Tanken är att om jag ställer mig i bortaläge så vill jag att en lampa ska tändas kl 21 varannan dag och kl 22 varannan dag och stängas av efter sju timmar. Den ska liksom "loopas" så hela tiden om jag t.ex. är bortrest.
HC2 - 4.080
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Kommit vidare i tankarna, vad tros om denna lösningen för att uppnå det jag vill?
Känns enklare på något vis.

Virtual device som ändrar borta eller hemma, och i main loop så kontrollerar den var 47:e minut om jag är;
1. borta
2. tiden är mellan 20-24
Stämmer det så kör den scen 81 med ett sätt på/stäng av schema (sju timmar). Lite fullösning kanske men funkar detta som jag tänkt? Initiala tester visar på det och visst det blir inte bestäma olika klockslag varje veckodag utan här blir det i regel lite random med tanke på att kontrollen körs var 47:e minut.

Virtual device:
1.png
2.png
3.png
Och scenen som tänder och släcker en lampa
scene2.png
HC2 - 4.080
User avatar
Bamsefar
Z-Wave Kung
Posts: 1268
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Kan inte uttala mig om lösningen som sådan, men random inslaget är i alla fall något jag gillar. Om det nu är för att "simulera" att du är hemma, trots att du är bort, så är det enbart till stor fördel att lamporna tänds lite olika - man är som person inte så exakt som klockan om man så säger...
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

Precis, det är för att simulera att jag är hemma.

Men funkar det försöka lägga in allt under min VD med både knappar för "hemma borta läge" samt villkor i main? Egentligen undrar jag nu varför jag hänvisar till en scen och inte lägger in lampans tänd, delay, släck i VD!?
HC2 - 4.080
aftersun
Ny medlem
Posts: 19
Joined: 11 Mar 2016, 17:55
8

En fråga till dock.
Eftersom den gör en kontroll var 47:e minut kommer scenen att startas flera gånger mellan intervallet 20:00 - 24:00. Kan jag undvika detta på något sätt? Det finns ju någon inställning med scener där man får välja hur många gånger dom ska köras men vet inte exakt vad den scenen innebär?!
HC2 - 4.080
Post Reply