PySaxPower 2.0.1__tar.gz → 2.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySaxPower
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Python package to read and write data from/to SAX Power Home Plus batteries.
5
5
  Author: Hannes
6
6
  License-Expression: MIT
@@ -19,10 +19,6 @@ Dynamic: license-file
19
19
 
20
20
  ## Overview
21
21
 
22
- Here’s a more polished and concise version of your text with improved clarity, flow, and grammar:
23
-
24
- ---
25
-
26
22
  With **PySaxPower**, you can read Modbus registers from **SAX Power Home Plus** batteries.
27
23
  The package is divided into two protocol implementations: **SunSpec** and **Basic**.
28
24
  The **Basic** protocol supports read-only operations.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySaxPower
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Python package to read and write data from/to SAX Power Home Plus batteries.
5
5
  Author: Hannes
6
6
  License-Expression: MIT
@@ -19,10 +19,6 @@ Dynamic: license-file
19
19
 
20
20
  ## Overview
21
21
 
22
- Here’s a more polished and concise version of your text with improved clarity, flow, and grammar:
23
-
24
- ---
25
-
26
22
  With **PySaxPower**, you can read Modbus registers from **SAX Power Home Plus** batteries.
27
23
  The package is divided into two protocol implementations: **SunSpec** and **Basic**.
28
24
  The **Basic** protocol supports read-only operations.
@@ -6,10 +6,6 @@
6
6
 
7
7
  ## Overview
8
8
 
9
- Here’s a more polished and concise version of your text with improved clarity, flow, and grammar:
10
-
11
- ---
12
-
13
9
  With **PySaxPower**, you can read Modbus registers from **SAX Power Home Plus** batteries.
14
10
  The package is divided into two protocol implementations: **SunSpec** and **Basic**.
15
11
  The **Basic** protocol supports read-only operations.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "PySaxPower"
7
- version = "2.0.1"
7
+ version = "2.0.2"
8
8
  description = "Python package to read and write data from/to SAX Power Home Plus batteries."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.7"
