]> git.basschouten.com Git - openhab-addons.git/blob
f7088bf846a506f0c2a8627c47772e8252240ffd
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2024 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.pentair.internal.handler.helpers;
14
15 import java.util.Arrays;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18
19 /**
20  * The {@link PentairControllerCircuit } class is used to define circuit/features of the controller
21  *
22  * @author Jeff James - initial contribution
23  *
24  */
25 @NonNullByDefault
26 public class PentairControllerCircuit {
27     public enum CircuitName {
28         EMPTY(-1, ""),
29         NOTUSED(0, "NOT USED"),
30         AERATOR(1, "AERATOR"),
31         AIRBLOWER(2, "AIR BLOWER"),
32         AUX1(3, "AUX 1"),
33         AUX2(4, "AUX 2"),
34         AUX3(5, "AUX 3"),
35         AUX4(6, "AUX 4"),
36         AUX5(7, "AUX 5"),
37         AUX6(8, "AUX 6"),
38         AUX7(9, "AUX 7"),
39         AUX8(10, "AUX 8"),
40         AUX9(11, "AUX 9"),
41         AUX10(12, "AUX 10"),
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"),
58         FAN(29, "FAN"),
59         FIBEROPTIC(30, "FIBER OPTIC"),
60         FIBERWORKS(31, "FIBER WORKS"),
61         FILLLINE(32, "FILL LINE"),
62         FLOORCLNR(33, "FLOOR CLNR"),
63         FOGGER(34, "FOGGER"),
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"),
75         JETS(46, "JETS"),
76         LIGHTS(47, "LIGHTS"),
77         LOWSPEED(48, "LOW SPEED"),
78         LOTEMP(49, "LO-TEMP"),
79         MALIBULTS(50, "MALIBU LTS"),
80         MIST(51, "MIST"),
81         MUSIC(52, "MUSIC"),
82         NOTUSED2(53, "NOT USED"),
83         OZONATOR(54, "OZONATOR"),
84         PATHLIGHTS(55, "PATH LIGHTS"),
85         PATIOLTS(56, "PATIO LTS"),
86         PERIMETERL(57, "PERIMETER L"),
87         PG2000(58, "PG2000"),
88         PONDLIGHT(59, "POND LIGHT"),
89         POOLPUMP(60, "POOL PUMP"),
90         POOL(61, "POOL"),
91         POOLHIGH(62, "POOL HIGH"),
92         POOLLIGHT(63, "POOL LIGHT"),
93         POOLLOW(64, "POOL LOW"),
94         SAM(65, "SAM"),
95         POOLSAM1(66, "POOL SAM 1"),
96         POOLSAM2(67, "POOL SAM 2"),
97         POOLSAM3(68, "POOL SAM 3"),
98         SECURITYLT(69, "SECURITY LT"),
99         SLIDE(70, "SLIDE"),
100         SOLAR(71, "SOLAR"),
101         SPA(72, "SPA"),
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");
141
142         private final int number;
143         private final String friendlyName;
144
145         CircuitName(int n, String friendlyName) {
146             this.number = n;
147             this.friendlyName = friendlyName;
148         }
149
150         public int getCode() {
151             return number;
152         }
153
154         public String getFriendlyName() {
155             return friendlyName;
156         }
157
158         public static CircuitName valueOfModeNumber(int number) {
159             return Arrays.stream(values()).filter(value -> (value.getCode() == number)).findFirst()
160                     .orElse(CircuitName.EMPTY);
161         }
162     }
163
164     public enum CircuitFunction {
165         EMPTY(-1, ""),
166         GENERIC(0, "GENERIC"),
167         SPA(1, "SPA"),
168         POOL(2, "POOL"),
169         MASTERCLEANER(5, "MASTER CLEANER"),
170         LIGHT(7, "LIGHT"),
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");
182
183         private final int code;
184         private final String friendlyName;
185
186         private CircuitFunction(int code, String friendlyName) {
187             this.code = code;
188             this.friendlyName = friendlyName;
189         }
190
191         public int getCode() {
192             return code;
193         }
194
195         public String getFriendlyName() {
196             return friendlyName;
197         }
198
199         public static CircuitFunction valueOfModeNumber(int number) {
200             return Arrays.stream(values()).filter(value -> (value.getCode() == number)).findFirst()
201                     .orElse(CircuitFunction.EMPTY);
202         }
203     }
204
205     public final int id;
206     public CircuitName circuitName = CircuitName.EMPTY;
207     public CircuitFunction circuitFunction = CircuitFunction.EMPTY;
208
209     public PentairControllerCircuit(int id) {
210         this.id = id;
211     }
212
213     public void setName(int n) {
214         circuitName = CircuitName.valueOfModeNumber(n);
215     }
216
217     public void setName(CircuitName circuitName) {
218         this.circuitName = circuitName;
219     }
220
221     public void setFunction(int f) {
222         circuitFunction = CircuitFunction.valueOfModeNumber(f);
223     }
224
225     public void setFunction(CircuitFunction circuitFunction) {
226         this.circuitFunction = circuitFunction;
227     }
228 }