[mqtt.homeassistant] Make sensors compliant (#8591)
Signed-off-by: Jochen Klein <git@jochen.susca.de>
This commit is contained in:
@@ -15,6 +15,7 @@ package org.openhab.binding.mqtt.generic;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -355,16 +356,16 @@ public abstract class AbstractMQTTThingHandler extends BaseThingHandler
|
||||
}
|
||||
|
||||
protected void calculateThingStatus() {
|
||||
final boolean availabilityTopicsSeen;
|
||||
final Optional<Boolean> availabilityTopicsSeen;
|
||||
|
||||
if (availabilityStates.isEmpty()) {
|
||||
availabilityTopicsSeen = true;
|
||||
availabilityTopicsSeen = Optional.empty();
|
||||
} else {
|
||||
availabilityTopicsSeen = availabilityStates.values().stream().allMatch(
|
||||
c -> c != null && OnOffType.ON.equals(c.getCache().getChannelState().as(OnOffType.class)));
|
||||
availabilityTopicsSeen = Optional.of(availabilityStates.values().stream().allMatch(
|
||||
c -> c != null && OnOffType.ON.equals(c.getCache().getChannelState().as(OnOffType.class))));
|
||||
}
|
||||
updateThingStatus(messageReceived.get(), availabilityTopicsSeen);
|
||||
}
|
||||
|
||||
protected abstract void updateThingStatus(boolean messageReceived, boolean availabilityTopicsSeen);
|
||||
protected abstract void updateThingStatus(boolean messageReceived, Optional<Boolean> availabilityTopicsSeen);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
@@ -186,8 +187,8 @@ public class GenericMQTTThingHandler extends AbstractMQTTThingHandler implements
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateThingStatus(boolean messageReceived, boolean availibilityTopicsSeen) {
|
||||
if (messageReceived || availibilityTopicsSeen) {
|
||||
protected void updateThingStatus(boolean messageReceived, Optional<Boolean> availibilityTopicsSeen) {
|
||||
if (availibilityTopicsSeen.orElse(true)) {
|
||||
updateStatus(ThingStatus.ONLINE, ThingStatusDetail.NONE);
|
||||
} else {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.NONE);
|
||||
|
||||
Reference in New Issue
Block a user