Skip to content

Commit f2b0d89

Browse files
authored
[fronius] Fix bridge config update not properly handled (#18375)
Fixes #18123. Signed-off-by: Florian Hotze <[email protected]>
1 parent 0bf8a7d commit f2b0d89

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

bundles/org.openhab.binding.fronius/src/main/java/org/openhab/binding/fronius/internal/handler/FroniusBaseThingHandler.java

+10
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
import static org.openhab.binding.fronius.internal.FroniusBindingConstants.API_TIMEOUT;
1616

17+
import java.util.Map;
18+
1719
import org.eclipse.jdt.annotation.NonNullByDefault;
1820
import org.eclipse.jdt.annotation.Nullable;
1921
import org.eclipse.jetty.http.HttpMethod;
@@ -84,6 +86,14 @@ public void initialize() {
8486
}
8587
}
8688

89+
/**
90+
* Called by the bridge to handle a bridge configuration update.
91+
*
92+
* @param configurationParameters map of changed bridge configuration parameters
93+
*/
94+
protected void handleBridgeConfigurationUpdate(Map<String, Object> configurationParameters) {
95+
}
96+
8797
/**
8898
* Update all Channels
8999
*/

bundles/org.openhab.binding.fronius/src/main/java/org/openhab/binding/fronius/internal/handler/FroniusBridgeHandler.java

+10
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import static org.openhab.binding.fronius.internal.FroniusBindingConstants.API_TIMEOUT;
1616

1717
import java.util.HashSet;
18+
import java.util.Map;
1819
import java.util.Set;
1920
import java.util.concurrent.ScheduledFuture;
2021
import java.util.concurrent.TimeUnit;
@@ -95,6 +96,15 @@ public void dispose() {
9596
}
9697
}
9798

99+
@Override
100+
public void handleConfigurationUpdate(Map<String, Object> configurationParameters) {
101+
super.handleConfigurationUpdate(configurationParameters);
102+
103+
for (FroniusBaseThingHandler service : services) {
104+
service.handleBridgeConfigurationUpdate(configurationParameters);
105+
}
106+
}
107+
98108
@Override
99109
public void childHandlerInitialized(ThingHandler childHandler, Thing childThing) {
100110
if (childHandler instanceof FroniusBaseThingHandler handler) {

bundles/org.openhab.binding.fronius/src/main/java/org/openhab/binding/fronius/internal/handler/FroniusSymoInverterHandler.java

+18-4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.time.LocalTime;
1717
import java.util.Collection;
1818
import java.util.List;
19+
import java.util.Map;
1920
import java.util.Optional;
2021

2122
import javax.measure.Unit;
@@ -85,14 +86,20 @@ protected void handleRefresh(FroniusBridgeConfiguration bridgeConfiguration) thr
8586
updateChannels();
8687
}
8788

89+
private void initializeBatteryControl(String hostname, String username, String password) {
90+
if (hostname != null && username != null && password != null) {
91+
batteryControl = new FroniusBatteryControl(httpClient, URI.create("http://" + hostname + "/"), username,
92+
password);
93+
} else {
94+
batteryControl = null;
95+
}
96+
}
97+
8898
@Override
8999
public void initialize() {
90100
config = getConfigAs(FroniusBaseDeviceConfiguration.class);
91101
FroniusBridgeConfiguration bridgeConfig = getBridge().getConfiguration().as(FroniusBridgeConfiguration.class);
92-
if (bridgeConfig.username != null && bridgeConfig.password != null) {
93-
batteryControl = new FroniusBatteryControl(httpClient, URI.create("http://" + bridgeConfig.hostname + "/"),
94-
bridgeConfig.username, bridgeConfig.password);
95-
}
102+
initializeBatteryControl(bridgeConfig.hostname, bridgeConfig.username, bridgeConfig.password);
96103
super.initialize();
97104
}
98105

@@ -101,6 +108,13 @@ public Collection<Class<? extends ThingHandlerService>> getServices() {
101108
return List.of(FroniusSymoInverterActions.class);
102109
}
103110

111+
@Override
112+
public void handleBridgeConfigurationUpdate(Map<String, Object> configurationParameters) {
113+
super.handleBridgeConfigurationUpdate(configurationParameters);
114+
FroniusBridgeConfiguration bridgeConfig = getBridge().getConfiguration().as(FroniusBridgeConfiguration.class);
115+
initializeBatteryControl(bridgeConfig.hostname, bridgeConfig.username, bridgeConfig.password);
116+
}
117+
104118
private @Nullable FroniusBatteryControl getBatteryControl() {
105119
if (batteryControl == null) {
106120
logger.warn("Battery control is not available. Check the bridge configuration.");

0 commit comments

Comments
 (0)