Motorvärmarstyrning

Här kan du som nybörjare ställa dina frågor utan att skämmas
Fredrik85
Medlem
Posts: 67
Joined: 24 Jan 2016, 17:05
8

Behöver lite support, har fått igång det mesta.
Men motorvärmaren slår igång 35 minuter tidigare än jag ställt in, antar att detta är tiden man vill värmaren ska vara igång?

Code: Select all

  local startTime=tonumber(departureTime-diff*120);
Och sen slår inte brytaren av 15 minuter efter avresetiden av någon anledning.
Här är hela min kod

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 = 76; -- change to your relay ID

  local tempID = 405; -- change to your Temperature ID
-- Byt raden ovan till nedanstående om du inte har egen tempgivare
-- local tempID = 3; -- Fibaro Yahoo Weather ID, change from "value" to "Temperature"

  local turnOffDelay = 15 --time in minutes the heater will stay on after the set departure time.
  local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
  local WorkDay = (fibaro:getGlobal("WorkToday"))-- True eller False förväntas
  local WorkTomorrow = (fibaro:getGlobal("WorkTomorrow"))-- True eller False förväntas
  local heaterStatus = tonumber(fibaro:getGlobalValue("heaterStatus"));

  local outTemp = tonumber(fibaro:getValue(405, "value"));
-- Byt raden ovan till nedanstående om du inte har egen tempgivare
--  local outTemp = tonumber(fibaro:getValue(tempID, "Temperature"));

  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 startTime=tonumber(departureTime-diff*120);
  
   fibaro:debug("heaterState: " .. heaterState);
   fibaro:debug("currentTime: " .. currentTime);
   fibaro:debug("departureTime: " .. departureTime);
   fibaro:debug("manualOverride: " .. manualOverride);
   fibaro:debug("heaterStatus: " .. heaterStatus);
   fibaro:debug("WorkDay: " .. WorkDay);
   fibaro:debug("WorkTomorrow: " .. WorkTomorrow);
   fibaro:debug("-------------------------------------");
  
  -- 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(120*1000);  -- Default 120 minuter vid manuell styrning av värmaren
    fibaro:call(relayId, "turnOff");
    fibaro:setGlobal("heaterOverride", 0);
  end
  
  fibaro:sleep(60*1000);
end
/Mvh Fredrik

Fibaro HC2.
Mest saker från Fibaro, sen lite blandat av diverse märken.
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Tiden du ställer in är ju avresetiden, dvs. den tid då du sätter dig i bilen för att köra iväg.
Så för att bilen skall bli varm startar den en viss tid innan avresetiden. (diffStart) Tiden längst ned i min VD.

Skulle du vara lite sen så är det parametern turnOffDelay som bestämmer hur länge du kan vara sen innan värmaren stänger av. Jag ser i din kod att du har parametern turnOffDelay = 15 minuter.
Men jag kan inte hitta att du använder den parametern i din kod.
Därför har du heller ingen reservtid för en försenad avresa.
Attachments
Motorvärmare.PNG
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
Fredrik85
Medlem
Posts: 67
Joined: 24 Jan 2016, 17:05
8

Jo avresetiden i sig har jag koll på, tänkte på vart man ställer in hur länge man vill värmaren ska vara på innan avresetiden.
Nu har jag följande kod, hade råkat försvunnit några rader.
Ska den nu stänga av 15 minuter efter avresetid?
Och starta 2 timmar innan avresetid?
Blir en smula trött på mig själv när jag inte riktigt fattar fast jag sitter i och läser tills ögonen trillar ur ;) :oops:

Code: Select all

  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 * 15);
  fibaro:setGlobal("lastDepartureTime", lastDeparture);
  local startTime=tonumber(departureTime-diff*120);
/Mvh Fredrik

Fibaro HC2.
Mest saker från Fibaro, sen lite blandat av diverse märken.
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Uppvärmningstiden räknas ut med denna formel som ligger i koden, så den behöver du inte bry dig om.
Och denna ändras vartefter temperaturen ändras.

diff = math.floor(60 + 100*outTemp/(outTemp - 35))
if outTemp > 13 then
diff = 0;
end
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
Fredrik85
Medlem
Posts: 67
Joined: 24 Jan 2016, 17:05
8

Ahh... smidigt :) då är det bara frågan om koden nu är rätt för att stänga av brytaren 15 minuter efter avresetiden?
/Mvh Fredrik

Fibaro HC2.
Mest saker från Fibaro, sen lite blandat av diverse märken.
Fredrik85
Medlem
Posts: 67
Joined: 24 Jan 2016, 17:05
8

Nu verkar det lira fint :)
/Mvh Fredrik

Fibaro HC2.
Mest saker från Fibaro, sen lite blandat av diverse märken.
fremar
Ny medlem
Posts: 2
Joined: 20 Feb 2017, 15:09
7

