From 0be44b2c9c3a14969508a84b182272fd332b1ba9 Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 9 Sep 2025 11:47:27 -0400 Subject: [PATCH] Refactor Hayward handlers to encapsulate config and account --- .../internal/HaywardAccount.java | 103 ++++++++++++++++-- .../internal/HaywardThingHandler.java | 2 +- .../internal/config/HaywardConfig.java | 53 ++++++++- .../discovery/HaywardDiscoveryService.java | 3 +- .../handler/HaywardBackyardHandler.java | 4 +- .../handler/HaywardBridgeHandler.java | 62 ++++++----- .../handler/HaywardChlorinatorHandler.java | 8 +- .../handler/HaywardColorLogicHandler.java | 22 ++-- .../handler/HaywardFilterHandler.java | 6 +- .../internal/handler/HaywardPumpHandler.java | 8 +- .../internal/handler/HaywardRelayHandler.java | 8 +- .../handler/HaywardVirtualHeaterHandler.java | 12 +- .../internal/HaywardAccount.java | 103 ++++++++++++++++-- .../internal/HaywardThingHandler.java | 2 +- .../internal/config/HaywardConfig.java | 53 ++++++++- .../discovery/HaywardDiscoveryService.java | 3 +- .../handler/HaywardBridgeHandler.java | 62 ++++++----- .../handler/HaywardVirtualHeaterHandler.java | 12 +- 18 files changed, 398 insertions(+), 128 deletions(-) diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardAccount.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardAccount.java index b58dc5a486a31..6fad45741ab8f 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardAccount.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardAccount.java @@ -22,14 +22,97 @@ @NonNullByDefault public class HaywardAccount { - public String token = ""; - public String mspSystemID = ""; - public String userID = ""; - public String backyardName = ""; - public String address = ""; - public String firstName = ""; - public String lastName = ""; - public String roleType = ""; - public String units = ""; - public String vspSpeedFormat = ""; + private String token = ""; + private String mspSystemID = ""; + private String userID = ""; + private String backyardName = ""; + private String address = ""; + private String firstName = ""; + private String lastName = ""; + private String roleType = ""; + private String units = ""; + private String vspSpeedFormat = ""; + + public HaywardAccount() { + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getMspSystemID() { + return mspSystemID; + } + + public void setMspSystemID(String mspSystemID) { + this.mspSystemID = mspSystemID; + } + + public String getUserID() { + return userID; + } + + public void setUserID(String userID) { + this.userID = userID; + } + + public String getBackyardName() { + return backyardName; + } + + public void setBackyardName(String backyardName) { + this.backyardName = backyardName; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getRoleType() { + return roleType; + } + + public void setRoleType(String roleType) { + this.roleType = roleType; + } + + public String getUnits() { + return units; + } + + public void setUnits(String units) { + this.units = units; + } + + public String getVspSpeedFormat() { + return vspSpeedFormat; + } + + public void setVspSpeedFormat(String vspSpeedFormat) { + this.vspSpeedFormat = vspSpeedFormat; + } } diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardThingHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardThingHandler.java index 33d99e88db2b1..c9d265f0986c6 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardThingHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/HaywardThingHandler.java @@ -97,7 +97,7 @@ public State toState(String type, String channelID, String value) throws NumberF if (bridge != null) { HaywardBridgeHandler bridgehandler = (HaywardBridgeHandler) bridge.getHandler(); if (bridgehandler != null) { - if ("Standard".equals(bridgehandler.account.units)) { + if ("Standard".equals(bridgehandler.getAccount().getUnits())) { return new QuantityType<>(Integer.parseInt(value), ImperialUnits.FAHRENHEIT); } else { return new QuantityType<>(Integer.parseInt(value), SIUnits.CELSIUS); diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/config/HaywardConfig.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/config/HaywardConfig.java index 0282c5d46cd40..868742c1c3c45 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/config/HaywardConfig.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/config/HaywardConfig.java @@ -22,9 +22,52 @@ @NonNullByDefault public class HaywardConfig { - public String endpointUrl = ""; - public String username = ""; - public String password = ""; - public int alarmPollTime = 60; - public int telemetryPollTime = 10; + private String endpointUrl = ""; + private String username = ""; + private String password = ""; + private int alarmPollTime = 60; + private int telemetryPollTime = 10; + + public HaywardConfig() { + } + + public String getEndpointUrl() { + return endpointUrl; + } + + public void setEndpointUrl(String endpointUrl) { + this.endpointUrl = endpointUrl; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public int getAlarmPollTime() { + return alarmPollTime; + } + + public void setAlarmPollTime(int alarmPollTime) { + this.alarmPollTime = alarmPollTime; + } + + public int getTelemetryPollTime() { + return telemetryPollTime; + } + + public void setTelemetryPollTime(int telemetryPollTime) { + this.telemetryPollTime = telemetryPollTime; + } } diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/discovery/HaywardDiscoveryService.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/discovery/HaywardDiscoveryService.java index c797aaa174b2d..c2a3c8a679626 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/discovery/HaywardDiscoveryService.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/discovery/HaywardDiscoveryService.java @@ -74,7 +74,8 @@ public synchronized void mspConfigDiscovery(String xmlResponse) { for (int i = 0; i < names.size(); i++) { backyardProperties.put(HaywardBindingConstants.PROPERTY_TYPE, HaywardTypeToRequest.BACKYARD); - backyardProperties.put(HaywardBindingConstants.PROPERTY_SYSTEM_ID, thingHandler.account.mspSystemID); + backyardProperties.put(HaywardBindingConstants.PROPERTY_SYSTEM_ID, + thingHandler.getAccount().getMspSystemID()); onDeviceDiscovered(HaywardBindingConstants.THING_TYPE_BACKYARD, names.get(i), backyardProperties); } diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBackyardHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBackyardHandler.java index 69a0b34fd3cae..66c5e9359f860 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBackyardHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBackyardHandler.java @@ -81,8 +81,8 @@ public boolean getAlarmList(String systemID) throws HaywardException { String urlParameters = """ GetAlarmList\ \ - """ + bridgehandler.account.token + "" - + "" + bridgehandler.account.mspSystemID + """ + bridgehandler.getAccount().getToken() + "" + + "" + bridgehandler.getAccount().getMspSystemID() + "" + "en-us"; diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBridgeHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBridgeHandler.java index 7f2b3cb3f9cae..235bf27d3ca3e 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBridgeHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardBridgeHandler.java @@ -77,8 +77,16 @@ public class HaywardBridgeHandler extends BaseBridgeHandler { private @Nullable ScheduledFuture pollTelemetryFuture; private @Nullable ScheduledFuture pollAlarmsFuture; private int commFailureCount; - public HaywardConfig config = getConfig().as(HaywardConfig.class); - public HaywardAccount account = getConfig().as(HaywardAccount.class); + private HaywardConfig config = getConfig().as(HaywardConfig.class); + private final HaywardAccount account = getConfig().as(HaywardAccount.class); + + public HaywardConfig getBridgeConfig() { + return config; + } + + public HaywardAccount getAccount() { + return account; + } @Override public Collection> getServices() { @@ -164,13 +172,13 @@ public void scheduledInitialize() { updateStatus(ThingStatus.ONLINE); } - logger.debug("Succesfully opened connection to Hayward's server: {} Username:{}", config.endpointUrl, - config.username); + logger.debug("Succesfully opened connection to Hayward's server: {} Username:{}", + config.getEndpointUrl(), config.getUsername()); initPolling(0); logger.trace("Hayward Telemetry polling scheduled"); - if (config.alarmPollTime > 0) { + if (config.getAlarmPollTime() > 0) { initAlarmPolling(1); } } catch (HaywardException e) { @@ -195,8 +203,8 @@ public synchronized boolean login() throws HaywardException, InterruptedExceptio \ Login\ \ - """ + config.username + "" + "" - + config.password + "" + ""; + """ + config.getUsername() + "" + "" + + config.getPassword() + "" + ""; xmlResponse = httpXmlResponse(urlParameters); @@ -212,8 +220,8 @@ public synchronized boolean login() throws HaywardException, InterruptedExceptio return false; } - account.token = evaluateXPath("/Response/Parameters//Parameter[@name='Token']/text()", xmlResponse).get(0); - account.userID = evaluateXPath("/Response/Parameters//Parameter[@name='UserID']/text()", xmlResponse).get(0); + account.setToken(evaluateXPath("/Response/Parameters//Parameter[@name='Token']/text()", xmlResponse).get(0)); + account.setUserID(evaluateXPath("/Response/Parameters//Parameter[@name='UserID']/text()", xmlResponse).get(0)); return true; } @@ -224,8 +232,8 @@ public synchronized boolean getApiDef() throws HaywardException, InterruptedExce String urlParameters = """ GetAPIDef\ \ - """ + account.token + "" + "" - + account.mspSystemID + ";" + """ + account.getToken() + "" + "" + + account.getMspSystemID() + ";" + "0.4\r\n" + "en\r\n" + ""; @@ -246,7 +254,7 @@ public synchronized boolean getSiteList() throws HaywardException, InterruptedEx String urlParameters = """ GetSiteList\ \ - """ + account.token + "" + account.userID + """ + account.getToken() + "" + account.getUserID() + ""; xmlResponse = httpXmlResponse(urlParameters); @@ -263,12 +271,12 @@ public synchronized boolean getSiteList() throws HaywardException, InterruptedEx return false; } - account.mspSystemID = evaluateXPath("/Response/Parameters/Parameter/Item//Property[@name='MspSystemID']/text()", - xmlResponse).get(0); - account.backyardName = evaluateXPath( - "/Response/Parameters/Parameter/Item//Property[@name='BackyardName']/text()", xmlResponse).get(0); - account.address = evaluateXPath("/Response/Parameters/Parameter/Item//Property[@name='Address']/text()", - xmlResponse).get(0); + account.setMspSystemID(evaluateXPath( + "/Response/Parameters/Parameter/Item//Property[@name='MspSystemID']/text()", xmlResponse).get(0)); + account.setBackyardName(evaluateXPath( + "/Response/Parameters/Parameter/Item//Property[@name='BackyardName']/text()", xmlResponse).get(0)); + account.setAddress(evaluateXPath( + "/Response/Parameters/Parameter/Item//Property[@name='Address']/text()", xmlResponse).get(0)); return true; } @@ -277,8 +285,8 @@ public synchronized String getMspConfig() throws HaywardException, InterruptedEx String urlParameters = """ GetMspConfigFile\ \ - """ + account.token + "" + "" - + account.mspSystemID + "0\r\n" + """ + account.getToken() + "" + "" + + account.getMspSystemID() + "0\r\n" + ""; String xmlResponse = httpXmlResponse(urlParameters); @@ -307,11 +315,11 @@ public synchronized boolean mspConfigUnits() throws HaywardException, Interrupte // Get Units (Standard, Metric) property1 = evaluateXPath("//System/Units/text()", xmlResponse); - account.units = property1.get(0); + account.setUnits(property1.get(0)); // Get Variable Speed Pump Units (percent, RPM) property2 = evaluateXPath("//System/Msp-Vsp-Speed-Format/text()", xmlResponse); - account.vspSpeedFormat = property2.get(0); + account.setVspSpeedFormat(property2.get(0)); return true; } @@ -321,8 +329,8 @@ public synchronized boolean getTelemetryData() throws HaywardException, Interrup String urlParameters = """ GetTelemetryData\ \ - """ + account.token + "" + "" - + account.mspSystemID + ""; + """ + account.getToken() + "" + "" + + account.getMspSystemID() + ""; String xmlResponse = httpXmlResponse(urlParameters); @@ -383,7 +391,7 @@ private synchronized void initPolling(int initalDelay) { } catch (InterruptedException e) { return; } - }, initalDelay, config.telemetryPollTime, TimeUnit.SECONDS); + }, initalDelay, config.getTelemetryPollTime(), TimeUnit.SECONDS); return; } @@ -394,7 +402,7 @@ private synchronized void initAlarmPolling(int initalDelay) { } catch (HaywardException e) { logger.debug("Hayward Connection thing: Exception during poll: {}", e.getMessage()); } - }, initalDelay, config.alarmPollTime, TimeUnit.SECONDS); + }, initalDelay, config.getAlarmPollTime(), TimeUnit.SECONDS); } private void clearPolling(@Nullable ScheduledFuture pollJob) { @@ -452,7 +460,7 @@ public synchronized String httpXmlResponse(String urlParameters) throws HaywardE for (int retry = 0; retry <= 2; retry++) { try { - ContentResponse httpResponse = sendRequestBuilder(config.endpointUrl, HttpMethod.POST) + ContentResponse httpResponse = sendRequestBuilder(config.getEndpointUrl(), HttpMethod.POST) .content(new StringContentProvider(urlParameters), "text/xml; charset=utf-8") .header(HttpHeader.CONTENT_LENGTH, urlParameterslength).send(); diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardChlorinatorHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardChlorinatorHandler.java index 720477790e766..fe00fc2ab414c 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardChlorinatorHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardChlorinatorHandler.java @@ -146,9 +146,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { } String cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetCHLORParams" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" @@ -171,8 +171,8 @@ public void handleCommand(ChannelUID channelUID, Command command) { return; } } catch (HaywardException e) { - logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.config.endpointUrl, - bridgehandler.config.username, e.getMessage()); + logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.getBridgeConfig().getEndpointUrl(), + bridgehandler.getBridgeConfig().getUsername(), e.getMessage()); } catch (InterruptedException e) { return; } diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardColorLogicHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardColorLogicHandler.java index a054ab9bbe355..576f098dd09e6 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardColorLogicHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardColorLogicHandler.java @@ -241,9 +241,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { } cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetUIEquipmentCmd" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString + "" @@ -257,9 +257,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetStandAloneLightShow" + "" - + bridgehandler.account.token + "" + + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString @@ -273,9 +273,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetStandAloneLightShowV2" + "" - + bridgehandler.account.token + "" + + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString @@ -295,9 +295,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { } cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetStandAloneLightShowV2" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + show + "" @@ -314,9 +314,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { } cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetStandAloneLightShowV2" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + show + "" @@ -342,7 +342,7 @@ public void handleCommand(ChannelUID channelUID, Command command) { } } catch (HaywardException e) { logger.debug("Unable to send command to Hayward's server {}:{}:{}", - bridgehandler.config.endpointUrl, bridgehandler.config.username, e.getMessage()); + bridgehandler.getBridgeConfig().getEndpointUrl(), bridgehandler.getBridgeConfig().getUsername(), e.getMessage()); } catch (InterruptedException e) { return; } diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardFilterHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardFilterHandler.java index 2f7cf0044f887..38b30ff48c8bc 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardFilterHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardFilterHandler.java @@ -234,9 +234,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { String cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetUIEquipmentCmd" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString + "" @@ -253,7 +253,7 @@ public void handleCommand(ChannelUID channelUID, Command command) { } } catch (HaywardException e) { logger.debug("Unable to send command to Hayward's server {}:{}:{}", - bridgehandler.config.endpointUrl, bridgehandler.config.username, e.getMessage()); + bridgehandler.getBridgeConfig().getEndpointUrl(), bridgehandler.getBridgeConfig().getUsername(), e.getMessage()); } catch (InterruptedException e) { return; } diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardPumpHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardPumpHandler.java index dd33b258040b7..fef5a12994608 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardPumpHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardPumpHandler.java @@ -226,9 +226,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { String cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetUIEquipmentCmd" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString + "" @@ -243,8 +243,8 @@ public void handleCommand(ChannelUID channelUID, Command command) { return; } } catch (HaywardException e) { - logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.config.endpointUrl, - bridgehandler.config.username, e.getMessage()); + logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.getBridgeConfig().getEndpointUrl(), + bridgehandler.getBridgeConfig().getUsername(), e.getMessage()); } catch (InterruptedException e) { return; } diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardRelayHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardRelayHandler.java index 4fa32b05f99d8..52deff23b0576 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardRelayHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardRelayHandler.java @@ -81,9 +81,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { case HaywardBindingConstants.CHANNEL_RELAY_STATE: cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetUIEquipmentCmd" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString + "" @@ -103,8 +103,8 @@ public void handleCommand(ChannelUID channelUID, Command command) { return; } } catch (HaywardException e) { - logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.config.endpointUrl, - bridgehandler.config.username, e.getMessage()); + logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.getBridgeConfig().getEndpointUrl(), + bridgehandler.getBridgeConfig().getUsername(), e.getMessage()); } catch (InterruptedException e) { return; } diff --git a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardVirtualHeaterHandler.java b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardVirtualHeaterHandler.java index c3be4908096f7..4016c0697e934 100644 --- a/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardVirtualHeaterHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogic/src/main/java/org/openhab/binding/haywardomnilogic/internal/handler/HaywardVirtualHeaterHandler.java @@ -131,9 +131,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { switch (channelUID.getId()) { case HaywardBindingConstants.CHANNEL_VIRTUALHEATER_ENABLE: cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetHeaterEnable" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString + "" @@ -150,9 +150,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { } cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetUIHeaterCmd" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString + "" @@ -172,8 +172,8 @@ public void handleCommand(ChannelUID channelUID, Command command) { return; } } catch (HaywardException e) { - logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.config.endpointUrl, - bridgehandler.config.username, e.getMessage()); + logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.getBridgeConfig().getEndpointUrl(), + bridgehandler.getBridgeConfig().getUsername(), e.getMessage()); } catch (InterruptedException e) { return; } diff --git a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/HaywardAccount.java b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/HaywardAccount.java index d11e4d1e3710d..b658da5a1448a 100644 --- a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/HaywardAccount.java +++ b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/HaywardAccount.java @@ -22,14 +22,97 @@ @NonNullByDefault public class HaywardAccount { - public String token = ""; - public String mspSystemID = ""; - public String userID = ""; - public String backyardName = ""; - public String address = ""; - public String firstName = ""; - public String lastName = ""; - public String roleType = ""; - public String units = ""; - public String vspSpeedFormat = ""; + private String token = ""; + private String mspSystemID = ""; + private String userID = ""; + private String backyardName = ""; + private String address = ""; + private String firstName = ""; + private String lastName = ""; + private String roleType = ""; + private String units = ""; + private String vspSpeedFormat = ""; + + public HaywardAccount() { + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getMspSystemID() { + return mspSystemID; + } + + public void setMspSystemID(String mspSystemID) { + this.mspSystemID = mspSystemID; + } + + public String getUserID() { + return userID; + } + + public void setUserID(String userID) { + this.userID = userID; + } + + public String getBackyardName() { + return backyardName; + } + + public void setBackyardName(String backyardName) { + this.backyardName = backyardName; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getRoleType() { + return roleType; + } + + public void setRoleType(String roleType) { + this.roleType = roleType; + } + + public String getUnits() { + return units; + } + + public void setUnits(String units) { + this.units = units; + } + + public String getVspSpeedFormat() { + return vspSpeedFormat; + } + + public void setVspSpeedFormat(String vspSpeedFormat) { + this.vspSpeedFormat = vspSpeedFormat; + } } diff --git a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/HaywardThingHandler.java b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/HaywardThingHandler.java index 7d7baa4dc3a1b..8df037e23e912 100644 --- a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/HaywardThingHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/HaywardThingHandler.java @@ -97,7 +97,7 @@ public State toState(String type, String channelID, String value) throws NumberF if (bridge != null) { HaywardBridgeHandler bridgehandler = (HaywardBridgeHandler) bridge.getHandler(); if (bridgehandler != null) { - if ("Standard".equals(bridgehandler.account.units)) { + if ("Standard".equals(bridgehandler.getAccount().getUnits())) { return new QuantityType<>(Integer.parseInt(value), ImperialUnits.FAHRENHEIT); } else { return new QuantityType<>(Integer.parseInt(value), SIUnits.CELSIUS); diff --git a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/config/HaywardConfig.java b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/config/HaywardConfig.java index a961b4107632f..7c9d0d92d0778 100644 --- a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/config/HaywardConfig.java +++ b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/config/HaywardConfig.java @@ -22,9 +22,52 @@ @NonNullByDefault public class HaywardConfig { - public String endpointUrl = ""; - public String username = ""; - public String password = ""; - public int alarmPollTime = 60; - public int telemetryPollTime = 10; + private String endpointUrl = ""; + private String username = ""; + private String password = ""; + private int alarmPollTime = 60; + private int telemetryPollTime = 10; + + public HaywardConfig() { + } + + public String getEndpointUrl() { + return endpointUrl; + } + + public void setEndpointUrl(String endpointUrl) { + this.endpointUrl = endpointUrl; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public int getAlarmPollTime() { + return alarmPollTime; + } + + public void setAlarmPollTime(int alarmPollTime) { + this.alarmPollTime = alarmPollTime; + } + + public int getTelemetryPollTime() { + return telemetryPollTime; + } + + public void setTelemetryPollTime(int telemetryPollTime) { + this.telemetryPollTime = telemetryPollTime; + } } diff --git a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/discovery/HaywardDiscoveryService.java b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/discovery/HaywardDiscoveryService.java index c20ea42cb1a3d..7fee99df05d08 100644 --- a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/discovery/HaywardDiscoveryService.java +++ b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/discovery/HaywardDiscoveryService.java @@ -74,7 +74,8 @@ public synchronized void mspConfigDiscovery(String xmlResponse) { for (int i = 0; i < names.size(); i++) { backyardProperties.put(HaywardBindingConstants.PROPERTY_TYPE, HaywardTypeToRequest.BACKYARD); - backyardProperties.put(HaywardBindingConstants.PROPERTY_SYSTEM_ID, thingHandler.account.mspSystemID); + backyardProperties.put(HaywardBindingConstants.PROPERTY_SYSTEM_ID, + thingHandler.getAccount().getMspSystemID()); onDeviceDiscovered(HaywardBindingConstants.THING_TYPE_BACKYARD, names.get(i), backyardProperties); } diff --git a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/handler/HaywardBridgeHandler.java b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/handler/HaywardBridgeHandler.java index 8976bdee81741..dd3f4a618c831 100644 --- a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/handler/HaywardBridgeHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/handler/HaywardBridgeHandler.java @@ -77,8 +77,16 @@ public class HaywardBridgeHandler extends BaseBridgeHandler { private @Nullable ScheduledFuture pollTelemetryFuture; private @Nullable ScheduledFuture pollAlarmsFuture; private int commFailureCount; - public HaywardConfig config = getConfig().as(HaywardConfig.class); - public HaywardAccount account = getConfig().as(HaywardAccount.class); + private HaywardConfig config = getConfig().as(HaywardConfig.class); + private final HaywardAccount account = getConfig().as(HaywardAccount.class); + + public HaywardConfig getBridgeConfig() { + return config; + } + + public HaywardAccount getAccount() { + return account; + } @Override public Collection> getServices() { @@ -118,7 +126,7 @@ public void initialize() { public void scheduledInitialize() throws UnknownHostException { config = getConfigAs(HaywardConfig.class); - udpClient = new UdpClient(config.endpointUrl, UDP_PORT); + udpClient = new UdpClient(config.getEndpointUrl(), UDP_PORT); try { clearPolling(pollTelemetryFuture); @@ -170,13 +178,13 @@ public void scheduledInitialize() throws UnknownHostException { updateStatus(ThingStatus.ONLINE); } - logger.debug("Succesfully opened connection to Hayward's server: {} Username:{}", config.endpointUrl, - config.username); + logger.debug("Succesfully opened connection to Hayward's server: {} Username:{}", + config.getEndpointUrl(), config.getUsername()); initPolling(0); logger.trace("Hayward Telemetry polling scheduled"); - if (config.alarmPollTime > 0) { + if (config.getAlarmPollTime() > 0) { initAlarmPolling(1); } } catch (HaywardException e) { @@ -194,8 +202,8 @@ public void scheduledInitialize() throws UnknownHostException { public synchronized boolean login() throws HaywardException { String xmlRequest = "Login" - + "" + config.username + "" - + "" + config.password + "" + + "" + config.getUsername() + "" + + "" + config.getPassword() + "" + ""; String xmlResponse = udpXmlResponse(xmlRequest, MSG_TYPE_REQUEST); @@ -212,8 +220,8 @@ public synchronized boolean login() throws HaywardException { return false; } - account.token = evaluateXPath("/Response/Parameters//Parameter[@name='Token']/text()", xmlResponse).get(0); - account.userID = evaluateXPath("/Response/Parameters//Parameter[@name='UserID']/text()", xmlResponse).get(0); + account.setToken(evaluateXPath("/Response/Parameters//Parameter[@name='Token']/text()", xmlResponse).get(0)); + account.setUserID(evaluateXPath("/Response/Parameters//Parameter[@name='UserID']/text()", xmlResponse).get(0)); return true; } @@ -225,8 +233,8 @@ public synchronized boolean getApiDef() throws HaywardException, InterruptedExce String urlParameters = """ GetAPIDef\ \ - """ + account.token + "" + "" - + account.mspSystemID + ";" + """ + account.getToken() + "" + "" + + account.getMspSystemID() + ";" + "0.4\r\n" + "en\r\n" + ""; @@ -248,7 +256,7 @@ public synchronized boolean getSiteList() throws HaywardException, InterruptedEx String urlParameters = """ GetSiteList\ \ - """ + account.token + "" + account.userID + """ + account.getToken() + "" + account.getUserID() + ""; xmlResponse = udpXmlResponse(urlParameters, MSG_TYPE_REQUEST); @@ -265,12 +273,12 @@ public synchronized boolean getSiteList() throws HaywardException, InterruptedEx return false; } - account.mspSystemID = evaluateXPath("/Response/Parameters/Parameter/Item//Property[@name='MspSystemID']/text()", - xmlResponse).get(0); - account.backyardName = evaluateXPath( - "/Response/Parameters/Parameter/Item//Property[@name='BackyardName']/text()", xmlResponse).get(0); - account.address = evaluateXPath("/Response/Parameters/Parameter/Item//Property[@name='Address']/text()", - xmlResponse).get(0); + account.setMspSystemID(evaluateXPath( + "/Response/Parameters/Parameter/Item//Property[@name='MspSystemID']/text()", xmlResponse).get(0)); + account.setBackyardName(evaluateXPath( + "/Response/Parameters/Parameter/Item//Property[@name='BackyardName']/text()", xmlResponse).get(0)); + account.setAddress(evaluateXPath( + "/Response/Parameters/Parameter/Item//Property[@name='Address']/text()", xmlResponse).get(0)); return true; } @@ -279,8 +287,8 @@ public synchronized String getMspConfig() throws HaywardException, InterruptedEx String urlParameters = """ GetMspConfigFile\ \ - """ + account.token + "" + "" - + account.mspSystemID + "0\r\n" + """ + account.getToken() + "" + "" + + account.getMspSystemID() + "0\r\n" + ""; String xmlResponse = udpXmlResponse(urlParameters, MSG_TYPE_REQUEST); @@ -309,11 +317,11 @@ public synchronized boolean mspConfigUnits() throws HaywardException, Interrupte // Get Units (Standard, Metric) property1 = evaluateXPath("//System/Units/text()", xmlResponse); - account.units = property1.get(0); + account.setUnits(property1.get(0)); // Get Variable Speed Pump Units (percent, RPM) property2 = evaluateXPath("//System/Msp-Vsp-Speed-Format/text()", xmlResponse); - account.vspSpeedFormat = property2.get(0); + account.setVspSpeedFormat(property2.get(0)); return true; } @@ -323,8 +331,8 @@ public synchronized boolean getTelemetryData() throws HaywardException, Interrup String urlParameters = """ GetTelemetryData\ \ - """ + account.token + "" + "" - + account.mspSystemID + ""; + """ + account.getToken() + "" + "" + + account.getMspSystemID() + ""; String xmlResponse = udpXmlResponse(urlParameters, MSG_TYPE_TELEMETRY); @@ -385,7 +393,7 @@ private synchronized void initPolling(int initalDelay) { } catch (InterruptedException e) { return; } - }, initalDelay, config.telemetryPollTime, TimeUnit.SECONDS); + }, initalDelay, config.getTelemetryPollTime(), TimeUnit.SECONDS); return; } @@ -396,7 +404,7 @@ private synchronized void initAlarmPolling(int initalDelay) { } catch (HaywardException e) { logger.debug("Hayward Connection thing: Exception during poll: {}", e.getMessage()); } - }, initalDelay, config.alarmPollTime, TimeUnit.SECONDS); + }, initalDelay, config.getAlarmPollTime(), TimeUnit.SECONDS); } private void clearPolling(@Nullable ScheduledFuture pollJob) { diff --git a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/handler/HaywardVirtualHeaterHandler.java b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/handler/HaywardVirtualHeaterHandler.java index b65959eede770..37aa95e8ec730 100644 --- a/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/handler/HaywardVirtualHeaterHandler.java +++ b/bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/handler/HaywardVirtualHeaterHandler.java @@ -131,9 +131,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { switch (channelUID.getId()) { case HaywardBindingConstants.CHANNEL_VIRTUALHEATER_ENABLE: cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetHeaterEnable" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString + "" @@ -150,9 +150,9 @@ public void handleCommand(ChannelUID channelUID, Command command) { } cmdURL = HaywardBindingConstants.COMMAND_PARAMETERS + "SetUIHeaterCmd" - + "" + bridgehandler.account.token + + "" + bridgehandler.getAccount().getToken() + "" + "" - + bridgehandler.account.mspSystemID + "" + + bridgehandler.getAccount().getMspSystemID() + "" + "" + poolID + "" + "" + systemID + "" + "" + cmdString + "" @@ -172,8 +172,8 @@ public void handleCommand(ChannelUID channelUID, Command command) { return; } } catch (HaywardException e) { - logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.config.endpointUrl, - bridgehandler.config.username, e.getMessage()); + logger.debug("Unable to send command to Hayward's server {}:{}:{}", bridgehandler.getBridgeConfig().getEndpointUrl(), + bridgehandler.getBridgeConfig().getUsername(), e.getMessage()); } this.updateStatus(ThingStatus.ONLINE); } else {