return;
}
ControlInfo controlInfo = webTargets.getControlInfo();
- updateStatus(ThingStatus.ONLINE);
updateState(DaikinBindingConstants.CHANNEL_AC_POWER, controlInfo.power ? OnOffType.ON : OnOffType.OFF);
updateTemperatureChannel(DaikinBindingConstants.CHANNEL_AC_TEMP, controlInfo.temp);
// Suppress any error if energy info is not supported.
logger.debug("getEnergyInfoDayAndWeek() error: {}", e.getMessage());
}
+ updateStatus(ThingStatus.ONLINE);
}
@Override
@Override
protected void pollStatus() throws IOException {
AirbaseControlInfo controlInfo = webTargets.getAirbaseControlInfo();
- updateStatus(ThingStatus.ONLINE);
if (airbaseModelInfo == null || !"OK".equals(airbaseModelInfo.ret)) {
airbaseModelInfo = webTargets.getAirbaseModelInfo();
.forEach(idx -> updateState(DaikinBindingConstants.CHANNEL_AIRBASE_AC_ZONE + idx,
OnOffType.from(zoneInfo.zone[idx])));
}
+ updateStatus(ThingStatus.ONLINE);
}
@Override
}
protected void changeZone(int zone, boolean command) throws DaikinCommunicationException {
- if (zone <= 0 || zone > airbaseModelInfo.zonespresent) {
+ AirbaseZoneInfo zoneInfo = webTargets.getAirbaseZoneInfo();
+ long commonZones = 0;
+ long maxZones = zoneInfo.zone.length;
+
+ if (airbaseModelInfo != null) {
+ maxZones = Math.min(maxZones - 1, airbaseModelInfo.zonespresent);
+ commonZones = airbaseModelInfo.commonzone;
+ }
+ if (zone <= 0 || zone > maxZones) {
logger.warn("The given zone number ({}) is outside the number of zones supported by the controller ({})",
- zone, airbaseModelInfo.zonespresent);
+ zone, maxZones);
return;
}
- AirbaseZoneInfo zoneInfo = webTargets.getAirbaseZoneInfo();
- long count = IntStream.range(0, zoneInfo.zone.length).filter(idx -> zoneInfo.zone[idx]).count()
- + airbaseModelInfo.commonzone;
- logger.debug("Number of open zones: \"{}\"", count);
+ long openZones = IntStream.range(0, zoneInfo.zone.length).filter(idx -> zoneInfo.zone[idx]).count()
+ + commonZones;
+ logger.debug("Number of open zones: \"{}\"", openZones);
- if (count >= 1) {
+ if (openZones >= 1) {
zoneInfo.zone[zone] = command;
webTargets.setAirbaseZoneInfo(zoneInfo);
}