1
1
from __future__ import annotations
2
2
3
3
import logging
4
- from typing import Tuple
5
4
5
+ from .const import *
6
6
from .exceptions import InverterError , RequestFailedException , RequestRejectedException
7
- from .inverter import Inverter
8
- from .inverter import OperationMode
9
- from .inverter import SensorKind as Kind
7
+ from .inverter import Inverter , OperationMode , SensorKind as Kind
10
8
from .modbus import ILLEGAL_DATA_ADDRESS
11
9
from .model import is_3_mppt , is_single_phase
12
10
from .protocol import ProtocolCommand
18
16
class DT (Inverter ):
19
17
"""Class representing inverter of DT/MS/D-NS/XS or GE's GEP(PSB/PSC) families"""
20
18
21
- __all_sensors : Tuple [Sensor , ...] = (
19
+ __all_sensors : tuple [Sensor , ...] = (
22
20
Timestamp ("timestamp" , 30100 , "Timestamp" ),
23
21
Voltage ("vpv1" , 30103 , "PV1 Voltage" , Kind .PV ),
24
22
Current ("ipv1" , 30104 , "PV1 Current" , Kind .PV ),
@@ -37,9 +35,9 @@ class DT(Inverter):
37
35
"PV3 Power" , "W" , Kind .PV ),
38
36
# ppv1 + ppv2 + ppv3
39
37
Calculated ("ppv" ,
40
- lambda data : (round (read_voltage (data , 30103 ) * read_current (data , 30104 ))) + (round (
41
- read_voltage (data , 30105 ) * read_current (data , 30106 ))) + ( round (
42
- read_voltage (data , 30107 ) * read_current (data , 30108 ))),
38
+ lambda data : (round (read_voltage (data , 30103 ) * read_current (data , 30104 ))) + (
39
+ round ( read_voltage (data , 30105 ) * read_current (data , 30106 ))) + (
40
+ round ( read_voltage (data , 30107 ) * read_current (data , 30108 ))),
43
41
"PV Power" , "W" , Kind .PV ),
44
42
# Voltage("vpv4", 14, "PV4 Voltage", Kind.PV),
45
43
# Current("ipv4", 16, "PV4 Current", Kind.PV),
@@ -115,12 +113,12 @@ class DT(Inverter):
115
113
116
114
# Inverter's meter data
117
115
# Modbus registers from offset 0x75f4 (30196)
118
- __all_sensors_meter : Tuple [Sensor , ...] = (
116
+ __all_sensors_meter : tuple [Sensor , ...] = (
119
117
PowerS ("active_power" , 30196 , "Active Power" , Kind .GRID ),
120
118
)
121
119
122
120
# Modbus registers of inverter settings, offsets are modbus register addresses
123
- __all_settings : Tuple [Sensor , ...] = (
121
+ __all_settings : tuple [Sensor , ...] = (
124
122
Timestamp ("time" , 40313 , "Inverter time" ),
125
123
126
124
Integer ("shadow_scan" , 40326 , "Shadow Scan" , "" , Kind .PV ),
@@ -133,12 +131,12 @@ class DT(Inverter):
133
131
)
134
132
135
133
# Settings for single phase inverters
136
- __settings_single_phase : Tuple [Sensor , ...] = (
134
+ __settings_single_phase : tuple [Sensor , ...] = (
137
135
Long ("grid_export_limit" , 40328 , "Grid Export Limit" , "W" , Kind .GRID ),
138
136
)
139
137
140
138
# Settings for three phase inverters
141
- __settings_three_phase : Tuple [Sensor , ...] = (
139
+ __settings_three_phase : tuple [Sensor , ...] = (
142
140
Integer ("grid_export_limit" , 40336 , "Grid Export Limit" , "%" , Kind .GRID ),
143
141
)
144
142
@@ -193,7 +191,7 @@ async def read_device_info(self):
193
191
self ._sensors = tuple (filter (self ._pv1_pv2_only , self ._sensors ))
194
192
pass
195
193
196
- async def read_runtime_data (self ) -> Dict [str , Any ]:
194
+ async def read_runtime_data (self ) -> dict [str , Any ]:
197
195
response = await self ._read_from_socket (self ._READ_RUNNING_DATA )
198
196
data = self ._map_response (response , self ._sensors )
199
197
@@ -253,7 +251,7 @@ async def _write_setting(self, setting: Sensor, value: Any):
253
251
else :
254
252
await self ._read_from_socket (self ._write_multi_command (setting .offset , raw_value ))
255
253
256
- async def read_settings_data (self ) -> Dict [str , Any ]:
254
+ async def read_settings_data (self ) -> dict [str , Any ]:
257
255
data = {}
258
256
for setting in self .settings ():
259
257
value = await self .read_setting (setting .id_ )
@@ -267,7 +265,7 @@ async def set_grid_export_limit(self, export_limit: int) -> None:
267
265
if export_limit >= 0 :
268
266
return await self .write_setting ('grid_export_limit' , export_limit )
269
267
270
- async def get_operation_modes (self , include_emulated : bool ) -> Tuple [OperationMode , ...]:
268
+ async def get_operation_modes (self , include_emulated : bool ) -> tuple [OperationMode , ...]:
271
269
return ()
272
270
273
271
async def get_operation_mode (self ) -> OperationMode :
@@ -283,11 +281,11 @@ async def get_ongrid_battery_dod(self) -> int:
283
281
async def set_ongrid_battery_dod (self , dod : int ) -> None :
284
282
raise InverterError ("Operation not supported, inverter has no batteries." )
285
283
286
- def sensors (self ) -> Tuple [Sensor , ...]:
284
+ def sensors (self ) -> tuple [Sensor , ...]:
287
285
result = self ._sensors
288
286
if self ._has_meter :
289
287
result = result + self ._sensors_meter
290
288
return result
291
289
292
- def settings (self ) -> Tuple [Sensor , ...]:
290
+ def settings (self ) -> tuple [Sensor , ...]:
293
291
return tuple (self ._settings .values ())
0 commit comments