![]() |
|
calculation with table - Printable Version +- LogicMachine 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: calculation with table (/showthread.php?tid=4198) |
calculation with table - pioneersteffen - 22.08.2022 Hi @all, I working on a script to calculate the solar energy through the windows based on Solcast API. Therefore I defining the window parameters as tables and want to calculate the energy forecast for each window and write them to a new table (fe) for the window index. Unfortutately this writing to the table is not working, logs attached. Can you please help me what I'm doing wrong? Many thanks for your help! Best Regards Steffen Code: require('json')
https = require 'ssl.https'
appid = 'xxx'
lat = '52'
lon ='10'
azi = '170'
hours = '48'
format = 'json'
url = 'https://api.solcast.com.au/world_radiation/forecasts?latitude=%s&longitude=%s&hours=%s&format=%s&api_key=%s'
url = string.format(url, lat, lon, hours, format, appid)
res, code, headers, status = ssl.https.request(url)
log (code, status, headers)
data = json.pdecode(res)
--Fault messages:
if not data then
alert('Error converting data')
return
end
if not res then
alert('Error collecting data')
return
end
data = data.forecasts
gwert=0.5
ff={} --Tabelle Fensterfläche
fw={} -- Tabelle Fenster Winkel
fn={} -- Tabelle Fenster Neigung, Senkrecht = 90
fe={} --Fensterenergemenge aus f_energiesum
--Galerie
ff[2]=1.6 -- Glasfläche Fenster
fw[2]=8 -- Azimuth Fenster zu Süden = 0° ; Westen = + 90°
fn[2]=33 -- Neigung Senkrecht = 90
--Leben
ff[3]=2.1 -- Glasfläche Fenster
fw[3]=8 -- Azimuth Fenster zu Süden = 0° ; Westen = + 90°
fn[3]=90 -- Neigung Senkrecht = 90
ff[4]=7.45 -- Glasfläche Fenster
fw[4]=8 -- Azimuth Fenster zu Süden = 0° ; Westen = + 90°
fn[4]=90 -- Neigung Senkrecht = 90
ff[5]=2.63 -- Glasfläche Fenster
fw[5]=-82 -- Azimuth Fenster zu Süden = 0° ; Westen = + 90°
fn[5]=90 -- Neigung Senkrecht = 90
now = os.date('*t')
hour = now.hour
i=1 --Index halbe Stunde aus Solcast json
f=2 --Fensterindex Tabelle
f_energiesum = 0
rest_hour = 24 - hour
for f=2,5,1 do --EDIT Anpassung Fensteranzahl
while i<3 do
dni = data[i].dni
ghi = data[i].ghi --global horizontal
dhi = data[i].dhi --diffus horizontal
bh = ghi - dhi --direkt horrizontal
zenith = data[i].zenith
sunh = 90 - zenith -- Sonnenhöhe
azimuth = data[i].azimuth
w_einstrahl = math.asin(math.sin(math.rad(sunh)) * math.cos(math.rad(fn[f])) + math.cos(math.rad(sunh))*math.cos(math.rad(fw[f]-azimuth))*math.sin(math.rad(fn[f])))
dir_einstrahl = math.sin(w_einstrahl)/math.sin(math.rad(sunh))*bh --Direktstrahlung auf eine geneigte Oberfläche
if sunh == 0 then dir_einstrahl = 0 end -- Abfangen Division durch 0
dif_einstrahl = (1 + math.cos(math.rad(fn[f])))/2*dhi --diffuse Horizontalstrahlung
f_energie = (dir_einstrahl + dif_einstrahl)*ff[f]*gwert
f_energiesum = f_energiesum + f_energie
fe[f] = f_energiesum
-- log(i,f, ghi, dhi, bh, sunh, azimuth, w_einstrahl, dir_einstrahl, dif_einstrahl, f_energie, f_energiesum, ff[f], fw[f], fe[f])
i=i+1
end
grp.write('49/'..f..'/8', f_energiesum)
log(f,fw,ff,fn,fe)
endCode: Solcast_Radiation 22.08.2022 08:27:09
* arg: 1
* number: 2
* arg: 2
* table:
[2]
* number: 8
[3]
* number: 8
[4]
* number: 8
[5]
* number: -82
* arg: 3
* table:
[2]
* number: 1.6
[3]
* number: 2.1
[4]
* number: 7.45
[5]
* number: 2.63
* arg: 4
* table:
[2]
* number: 33
[3]
* number: 90
[4]
* number: 90
[5]
* number: 90
* arg: 5
* table:
[2]
* number: 280.824289622413
Solcast_Radiation 22.08.2022 08:27:09
* arg: 1
* number: 3
* arg: 2
* table:
[2]
* number: 8
[3]
* number: 8
[4]
* number: 8
[5]
* number: -82
* arg: 3
* table:
[2]
* number: 1.6
[3]
* number: 2.1
[4]
* number: 7.45
[5]
* number: 2.63
* arg: 4
* table:
[2]
* number: 33
[3]
* number: 90
[4]
* number: 90
[5]
* number: 90
* arg: 5
* table:
[2]
* number: 280.824289622413
Solcast_Radiation 22.08.2022 08:27:09
* arg: 1
* number: 4
* arg: 2
* table:
[2]
* number: 8
[3]
* number: 8
[4]
* number: 8
[5]
* number: -82
* arg: 3
* table:
[2]
* number: 1.6
[3]
* number: 2.1
[4]
* number: 7.45
[5]
* number: 2.63
* arg: 4
* table:
[2]
* number: 33
[3]
* number: 90
[4]
* number: 90
[5]
* number: 90
* arg: 5
* table:
[2]
* number: 280.824289622413
Solcast_Radiation 22.08.2022 08:27:09
* arg: 1
* number: 5
* arg: 2
* table:
[2]
* number: 8
[3]
* number: 8
[4]
* number: 8
[5]
* number: -82
* arg: 3
* table:
[2]
* number: 1.6
[3]
* number: 2.1
[4]
* number: 7.45
[5]
* number: 2.63
* arg: 4
* table:
[2]
* number: 33
[3]
* number: 90
[4]
* number: 90
[5]
* number: 90
* arg: 5
* table:
[2]
* number: 280.824289622413RE: calculation with table - admin - 23.08.2022 while i<3 do loop works only once because i is not reset in the for loop. You can use for i = 1, 2 do instead of while. In this case i is a local variable so there's no need to declare it beforehand. RE: calculation with table - pioneersteffen - 23.08.2022 Many thanks admin for your help! What a stupid failure from my side but I couldn’t find the failure on my own. I will post the validated script when I’m finished testing. |