python-omnilogic-local 0.12.1__py3-none-any.whl → 0.13.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,6 +18,7 @@ from ..types import (
18
18
  ChlorinatorDispenserType,
19
19
  ColorLogicLightType,
20
20
  ColorLogicShow,
21
+ CSADType,
21
22
  FilterType,
22
23
  HeaterType,
23
24
  OmniType,
@@ -162,6 +163,13 @@ class MSPChlorinator(OmniBase):
162
163
  self.chlorinator_equipment = [MSPChlorinatorEquip.parse_obj(equip) for equip in chlorinator_equip_data[OmniType.CHLORINATOR_EQUIP]]
163
164
 
164
165
 
166
+ class MSPCSAD(OmniBase):
167
+ omni_type: OmniType = OmniType.CSAD
168
+ enabled: Literal["yes", "no"] = Field(alias="Enabled")
169
+ type: CSADType | str = Field(alias="Type")
170
+ target_value: float = Field(alias="TargetValue")
171
+
172
+
165
173
  class MSPColorLogicLight(OmniBase):
166
174
  omni_type: OmniType = OmniType.CL_LIGHT
167
175
  type: ColorLogicLightType | str = Field(alias="Type")
@@ -174,7 +182,7 @@ class MSPColorLogicLight(OmniBase):
174
182
 
175
183
 
176
184
  class MSPBoW(OmniBase):
177
- _sub_devices = {"filter", "relay", "heater", "sensor", "colorlogic_light", "pump", "chlorinator"}
185
+ _sub_devices = {"filter", "relay", "heater", "sensor", "colorlogic_light", "pump", "chlorinator", "csad"}
178
186
 
179
187
  omni_type: OmniType = OmniType.BOW
180
188
  type: BodyOfWaterType | str = Field(alias="Type")
@@ -186,6 +194,7 @@ class MSPBoW(OmniBase):
186
194
  colorlogic_light: list[MSPColorLogicLight] | None = Field(alias="ColorLogic-Light")
187
195
  pump: list[MSPPump] | None = Field(alias="Pump")
188
196
  chlorinator: MSPChlorinator | None = Field(alias="Chlorinator")
197
+ csad: list[MSPCSAD] | None = Field(alias="CSAD")
189
198
 
190
199
  # We override the __init__ here so that we can trigger the propagation of the bow_id down to all of it's sub devices after the bow
191
200
  # itself is initialized
@@ -232,6 +241,7 @@ class MSPConfig(BaseModel):
232
241
  force_list=(
233
242
  OmniType.BOW_MSP,
234
243
  OmniType.CHLORINATOR_EQUIP,
244
+ OmniType.CSAD,
235
245
  OmniType.CL_LIGHT,
236
246
  OmniType.FAVORITES,
237
247
  OmniType.FILTER,
@@ -13,6 +13,7 @@ from ..types import (
13
13
  ColorLogicPowerState,
14
14
  ColorLogicShow,
15
15
  ColorLogicSpeed,
16
+ CSADMode,
16
17
  FilterState,
17
18
  FilterValvePosition,
18
19
  FilterWhyOn,
@@ -79,6 +80,15 @@ class TelemetryChlorinator(BaseModel):
79
80
  # return self.status_raw & 4 == 4 # Check if bit 4 is set, which means the chlorinator is currently chlorinating
80
81
 
81
82
 
83
+ class TelemetryCSAD(BaseModel):
84
+ omni_type: OmniType = OmniType.CSAD
85
+ system_id: int = Field(alias="@systemId")
86
+ status_raw: int = Field(alias="@status")
87
+ ph: float = Field(alias="@ph")
88
+ orp: int = Field(alias="@orp")
89
+ mode: CSADMode | int = Field(alias="@mode")
90
+
91
+
82
92
  class TelemetryColorLogicLight(BaseModel):
83
93
  omni_type: OmniType = OmniType.CL_LIGHT
84
94
  system_id: int = Field(alias="@systemId")
@@ -172,6 +182,7 @@ class Telemetry(BaseModel):
172
182
  bow: list[TelemetryBoW] = Field(alias="BodyOfWater")
173
183
  chlorinator: list[TelemetryChlorinator] | None = Field(alias="Chlorinator")
174
184
  colorlogic_light: list[TelemetryColorLogicLight] | None = Field(alias="ColorLogic-Light")
185
+ csad: list[TelemetryCSAD] | None = Field(alias="CSAD")
175
186
  filter: list[TelemetryFilter] | None = Field(alias="Filter")
176
187
  group: list[TelemetryGroup] | None = Field(alias="Group")
177
188
  heater: list[TelemetryHeater] | None = Field(alias="Heater")
@@ -223,6 +234,7 @@ class Telemetry(BaseModel):
223
234
  force_list=(
224
235
  OmniType.BOW,
225
236
  OmniType.CHLORINATOR,
237
+ OmniType.CSAD,
226
238
  OmniType.CL_LIGHT,
227
239
  OmniType.FILTER,
228
240
  OmniType.GROUP,
@@ -46,6 +46,7 @@ class OmniType(str, Enum):
46
46
  BOW_MSP = "Body-of-water"
47
47
  CHLORINATOR = "Chlorinator"
48
48
  CHLORINATOR_EQUIP = "Chlorinator-Equipment"
49
+ CSAD = "CSAD"
49
50
  CL_LIGHT = "ColorLogic-Light"
50
51
  FAVORITES = "Favorites"
51
52
  FILTER = "Filter"
@@ -162,6 +163,11 @@ class ColorLogicLightType(str, PrettyEnum):
162
163
  TWO_FIVE = "COLOR_LOGIC_2_5"
163
164
 
164
165
 
166
+ class CSADType(str, PrettyEnum):
167
+ ACID = "ACID"
168
+ CO2 = "CO2"
169
+
170
+
165
171
  # Chemistry Sense and Dispense
166
172
  class CSADStatus(PrettyEnum):
167
173
  NOT_DISPENSING = 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-omnilogic-local
3
- Version: 0.12.1
3
+ Version: 0.13.1
4
4
  Summary: A library for local control of Hayward OmniHub/OmniLogic pool controllers using their local API
5
5
  Home-page: https://github.com/cryptk/python-omnilogic-local
6
6
  License: Apache-2.0
@@ -6,14 +6,14 @@ pyomnilogic_local/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
6
6
  pyomnilogic_local/models/const.py,sha256=j4HSiPJW5If296yJ-AiIsBI9EdlckF4QkVFIpTLb5C4,51
7
7
  pyomnilogic_local/models/filter_diagnostics.py,sha256=N4YWl9aEMKcWZ4QOlqR68WV9H1WjTtxjs0wHrNojAaU,1532
8
8
  pyomnilogic_local/models/leadmessage.py,sha256=9r6PbIHHzD0tyeKiFUve3WLcjS8uL2Gj6r_96X7l5H8,407
9
- pyomnilogic_local/models/mspconfig.py,sha256=TohosV0pI4GfAjimcTtlITn6WO0tl4AIm3guvJ3EKHA,9784
10
- pyomnilogic_local/models/telemetry.py,sha256=4CE2UTyQzBVAdWRysuTf8m0Qtd1LNkfprXQSxt4Xw68,10242
9
+ pyomnilogic_local/models/mspconfig.py,sha256=6sfkibOqYK3J8_82D_Fm4XjFSB3CCP11GEh8ZxtfQCI,10116
10
+ pyomnilogic_local/models/telemetry.py,sha256=86WPCmemNLwXAg-dHp1EvgpJzqQIHfwkNtO1eGF4eZk,10629
11
11
  pyomnilogic_local/models/util.py,sha256=3Qch98NOl5eO-KIOUBnE9ar86MlzbZ0g2LRApMgj-co,1476
12
12
  pyomnilogic_local/protocol.py,sha256=1Z7U70mV0sUlqrp3XK1Fvj6NuChRKLz0ejzKaQLSPE8,10194
13
- pyomnilogic_local/types.py,sha256=bN1E-6l5JjNGc9w2IRNffxD9Tr8LubLZv0E1mZ4l7ww,7177
13
+ pyomnilogic_local/types.py,sha256=km_tagtJ43m4_cIynalis7oiDa1LUUR-ta5B9HQUG1Q,7264
14
14
  pyomnilogic_local/util.py,sha256=agbRBKnecrYycC9iUmo1aJDjbVg9VxHyq4QY0D8-bfA,359
15
- python_omnilogic_local-0.12.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
16
- python_omnilogic_local-0.12.1.dist-info/METADATA,sha256=uLABkllqbQ6eNbgK8u7_I7Mdy4qLFTlDZeg-QmNrthY,2939
17
- python_omnilogic_local-0.12.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
18
- python_omnilogic_local-0.12.1.dist-info/entry_points.txt,sha256=PUvdumqSijeB0dHH_s5oE2TnWtPWdJSNpSOsn8yTtOo,56
19
- python_omnilogic_local-0.12.1.dist-info/RECORD,,
15
+ python_omnilogic_local-0.13.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
16
+ python_omnilogic_local-0.13.1.dist-info/METADATA,sha256=FFPh4VWXQBHEEIpdjIpGlUSBYk6KY1uNVnVAupCpw9Y,2939
17
+ python_omnilogic_local-0.13.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
18
+ python_omnilogic_local-0.13.1.dist-info/entry_points.txt,sha256=PUvdumqSijeB0dHH_s5oE2TnWtPWdJSNpSOsn8yTtOo,56
19
+ python_omnilogic_local-0.13.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.8.1
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any