Hej, har precis skaffat lite z-wave för att börja testa. Har en Aeon Labs - Z-Stick (Gen 5) och styr systemet via Domoticz från en Windows 10 dator, kommer ev att köra det på en RPI 3 senare. Skulle vilja få igång en sån här styrning av motorvärmaren, tänkte då montera en lämplig inbyggnadsswitch i eldosan i garaget där strömmen går till uttaget på väggen ute. Har en Netatmo väderstation som jag har fått in temperaturerna ifrån till Domoticz.

Går det att få till en sån där virtuell enhet med möjlighet att ställa in avresetid, manuell av/på och information om utetemperatur och uppvärmningstid i Domoticz?
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

@fremar
jag vet inte hur domoticz fungerar men om du googlar på "domoticz car heater" så får du upp lite träffar.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
MrDTS
Medlem
Posts: 25
Joined: 30 Aug 2018, 20:57
5

Hej

Försöker få till detta med motorvärmare, har inte så stor erfarenhet med script till fibaro, har laddat ner "motorvärmare opel VD"
( har en fibaro singel switch 2 som ska bryta en kontaktor den biten är klart) jag får switch2 att slå på samt av, via den nerladdade VD efter att bytt ut till mina värden.
Men så mycket mer fungerar inte, tid knappar händer inget med, samt temp händer inget heller med ?
Jag har även en egen tempgivare via en fibaro dörr kontakt med en utegivar på, den använder jag till poolen ute, kan använda den vinter tid till detta ?

MrDTS
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Ja nu är det snart dax att aktivera motorvärmarna igen, och precis som Sonnyboy skriver så måste du ha ett antal komponenter för att motorvärmaren skall fungera.

1. En VD som är själva manöverpanelen (den har du ju laddat ned och installerat)
2. En scen som gör alla beräkningar av tid och temperatur (koden finns i Sonnyboys inlägg, klistra in koden i en ny tom scen)
3. Ett antal variabler måste skapas där data lämnas och hämtas av skript och VD. (se Sonnyboys inlägg) Temp_Norr behöver inte skapas om du hämtar tempdata direkt som anges nedan.
4. Ute-temperaturen hämtar Sonnyboy från den globala variabeln Temp_Norr. Sonnyboy har en scen som laddar upp temperaturdata till den variabeln, men man kan lika gärna hämta temperaturdata direkt från valfri givare.
Denna rad i scenen
local outTemp = tonumber(fibaro:getGlobalValue("Temp_Norr"))

byts då ut mot den här

local outTemp = tonumber(fibaro:getValue(din tempgivares ID, "value"))
där du anger din tempgivares ID.
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
MrDTS
Medlem
Posts: 25
Joined: 30 Aug 2018, 20:57
5

Hej

Behöver man länka scenen till VD på något sätt ?
Får det inte att fungera, ser inga tider eller temp ?

MrDTS
MrDTS
Medlem
Posts: 25
Joined: 30 Aug 2018, 20:57
5

Hej

Det är nog denna jag inte får till riktigt.

3. Ett antal variabler måste skapas där data lämnas och hämtas av skript och VD.

MrDTS
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Om du kör min setup
Har du vart in i variabel panelen och skapat dessa variabler?
heaterOverride
Temp_Norr
WorkToday
departureHour
departureMinute
diffStart
Om inte så måste du göra det.
Panels är puzzelbiten på höger sida sen väljer du variabel panelen. Där kan du lägga till variabler.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
MrDTS
Medlem
Posts: 25
Joined: 30 Aug 2018, 20:57
5

OK, tack nu har jag fått lite tider kan ställa, men vad ska man ange för värden på alla variabler, antar att det inte går med vad som helst.

MrDTS
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Du behöver bara lägga in variablerna i tabellen, sedan sköter skript och VD om vad som skall stå i dem.
Var bara noga med versaler och gemener för tex Temp_Norr är inte detsamma som Temp_norr.
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
MrDTS
Medlem
Posts: 25
Joined: 30 Aug 2018, 20:57
5

OK, ska prova ikväll
Ska scenens ID läggas in i VD eller hittar de varandra i scriptet ?

MrDTS
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Nu har jag gjort lite uppdateringar i kodningen på mitt tidigare inlägg här för att lättare komma igång.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
MrDTS
Medlem
Posts: 25
Joined: 30 Aug 2018, 20:57
5

Hej

Toppen nu börjar det likna något, arbetsdag står det 0 ? ska det inte vara 2 som Tisdag ? lite varmt just för test ; )
Otroligt tacksam för all support här.

MrDTS
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

True ska det stå,

Gör en Scen med denna kodsnutt och tyrck på kör så får du rätt värde på variabeln

Code: Select all

fibaro:setGlobal("WorkToday", "True")
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
MrDTS
Medlem
Posts: 25
Joined: 30 Aug 2018, 20:57
5

Ok, nu verkar det fungera, vilken temp ska det gå till ? kan man prov ändra den för test ?
Post Reply