@@ -0,0 +1,55 @@
1
+ from pysaxpower.sunspec.register import SunSpecRegister
2
+
3
+
4
+ class SunSpecScaleFactors(object):
5
+
6
+ def __init__(self):
7
+ self.register = SunSpecRegister()
8
+
9
+ def search_scale_factor(self, address: int) -> int | None:
10
+ r = self.register
11
+
12
+ if 40017 <= address <= 40020:
13
+ return r.AC_Current_Scalefactor
14
+ elif 40022 <= address <= 40027:
15
+ return r.Voltage_Scalefactor
16
+ elif address == 40029:
17
+ return r.ActivePower_Scalefactor
18
+ elif address == 40031:
19
+ return r.Frequency_Scalefactor
20
+ elif address == 40033:
21
+ return r.ApparentPower_Scalefactor
22
+ elif address == 40035:
23
+ return r.ReactivePower_Scalefactor
24
+ elif address == 40037:
25
+ return r.PowerFactor_Scalefactor
26
+ elif address == 40041:
27
+ return r.Temperature_Scalefactor
28
+ elif address == 40045:
29
+ return r.PV_Power_Scalefactor
30
+ elif address == 40049:
31
+ return r.PowerTargetScalefactor
32
+ elif 40056 <= address <= 40059:
33
+ return r.AC_Current_Scalefactor_Grid
34
+ elif 40061 <= address <= 40068:
35
+ return r.Voltage_Scalefactor_Grid
36
+ elif address == 40070:
37
+ return r.Frequency_Scalefactor_Grid
38
+ elif 40072 <= address <= 40075:
39
+ return r.ActiveGridPower_Scalefactor
40
+ elif 40077 <= address <= 40080:
41
+ return r.ApparentPower_Scalefactor_Grid
42
+ elif 40082 <= address <= 40085:
43
+ return r.ReactivePower_Scalefactor_Grid
44
+ elif 40087 <= address <= 40090:
45
+ return r.PowerFactor_Scalefactor_Grid
46
+ elif address == 40097:
47
+ return r.Capacity_Scalefactor
48
+ elif 40098 <= address <= 40099:
49
+ return r.ChargeDischargePower_Scalefactor
50
+ elif 40100 <= address <= 40102:
51
+ return r.SoC_Scalefactor
52
+ elif address == 40109:
53
+ return r.CellVoltage_Scalefactor
54
+ else:
55
+ return None
@@ -1,86 +0,0 @@
1
- from pysaxpower.sunspec.register import SunSpecRegister
2
-
3
-
4
- class SunSpecScaleFactors(object):
5
- """Ordnet einer Registeradresse die Adresse des zugehoerigen sunsf-Registers zu.
6
-
7
- Rueckgabe ist die ADRESSE des Scalefaktor-Registers, nicht dessen Wert.
8
- None bedeutet: fuer dieses Register existiert laut Dokumentation kein
9
- Scalefaktor (Well-Known-Werte, Enums, Timeouts, sunsf-Register selbst).
10
- """
11
-
12
- def __init__(self):
13
- self.register = SunSpecRegister()
14
-
15
- def search_scale_factor(self, address: int) -> int | None:
16
- r = self.register
17
-
18
- # ------------------------------------------------------------------
19
- # Modell 103 - Speicherelektronik (40015 - 40046)
20
- # ------------------------------------------------------------------
21
- if 40017 <= address <= 40020: # AC Strom Speicher Summe/A/B/C
22
- return r.AC_Current_Scalefactor # 40021, SF = -2
23
- elif 40022 <= address <= 40027: # Spannung Speicher L-L und A/B/C
24
- return r.Voltage_Scalefactor # 40028, SF = -1
25
- elif address == 40029: # Wirkleistung Speicher Summe
26
- return r.ActivePower_Scalefactor # 40030, SF = 0
27
- elif address == 40031: # Netzfrequenz (Speicher)
28
- return r.Frequency_Scalefactor # 40032, SF = -2
29
- elif address == 40033: # Scheinleistung Speicher Summe
30
- return r.ApparentPower_Scalefactor # 40034, SF = 0
31
- elif address == 40035: # Blindleistung Speicher Summe
32
- return r.ReactivePower_Scalefactor # 40036, SF = 0
33
- elif address == 40037: # Leistungsfaktor Speicher Summe
34
- return r.PowerFactor_Scalefactor # 40038, SF = -3
35
- elif address == 40041: # Maximale Zelltemperatur
36
- return r.Temperature_Scalefactor # 40042, SF = 0
37
- elif address == 40045: # PV-Leistung (nur mit ADW200)
38
- return r.PV_Power_Scalefactor # 40046, SF = 1
39
-
40
- # ------------------------------------------------------------------
41
- # Modell 123 - Immediate Controls (40047 - 40053)
42
- # ------------------------------------------------------------------
43
- elif address == 40049: # Leistungsvorgabe prozentual
44
- return r.PowerTargetScalefactor # 40052, SF = -2
45
- # 40050 Timeout (s), 40051 Steuermodus (Enum),
46
- # 40053 Referenzwert Maximalleistung (W, Well-Known) -> kein SF
47
-
48
- # ------------------------------------------------------------------
49
- # Modell 203 - WYE Connect 3Ph Meter ABC / ADW200 (40054 - 40094)
50
- # ------------------------------------------------------------------
51
- elif 40056 <= address <= 40059: # AC Strom Netz Summe/L1/L2/L3
52
- return r.AC_Current_Scalefactor_Grid # 40060, SF = -1
53
- elif 40061 <= address <= 40068: # Netzspannungen L-N und L-L
54
- return r.Voltage_Scalefactor_Grid # 40069, SF = -1
55
- elif address == 40070: # Netzfrequenz
56
- return r.Frequency_Scalefactor_Grid # 40071, SF = -2
57
- elif 40072 <= address <= 40075: # Wirkleistung Netz Summe/L1/L2/L3
58
- return r.ActiveGridPower_Scalefactor # 40076, SF = 1
59
- elif 40077 <= address <= 40080: # Scheinleistung Netz Summe/L1/L2/L3
60
- return r.ApparentPower_Scalefactor_Grid # 40081, SF = 1
61
- elif 40082 <= address <= 40085: # Blindleistung Netz Summe/L1/L2/L3
62
- return r.ReactivePower_Scalefactor_Grid # 40086, SF = 1
63
- elif 40087 <= address <= 40090: # Leistungsfaktor Netz Summe/L1/L2/L3
64
- return r.PowerFactor_Scalefactor_Grid # 40091, SF = -3
65
-
66
- # ------------------------------------------------------------------
67
- # Modell 802 - Battery Base Model (40095 - 40114)
68
- # ------------------------------------------------------------------
69
- elif address == 40097: # Kapazitaet Speichersystem (Wh)
70
- return r.Capacity_Scalefactor # 40110, SF = 0
71
- elif 40098 <= address <= 40099: # Verf. Lade-/Entladeleistung (W)
72
- return r.ChargeDischargePower_Scalefactor # 40111, SF = 0
73
- elif 40100 <= address <= 40102: # Max/Min/Aktueller SoC (%)
74
- return r.SoC_Scalefactor # 40112, SF = 0
75
- elif address == 40109: # Durchschnittliche Zellspannung (mV)
76
- return r.CellVoltage_Scalefactor # 40114, SF = 0
77
-
78
- # 40103 Entladetiefe (%): in der Dokumentation ist KEIN Scalefaktor
79
- # zugeordnet. Kandidat waere 40113 (Reserve, int16 sunsf, Wert 0),
80
- # das an der Position von DoD_SF im SunSpec-Modell 802 steht.
81
- # Bewusst nicht geraten -> None.
82
-
83
- # 40000-40016, 40039/40040, 40043/40044, 40092-40094, 40104-40108,
84
- # sowie alle sunsf-Register selbst haben keinen Scalefaktor.
85
- else:
86
- return None
File without changes
File without changes