Motorvärmarstyrning

Här kan du som nybörjare ställa dina frågor utan att skämmas
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

iSnobben wrote:
Borgstrand wrote:Hej iSnobben,

Bra uppdatering, lite nyfiken på hur du tänkte använda de delar som för tillfället är "utgråat" i din kod.

Tänker på raderna:
--local lastDeparture=departureTime + (15 * 60);
--fibaro:setGlobal("lastDepartureTime", lastDeparture);

lastDepartureTime är ju med som en Global variabel men ser inte att du använder den aktivt i din kod.
Tanken har varit att lägga till en viss eftergångstid på värmaren för som det fungerar just nu så stängs ju värmaren av exakt på avresetiden och riktigt så punktlig är jag tyvärr inte alltid. Tyvärr fungerade inte det utgråade när jag testade och jag har inte hunnit kolla på det igen. Borde kanske ha tagit bort den delen innan jag postade här men den påverkar ju inte negativt heller så...
Nu blev jag ju tvungen att kolla på detta och nu är scenen löst så att man kan ställa in eftergångstiden i en local variabel i scenen. Jag har satt den till 15 minuter. Dock så har jag bestämt mig för att radera raden i den virtuella enheten där jag tänkte skriva ut sista avresetiden.

Code: Select all

--[[
%% autostart
%% properties
%% globals
--]]

-- Create the following Global Variables
	-- heaterOverride
	-- departureHour
	-- departureMinute
	-- diffStart
	-- manualOverride
	-- lastDepartureTime
	-- heaterStatus

if (fibaro:countScenes() > 1) then fibaro:abort() end 

while true do
  
  local relayId = 195; -- change to your relay ID
  local tempID = 219; -- change to your Temperature ID
  -- local tempID = 3; -- Fibaro Yahoo Weather ID, change from "value" to "Temperature" on line 26
  local turnOffDelay = 15 --time in minutes the heater will stay on after the set departure time.
  local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
  local heaterStatus = tonumber(fibaro:getGlobalValue("heaterStatus"));
  local outTemp = tonumber(fibaro:getValue(tempID, "value"));
  local heaterState = tonumber(fibaro:getValue(relayId, "value"));

  local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
  local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));

  local diff = 0;
diff = math.floor(60 + 100*outTemp/(outTemp - 35))
 if outTemp > 13 then
 diff = 0;
 end
  fibaro:setGlobal("diffStart", diff)

  local theDate = os.date("*t");
  local currentTime=tonumber(os.time());
  local departureTime=tonumber(os.time({year=theDate.year, month=theDate.month, day=theDate.day, hour=startHour, min=startMinute}));
  local lastDeparture=departureTime + (turnOffDelay * 60);
  fibaro:setGlobal("lastDepartureTime", lastDeparture);
  local startTime=tonumber(departureTime-diff*60);
  
	fibaro:debug("heaterState: " .. heaterState);
	fibaro:debug("currentTime: " .. currentTime);
	fibaro:debug("departureTime: " .. departureTime);
	fibaro:debug("manualOverride: " .. manualOverride);
  	fibaro:debug("heaterStatus: " .. heaterStatus);
  	fibaro:debug("lastDeparture: " .. lastDeparture);
	fibaro:debug("-------------------------------------");
  
  -- Don't start the timer if it's too warm outside
  -- (or if its already started)
  if (outTemp < 10) and (heaterState == 0) and (heaterStatus == 1) then
      if (currentTime >= startTime) and (currentTime < departureTime) then
        fibaro:call(relayId, "turnOn");
      end
  end
  
  if (heaterState == 1) and (currentTime >= lastDeparture) and (manualOverride == 0) then
    fibaro:call(relayId, "turnOff");
  end
  
  if (heaterState == 1) and (heaterStatus == 0) then
    fibaro:call(relayId, "turnOff");
  end
  
  fibaro:sleep(60*1000);
end
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

Har kört denna nu och den funkar ju perfekt.. nu vill sambon också ha en egen ... Testade att kopiera virtuella enheten och scenen men det e bara den ena knappen som reagerar. .. vad behöver jag mer göra för att kunna ha 2 enheter? Seperata kontaktet..
Fibaro Homecenter 2
4.20
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1203
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

För att köra två separata värmare så måste du lägga till en omgång globala variabler med annat variabelnamn.
Tex. med tillägget B som nedan.
Sedan uppdaterar du koden i scenen och VD'n på alla ställen där det står getGlobalValues() eller setGlobal() med de nya variabelnamnen, och så ID för den andra brytaren såklart.

Code: Select all

-- Create the following Global Variables
   -- heaterOverrideB
   -- departureHourB
   -- departureMinuteB
   -- diffStartB
   -- manualOverrideB
   -- lastDepartureTimeB
   -- heaterStatusB
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
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

Tack!
Ska genast testa!! och det verkar ju fungera bra!
Fibaro Homecenter 2
4.20
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Idag var det en lite förändring igen, la in Workday som ett villkor.
Så nu kör den bara på arbetsdagar meda auto och helgerna får man köra manuellet :)
Attachments
MV.PNG
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1203
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Jättebra idé.
Men har du en global variabel för detta och en separat scen för att ställa veckodagarna?
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
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Jag använder mig av @Bamsefar s räkna ut påsken har jag för mig att scriptet hette, hittar även andra högtider tip midsommar mm. Man kan även lägga in dagar man är ledig manuellt om det är strödagar, annars så kan man även lägga in mellan 2016-11-01- 2015-11-22. Det scriptet håller reda på vilka dagar som jag jobbar.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

