Hjälp med en scen som styr motorvärmare

Hjälp varandra att vara kreativa för att göra hemmet mer bekvämt.
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

Jag vill styra en Wall plug i garaget som ska sköta motorvärmaren. Jag vill att den ska fungera på följande sätt. Titta i en gcal kalender om det finns några händelser där och sedan starta motorvärmaren på följande sätt, +10-0 1h före avfärd, 0--5 1,5h i förväg, -5--10 2h i förväg, -10--15 2,5h i förväg och -15 eller kallare 3h i förväg. Jag vill använda mig av temperaturen som finns angiven i HC2 då jag inte har någon termometer än.

Hur får jag till detta? Hur får jag in kalendrar i HC2?
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Hejsan
det går att få till med lite LUA programmering. Jag har gjort en guide på att få ut data från en Google kalender, den hittar du här: viewtopic.php?f=33&t=4215&p=5120&hilit=kalender#p5120

Sen har du en guide på motorvärmar styrning här: viewtopic.php?f=12&t=4290&hilit=motor%2A

Hojta till om du inte får till det så gör jag en komplett scen med virtuell enhet åt dig.

Med vänlig hälsning, Jonny
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

jompa68 wrote:Hejsan
det går att få till med lite LUA programmering. Jag har gjort en guide på att få ut data från en Google kalender, den hittar du här: viewtopic.php?f=33&t=4215&p=5120&hilit=kalender#p5120

Sen har du en guide på motorvärmar styrning här: viewtopic.php?f=12&t=4290&hilit=motor%2A

Hojta till om du inte får till det så gör jag en komplett scen med virtuell enhet åt dig.

Med vänlig hälsning, Jonny
Jag kollar och ser ifall jag får till det. Återkommer med resultat [SMILING FACE WITH OPEN MOUTH]
zorro
Medlem
Posts: 365
Joined: 22 Oct 2013, 16:16
11

Jag använder denna funkar perfekt :mrgreen:
viewtopic.php?f=12&t=4290&hilit=motor%2A
Fibaro fantastic
Aktuell HC2 Version: 4.520
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

zorro wrote:Jag använder denna funkar perfekt :mrgreen:
viewtopic.php?f=12&t=4290&hilit=motor%2A
Hur rapporterar man in när man vill åka med denna variant? Måste man rapportera in varje gång med denna? Vi har ungefär samma tider varje vecka så det vore bekvämt att kunna schemalägga en grund och sen stoppa in ytterligare avgångar vid behov. Såg att det var samma scen som jompa länkade till.
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

jompa68 wrote:Hejsan
det går att få till med lite LUA programmering. Jag har gjort en guide på att få ut data från en Google kalender, den hittar du här: viewtopic.php?f=33&t=4215&p=5120&hilit=kalender#p5120

Sen har du en guide på motorvärmar styrning här: viewtopic.php?f=12&t=4290&hilit=motor%2A

Hojta till om du inte får till det så gör jag en komplett scen med virtuell enhet åt dig.

Med vänlig hälsning, Jonny
Hej Jonny!

Nu har jag försökt men jag fattar inte hur jag ska göra riktigt så om du har möjlighet får du gärna hjälpa mig så att jag får till det. Fattar inte riktigt hur det här med variabler och labels fungerar så jag tror att det är det som skiter sig.

Jag har laddat upp php-filen i root på http://www.henrikengstrom.se

Min Wall plug som jag ska använda har ID 6

Jag har tänkt att man ska skriva in Motorvärmare i kalendern och att dessa aktiviteter varar en timme ifall man inte kommer iväg vid önskad tidpunkt.

Är det något annat som du behöver?

Kan jag även använda den där virtuella enheten som fanns med i länken till motorvärmarscenen jag tänker om man inte vill använda kalendern vid engångshändelser.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Ok, kommer ett första utlägg ikväll efter jobbet.
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

jompa68 wrote:Ok, kommer ett första utlägg ikväll efter jobbet.
Vill inte tjata utan är mest bara nyfiken, hur går det för dig?

Uppskattar verkligen hjälpen. Tror att jag kommer att ha stor glädje av att kunna titta på hur det ser ut när det ligger på min enhet. Det blir liksom lite lättare att förstå det här med variabler, labels och virtuella enheter och deras samband då. Är djupt imponerad av vad ni lyckas åstadkomma med programmering.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Har inte glömt bort dig, ej hunnit klart än. Satt igår kväll nästan 3 timmar med support på Fibaro pryttlar, många som vill ha min hjälp.
Man kanske ska fundera på starta konsult verksamhet ;)
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

