* Jag skapade en "dummy" switch (Avresetid_Daniel) som jag ställer in avresetiden - 2 timmar. I mitt fall 05:00 vardagar eftersom jag åker runt 07:00 till arbetet.
* D_motorv är min switch On/Off
* För att ta ut temperaturen (temp_ludvika) ute så använder jag mig av en virtuell temperatur sensor från wunderground, har ni en egen givare så får ni plocka temperaturen därifrån eller från valfri site (jag tror man ganska enkelt kan hämta temperaturen från temperatur.nu) Finns många olika guider för detta.
* Sist i scriptet så ligger det en räknare som stänger av motorvärmaren ifall man glömt av den efter 2,5h.
* Varmare än +10 grader så startar den inte, är det kallare än -15 grader så kommer motorvärmare att starta 2 timmar innan avresa (direkt på den tid som timern står inställd på)
Tid/Temperaturkurvorna är efter min smak och resultatet av de två ekvationerna är:
Kod: Markera allt
Temp Tid
10 20,7253
9 20,6564
8 21,3157
7 22,7296
6 24,9245
5 27,9268
4 31,7629
3 36,4592
2 42,0421
1 48,538
0 55,9733
-1 62,1584
-2 68,9194
-3 75,2756
-4 81,227
-5 86,7736
-6 91,9154
-7 96,6524
-8 100,9846
-9 104,912
-10 108,4346
-11 111,5524
-12 114,2654
-13 116,5736
-14 118,477
-15 119,9756
La följande i lua katalogen. (Viktigt hur man döper filen t.ex i mitt fall script_time_dmotor.lua)
Kod: Markera allt
function timedifference(s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
commandArray = {}
if (otherdevices['Avresetid_Daniel'] == 'On' and otherdevices['D_motorv'] == 'Off') then
sWeatherTemp = otherdevices_svalues['temp_ludvika']:match("([^;]+)")
sWeatherTemp = tonumber(sWeatherTemp);
difference = timedifference(otherdevices_lastupdate['Avresetid_Daniel'])
if (sWeatherTemp < -15) then
commandArray['D_motorv']='On'
commandArray['Avresetid_Daniel']='Off'
end
omtemp = 11 - sWeatherTemp
x_plus = 0.0044*omtemp^3+0.3377*omtemp^2-1.1128*omtemp+21.496
x_plus = (120-x_plus) * 60
x_min = -0.2024*omtemp^2+11.821*omtemp-50.548
x_min = (120-x_min) * 60
if (difference < 60) then
if (sWeatherTemp <= 0) then
tempprint = "Beraknas starta om: " .. (x_min - difference)/60 .. "min"
print(tempprint)
end
if (sWeatherTemp > 0) then
tempprint = "Beraknas starta om: " .. (x_plus - difference)/60 .. "min"
print(tempprint)
end
end
if (sWeatherTemp < 10 and sWeatherTemp > 0 and difference > x_plus) then
commandArray['D_motorv']='On'
commandArray['Avresetid_Daniel']='Off'
end
if (sWeatherTemp <= 0 and sWeatherTemp >= -15 and difference > x_min) then
commandArray['D_motorv']='On'
commandArray['Avresetid_Daniel']='Off'
end
else if (otherdevices['D_motorv'] == 'On') then
difference = timedifference(otherdevices_lastupdate['D_motorv'])
if (difference > (150 * 60)) then
commandArray['D_motorv']='Off'
end
end
end
return commandArray
En uppdaterad kod finns --> viewtopic.php?f=65&t=3969&start=15#p39898 för användning i dzvents (domoticz) fast då går det att använda sig av den faktiska avresetiden.