2023. március 20., hétfő

Elemzés pythonnal

EON és Solplanet forrás adatok elemzése


 

Code:

import datetime
import pandas as pd
import warnings
import datetime as dt
from matplotlib import pyplot as plt

plt.rcParams['figure.figsize'] = [125]

warnings.filterwarnings("ignore")
##kl_file =r'c:\Users\kecskemetil\Documents\sj\napelem\solplanet_napok\Daily Energy20230'
## c:\Users\kecskemetil\Documents\sj\napelem\solplanet_napok\t202303\Daily Energy20230301.xls
## c:\Users\kecskemetil\Documents\sj\napelem\solplanet_napok\t202303\Daily Energy20230301.xls
kl_file =r'c:\Users\kecskemetil\Documents\sj\napelem\solplanet_napok\t202303\Daily Energy20230'

kl_tartalom  = pd.read_excel(kl_file +'301.xls')  ## 02.01. betöltés
for i in range(302,317):                          ## 02.02-02.28. betöltés  megadása (202,229)
    kl_file2 = kl_file + '{}.xls'.format(i)
#    print(kl_file2)
    kl_tmp = pd.read_excel(kl_file + '{}.xls'.format(i))
    kl_tartalom = kl_tartalom.append(kl_tmp, ignore_index = True)
    
##  dátumtipusra alakítás
kl_tartalom["Time"] = pd.to_datetime(kl_tartalom["Time"],format= "%Y-%m-%d %H:%M:%S")
                    
## egy excelbe mentés
kl_tartalom.to_excel(r"c:\Users\kecskemetil\Documents\sj\napelem\solplanet_napok\t202303\KL_napenergia_ossz.xlsx", sheet_name='Munka1',index=False)

## dátum kiválasztás (szűrés)
kl_tartalom.query("Time >= '2023-03-11' and Time < '2023-03-13'", inplace = True)  ## [128 rows x 5 columns]
#kl_tartalom = kl_tartalom[(kl_tartalom['Time'] > "2023-02-16") & (kl_tartalom['Time'] < "2023-02-17")] 
#kl_tartalom = kl_tartalom[kl_tartalom['Time'].dt.strftime('%Y-%m-%d') == '2023-02-16']

## felesleges mezők kihagyása
kl_tartalom.drop(labels=['SN.','Vpv1''Vpv2','Ipv1','Ipv2'
'Vac1''Vac2''Vac3''Iac1''Iac2''Iac3','Fac','Temp','E-Total''H-Total'], axis=1, inplace=True)


## idő kimetszése
#kl_tartalom["Time2"] = kl_tartalom["Time"].dt.time
#kl_tartalom["Time2"] = kl_tartalom["Time"].dt.hour
#kl_tartalom["Time"] = kl_tartalom["Time"].dt.strftime('%H:%M')

#kl_tartalom["Time2"] = [d.time() for d in kl_tartalom["Time"]]

#pd.to_datetime(kl_tartalom['Time'], format='%H:%M')
        
## mezők kiválasztása megjelenítésnél
#print(kl_tartalom[['Time', 'Pac','E-Today']])

## redezés
kl_tartalom.sort_values(["Pac""Time"],
               axis = 0, ascending = False,
               inplace = True,
               na_position = "first")

kl_tartalom = kl_tartalom.set_index('Time')

nyomtatas ='''
kl_tartalom['Pac'].plot(kind="bar")
plt.title("Napelem termelés")
plt.xlabel("Dátum")
plt.ylabel("Pac (Wh)")
'''

#kl_tartalom.plot(kind="bar")

print(kl_tartalom.head(20))



=>
                      Pac  E-Today