jompa68 wrote:Har inte glömt bort dig, ej hunnit klart än. Satt igår kväll nästan 3 timmar med support på Fibaro pryttlar, många som vill ha min hjälp.
Man kanske ska fundera på starta konsult verksamhet ;)
Haha det kan jag förstå att det är många som vill, du var ju inte så svårflörtad heller rycker jag [SMILING FACE WITH OPEN MOUTH] Trodde som sagt inte att du hade glömt utan jag var mest bara nyfiken hur det gick för dig. Ta den tid du behöver. Jag kör på en gammal hederlig timer just nu.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Det närmar sig ;)
Ska bara lägga till den manuella hanteringen och debugga lite mer.
1.PNG
1.PNG (11.78 KiB) Viewed 22207 times
2.PNG
2.PNG (14.84 KiB) Viewed 22207 times
3.PNG
3.PNG (1.57 KiB) Viewed 22207 times
Lundan
Medlem
Posts: 44
Joined: 18 Oct 2013, 09:57
11

Snyggt!
Kan vara användbart även till annat! :)
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

Fan vad nice Jompa [SMILING FACE WITH OPEN MOUTH] Ser fram emot att få testa detta hemma sen när du är klar [SMILING FACE WITH OPEN MOUTH]
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Motorvärmarstyrning med manuell hantering och Google kalender styrning.
Capture.PNG
Capture.PNG (19.66 KiB) Viewed 22159 times
Scen som kollar ett gäng variabler och sätter på motorvärmaren på angiven tid som hämtats ifrån Google kalender. Kan även styras manuellt om så önskas.

Dessa variabler behövs skapas, tänk på att dom behöver heta som det står här under.
heaterOverride
calValue
manualTimer
calMotorvStartH
calMotorvStartM
calMotorvStopH
calMotorvStopM
departureHour
departureMinute

Code: Select all

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

local relayId = 58;  -- Switch, plugg's ID
local tempId = 131;  -- Temperatur sensor ID

------ END OF CONFIGS -------------


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

while true do

-- Variabler som behöver skapas --  
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local calValue = tonumber(fibaro:getGlobalValue("calValue"));
local manualTimer = tonumber(fibaro:getGlobalValue("manualTimer"));
local startHour = tonumber(fibaro:getGlobalValue("calMotorvStartH"));
local startMinute = tonumber(fibaro:getGlobalValue("calMotorvStartM"));
local stopHour = tonumber(fibaro:getGlobalValue("calMotorvStopH"));
local stopMinute = tonumber(fibaro:getGlobalValue("calMotorvStopM"));
local mstartHour = tonumber(fibaro:getGlobalValue("departureHour"));
local mstartMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
-----------------------------------
  
local outTemp = tonumber(fibaro:getValue(tempId, "value"));
local heaterState = tonumber(fibaro:getValue(relayId, "value"));

local diff = 0;
if (outTemp < -20) then
   -- Start 3 hours before departure time
   diff = 180;
elseif (outTemp < -10) then
   -- Start 2 hours before departure time
   diff = 120;
elseif (outTemp < 0) then
   -- Start 1.5 hours before departure time
   diff = 90;
elseif (outTemp < 10) then
   -- Start 1 hour before departure time
   diff = 60;
end

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*60);
local mdepartureTime=tonumber(os.time({year=theDate.year, month=theDate.month, day=theDate.day, hour=mstartHour, min=mstartMinute}));
local mstartTime=tonumber(mdepartureTime-diff*60);


---- Debug start ----
fibaro:debug("-------------------------------------");
if calValue == 0 and manualOverride == 0 and manualTimer == 0 then
   fibaro:debug("Inget i kalendern och inget manuellt inställt")
    elseif calValue == 1 then
	fibaro:debug("Avresetid: " .. fibaro:getGlobal("calMotorvStart"));
	fibaro:debug("Temperatur: " .. outTemp.." C");
	fibaro:debug("Motorvärmaren startar: " .. diff.."min tidigare.");

    fibaro:debug("manualOverride: " .. manualOverride);
    fibaro:debug("Motorvärmarens status: "..heaterState);
	elseif manualOverride == 1 then
	fibaro:debug("Avresetid: " .. fibaro:getGlobal("departureHour")..":"..fibaro:getGlobal("departureMinute"));
	fibaro:debug("Temperatur: " .. outTemp.." C");
	fibaro:debug("Motorvärmare startar: " .. diff.."min tidigare.");
	fibaro:debug("manualOverride: " .. manualOverride);
    elseif calValue == 0 and manualTimer == 1 then
	fibaro:debug("Avresetid: " .. fibaro:getGlobal("departureHour")..":"..fibaro:getGlobal("departureMinute"));
	fibaro:debug("Temperatur: " .. outTemp.." C");
	fibaro:debug("Motorvärmare startar: " .. diff.."min tidigare.");
	fibaro:debug("manualOverride: " .. manualOverride);

