@rygine/omnilogic-local-sdk 0.0.1

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are recorded here, and versions follow
4
+ [Semantic Versioning](https://semver.org/).
5
+
6
+ ## 0.0.1
7
+
8
+ Initial release.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ry Racherbaumer
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,149 @@
1
+ # OmniLogicLocal SDK
2
+
3
+ TypeScript SDK for local control of Hayward OmniLogic pool controllers. No
4
+ internet or cloud login required.
5
+
6
+ > [!IMPORTANT]
7
+ >
8
+ > This SDK is currently in beta. It may contain bugs or change based on
9
+ > feedback.
10
+
11
+ ## Features
12
+
13
+ - Access to the controller config, system info, and equipment telemetry
14
+ - Typed parameters and results for all 237 firmware-verified commands
15
+ - Built-in caching and throttling to prevent controller overload
16
+ - Equipment control through an API built on top of the command interface
17
+
18
+ > [!NOTE]
19
+ >
20
+ > Not all commands have been verified against real hardware. Some commands seem
21
+ > to be unusable, require certain setups and equipment, or may put your system
22
+ > in an undesirable state. The equipment control API has been tested against
23
+ > real hardware, has safeguards in place, and is the best way to access your
24
+ > equipment. Unverified hardware of a kind it already covers, such as other
25
+ > lights, relays, heaters and chlorinators, may work through it too. Anything it
26
+ > does not cover, such as auxiliary pumps or Sense and Dispense, is reached with
27
+ > `command()`: those commands should work, but have not been confirmed.
28
+
29
+ ## Requirements
30
+
31
+ - Node.js >= 24
32
+ - Network access to the OmniLogic controller on port 10444
33
+
34
+ ## Installation
35
+
36
+ ```bash
37
+ yarn add @rygine/omnilogic-local-sdk
38
+ # or
39
+ npm install @rygine/omnilogic-local-sdk
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ ```typescript
45
+ import { OmniLogic } from "@rygine/omnilogic-local-sdk";
46
+
47
+ const omni = new OmniLogic({ host: "192.168.1.100" });
48
+
49
+ // fetch the latest controller config and telemetry
50
+ await omni.refresh();
51
+
52
+ // access controller config and telemetry
53
+ console.log("Backyard name:", omni.config.backyard.name);
54
+ console.log("Air temp:", omni.telemetry.backyard.airTemp);
55
+
56
+ // send a raw command with typed parameters
57
+ const poolTemp = await omni.command("GetUIPoolTempCmd", { poolId: 1 });
58
+ console.log("Pool temp:", poolTemp.temp);
59
+
60
+ // or use the equipment API
61
+ console.log("Filter speed:", omni.backyard.pool?.filter?.speed);
62
+ console.log("Filter status:", omni.backyard.pool?.filter?.status);
63
+ ```
64
+
65
+ ## Supported hardware
66
+
67
+ The equipment API has been verified on this hardware:
68
+
69
+ - Hayward OmniPL, MSP firmware R0502000
70
+ - Pool and spa sharing one filter pump, heater and chlorinator
71
+ - Hayward TriStar VS 950 Omni filter pump
72
+ - Hayward Smart Heater (gas)
73
+ - Salt chlorinator with a TCELLS340 cell
74
+ - Universal ColorLogic (UCL) lights, with or without OmniDirect
75
+ - High voltage relays
76
+ - Air temperature, water temperature and flow sensors
77
+
78
+ The controller runs other equipment the SDK supports but has not yet verified on
79
+ hardware:
80
+
81
+ - Salt chlorinator cells
82
+ - T-Cell-3
83
+ - T-Cell-5
84
+ - T-Cell-9
85
+ - T-Cell-15
86
+ - T-Cell-LS
87
+ - TCELLS315
88
+ - TCELLS325
89
+ - AQR940/AQR925 Aqua Rite chlorine generator, with an HLAQRPCB communication
90
+ board
91
+ - Feeders and dispensers
92
+ - HL-CHEM4-CHLOR liquid chlorine feeder
93
+ - CL200 chlorine tablet feeder
94
+ - HL-CHEM4-ACID liquid acid feeder
95
+ - AQL-CHEM2 CO2 dispenser
96
+ - HL-CHEM Sense and Dispense ORP and pH sensing kit
97
+ - Pumps
98
+ - TriStar VS 900 Omni
99
+ - Super Pump VS 700 Omni
100
+ - MaxFlo VS 500 Omni
101
+ - EcoStar
102
+ - Single speed and two speed filter pumps
103
+ - Cleaner, water feature and accessory pumps
104
+ - Heat pump, solar, electric and geothermal heaters, and chillers
105
+ - Lights
106
+ - ColorLogic 2.5 (CL2.5)
107
+ - ColorLogic 4.0 (CL4.0)
108
+ - Universal ColorLogic in Pentair SAM mode
109
+ - WaterBowl
110
+ - Pentair Color LED (P-COLOR)
111
+ - Jandy Color LED (Z-Color)
112
+ - Incandescent
113
+ - LTSUY11300 Smart Power Transformer
114
+ - Valve actuators
115
+ - GVA-24 valve actuator
116
+ - V&A-xx valve and actuator
117
+ - Pentair/Compool and Jandy valve actuators
118
+ - Relays and expansion
119
+ - Low voltage relays
120
+ - HLRELAYBANK additional relay pack
121
+ - HLRELAY single high voltage relay kit
122
+ - HLH485RELAY Smart Relay
123
+ - HLEXPAND Expansion Panel
124
+ - HLIOEXPAND Input/Output Expander Board
125
+ - Sensors and inputs
126
+ - GLX-FLO flow switch
127
+ - 2PC temperature sensor
128
+ - Solar sensor
129
+ - External input interlocks
130
+
131
+ Hardware the equipment API does not cover is controlled with `command()`, for
132
+ example an auxiliary pump:
133
+
134
+ ```typescript
135
+ import { timerParams } from "@rygine/omnilogic-local-sdk";
136
+
137
+ // turn on an auxiliary pump
138
+ await omni.command("SetUIEquipmentCmd", {
139
+ poolId: 1,
140
+ equipmentId: 12,
141
+ isOn: 1,
142
+ ...timerParams(),
143
+ });
144
+ ```
145
+
146
+ ## Disclaimer
147
+
148
+ This software is not produced, endorsed, or supported by Hayward Industries,
149
+ Inc. "Hayward" and "OmniLogic" are trademarks of their respective owners.