Skip to content

Commit f5e7e85

Browse files
committed
Add backyard sensor configuration support
1 parent 8364f0d commit f5e7e85

4 files changed

Lines changed: 108 additions & 3 deletions

File tree

bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/config/BackyardConfig.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,22 @@ public class BackyardConfig {
2020
@XStreamAlias("systemId")
2121
private @Nullable String systemId;
2222

23+
@XStreamAlias("System-Id")
24+
private @Nullable String systemIdElement;
25+
26+
@XStreamAsAttribute
27+
private @Nullable String name;
28+
29+
@XStreamAlias("Name")
30+
private @Nullable String nameElement;
31+
32+
@XStreamAsAttribute
33+
@XStreamAlias("serviceModeTimeout")
34+
private @Nullable String serviceModeTimeout;
35+
36+
@XStreamAlias("Service-Mode-Timeout")
37+
private @Nullable String serviceModeTimeoutElement;
38+
2339
@XStreamImplicit(itemFieldName = "BodyOfWater")
2440
private final List<BodyOfWaterConfig> bodiesOfWater = new ArrayList<>();
2541

@@ -44,8 +60,19 @@ public class BackyardConfig {
4460
@XStreamImplicit(itemFieldName = "Relay")
4561
private final List<RelayConfig> relays = new ArrayList<>();
4662

63+
@XStreamImplicit(itemFieldName = "Sensor")
64+
private final List<SensorConfig> sensors = new ArrayList<>();
65+
4766
public @Nullable String getSystemId() {
48-
return systemId;
67+
return systemId != null ? systemId : systemIdElement;
68+
}
69+
70+
public @Nullable String getName() {
71+
return name != null ? name : nameElement;
72+
}
73+
74+
public @Nullable String getServiceModeTimeout() {
75+
return serviceModeTimeout != null ? serviceModeTimeout : serviceModeTimeoutElement;
4976
}
5077

5178
public List<BodyOfWaterConfig> getBodiesOfWater() {
@@ -79,5 +106,9 @@ public List<ColorLogicLightConfig> getColorLogicLights() {
79106
public List<RelayConfig> getRelays() {
80107
return relays;
81108
}
109+
110+
public List<SensorConfig> getSensors() {
111+
return sensors;
112+
}
82113
}
83114

bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/config/ConfigParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public final class ConfigParser {
1818
XSTREAM.ignoreUnknownElements();
1919
XSTREAM.addPermission(AnyTypePermission.ANY);
2020
XSTREAM.processAnnotations(new Class<?>[] { MspConfig.class, SystemConfig.class, BackyardConfig.class,
21-
BodyOfWaterConfig.class, PumpConfig.class, FilterConfig.class, HeaterConfig.class,
21+
BodyOfWaterConfig.class, PumpConfig.class, FilterConfig.class, HeaterConfig.class, SensorConfig.class,
2222
VirtualHeaterConfig.class, ChlorinatorConfig.class, ColorLogicLightConfig.class, RelayConfig.class,
2323
SchedulesConfig.class, ScheduleConfig.class, ScheduleActionConfig.class, DeviceConfig.class,
2424
ParameterConfig.class, DmtConfig.class });
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
import org.eclipse.jdt.annotation.Nullable;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
9+
/**
10+
* Representation of a Sensor element.
11+
*/
12+
@NonNullByDefault
13+
@XStreamAlias("Sensor")
14+
public class SensorConfig {
15+
@XStreamAsAttribute
16+
@XStreamAlias("systemId")
17+
private @Nullable String systemId;
18+
19+
@XStreamAlias("System-Id")
20+
private @Nullable String systemIdElement;
21+
22+
@XStreamAsAttribute
23+
private @Nullable String name;
24+
25+
@XStreamAlias("Name")
26+
private @Nullable String nameElement;
27+
28+
@XStreamAsAttribute
29+
private @Nullable String type;
30+
31+
@XStreamAlias("Type")
32+
private @Nullable String typeElement;
33+
34+
@XStreamAsAttribute
35+
private @Nullable String units;
36+
37+
@XStreamAlias("Units")
38+
private @Nullable String unitsElement;
39+
40+
public @Nullable String getSystemId() {
41+
return systemId != null ? systemId : systemIdElement;
42+
}
43+
44+
public @Nullable String getName() {
45+
return name != null ? name : nameElement;
46+
}
47+
48+
public @Nullable String getType() {
49+
return type != null ? type : typeElement;
50+
}
51+
52+
public @Nullable String getUnits() {
53+
return units != null ? units : unitsElement;
54+
}
55+
}
56+

bundles/org.openhab.binding.haywardomnilogiclocal/src/test/java/org/openhab/binding/haywardomnilogiclocal/internal/config/ConfigParserTest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,16 @@ public void testParsePopulatesAllListsAndAttributes() {
2929
" <UI-Show-SuperChlor>true</UI-Show-SuperChlor>" +
3030
" <UI-Show-SuperChlorTimeout>false</UI-Show-SuperChlorTimeout>" +
3131
" </System>" +
32-
" <Backyard systemId='BY'>" +
32+
" <Backyard>" +
33+
" <System-Id>BY</System-Id>" +
34+
" <Name>Main Backyard</Name>" +
35+
" <Service-Mode-Timeout>15</Service-Mode-Timeout>" +
36+
" <Sensor>" +
37+
" <System-Id>SEN1</System-Id>" +
38+
" <Name>Water Sensor</Name>" +
39+
" <Type>SENSOR_WATER_TEMP</Type>" +
40+
" <Units>UNITS_FAHRENHEIT</Units>" +
41+
" </Sensor>" +
3342
" <BodyOfWater systemId='BOW'/>" +
3443
" <Pump systemId='P1' name='Main'/>" +
3544
" <Filter systemId='F1' pumpId='P1'/>" +
@@ -81,6 +90,8 @@ public void testParsePopulatesAllListsAndAttributes() {
8190

8291
BackyardConfig backyard = config.getBackyards().get(0);
8392
assertEquals("BY", backyard.getSystemId());
93+
assertEquals("Main Backyard", backyard.getName());
94+
assertEquals("15", backyard.getServiceModeTimeout());
8495
assertEquals(1, backyard.getBodiesOfWater().size());
8596
assertEquals("BOW", backyard.getBodiesOfWater().get(0).getSystemId());
8697

@@ -105,6 +116,13 @@ public void testParsePopulatesAllListsAndAttributes() {
105116
assertEquals(1, backyard.getChlorinators().size());
106117
assertEquals("C1", backyard.getChlorinators().get(0).getSystemId());
107118

119+
assertEquals(1, backyard.getSensors().size());
120+
SensorConfig sensor = backyard.getSensors().get(0);
121+
assertEquals("SEN1", sensor.getSystemId());
122+
assertEquals("Water Sensor", sensor.getName());
123+
assertEquals("SENSOR_WATER_TEMP", sensor.getType());
124+
assertEquals("UNITS_FAHRENHEIT", sensor.getUnits());
125+
108126
assertEquals(1, backyard.getColorLogicLights().size());
109127
assertEquals("L1", backyard.getColorLogicLights().get(0).getSystemId());
110128

0 commit comments

Comments
 (0)