end
fibaro:debug("-------------------------------------");
---- Debug end ----


	if (outTemp < 10) and (heaterState == 0 )then
	if (currentTime >= startTime) and (currentTime < departureTime) or (currentTime >= mstartTime) and (currentTime < mdepartureTime) then 
		fibaro:debug("Slog just på motorvärmaren!")
      fibaro:call(relayId, "turnOn");
	end
	end


if (heaterState == 1) and manualTimer == 0 and (currentTime >= departureTime) or calValue == 1 and (currentTime <= startTime) or (currentTime <= mstartTime) then
fibaro:debug("Slog just av motorvärmaren!")
    fibaro:call(relayId, "turnOff");
end

fibaro:sleep(60*1000);
end


Importera virtuella enheten
gCal_timer.zip
(1.78 KiB) Downloaded 575 times
Ändringar som behövs göras i den virtuella enheten är
Ändra i "button" Hämta kalender
1. HC2 = Net.FHttp("192.168.0.xxx")
Ändra i "button" Manuellt på och Manuellt av
2. local relayId = 58; --switch eller plugg ID
Ändra i Main loop
3. local relayId = 58; --switch eller plugg ID

För att få med svenska tecken ifrån google calendern så har jag lagt till detta i calgoogle.php

Code: Select all

<?php
header('Content-Type: text/html; charset=utf-8');
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

Tack så jättemycket. Ska genast sätta mig och se om jag kan få ihop detta. Hur skapar jag variabler?

Kom på en feature till som vore nice eftersom jag använder Wallplug så kunde man ju kanske få ett meddelande via Push om motorvärmarkabeln inte är i dvs att den inte förbrukar något trots att den är påslagen.
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

Nu har jag hittat vart jag skapar variabler men vilka värden ska de ha? Ska alla ha 0 och 1 eller ska jag bara skapa variabelnamnen utan några värden?

Jag har även skapat en virtuell enhet som hämtar väderdata enligt din beskrivning från Wunderground. Den har ID 22 kan jag använda den som tempsensor?

Antar att jag även behöver fixa den där virtuella enheten som kollar kalendern?

Jag vet att jag är skitjobbig nu men jag är verkligen nybörjare på det här...
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Skapa variablerna, default så blir det 0 på dom. Värdet ändras sen när virtuella enheten körs.
Beträffande temperaturen, så antar jag att just nu visar du bara den eftersom variabler var nytt för dg. Du behöver spara temp. till en variabel för att kunna utnyttja den. Behövs ändras lite i koden då.


Jonny sent this from his iPhone using Tapatalk
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

jompa68 wrote:Skapa variablerna, default så blir det 0 på dom. Värdet ändras sen när virtuella enheten körs.
Beträffande temperaturen, så antar jag att just nu visar du bara den eftersom variabler var nytt för dg. Du behöver spara temp. till en variabel för att kunna utnyttja den. Behövs ändras lite i koden då.


Jonny sent this from his iPhone using Tapatalk
Jo det är mycket som är nytt med det här för mig. :) Jo det är säkert som du säger att den bara visas. Hur gör jag för att spara ner temp så att jag kan använda den för motorvärmaren. Jag får väderdata ifrån flygplatsen i närheten så jag litar mer på den än jag skulle göra på en egen termometer.
mr-zeth
Ny medlem
Posts: 18
Joined: 31 Oct 2013, 13:31
11

Grymt jobbat Jonny!
Har du hämtat starttiden från någon rekommendation eller har du gått på sunt förnuft? Jag såg att den bara gick ner till -20 och tänkte lägga till ytterligare parametrar då vi nära på varje vinter har ner till -40.

Jag får dock följande error
[ERROR] 18:30:28: line 34: attempt to compare nil with number
Vad har jag missat?

*Edit* Ser att koden bygger på att man har en tempsensor ute, vilket jag inte har än utan tillförlitar mig på yahoo vädret som hc2 hämtar ifrån. Vad ska jag skriva istället för att hämta yahoo temp så länge?
Last edited by mr-zeth on 25 Jan 2014, 20:29, edited 1 time in total.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Hur ser din rad 34 ut?
Post Reply