SetpointMode.HOME);
private @Nullable CommonInterface handler;
- private Optional<EnergyCapability> energy = Optional.empty();
public RoomActions() {
logger.debug("Netatmo RoomActions service created");
}
+ private Optional<EnergyCapability> getEnergyCapability() {
+ CommonInterface localHandler = handler;
+ if (localHandler != null) {
+ return localHandler.getHomeCapability(EnergyCapability.class);
+ }
+ return Optional.empty();
+ }
+
@Override
public void setThingHandler(@Nullable ThingHandler handler) {
if (handler instanceof CommonInterface) {
CommonInterface commonHandler = (CommonInterface) handler;
this.handler = commonHandler;
- energy = commonHandler.getHomeCapability(EnergyCapability.class);
}
}
logger.info("Temperature provided but no endtime given, action ignored");
return;
}
- energy.ifPresent(cap -> cap.setRoomThermTemp(roomHandler.getId(), temp, endTime, SetpointMode.MANUAL));
+ getEnergyCapability()
+ .ifPresent(cap -> cap.setRoomThermTemp(roomHandler.getId(), temp, endTime, SetpointMode.MANUAL));
}
@RuleAction(label = "@text/actionSetThermRoomModeSetpointLabel", description = "@text/actionSetThermRoomModeSetpointDesc")
long setpointEnd = targetEndTime;
SetpointMode setpointMode = targetMode;
- energy.ifPresent(cap -> cap.setRoomThermTemp(roomHandler.getId(), 0, setpointEnd, setpointMode));
+ getEnergyCapability().ifPresent(cap -> cap.setRoomThermTemp(roomHandler.getId(), 0, setpointEnd, setpointMode));
}
public static void setThermRoomTempSetpoint(ThingActions actions, @Nullable Double temp, @Nullable Long endTime) {
import org.openhab.binding.netatmo.internal.api.RestManager;
import org.openhab.binding.netatmo.internal.api.SecurityApi;
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.Scope;
+import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.ServiceError;
import org.openhab.binding.netatmo.internal.config.ApiHandlerConfiguration;
import org.openhab.binding.netatmo.internal.config.BindingConfiguration;
import org.openhab.binding.netatmo.internal.config.ConfigurationLevel;
throw new NetatmoException(error);
}
return deserializer.deserialize(clazz, responseBody);
+ } catch (NetatmoException e) {
+ if (e.getStatusCode() == ServiceError.MAXIMUM_USAGE_REACHED) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage());
+ prepareReconnection(null, null);
+ }
+ throw e;
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage());