@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 +8 -0
- package/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/index.d.ts +5743 -0
- package/dist/index.js +8541 -0
- package/dist/index.js.map +1 -0
- package/package.json +67 -0
package/CHANGELOG.md
ADDED
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.
|