-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathmodels.py
More file actions
137 lines (121 loc) · 4.05 KB
/
models.py
File metadata and controls
137 lines (121 loc) · 4.05 KB
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
from typing import List
from modules.conf_models import FusionSolarOpenApiInverterSettings, FusionSolarOpenApiMeterSettings
class KenterTransformerMeasurement:
def __init__(
self,
timestamp: int = 0,
interval_energy_wh: float = 0.0,
interval_power_avg_w: float = 0.0,
):
self.timestamp = timestamp
self.interval_energy_wh = interval_energy_wh
self.interval_power_avg_w = interval_power_avg_w
timestamp: int
interval_energy_wh: float
interval_power_avg_w: float
class KenterTransformerMeasurements:
def __init__(self, descriptive_name: str = "", connection_id: str = "", metering_point_id: str = "", channel_id: str = "", measurements: List[KenterTransformerMeasurement] = []):
self.descriptive_name = descriptive_name
self.connection_id = connection_id
self.metering_point_id = metering_point_id
self.channel_id = channel_id
self.measurements = measurements
descriptive_name: str
connection_id: str
metering_point_id: str
channel_id: str
measurements: List[KenterTransformerMeasurement]
class FusionSolarInverterMeasurement:
def __init__(
self,
settings: FusionSolarOpenApiInverterSettings = None,
measurement_type: str = "",
data_source: str = "",
station_name: str = "",
station_dn: str = "",
device_dn: str = "",
device_name: str = "",
device_model: str = "",
device_id: str = "",
real_time_power_w: float = 0.0,
lifetime_energy_wh: float = 0.0,
day_energy_wh: float = 0.0,
):
self.settings = settings
self.measurement_type = measurement_type
self.station_name = station_name
self.station_dn = station_dn
self.device_dn = device_dn
self.device_name = device_name
self.device_model = device_model
self.device_id = device_id
self.data_source = data_source
self.real_time_power_w = real_time_power_w
self.lifetime_energy_wh = lifetime_energy_wh
self.day_energy_wh = day_energy_wh
settings: FusionSolarOpenApiInverterSettings
measurement_type: str
station_name: str
station_dn: str
device_dn: str
device_name: str
device_model: str
device_id: str
data_source: str
real_time_power_w: float
lifetime_energy_wh: float
day_energy_wh: float
@property
def settings_descriptive_name(self) -> str:
if self.settings is not None:
return self.settings.descriptive_name
return ""
@property
def settings_device_id(self) -> str:
if self.settings is not None:
return self.settings.dev_id
return ""
class FusionSolarMeterMeasurement:
def __init__(
self,
settings: FusionSolarOpenApiMeterSettings = None,
measurement_type: str = "",
data_source: str = "",
station_name: str = "",
station_dn: str = "",
device_dn: str = "",
device_name: str = "",
device_model: str = "",
device_id: str = "",
active_power_w: float = 0.0,
):
self.settings = settings
self.measurement_type = measurement_type
self.station_name = station_name
self.station_dn = station_dn
self.device_dn = device_dn
self.device_name = device_name
self.device_model = device_model
self.device_id = device_id
self.data_source = data_source
self.active_power_w = active_power_w
settings: FusionSolarOpenApiInverterSettings
measurement_type: str
station_name: str
station_dn: str
device_dn: str
device_name: str
device_model: str
device_id: str
data_source: str
active_power_w: float
@property
def settings_descriptive_name(self) -> str:
if self.settings is not None:
return self.settings.descriptive_name
return ""
@property
def settings_device_id(self) -> str:
if self.settings is not None:
return self.settings.dev_id
return ""