python-omnilogic-local 0.14.3__tar.gz → 0.14.6__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (18) hide show
  1. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/PKG-INFO +2 -2
  2. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/api.py +5 -5
  3. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/models/mspconfig.py +3 -0
  4. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/models/telemetry.py +1 -1
  5. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/models/util.py +1 -1
  6. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/types.py +21 -2
  7. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyproject.toml +1 -1
  8. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/LICENSE +0 -0
  9. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/README.md +0 -0
  10. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/__init__.py +0 -0
  11. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/cli.py +0 -0
  12. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/exceptions.py +0 -0
  13. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/models/__init__.py +0 -0
  14. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/models/const.py +0 -0
  15. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/models/filter_diagnostics.py +0 -0
  16. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/models/leadmessage.py +0 -0
  17. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/protocol.py +0 -0
  18. {python_omnilogic_local-0.14.3 → python_omnilogic_local-0.14.6}/pyomnilogic_local/util.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: python-omnilogic-local
3
- Version: 0.14.3
3
+ Version: 0.14.6
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
@@ -436,12 +436,12 @@ class OmniLogicAPI:
436
436
  pool_id: int,
437
437
  equipment_id: int,
438
438
  timed_percent: int,
439
+ cell_type: int,
440
+ op_mode: int,
441
+ sc_timeout: int,
442
+ bow_type: int,
443
+ orp_timeout: int,
439
444
  cfg_state: int = 3,
440
- op_mode: int = 1,
441
- bow_type: int = 0,
442
- cell_type: int = 4,
443
- sc_timeout: int = 24,
444
- orp_timeout: int = 24,
445
445
  ) -> None:
446
446
  body_element = ET.Element("Request", {"xmlns": "http://nextgen.hayward.com/api"})
447
447
 
@@ -15,6 +15,7 @@ from xmltodict import parse as xml_parse
15
15
  from ..exceptions import OmniParsingException
16
16
  from ..types import (
17
17
  BodyOfWaterType,
18
+ ChlorinatorCellType,
18
19
  ChlorinatorDispenserType,
19
20
  ColorLogicLightType,
20
21
  ColorLogicShow,
@@ -151,7 +152,9 @@ class MSPChlorinator(OmniBase):
151
152
  enabled: Literal["yes", "no"] = Field(alias="Enabled")
152
153
  timed_percent: int = Field(alias="Timed-Percent")
153
154
  superchlor_timeout: int = Field(alias="SuperChlor-Timeout")
155
+ orp_timeout: int = Field(alias="ORP-Timeout")
154
156
  dispenser_type: ChlorinatorDispenserType | str = Field(alias="Dispenser-Type")
157
+ cell_type: ChlorinatorCellType = Field(alias="Cell-Type")
155
158
  chlorinator_equipment: list[MSPChlorinatorEquip] | None
156
159
 
157
160
  def __init__(self, **data: Any) -> None:
@@ -71,7 +71,7 @@ class TelemetryChlorinator(BaseModel):
71
71
  sc_mode: int = Field(alias="@scMode")
72
72
  operating_state: int = Field(alias="@operatingState")
73
73
  timed_percent: int | None = Field(alias="@Timed-Percent")
74
- operating_mode: ChlorinatorOperatingMode | int = Field(alias="@operatingMode")
74
+ operating_mode: ChlorinatorOperatingMode = Field(alias="@operatingMode")
75
75
  enable: bool = Field(alias="@enable")
76
76
 
77
77
  # Still need to do a bit more work to determine if a chlorinator is actively chlorinating
@@ -2,7 +2,7 @@ from collections.abc import Awaitable, Callable
2
2
  import logging
3
3
  from typing import Any, Literal, TypeVar, cast, overload
4
4
 
5
- from pydantic.utils import GetterDict
5
+ from pydantic.v1.utils import GetterDict
6
6
 
7
7
  from .const import XML_NS
8
8
  from .filter_diagnostics import FilterDiagnostics
@@ -1,4 +1,4 @@
1
- from enum import Enum
1
+ from enum import Enum, IntEnum
2
2
 
3
3
  from .util import PrettyEnum
4
4
 
@@ -87,7 +87,8 @@ class BodyOfWaterType(str, PrettyEnum):
87
87
  # Chlorinator status is a bitmask that we still need to figure out
88
88
  # class ChlorinatorStatus(str,Enum):
89
89
  # pass
90
- class ChlorinatorOperatingMode(PrettyEnum):
90
+ class ChlorinatorOperatingMode(IntEnum):
91
+ DISABLED = 0
91
92
  TIMED = 1
92
93
  ORP = 2
93
94
 
@@ -96,6 +97,24 @@ class ChlorinatorDispenserType(str, PrettyEnum):
96
97
  SALT = "SALT_DISPENSING"
97
98
 
98
99
 
100
+ class ChlorinatorCellType(PrettyEnum):
101
+ T3 = "CELL_TYPE_T3"
102
+ T5 = "CELL_TYPE_T5"
103
+ T9 = "CELL_TYPE_T9"
104
+ T15 = "CELL_TYPE_T15"
105
+
106
+ # There is probably an easier way to do this
107
+ def __int__(self) -> int:
108
+ return ChlorinatorCellInt[self.name].value
109
+
110
+
111
+ class ChlorinatorCellInt(IntEnum):
112
+ T3 = 1
113
+ T5 = 2
114
+ T9 = 3
115
+ T15 = 4
116
+
117
+
99
118
  # Lights
100
119
  class ColorLogicSpeed(PrettyEnum):
101
120
  ONE_SIXTEENTH = 0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "python-omnilogic-local"
3
- version = "0.14.3"
3
+ version = "0.14.6"
4
4
  description = "A library for local control of Hayward OmniHub/OmniLogic pool controllers using their local API"
5
5
  authors = ["cryptk <cryptk@users.noreply.github.com>", "djtimca", "garionphx"]
6
6
  license = "Apache-2.0"