2 * Copyright (c) 2010-2024 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.pentair.internal.handler.helpers;
15 import java.util.Arrays;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
20 * The {@link PentairControllerCircuit } class is used to define circuit/features of the controller
22 * @author Jeff James - initial contribution
26 public class PentairControllerCircuit {
27 public enum CircuitName {
29 NOTUSED(0, "NOT USED"),
30 AERATOR(1, "AERATOR"),
31 AIRBLOWER(2, "AIR BLOWER"),
42 BACKWASH(13, "BACKWASH"),
43 BACKLIGHT(14, "BACK LIGHT"),
44 BBQLIGHT(15, "BBQ LIGHT"),
45 BEACHLIGHT(16, "BEACH LIGHT"),
46 BOOSTERPUMP(17, "BOOSTER PUMP"),
47 BUGLIGHT(18, "BUG LIGHT"),
48 CABANALTS(19, "CABANA LTS"),
49 CHEMFEEDER(20, "CHEM. 2FEEDER"),
50 CHLORINATOR(21, "CHLORINATOR"),
51 CLEANER(22, "CLEANER"),
52 COLORWHEEL(23, "COLOR WHEEL"),
53 DECKLIGHT(24, "DECK LIGHT"),
54 DRAINLINE(25, "DRAIN LINE"),
55 DRIVELIGHT(26, "DRIVE LIGHT"),
56 EDGEPUMP(27, "EDGE PUMP"),
57 ENTRYLIGHT(28, "ENTRY LIGHT"),
59 FIBEROPTIC(30, "FIBER OPTIC"),
60 FIBERWORKS(31, "FIBER WORKS"),
61 FILLLINE(32, "FILL LINE"),
62 FLOORCLNR(33, "FLOOR CLNR"),
64 FOUNTAIN(35, "FOUNTAIN"),
65 FOUNTAIN1(36, "FOUNTAIN 1"),
66 FOUNTAIN2(37, "FOUNTAIN 2"),
67 FOUNTAIN3(38, "FOUNTAIN 3"),
68 FOUNTAINS(39, "FOUNTAINS"),
69 FRONTLIGHT(40, "FRONT LIGHT"),
70 GARDENLTS(41, "GARDEN LTS"),
71 GAZEBOLTS(42, "GAZEBO LTS"),
72 HIGHSPEED(43, "HIGH SPEED"),
73 HITEMP(44, "HI-TEMP"),
74 HOUSELIGHT(45, "HOUSE LIGHT"),
77 LOWSPEED(48, "LOW SPEED"),
78 LOTEMP(49, "LO-TEMP"),
79 MALIBULTS(50, "MALIBU LTS"),
82 NOTUSED2(53, "NOT USED"),
83 OZONATOR(54, "OZONATOR"),
84 PATHLIGHTS(55, "PATH LIGHTS"),
85 PATIOLTS(56, "PATIO LTS"),
86 PERIMETERL(57, "PERIMETER L"),
88 PONDLIGHT(59, "POND LIGHT"),
89 POOLPUMP(60, "POOL PUMP"),
91 POOLHIGH(62, "POOL HIGH"),
92 POOLLIGHT(63, "POOL LIGHT"),
93 POOLLOW(64, "POOL LOW"),
95 POOLSAM1(66, "POOL SAM 1"),
96 POOLSAM2(67, "POOL SAM 2"),
97 POOLSAM3(68, "POOL SAM 3"),
98 SECURITYLT(69, "SECURITY LT"),
102 SPAHIGH(73, "SPA HIGH"),
103 SPALIGHT(74, "SPA LIGHT"),
104 SPALOW(75, "SPA LOW"),
105 SPASAL(76, "SPA SAL"),
106 SPASAM(77, "SPA SAM"),
107 SPAWTRFLL(78, "SPA WTRFLL"),
108 SPILLWAY(79, "SPILLWAY"),
109 SPRINKLERS(80, "SPRINKLERS"),
110 STREAM(81, "STREAM"),
111 STAUTELT(82, "STATUE LT"),
112 SWIMJETS(83, "SWIM JETS"),
113 WTRFEATURE(84, "WTR FEATURE"),
114 WTRFEATLT(85, "WTR FEAT LT"),
115 WATERFALL(86, "WATERFALL"),
116 WATERFALL1(87, "WATERFALL 1"),
117 WATERFALL2(88, "WATERFALL 2"),
118 WATERFALL3(89, "WATERFALL 3"),
119 WHIRLPOOL(90, "WHIRLPOOL"),
120 WTRFLLGHT(91, "WTRFL LGHT"),
121 YARDLIGHT(92, "YARD LIGHT"),
122 AUXEXTRA(93, "AUX EXTRA"),
123 FEATURE1(94, "FEATURE 1"),
124 FEATURE2(95, "FEATURE 2"),
125 FEATURE3(96, "FEATURE 3"),
126 FEATURE4(97, "FEATURE 4"),
127 FEATURE5(98, "FEATURE 5"),
128 FEATURE6(99, "FEATURE 6"),
129 FEATURE7(100, "FEATURE 7"),
130 FEATURE8(101, "FEATURE 8"),
131 USERNAME01(200, "USERNAME-01"),
132 USERNAME02(201, "USERNAME-02"),
133 USERNAME03(202, "USERNAME-03"),
134 USERNAME04(203, "USERNAME-04"),
135 USERNAME05(204, "USERNAME-05"),
136 USERNAME06(205, "USERNAME-06"),
137 USERNAME07(206, "USERNAME-07"),
138 USERNAME08(207, "USERNAME-08"),
139 USERNAME09(208, "USERNAME-09"),
140 USERNAME10(209, "USERNAME-10");
142 private final int number;
143 private final String friendlyName;
145 CircuitName(int n, String friendlyName) {
147 this.friendlyName = friendlyName;
150 public int getCode() {
154 public String getFriendlyName() {
158 public static CircuitName valueOfModeNumber(int number) {
159 return Arrays.stream(values()).filter(value -> (value.getCode() == number)).findFirst()
160 .orElse(CircuitName.EMPTY);
164 public enum CircuitFunction {
166 GENERIC(0, "GENERIC"),
169 MASTERCLEANER(5, "MASTER CLEANER"),
171 SAMLIGHT(9, "SAM LIGHT"),
172 SALLIGHT(10, "SAL LIGHT"),
173 PHOTONGEN(11, "PHOTON GEN"),
174 COLORWHEEL(12, "COLOR WHEEL"),
175 VALVES(13, "VALVES"),
176 SPILLWAY(14, "SPILLWAY"),
177 FLOORCLEANER(15, "FLOOR CLEANER"),
178 INTELLIBRITE(16, "INTELLIBRITE"),
179 MAGICSTREAM(17, "MAGICSTREAM"),
180 NOTUSED(19, "NOT USED"),
181 FREEZEPROTECT(64, "FREEZE PROTECTION ON");
183 private final int code;
184 private final String friendlyName;
186 private CircuitFunction(int code, String friendlyName) {
188 this.friendlyName = friendlyName;
191 public int getCode() {
195 public String getFriendlyName() {
199 public static CircuitFunction valueOfModeNumber(int number) {
200 return Arrays.stream(values()).filter(value -> (value.getCode() == number)).findFirst()
201 .orElse(CircuitFunction.EMPTY);
206 public CircuitName circuitName = CircuitName.EMPTY;
207 public CircuitFunction circuitFunction = CircuitFunction.EMPTY;
209 public PentairControllerCircuit(int id) {
213 public void setName(int n) {
214 circuitName = CircuitName.valueOfModeNumber(n);
217 public void setName(CircuitName circuitName) {
218 this.circuitName = circuitName;
221 public void setFunction(int f) {
222 circuitFunction = CircuitFunction.valueOfModeNumber(f);
225 public void setFunction(CircuitFunction circuitFunction) {
226 this.circuitFunction = circuitFunction;