Ask our Experts
Didn't find what you are looking for? Ask our experts!
Launch of Consumer/Home Owner registration process! We are pleased to announce the commencement of the Consumer/Home Owner Registration Process on Community. Consumers/Home Owners may now proceed to register by clicking on Login/Register. The process is straightforward and designed to be completed in just a few steps.
Schneider Electric SpaceLogic KNX forum to get support and share knowledge including selection, installation and troubleshooting for spaceLYnk, Wiser for KNX, eConfigure KNX, SpaceLogic KNX Hybrid module and other topics.
Search in
Link copied. Please paste this link to share this article on your social media post.
Hier Code, den ich angepasst habe, um den Sonnenstand in SpaceLYnk zur Verfügung zu stellen:
local function sunposition(latitude, longitude, time)
time = time or os.time()
if type(time) == 'table' then time = os.time(time) end
local date = os.date('*t', time)
local utcdate = os.date('*t', time)
local latrad = math.rad(latitude)
local fd = (utcdate.hour + utcdate.min / 60 + utcdate.sec / 3600) / 24
local g = (2 * math.pi / 365.25) * (utcdate.yday + fd)
local d = math.rad(0.396372 - 22.91327 * math.cos(g) + 4.02543 * math.sin(g) - 0.387205 * math.cos(2 * g)
+ 0.051967 * math.sin(2 * g) - 0.154527 * math.cos(3 * g) + 0.084798 * math.sin(3 * g))
local t = math.rad(0.004297 + 0.107029 * math.cos(g) - 1.837877 * math.sin(g)
- 0.837378 * math.cos(2 * g) - 2.340475 * math.sin(2 * g))
local sha = 2 * math.pi * (fd - 0.5) + t + math.rad(longitude)
local sza = math.acos(math.sin(latrad) * math.sin(d) + math.cos(latrad) * math.cos(d) * math.cos(sha))
local saa = math.acos((math.sin(d) - math.sin(latrad) * math.cos(sza)) / (math.cos(latrad) * math.sin(sza)))
--print("<<<<<<<<<<<< utcdate.hour",utcdate.hour,"utcdate.min",utcdate.min)
--print("<<<<<< sza",sza,"<<<<<< saa",saa)
--print("<<<<< longitude",longitude,"Altitude",math.deg(sza),"Azimuth",math.deg(saa))
return 90 - math.deg(sza), math.deg(saa)
end
local function getSunPos(lat, long, time)
-- calculate UTC altitude and azimuth
local altitude, azimuth = sunposition(lat, long, time)
-- Check previous minute values to detect azimuth direction change 0º and 180º
time = time - 60
local previuos_altitude, previuos_azimuth = sunposition(lat, long, time)
print("previuos_azimuth",previuos_azimuth,"<<<< azimuth",azimuth)
if previuos_azimuth < azimuth then
-- print("<<<<<<<<<<<<< TREND:", "UP")
else
-- print("<<<<<<<<<<<<< TREND:", "DOWN")
end
if previuos_azimuth < azimuth then -- calcualted azimuth trend UP >>>>>>>>>>>>>>>>>>>
if long < 0 then
if lat > 0 then
return altitude, azimuth
else
return altitude, 360 - azimuth
end
else ------------------- long > 0
if lat > 0 then
return altitude, azimuth
else
return altitude, 360 - azimuth
end
end
else -- calcualted azimuth trend DOWN >>>>>>>>>>>>>>>>>>>
if long < 0 then
if lat > 0 then
return altitude,360 - azimuth
else
return altitude, azimuth
end
else ------------------- long > 0
if lat > 0 then
return altitude, 360 - azimuth
else
return altitude, azimuth
end
end
end
end
local plat = 47.53305
local plong = 7.810654
local altitude, azimuth = getSunPos(plat, plong, os.time())
--alert (altitude)
grp.update('32/5/1', altitude)
grp.update('32/5/2', azimuth )
Link copied. Please paste this link to share this article on your social media post.
Hallo Baerdo!
Vielen DANK für dieses Skript.
Ich hatte das auch mal erstellt und damit kann man sehr schön in der freien Visu anzeigen wo die Sonne sich gerade befindet.
D.h. mit der Integration eines Satellitenbildes kann man den Azimuth-Wert schön als Strich (Overlay) darstellen.
Man muss nur eine entsprechende Anzahl Bilder beim Wert hinterlegen.
Siehe Beispiel von der Website Sonnenverlauf welche natürlich noch mehr Infos wie Sonnenauf- und Sonnenuntergang als Strich liefert.
You’ve reached the end of your document
Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.