]> git.basschouten.com Git - openhab-addons.git/blob
44b48b35ef0272c4b1b54a69d5106b113c44a50f
[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 import org.openhab.binding.pentair.internal.parser.PentairStandardPacket;
19
20 /**
21  * The {@link PentairHeatStatus } class contain heat set point info. Includes public variables.
22  *
23  * @author Jeff James - initial contribution
24  *
25  */
26 @NonNullByDefault
27 public class PentairHeatStatus {
28     public enum HeatMode {
29         EMPTY(-1, ""),
30         NONE(0, "None"),
31         HEATER(1, "Heater"),
32         SOLARPREFERRED(2, "Solar Preferred"),
33         SOLAR(3, "Solar");
34
35         private final int code;
36         private final String friendlyName;
37
38         private HeatMode(int code, String friendlyName) {
39             this.code = code;
40             this.friendlyName = friendlyName;
41         }
42
43         public int getCode() {
44             return code;
45         }
46
47         public String getFriendlyName() {
48             return friendlyName;
49         }
50
51         public static HeatMode valueOfCode(int code) {
52             return Arrays.stream(values()).filter(value -> (value.getCode() == code)).findFirst().orElse(EMPTY);
53         }
54     }
55
56     @SuppressWarnings("unused")
57     private static final int POOLTEMP = 1 + PentairStandardPacket.STARTOFDATA;
58     @SuppressWarnings("unused")
59     private static final int AIRTEMP = 2 + PentairStandardPacket.STARTOFDATA;
60     private static final int POOLSETPOINT = 3 + PentairStandardPacket.STARTOFDATA;
61     private static final int SPASETPOINT = 4 + PentairStandardPacket.STARTOFDATA;
62     private static final int HEATMODE = 5 + PentairStandardPacket.STARTOFDATA;
63     @SuppressWarnings("unused")
64     private static final int SOLARTEMP = 8 + PentairStandardPacket.STARTOFDATA;
65
66     public int poolSetPoint;
67     public HeatMode poolHeatMode = HeatMode.EMPTY;
68     public int spaSetPoint;
69     public HeatMode spaHeatMode = HeatMode.EMPTY;
70
71     public PentairHeatStatus() {
72     }
73
74     public PentairHeatStatus(PentairStandardPacket p) {
75         parsePacket(p);
76     }
77
78     public void parsePacket(PentairStandardPacket p) {
79         poolSetPoint = p.getByte(POOLSETPOINT);
80         poolHeatMode = HeatMode.valueOfCode(p.getByte(HEATMODE) & 0x03);
81
82         spaSetPoint = p.getByte(SPASETPOINT);
83         spaHeatMode = HeatMode.valueOfCode((p.getByte(HEATMODE) >> 2) & 0x03);
84     }
85
86     @Override
87     public String toString() {
88         String str = String.format("poolSetPoint: %d, poolHeatMode: %s, spaSetPoint: %d, spaHeatMode: %s", poolSetPoint,
89                 poolHeatMode.name(), spaSetPoint, spaHeatMode.name());
90
91         return str;
92     }
93 }