Den med arbetsdagar skulle jag vilja lägga in.. jobbar ju mån - fredag..
Däremot har jag märkt att om jag sätter på den manuellt via "på" så stängs den igen efter 15s..
Fibaro Homecenter 2
4.20
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1203
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Däremot har jag märkt att om jag sätter på den manuellt via "på" så stängs den igen efter 15s..
Motorvärmaren är inte riktigt färdigutvecklad så det är den globala variabeln "heaterStatus" som är med och spökar.
Scenen kollar statusen för "heaterStatus", men det konstiga är att det inte finns någon kod som sätter dess värde. Och är värdet 0 fungerer inte motorvärmaren.
Så jag har plockat bort kontrollen av "heaterStatus" (man skulle kunna ta bort den globala variabeln också).
Koden nedan är omskriven på slutet (med början vid " -- Don't start the timer...") och den som vill testa byter bara ut koden.

Knappen "Manuell På" fungerar nu så att värmaren går på i 60 min och stänger sedan av sig. Annan tid lägger du in under fibaro:sleep() nedan.
"Manuell På" övertrumfar den automatiska timern, så är det 5 min kvar till avresetid så är värmaren på i ytterligare 60 min om man trycker "Manuell På".

Det som inte är löst ännu är hur man skall stänga av värmaren manuellt då den är satt på Autostart. Som det är nu så stängs värmaren av men startar upp igen efter en minut.

Code: Select all

  -- Don't start the timer if it's too warm outside
  -- (or if its already started)
 
  if (outTemp < 10) and (heaterState == 0) then
      if (currentTime >= startTime) and (currentTime < departureTime) then
        fibaro:call(relayId, "turnOn");
      end
  end
  if (heaterState == 1) and (currentTime >= lastDeparture) and (manualOverride == 0) then
    fibaro:call(relayId, "turnOff");
  end
  
   if (manualOverride == 1) then
    fibaro:call(relayId, "turnOn");
    fibaro:sleep(60*60000); -- Sätt den tid värmaren skall gå manuellt, (här satt till 60 min)
    fibaro:call(relayId, "turnOff");
    fibaro:setGlobal("heaterOverride", 0);
  end
  
  fibaro:sleep(60*1000);
end
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
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

Man lär sig mer och mer här!!
Din ändring verkar fungera!!
får dock ett fel..
Debug line 39 :attempt to compare nil with number

"if (heaterState == 1) and (currentTime >= lastDeparture) and (manualOverride == 0)"

Har även klistrat in Bamsefars Workingday scen.
Hur ska jag skriva i motorvärmare scenen för att få med det i beräkningen?
Fibaro Homecenter 2
4.20
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

andwin wrote: Hur ska jag skriva i motorvärmare scenen för att få med det i beräkningen?
Denna rad kan du lägga in först på typ rad 15

Code: Select all

local WorkDay = (fibaro:getGlobal("WorkToday"))

Sen är detta ändrat

Code: Select all

if (outTemp < 10) and (heaterState == 0) then
      if (currentTime >= startTime) and (currentTime < departureTime) then
	  if (WorkDay == "True") then --NYTT
        fibaro:call(relayId, "turnOn");
      end
  end
end --NYTT
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

Tackar igen..
Hur ser det ut på den raden som hämtar Arbetsdagarna?
True & False.. hur ska den labeln se ut? behöver jag skriva några Variabler?
Fibaro Homecenter 2
4.20
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Lägg till en label och ge den namn Arbetsdag och id lblWork.
sen lägger du till detta i mainloop ovanför fibaro:sleep

Code: Select all

fibaro:call(virtualDeviceId , "setProperty", "ui.lblWork.value", fibaro:getGlobal("WorkToday") .. "" )
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

Tack!!!!!
Nu verkar det fungera!!
Fibaro Homecenter 2
4.20
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

som sagt funkar nästan riktigt bra.. det enda är scenen inte vill köra automatiskt.
Jag märkte det nu när det var helg..

jag har ställt den att den ska starta automatiskt men den vill inte..
Även när jag trycker kör så verkar den bara gå en gång för att sedan stänga ner sig
Fibaro Homecenter 2
4.20
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Är det Motorvärmarstyrningen som inte går på helgen?
Om du ändrade enligt mitt förslag så ska den ju inte fungera på helgen.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

sonnyboy wrote:Är det Motorvärmarstyrningen som inte går på helgen?
Om du ändrade enligt mitt förslag så ska den ju inte fungera på helgen.
Sorry... menade scenen Workdays..
Den stod på true när jag kollade i lördags, då såg jag att den inte kördes..
Starta den och då kom det False ;)
Idag så var bilen kall så jag kollade och då kördes inte scenen så den stod kvar i False läget..
Starta scenen och det blev True.. så det är att scenen som sköter arbetsdagar som inte vill köras automatiskt.. utan den stängs ner direkt när man kör den trots att jag valt att den ska köras automatiskt samt vid start
Fibaro Homecenter 2
4.20
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
11
Location: Västerås

Ahh då e jag med,
Har du lagt in den som en VD eller är det scen?
Misstänker att du lagt in den som VD då måste du ha en Scen som kör den 1 gång på dag.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
andwin
Medlem
Posts: 54
Joined: 03 Oct 2016, 13:37
8
Location: Eskilstuna

nepp den ligger som en scen...
fibaro.JPG
Fibaro Homecenter 2
4.20
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1203
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Även när jag trycker kör så verkar den bara gå en gång för att sedan stänga ner sig
Kodsnutten i mitt tidigare inlägg (10 inlägg upp) motverkar att värmaren stänger av sig då du aktiverar den manuellt.
Jag använder själv inte funktionen med veckodagar, men jag tror inte min kodsnutt orsakar några problem 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
Post Reply