Logic Machine Forum
Tunable White template - Wiser for KNX - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Tunable White template - Wiser for KNX (/showthread.php?tid=1465)



Tunable White template - Wiser for KNX - sx3 - 28.06.2018

Hi,

Is there any template for tunable white thats based on time and location?
I want the color temperature of the luminaries to follow the outdoor temperature depending on time and season.

Some sort of astronomical function.

Is this possible?


RE: Tunable White template - Wiser for KNX - iJAF - 19.01.2022

Hi!

Have you found that template ?

Thanks


RE: Tunable White template - Wiser for KNX - admin - 20.01.2022

You can do simple linear transition between min/max temperature based on current time relative to sunrise/sunset.
Code:
-- minimum/maximum color temperature
tmin = 2700
tmax = 5000

-- device coordinates
latitude = 0
longitude = 0

sunrise, sunset = rscalc(latitude, longitude)

date = os.date('*t')
now = date.hour * 60 + date.min

now = math.max(now, sunrise)
now = math.min(now, sunset)

pos = (now - sunrise) / (sunset - sunrise)

color = math.floor(tmin + (tmax - tmin) * (1 - pos))

grp.checkupdate('1/1/1', color)



RE: Tunable White template - Wiser for KNX - Snoolik - 28.04.2022

Made some adjustments. Now it gets true midday and goes from sunset to midday (min-max) and midday to sunset (max-min), because temperature function should be a parabola.

Code:
-- minimum/maximum color temperature
tmin = 2700
tmax = 5800

-- device coordinates
latitude = 0
longitude = 0

sunrise, sunset = rscalc(latitude, longitude)
midday = (sunset + sunrise) / 2

date = os.date('*t')

now = date.hour * 60 + date.min
now = math.max(now, sunrise)
now = math.min(now, sunset)

if (now < midday) then
    pos = (now - sunrise) / (midday - sunrise)
    color = math.floor(tmin + (tmax - tmin) * (pos))
else
    pos = (now - midday) / (sunset - midday)
    color = math.floor(tmin + (tmax - tmin) * (1 - pos))
end
grp.checkupdate('1/1/1', color)