Time                                
2023-03-11 09:29:35  9919.0      5.9
2023-03-11 09:04:35  9419.0      3.8
2023-03-11 09:59:35  9162.0      8.7
2023-03-11 10:29:35  9050.0     11.7
2023-03-11 10:54:35  8830.0     14.0
2023-03-12 09:52:48  8580.0     18.3
2023-03-12 09:47:48  8530.0     17.6
2023-03-12 09:57:48  8519.0     19.0
2023-03-12 09:42:48  8497.0     16.9
2023-03-12 10:07:48  8489.0     20.5
2023-03-12 10:02:48  8488.0     19.7
2023-03-12 10:17:48  8487.0     21.9
2023-03-12 09:32:48  8454.0     15.5
2023-03-12 09:37:48  8453.0     16.2
2023-03-12 09:27:48  8426.0     14.8
2023-03-12 10:22:48  8421.0     22.6
2023-03-12 10:12:48  8406.0     21.2
2023-03-12 09:07:48  8340.0     12.0
2023-03-12 09:22:48  8328.0     14.1
2023-03-12 10:27:48  8315.0     23.3

[ ]

=>

Time Pac Time2 9_2 2023-03-12 09:02:48 8073.0 9_7 2023-03-12 09:07:48 8340.0 9_12 2023-03-12 09:12:48 8296.0 9_17 2023-03-12 09:17:48 8258.0 9_22 2023-03-12 09:22:48 8328.0 9_27 2023-03-12 09:27:48 8426.0 9_32 2023-03-12 09:32:48 8454.0 9_37 2023-03-12 09:37:48 8453.0 9_42 2023-03-12 09:42:48 8497.0 9_47 2023-03-12 09:47:48 8530.0 9_52 2023-03-12 09:52:48 8580.0 9_57 2023-03-12 09:57:48 8519.0 10_2 2023-03-12 10:02:48 8488.0 10_7 2023-03-12 10:07:48 8489.0 10_12 2023-03-12 10:12:48 8406.0 10_17 2023-03-12 10:17:48 8487.0 10_22 2023-03-12 10:22:48 8421.0 10_27 2023-03-12 10:27:48 8315.0 10_32 2023-03-12 10:32:48 8257.0 10_37 2023-03-12 10:37:48 8257.0


## Solplanet napi csúcs pillanatnyi termelés keresése
import datetime
import pandas as pd
import warnings
import datetime as dt
from matplotlib import pyplot as plt
#import matplotlib.pyplot as plt

plt.rcParams['figure.figsize'] = [125]
warnings.filterwarnings("ignore")

kl_file = r"c:\Users\kecskemetil\Documents\sj\napelem\solplanet_napok\KL_napenergia_ossz202302.xlsx"
kl_tartalom = pd.read_excel(kl_file, sheet_name='forras')

##  dátumtipusra alakítás (napra csonkolás)
kl_tartalom["Time"] = pd.to_datetime(kl_tartalom["Time"],format= "%Y-%m-%d %H:%M:%S").dt.date
#print(kl_tartalom)
#print('-------------------------')

## felesleges mezők kihagyása
kl_tartalom.drop(labels=['SN.','Vpv1''Vpv2','Ipv1','Ipv2'
'Vac1''Vac2''Vac3''Iac1''Iac2''Iac3','Fac','Temp''H-Total''Pac'], axis=1, inplace=True)
## 'E-Total', 'E-Today'
solplanet = kl_tartalom.groupby("Time").max()
print('------------max érték-------------')
print(kl_tartalom.max())

print('------------max értékek naponta-------------')
print(solplanet)

=>

------------max érték------------- Time 2023-02-28 E-Total 630.2 E-Today 40.0 dtype: object ------------max értékek naponta------------- E-Total E-Today Time 2023-02-01 1.4 1.4 2023-02-02 25.6 24.2 2023-02-03 27.2 1.6 2023-02-04 39.9 12.7 2023-02-05 65.4 25.5 2023-02-06 91.3 25.9 2023-02-07 124.7 33.4 2023-02-08 159.3 34.6 2023-02-09 193.8 34.5 2023-02-10 227.5 33.7 2023-02-11 248.5 21.0 2023-02-12 279.2 30.7 2023-02-13 314.6 35.4 2023-02-14 350.1 35.5 2023-02-15 386.0 35.9 2023-02-16 407.8 21.8 2023-02-17 422.3 14.5 2023-02-18 442.7 20.4 2023-02-19 456.8 14.1 2023-02-20 474.0 17.2 2023-02-21 514.0 40.0 2023-02-22 534.2 20.2 2023-02-23 543.6 9.4 2023-02-24 569.9 26.3 2023-02-25 581.1 11.2 2023-02-26 590.7 9.6 2023-02-27 608.6 17.9 2023-02-28 630.2 21.6


