-
Notifications
You must be signed in to change notification settings - Fork 1
/
scada_data_dump_script.py
59 lines (54 loc) · 2.82 KB
/
scada_data_dump_script.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from scada_fetcher import fetchScadaPntRealData
import pandas as pd
scadaMasterFilename = 'secret/scada_points.xlsx'
# read state suffix tags info from excel
stateSuffixInfoDf = pd.read_excel(scadaMasterFilename, 'state_tags')
# dump voltages data
busVoltsMasterDf = pd.read_excel(scadaMasterFilename, 'bus_voltages')
# for now only filter state elements
busVoltsMasterDf = busVoltsMasterDf[busVoltsMasterDf['ss_suffix'].isin(
stateSuffixInfoDf.Tag.tolist())]
busVoltsMasterDf.point = busVoltsMasterDf.service + busVoltsMasterDf.point
del busVoltsMasterDf['service']
# get real time scada data for the points
busVoltsMasterDf['data'] = busVoltsMasterDf.apply(
lambda x: fetchScadaPntRealData(x.point)*(1 if x.is_flipped == 0 else -1), axis=1)
# dump the results
busVoltsMasterDf.to_excel('dumps/bus_volts_dump.xlsx', index=False)
# dump states bus reactors data
brMasterDf = pd.read_excel(scadaMasterFilename, 'reactors')
# for now only filter state elements which are bus reactors
brMasterDf = brMasterDf[~brMasterDf.dev_num.apply(str).str.endswith('LR') & brMasterDf['ss_suffix'].isin(
stateSuffixInfoDf.Tag.tolist())]
brMasterDf.point = brMasterDf.service + brMasterDf.point
del brMasterDf['service']
# get real time scada data for the points
brMasterDf['data'] = brMasterDf.apply(
lambda x: fetchScadaPntRealData(x.point)*(1 if x.is_flipped == 0 else -1), axis=1)
# dump the results
brMasterDf.to_excel('dumps/br_dump.xlsx', index=False)
# dump states ICT data
ictMasterDf = pd.read_excel(scadaMasterFilename, 'transformers')
# for now only filter state elements which are ICTs
# https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.contains.html
ictMasterDf = ictMasterDf[ictMasterDf.dev_num.apply(str).str.contains('t', case=False, regex=True) & ictMasterDf['ss_suffix'].isin(
stateSuffixInfoDf.Tag.tolist())]
ictMasterDf.point = ictMasterDf.service + ictMasterDf.point
del ictMasterDf['service']
# get real time scada data for the points
ictMasterDf['data'] = ictMasterDf.apply(
lambda x: fetchScadaPntRealData(x.point)*(1 if x.is_flipped == 0 else -1), axis=1)
# dump the results
ictMasterDf.to_excel('dumps/ict_dump.xlsx', index=False)
# dump states GT data
gtMasterDf = pd.read_excel(scadaMasterFilename, 'transformers')
# for now only filter state elements which are GTs
gtMasterDf = gtMasterDf[gtMasterDf.dev_num.apply(str).str.contains('g|u', case=False, regex=True) & gtMasterDf['ss_suffix'].isin(
stateSuffixInfoDf.Tag.tolist())]
gtMasterDf.point = gtMasterDf.service + gtMasterDf.point
del gtMasterDf['service']
# get real time scada data for the points
gtMasterDf['data'] = gtMasterDf.apply(
lambda x: fetchScadaPntRealData(x.point)*(1 if x.is_flipped == 0 else -1), axis=1)
# dump the results
gtMasterDf.to_excel('dumps/gt_dump.xlsx', index=False)