python-omnilogic-local 0.28.1__tar.gz → 0.28.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.
Files changed (62) hide show
  1. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/PKG-INFO +1 -1
  2. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/api/protocol.py +4 -1
  3. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/utils.py +0 -19
  4. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/omnitypes.py +1 -1
  5. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyproject.toml +1 -1
  6. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/LICENSE +0 -0
  7. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/README.md +0 -0
  8. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/__init__.py +0 -0
  9. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/_base.py +0 -0
  10. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/api/__init__.py +0 -0
  11. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/api/api.py +0 -0
  12. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/api/constants.py +0 -0
  13. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/api/exceptions.py +0 -0
  14. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/api/mock_api.py +0 -0
  15. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/backyard.py +0 -0
  16. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/bow.py +0 -0
  17. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/chlorinator.py +0 -0
  18. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/chlorinator_equip.py +0 -0
  19. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/__init__.py +0 -0
  20. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/cli.py +0 -0
  21. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/debug/__init__.py +0 -0
  22. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/debug/commands.py +0 -0
  23. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/__init__.py +0 -0
  24. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/backyard.py +0 -0
  25. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/bows.py +0 -0
  26. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/chlorinators.py +0 -0
  27. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/commands.py +0 -0
  28. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/csads.py +0 -0
  29. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/filters.py +0 -0
  30. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/groups.py +0 -0
  31. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/heaters.py +0 -0
  32. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/lights.py +0 -0
  33. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/pumps.py +0 -0
  34. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/relays.py +0 -0
  35. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/schedules.py +0 -0
  36. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/sensors.py +0 -0
  37. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/get/valves.py +0 -0
  38. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/cli/pcap_utils.py +0 -0
  39. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/collections.py +0 -0
  40. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/colorlogiclight.py +0 -0
  41. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/csad.py +0 -0
  42. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/csad_equip.py +0 -0
  43. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/decorators.py +0 -0
  44. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/filter.py +0 -0
  45. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/groups.py +0 -0
  46. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/heater.py +0 -0
  47. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/heater_equip.py +0 -0
  48. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/models/__init__.py +0 -0
  49. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/models/const.py +0 -0
  50. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/models/exceptions.py +0 -0
  51. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/models/filter_diagnostics.py +0 -0
  52. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/models/leadmessage.py +0 -0
  53. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/models/mspconfig.py +0 -0
  54. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/models/telemetry.py +0 -0
  55. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/omnilogic.py +0 -0
  56. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/pump.py +0 -0
  57. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/py.typed +0 -0
  58. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/relay.py +0 -0
  59. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/schedule.py +0 -0
  60. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/sensor.py +0 -0
  61. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/system.py +0 -0
  62. {python_omnilogic_local-0.28.1 → python_omnilogic_local-0.28.2}/pyomnilogic_local/util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-omnilogic-local
3
- Version: 0.28.1
3
+ Version: 0.28.2
4
4
  Summary: A library for local control of Hayward OmniHub/OmniLogic pool controllers using their local API
5
5
  Author: Chris Jowett, djtimca, garionphx
6
6
  Author-email: Chris Jowett <421501+cryptk@users.noreply.github.com>
@@ -43,7 +43,7 @@ class OmniLogicMessage:
43
43
  payload: bytes
44
44
  client_type: ClientType = ClientType.SIMPLE
45
45
  version: str = PROTOCOL_VERSION
46
- timestamp: int | None = int(time.time())
46
+ timestamp: int
47
47
  reserved_1: int = 0
48
48
  compressed: bool = False
49
49
  reserved_2: int = 0
@@ -54,6 +54,7 @@ class OmniLogicMessage:
54
54
  msg_type: MessageType,
55
55
  payload: str | None = None,
56
56
  version: str = PROTOCOL_VERSION,
57
+ timestamp: int | None = None,
57
58
  ) -> None:
58
59
  """Initialize a new OmniLogicMessage.
59
60
 
@@ -62,6 +63,7 @@ class OmniLogicMessage:
62
63
  msg_type: Type of message being sent.
63
64
  payload: Optional string payload (XML or command body).
64
65
  version: Protocol version string.
66
+ timestamp: Optional timestamp for the message.
65
67
  """
66
68
  self.id = msg_id
67
69
  self.type = msg_type
@@ -72,6 +74,7 @@ class OmniLogicMessage:
72
74
  self.payload = bytes(payload, "utf-8")
73
75
 
74
76
  self.version = version
77
+ self.timestamp = timestamp if timestamp is not None else int(time.time())
75
78
 
76
79
  def __bytes__(self) -> bytes:
77
80
  """Serialize the message to bytes for UDP transmission.
@@ -7,29 +7,10 @@ accessing controller data within the Click context.
7
7
  from __future__ import annotations
8
8
 
9
9
  import inspect
10
- import os
11
10
  from typing import Any
12
11
 
13
12
  import click
14
13
 
15
- from pyomnilogic_local.api.api import OmniLogicAPI
16
- from pyomnilogic_local.api.mock_api import OmniLogicMockAPI
17
-
18
-
19
- async def get_omni(host: str) -> OmniLogicAPI:
20
- """Create an OmniLogicAPI instance for the specified controller.
21
-
22
- Args:
23
- host: Hostname or IP address of the OmniLogic controller
24
-
25
- Returns:
26
- Configured OmniLogicAPI instance ready for communication
27
- """
28
- sim_data_path = os.environ.get("PYOMNILOGIC_SIMULATION_DATA")
29
- if sim_data_path:
30
- return OmniLogicMockAPI(sim_data_path) # type: ignore[return-value]
31
- return OmniLogicAPI(host, 10444, 5.0)
32
-
33
14
 
34
15
  def echo_properties(obj: Any) -> None:
35
16
  """Echo all properties of an object in a formatted way."""
@@ -120,7 +120,7 @@ class ChlorinatorAlert(Flag):
120
120
  LOW_VOLTAGE = 1 << 3 # Low voltage alert
121
121
  CELL_TEMP_LOW = 1 << 4 # Cell water temperature low
122
122
  CELL_TEMP_SCALEBACK = 1 << 5 # Cell water temperature scaleback
123
- # CELL_TEMP_LOW and CELL_TEMP_SCALEBACK = CELL_TEMP_HIGH
123
+ # NOTE: if both CELL_TEMP_LOW and CELL_TEMP_SCALEBACK are set, it indicates CELL_TEMP_HIGH
124
124
  BOARD_TEMP_HIGH = 1 << 6 # Board temperature high
125
125
  BOARD_TEMP_CLEARING = 1 << 7 # Board temperature clearing
126
126
  CELL_CLEAN = 1 << 11 # Cell cleaning runtime alert
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-omnilogic-local"
3
- version = "0.28.1"
3
+ version = "0.28.2"
4
4
  description = "A library for local control of Hayward OmniHub/OmniLogic pool controllers using their local API"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14.2"