## EON napi csúcs pillanatnyi termelés keresése
import datetime
import pandas as pd
import warnings
import datetime as dt
from matplotlib import pyplot as plt
#import matplotlib.pyplot as plt
#plt.rcParams['figure.figsize'] = [12, 5]

warnings.filterwarnings("ignore")

kl_file = r"c:\Users\kecskemetil\Documents\sj\napelem\eon_napok\eon_napi_fogy_term_kl.xlsx"
kl_tartalom = pd.read_excel(kl_file)
## üres cserélésése 0-ra
kl_tartalom.fillna(0,inplace=True)
#kl_tartalom = kl_tartalom.fillna(0)

##  dátumtipusra alakítás (napra csonkolás)
kl_tartalom["Idő"] = pd.to_datetime(kl_tartalom["Idő"],format= "%Y-%m-%d %H:%M:%S").dt.date
kl_tartalom["Idő"] = kl_tartalom["Idő"] - pd.Timedelta(hours=24, minutes=0, seconds=0)  # egy nap elvétele 

## felesleges mezők kihagyása
kl_tartalom.drop(labels=['Nappali DP_1-1:3.8.0*1','Nappali DP_1-1:4.8.0*1''Fogy15[kWh]''Term15[kWh]'], axis=1, inplace=True)
kl_tartalom = kl_tartalom.astype({'FogyNp[kWh]':'float','TermNp[kWh]':'float'})


#kl_tartalom['FogyNp[kWh]_uj'] =   kl_tartalom['FogyNp[kWh]'].shift(-1)
#kl_tartalom['FogyNp[kWh]_uj'] = kl_tartalom['FogyNp[kWh]'].diff()
#kl_tartalom = kl_tartalom.diff(axis=1)
#df =kl_tartalom['Idő'].shift(-1) 

print('------------max érték-------------')
print(kl_tartalom.max())

print('------------max értékek naponta-------------')
eon = kl_tartalom.groupby("Idő").max()
print(eon)

=>

------------max érték------------- Idő 2023-02-28 FogyNp[kWh] 220.437 TermNp[kWh] 554.711 dtype: object ------------max értékek naponta------------- FogyNp[kWh] TermNp[kWh] Idő 2023-01-31 0.000 0.000 2023-02-01 3.774 1.113 2023-02-02 10.991 23.146 2023-02-03 27.420 23.651 2023-02-04 38.404 34.271 2023-02-05 52.082 54.455 2023-02-06 58.019 78.959 2023-02-07 65.290 111.178 2023-02-08 72.391 141.962 2023-02-09 86.684 171.488 2023-02-10 94.539 202.470 2023-02-11 102.160 219.726 2023-02-12 114.188 244.711 2023-02-13 119.458 277.997 2023-02-14 124.083 311.977 2023-02-15 133.923 345.505 2023-02-16 143.289 363.081 2023-02-17 148.332 375.794 2023-02-18 158.496 391.736 2023-02-19 165.351 402.445 2023-02-20 169.740 417.722 2023-02-21 175.464 454.240 2023-02-22 180.782 472.952 2023-02-23 188.916 480.163 2023-02-24 193.329 503.806 2023-02-25 200.655 511.735 2023-02-26 210.811 517.609 2023-02-27 215.183 534.438 2023-02-28 220.437 554.711




import matplotlib.pyplot as plt

### összefüzés
eon.index.name = 'Idő'
# eon['Fogy_eltolt'] =  eon['FogyNp[kWh]'].shift(1)
eon['Fogy_delta'] = eon['FogyNp[kWh]'].diff()
eon['Term_delta'] = eon['TermNp[kWh]'].diff()
solplanet.index.name = 'Time'
#print(eon)
print('-----------------')
print(solplanet.merge(eon, left_on='Time', right_on='Idő', right_index=True))
print('-----------------')
kimenet = pd.merge(solplanet, eon, left_on='Time', right_on='Idő', right_index=True)
print( kimenet.columns)

#print(pd.merge(solplanet, eon, how="inner", on=["Time", "Idő"]))
#print(solplanet[['Idő', 'FogyNp[kWh]','TermNp[kWh]']].merge(eon, how="inner" , left_on='Time', right_on='Idő'))
#print(pd.merge(solplanet, eon))

