@Override
public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) {
super.bridgeStatusChanged(bridgeStatusInfo);
- if (ThingStatus.UNINITIALIZED == bridgeStatusInfo.getStatus()) {
+ if (ThingStatus.OFFLINE == bridgeStatusInfo.getStatus()
+ || ThingStatus.UNINITIALIZED == bridgeStatusInfo.getStatus()) {
cleanup();
}
+ if (ThingStatus.ONLINE == bridgeStatusInfo.getStatus()) {
+ initialize();
+ }
}
@Override
@Override
public void initialize() {
+ logger.debug("Initializing the alarm: {}", getThing().getUID());
thingConfig = getConfigAs(JablotronDeviceConfig.class);
future = scheduler.scheduleWithFixedDelay(this::updateAlarmStatus, 1, thingConfig.getRefresh(),
TimeUnit.SECONDS);
}
protected synchronized boolean updateAlarmStatus() {
+ logger.debug("Updating status of alarm: {}", getThing().getUID());
JablotronDataUpdateResponse dataUpdate = sendGetStatusRequest();
if (dataUpdate == null) {
return false;
}
private void updateAlarmThings() {
+ logger.debug("Updating overall alarm's statuses...");
@Nullable
List<JablotronDiscoveredService> services = discoverServices();
if (services != null) {
+ Bridge localBridge = getThing();
+ if (localBridge != null && ThingStatus.ONLINE != localBridge.getStatus()) {
+ updateStatus(ThingStatus.ONLINE);
+ }
for (JablotronDiscoveredService service : services) {
updateAlarmThing(service);
}
private void updateAlarmThing(JablotronDiscoveredService service) {
for (Thing th : getThing().getThings()) {
+ if (ThingStatus.ONLINE != th.getStatus()) {
+ logger.debug("Thing {} is not online", th.getUID());
+ continue;
+ }
+
JablotronAlarmHandler handler = (JablotronAlarmHandler) th.getHandler();
if (handler == null) {
private @Nullable <T> T sendMessage(String url, String urlParameters, Class<T> classOfT, String encoding,
boolean relogin) {
+ String line = "";
try {
ContentResponse resp = createRequest(url).content(new StringContentProvider(urlParameters), encoding)
.send();
logger.trace("Request: {} with data: {}", url, urlParameters);
- String line = resp.getContentAsString();
+ line = resp.getContentAsString();
logger.trace("Response: {}", line);
return gson.fromJson(line, classOfT);
} catch (TimeoutException e) {
"Interrupt during calling url: " + url);
Thread.currentThread().interrupt();
} catch (JsonSyntaxException e) {
+ logger.debug("Invalid JSON received: {}", line);
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
"Syntax error during calling url: " + url);
} catch (ExecutionException e) {