A következő címkéjű bejegyzések mutatása: python. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: python. Összes bejegyzés megjelenítése

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'] = [12, 5]

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'] = [12, 5]
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(0, 0, 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', 1, 0, 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. február 18., szombat

Cloud lementett napi adatok feldolgozása pythonnal



 A napi adatok excel állományba lementése után a feldolgozás automatizálásra mutatok egy mintát.


Egy könyvtárba elhelyezett xls-eken végig megy és egybe olvassa, rendez, szűr, mezőket kiválaszt, diagramot gyárt minta jelleggel.






A forrás elérhető :

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

Solplanet helyi lekérdezése és eredmény állományba írása

 Linux-osok simán összeraknak erre egy scriptet, ezért a windows-osoknak mutatok példát.


PowerShell script-es megoldás

Minden windows alatt ott van PowerShell ISE ezért ezt választottam


A PS parancs amit saját hálózati IP cím és inverter azonosításával módosítani kell:

Invoke-RestMethod -Uri "http://192.168.0.101:8484/getdevdata.cgi?device=2&sn=SP0%%%%%%" |Format-Table -Property tim, tmp, pac, sac, qac, etd, eto, vac, iac, vpv, ipv, err  |

Out-File -FilePath c:\Users\User\Documents\kl\napelem\kl_blog\java\kl_sol_ps.txt -Encoding ASCII -Width 120 -Append


Az eredmény ilyen lesz a képernyőn:


Az eredmény ilyen lesz az állományban:

tim            tmp  pac  sac qac etd  eto vac                iac          vpv          ipv        err   

---            ---  ---  --- --- ---  --- ---                ---          ---          ---        ---      ---

20230218114622 449 6351 6351   2 131 4354 {2360, 2351, 2342} {90, 90, 90} {4642, 3691} {784, 787}  0 



Windows ütemező készítése a 10 percenkénti futáshoz









Nézzük egy hasonló megoldást java-ban


Ez bonyolultabb mert java fejlesztői környezettet igényel. 
Minden faxni nélkül nekünk most csak a java.exe és javac.exe kell én ezeket a példában az adroind studo-ból használtam.


Tehát kell egy JsonReader22.java file


import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.time.format.DateTimeFormatter;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.util.concurrent.TimeUnit;


public class JsonReader22 {

    public static void main(String[] args) {
    System.out.println("Első argumentum: "+args[0]);  
System.out.println("Második argumentum: "+args[1]);  
String url = "http://" + args[0] + ":8484/getdevdata.cgi?device=2&sn=" + args[1]; 
    System.out.println("url: "+url);  
                              String out_file = "kl_kesz";
                              LocalDate datum = LocalDate.now();
                              LocalDateTime dt = LocalDateTime.now();
                              DateTimeFormatter df = DateTimeFormatter.ofPattern("_yyyy-MM-dd");  //HH-mm-ss_");
                              String date_text = dt.format(df);
  DateTimeFormatter df2 = DateTimeFormatter.ofPattern("_yyyy-MM-dd_HH-mm-ss_");
                              String date_text2 = dt.format(df2);
                        System.out.println("Formázott dátum : "+ date_text);

        try {
    downloadUsingNIO(url,   out_file + date_text2 + ".json");         // futásonként egy-egy filebe
            downloadUsingStream(url, out_file + date_text + ".json");         // napi futás egy file töltése összefűzéssel
        
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void downloadUsingStream(String urlStr, String file) throws IOException{
        URL url = new URL(urlStr);
        BufferedInputStream bis = new BufferedInputStream(url.openStream());
        FileOutputStream fis = new FileOutputStream(file, true);
        byte[] buffer = new byte[1024];
        int count=0;
        while((count = bis.read(buffer,0,1024)) != -1)
        {
            fis.write(buffer, 0, count);
        }
System.out.println(buffer);
String textToAppend = "\n";
byte[] strToBytes = textToAppend.getBytes();
fis.write(strToBytes);
        fis.close();
        bis.close();
    }


    private static void downloadUsingNIO(String urlStr, String file) throws IOException {
        URL url = new URL(urlStr);
        ReadableByteChannel rbc = Channels.newChannel(url.openStream());
        FileOutputStream fos = new FileOutputStream(file, true);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }


}


És kell egy kl.bat file:

REM JAVA forrás fordítás CLASS-ra
"c:\Program Files\Android\Android Studio\jbr\bin\javac.exe" JsonReader22.java

REM futtatás paraméterben az IP cim és inverter azonosító
"c:\Program Files\Android\Android Studio\jbr\bin\java.exe"  JsonReader22 192.168.0.101 SP0%%



Összefűzős eredmény:

{"flg":1,"tim":"20230218132702","tmp":407,"fac":5000,"pac":893,"sac":893,"qac":0,"eto":4392,"etd":169,"hto":183,"pf":88,"wan":0,"err":0,"vac":[2311,2315,2305],"iac":[14,14,14],"vpv":[4676,3655],"ipv":[113,98],"str":[]}
{"flg":1,"tim":"20230218132722","tmp":407,"fac":5000,"pac":851,"sac":851,"qac":0,"eto":4392,"etd":169,"hto":183,"pf":88,"wan":0,"err":0,"vac":[2323,2311,2315],"iac":[13,14,13],"vpv":[4652,3633],"ipv":[108,94],"str":[]}
{"flg":1,"tim":"20230218133102","tmp":403,"fac":5000,"pac":1276,"sac":1276,"qac":0,"eto":4393,"etd":170,"hto":183,"pf":93,"wan":0,"err":0,"vac":[2334,2323,2313],"iac":[20,19,19],"vpv":[4728,3720],"ipv":[157,149],"str":[]}
{"flg":1,"tim":"20230218133152","tmp":402,"fac":5001,"pac":1261,"sac":1261,"qac":0,"eto":4393,"etd":170,"hto":183,"pf":93,"wan":0,"err":0,"vac":[2345,2265,2326],"iac":[19,19,19],"vpv":[4739,3699],"ipv":[157,142],"str":[]}
{"flg":1,"tim":"20230218133222","tmp":401,"fac":5000,"pac":1219,"sac":1219,"qac":0,"eto":4393,"etd":170,"hto":183,"pf":93,"wan":0,"err":0,"vac":[2344,2280,2312],"iac":[19,18,18],"vpv":[4741,3721],"ipv":[151,137],"str":[]}
{"flg":1,"tim":"20230218133412","tmp":400,"fac":4998,"pac":1487,"sac":1487,"qac":0,"eto":4393,"etd":170,"hto":183,"pf":95,"wan":0,"err":0,"vac":[2371,2268,2321],"iac":[22,22,22],"vpv":[4861,3968],"ipv":[189,150],"str":[]}
{"flg":1,"tim":"20230218135512","tmp":397,"fac":5000,"pac":3270,"sac":3270,"qac":1,"eto":4400,"etd":177,"hto":184,"pf":99,"wan":0,"err":0,"vac":[2378,2379,2328],"iac":[47,46,46],"vpv":[5130,4067],"ipv":[371,363],"str":[]}
{"flg":1,"tim":"20230218135512","tmp":397,"fac":5000,"pac":3270,"sac":3270,"qac":1,"eto":4400,"etd":177,"hto":184,"pf":99,"wan":0,"err":0,"vac":[2378,2379,2328],"iac":[47,46,46],"vpv":[5130,4067],"ipv":[371,363],"str":[]}
{"flg":1,"tim":"20230218135652","tmp":399,"fac":5001,"pac":3009,"sac":3009,"qac":1,"eto":4401,"etd":178,"hto":184,"pf":98,"wan":0,"err":0,"vac":[2382,2368,2321],"iac":[43,42,43],"vpv":[5075,4055],"ipv":[341,337],"str":[]}
{"flg":1,"tim":"20230218135722","tmp":399,"fac":5000,"pac":2948,"sac":2948,"qac":1,"eto":4402,"etd":179,"hto":184,"pf":98,"wan":0,"err":0,"vac":[2384,2363,2320],"iac":[42,41,42],"vpv":[5120,4024],"ipv":[332,333],"str":[]}


Egy egy állományos eredmény:

{"flg":1,"tim":"20230218135722","tmp":399,"fac":5000,"pac":2948,"sac":2948,"qac":1,"eto":4402,"etd":179,"hto":184,"pf":98,"wan":0,"err":0,"vac":[2384,2363,2320],"iac":[42,41,42],"vpv":[5120,4024],"ipv":[332,333],"str":[]}


És nézzünk egy pythonos megoldást is.


A python program


import urllib.request, json 
## beolvasás
with urllib.request.urlopen("http://192.168.0.101:8484/getdevdata.cgi?device=2&sn=SP00%%") as url:
    data = json.load(url)


## állományba írás
with open(r"c:\Users\User\Documents\kl\napelem\kl_blog\java\kl_kesz_py_2023-02-18.json", "w") as outfile:
    json.dump(data, outfile)

## formázott megjelenítés
print(f"""A mai ({data['tim'][0:4]}.{data['tim'][4:6]}.{data['tim'][6:8]}) termelés: {data['etd']/10:04.1f} KWh 
és a pillanatnyi ({data['tim'][8:10]}:{data['tim'][10:12]}:{data['tim'][12:14]} -kor) termelés: {data['pac']} Wh
""")

## csoportos megjelenítés
print('-'*60)
for key, value in data.items():
    print(key, value)



Az eredmény

A mai (2023.02.18) termelés: 20.2 KWh 
és a pillanatnyi (16:01:32 -kor) termelés: 533 Wh

------------------------------------------------------------
flg 1
tim 20230218160132
tmp 372
fac 5005
pac 533
sac 533
qac 0
eto 4425
etd 202
hto 186
pf 77
wan 0
err 0
vac [2352, 2313, 2270]
iac [9, 9, 10]
vpv [4621, 3642]
ipv [67, 59]
str []





Megjegyzés


Azért programozó guruknak jelzem, hogy feleslegesen ne 'gyúrjanak' rajtam, hogy igen csúnya ez a megoldás, meg ezt nem így kellene megcsinálni....

Ennyi időt szántam rá, mikor működött befejeztetem.


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...