## egy excelbe mentés
# kimenet.to_excel(r"c:\Users\kecskemetil\Documents\sj\napelem\solplanet_napok\t202303\KL_eon_solplanet_ossz.xlsx", sheet_name='Munka1',index=True)

dt = datetime.datetime.now() - datetime.timedelta(days=1)  ## tegnapi nap
datum  = '{:%Y-%m-%d}'.format(dt)
# Excel írható objektum létrehozása (név tartalmazza a futás dátumot)
writer = pd.ExcelWriter(r'c:\Users\kecskemetil\Documents\sj\napelem\solplanet_napok\t202303\KL_eon_solplanet_ossz_'+datum+'_kesz.xlsx')
kimenet.to_excel(writer, sheet_name='Havi_ossz', index=True)

workbook  = writer.book
worksheet = writer.sheets['Havi_ossz']
(max_row, max_col) = kimenet.shape

#worksheet.autofilter(0, 0, max_row, max_col - 1)  # auto szűrő és adattábla létrehozása
## idex mező miatt kell
indexek=['Ido']
indexek.extend(kimenet.columns)

# Tábla formázás
column_settings = [{'header': column} for column in indexek]
#worksheet.add_table(0, 0, max_row, max_col - 1, {'columns': column_settings}) ## index nélkül
#worksheet.set_column(0, max_col - 1, 15) ## oszlop szélessség 15-re állítás   ## index nélkül

worksheet.add_table(00, max_row, max_col , {'columns': column_settings}) ## index nélkül
worksheet.set_column(0, max_col , 15## oszlop szélessség 15-re állítás   ## index nélkül


# diagram beszúrás
chart = workbook.add_chart({'type''line'})               ## column, pie, line, area, scatter' // circle', 'size': 7}

## első oszlop a kategoria, tobbi oszlop adatok és az értékek 
for i in range(max_col):
    if i != 0 :
        chart.add_series({
'name': ['Havi_ossz'0, i],
'categories': ['Havi_ossz'10, max_row , 0],
'values': ['Havi_ossz'1, i, max_row ,i],
#'overlap':-10,
})



worksheet.insert_chart(1, max_col +1, chart)


# Az excel állomány mentése
writer.save()
writer.close()

kimenet.plot()
plt.show()

=>

----------------- E-Total E-Today FogyNp[kWh] TermNp[kWh] Fogy_delta Term_delta Time 2023-02-01 1.4 1.4 3.774 1.113 3.774 1.113 2023-02-02 25.6 24.2 10.991 23.146 7.217 22.033 2023-02-03 27.2 1.6 27.420 23.651 16.429 0.505 2023-02-04 39.9 12.7 38.404 34.271 10.984 10.620 2023-02-05 65.4 25.5 52.082 54.455 13.678 20.184 2023-02-06 91.3 25.9 58.019 78.959 5.937 24.504 2023-02-07 124.7 33.4 65.290 111.178 7.271 32.219 2023-02-08 159.3 34.6 72.391 141.962 7.101 30.784 2023-02-09 193.8 34.5 86.684 171.488 14.293 29.526 2023-02-10 227.5 33.7 94.539 202.470 7.855 30.982 2023-02-11 248.5 21.0 102.160 219.726 7.621 17.256 2023-02-12 279.2 30.7 114.188 244.711 12.028 24.985 2023-02-13 314.6 35.4 119.458 277.997 5.270 33.286 2023-02-14 350.1 35.5 124.083 311.977 4.625 33.980 2023-02-15 386.0 35.9 133.923 345.505 9.840 33.528 2023-02-16 407.8 21.8 143.289 363.081 9.366 17.576 2023-02-17 422.3 14.5 148.332 375.794 5.043 12.713 2023-02-18 442.7 20.4 158.496 391.736 10.164 15.942 2023-02-19 456.8 14.1 165.351 402.445 6.855 10.709 2023-02-20 474.0 17.2 169.740 417.722 4.389 15.277 2023-02-21 514.0 40.0 175.464 454.240 5.724 36.518 2023-02-22 534.2 20.2 180.782 472.952 5.318 18.712 2023-02-23 543.6 9.4 188.916 480.163 8.134 7.211 2023-02-24 569.9 26.3 193.329 503.806 4.413 23.643 2023-02-25 581.1 11.2 200.655 511.735 7.326 7.929 2023-02-26 590.7 9.6 210.811 517.609 10.156 5.874 2023-02-27 608.6 17.9 215.183 534.438 4.372 16.829 2023-02-28 630.2 21.6 220.437 554.711 5.254 20.273











Link:

https://github.com/klajosw/python/blob/master/kl_py_eon_solplanet.ipynb

2023. március 19., vasárnap

2023 március hó termelés alakulása

 A termelés és fogyasztás alakulása márciusban:
















2023 március rész (24.-ig)





2023 Február






A két egyenoldal eltérés oka

Risen Energy 405 W (RSM40-8-405M BLACK)    25 db ( 2 string : 14 + 11 elemmel)

36 V/napelemmel figyelembe véve :    36*14 = 504 V / 36*11 = 396 V

Arányosítással számolva 11 db a 14 -nek a 78 %-a tehát a feszültségek alakulása  ->  500 V * 0.78=390 V





És a végső összehasonlítás 2023 évre

Hó      Terv KWh    Tény KWh
1     470,7             ???
2     604,1             630
3     1059,6         1013
4     1281,6         1092
5     1307,4         1274
6     1332,2
7     1422,9
8     1386
9     1131,5
10     911,5
11     542
12     399,5
Évi     11849

2023. március 2., csütörtök

2023. február hó termelés alakulása

 Napelem termelés alakulása  (2023) februárban



Emlékeztetőnek : Dél-keleti tájolású, budapesti házon
 - ASW10K-LT-G2 Pro                                                1  db
 - Risen Energy 405 W (RSM40-8-405M BLACK)    25 db ( 2 string : 14 + 11 elemmel)

(String. Több, azonos típusú és teljesítményű napelem modul összekapcsolásából álló villamos hálózat.)












Én úgy érzem, hogy jól teljesített. 


Elvárásom 




      KWh
1     470,7
2     604,1
3     1059,6
4     1281,6
5     1307,4
6     1332,2
7     1422,9
8     1386
9     1131,5
10     911,5
11     542
12     399,5
Évi     11849



Link: https://pvsol-online.valentin-software.com

Pár napot kivéve (téli hónapban is) mindig hozta az eddigi napi átlag fogyasztást (15 KWh)


Átlag fogyasztás előző évi adatok alapján:



Napelemes termelés átlag cél számok:

napi : 30 KWh     havi : 800 KWh    éves : 10 MWh



Az 5 percenként feldolgozás alapján az alábbi csúcs termelések voltak:


A legnagyobb termelési csúcs 02.02.-én 9:50-kor volt. 

Ekkor 8,861 KWh teljesítmény jött ki az inverterből



EON és napelem termelés összevetése

EON adatok a referencia, de ott 00:00:00 óra a dátum adat ezért gyakorlatban egy nap elcsúszás van.




Nagyjából összefüggnek az adatok. A termelési 6 óra időintervallumban többnyire a ház teljes fogyasztását ellátja és még többet is termel.


Februárban nyolc felhős nap fordult elő, amikor 15KWh termelésnél kevesebb jött össze:





Kukkantsunk be a márciusba:




Ebből a legfontosabb, hogy egy felhős nap volt, amikor a fogyasztás több volt mint a termelés 
(jobbszélső oszlopban pirosozva).


Növekszik a nap beesési szög és a termelés napi időtartománya is növekszik 
(03.01-03.10. között vizsgálva már 10 perccel hosszabb ideig dolgozik):




2023-03-11 09:29:35 -kor a pillanatnyi termelés 9,919 KWh volt, tehát majdnem elérte a 10 KWh-t.


Csak így tovább.



Havi fogyasztás termelés alakulása

  Termelés alakulása (2023.02-10): Számértékek 2.hó 0.630 MWh 3.hó 1.013 MWh 4.hó 1.092 MWh 5.hó 1.274 MWh 6.hó 1.303 MWh 7.hó 1.3...