public class HomeStatus extends NAThing {
private @Nullable NAObjectMap<HomeStatusModule> modules;
+ private @Nullable NAObjectMap<Room> rooms;
+ private @Nullable NAObjectMap<HomeStatusPerson> persons;
public NAObjectMap<HomeStatusModule> getModules() {
NAObjectMap<HomeStatusModule> local = modules;
return local != null ? local : new NAObjectMap<>();
}
- }
-
- public class Energy extends HomeStatus {
- private @Nullable NAObjectMap<Room> rooms;
public NAObjectMap<Room> getRooms() {
NAObjectMap<Room> local = rooms;
return local != null ? local : new NAObjectMap<>();
}
- }
-
- public class Security extends HomeStatus {
- private @Nullable NAObjectMap<HomeStatusPerson> persons;
public NAObjectMap<HomeStatusPerson> getPersons() {
NAObjectMap<HomeStatusPerson> local = persons;
import org.openhab.binding.netatmo.internal.api.NetatmoException;
import org.openhab.binding.netatmo.internal.api.data.ModuleType;
import org.openhab.binding.netatmo.internal.api.dto.HomeData;
-import org.openhab.binding.netatmo.internal.api.dto.NAHomeStatus;
-import org.openhab.binding.netatmo.internal.api.dto.NAHomeStatus.HomeStatus;
import org.openhab.core.i18n.TimeZoneProvider;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.library.types.OpenClosedType;
.registerTypeAdapter(NAObjectMap.class, new NAObjectMapDeserializer())
.registerTypeAdapter(NAPushType.class, new NAPushTypeDeserializer())
.registerTypeAdapter(ModuleType.class, new ModuleTypeDeserializer())
- .registerTypeAdapter(HomeStatus.class,
- (JsonDeserializer<HomeStatus>) (json, type, context) -> context.deserialize(json,
- json.getAsJsonObject().has("persons") ? NAHomeStatus.Security.class
- : NAHomeStatus.Energy.class))
.registerTypeAdapter(HomeData.class,
(JsonDeserializer<HomeData>) (json, type, context) -> context.deserialize(json,
json.getAsJsonObject().has("therm_mode") ? HomeData.Energy.class
import org.openhab.binding.netatmo.internal.api.dto.HomeDataModule;
import org.openhab.binding.netatmo.internal.api.dto.HomeDataRoom;
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
-import org.openhab.binding.netatmo.internal.api.dto.NAHomeStatus;
import org.openhab.binding.netatmo.internal.api.dto.NAHomeStatus.HomeStatus;
import org.openhab.binding.netatmo.internal.api.dto.Room;
import org.openhab.binding.netatmo.internal.config.HomeConfiguration;
}
@Override
- protected void updateHomeStatus(HomeStatus homeStatus) {
- if (homeStatus instanceof NAHomeStatus.Energy energyStatus) {
- NAObjectMap<Room> rooms = energyStatus.getRooms();
- NAObjectMap<HomeStatusModule> modules = energyStatus.getModules();
- handler.getActiveChildren(FeatureArea.ENERGY).forEach(childHandler -> {
- String childId = childHandler.getId();
- logger.trace("childId: {}", childId);
- rooms.getOpt(childId).ifPresentOrElse(roomData -> {
- logger.trace("roomData: {}", roomData);
- childHandler.setNewData(roomData);
- }, () -> {
- modules.getOpt(childId).ifPresent(moduleData -> {
- logger.trace("moduleData: {}", moduleData);
- childHandler.setNewData(moduleData);
- modules.values().stream().filter(module -> childId.equals(module.getBridge()))
- .forEach(bridgedModule -> {
- logger.trace("bridgedModule: {}", bridgedModule);
- childHandler.setNewData(bridgedModule);
- });
- });
+ protected void updateHomeStatus(HomeStatus energyStatus) {
+ NAObjectMap<Room> rooms = energyStatus.getRooms();
+ NAObjectMap<HomeStatusModule> modules = energyStatus.getModules();
+ handler.getActiveChildren(FeatureArea.ENERGY).forEach(childHandler -> {
+ String childId = childHandler.getId();
+ logger.trace("childId: {}", childId);
+ rooms.getOpt(childId).ifPresentOrElse(roomData -> {
+ logger.trace("roomData: {}", roomData);
+ childHandler.setNewData(roomData);
+ }, () -> {
+ modules.getOpt(childId).ifPresent(moduleData -> {
+ logger.trace("moduleData: {}", moduleData);
+ childHandler.setNewData(moduleData);
+ modules.values().stream().filter(module -> childId.equals(module.getBridge()))
+ .forEach(bridgedModule -> {
+ logger.trace("bridgedModule: {}", bridgedModule);
+ childHandler.setNewData(bridgedModule);
+ });
});
});
- }
+ });
}
public void setThermPoint(String roomId, SetpointMode mode, long endtime, double temp) {
import org.openhab.binding.netatmo.internal.api.dto.HomeEvent;
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusModule;
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusPerson;
-import org.openhab.binding.netatmo.internal.api.dto.NAHomeStatus;
import org.openhab.binding.netatmo.internal.api.dto.NAHomeStatus.HomeStatus;
import org.openhab.binding.netatmo.internal.api.dto.NAObject;
import org.openhab.binding.netatmo.internal.config.HomeConfiguration;
}
@Override
- protected void updateHomeStatus(HomeStatus homeStatus) {
- if (homeStatus instanceof NAHomeStatus.Security securityStatus) {
- NAObjectMap<HomeStatusPerson> persons = securityStatus.getPersons();
- NAObjectMap<HomeStatusModule> modules = securityStatus.getModules();
- handler.getActiveChildren(FeatureArea.SECURITY).forEach(childHandler -> {
- String childId = childHandler.getId();
- persons.getOpt(childId).ifPresentOrElse(personData -> childHandler.setNewData(personData), () -> {
- modules.getOpt(childId).ifPresent(childData -> {
- childHandler.setNewData(childData);
- modules.values().stream().filter(module -> childId.equals(module.getBridge()))
- .forEach(bridgedModule -> childHandler.setNewData(bridgedModule));
- });
+ protected void updateHomeStatus(HomeStatus securityStatus) {
+ NAObjectMap<HomeStatusPerson> persons = securityStatus.getPersons();
+ NAObjectMap<HomeStatusModule> modules = securityStatus.getModules();
+ handler.getActiveChildren(FeatureArea.SECURITY).forEach(childHandler -> {
+ String childId = childHandler.getId();
+ persons.getOpt(childId).ifPresentOrElse(personData -> childHandler.setNewData(personData), () -> {
+ modules.getOpt(childId).ifPresent(childData -> {
+ childHandler.setNewData(childData);
+ modules.values().stream().filter(module -> childId.equals(module.getBridge()))
+ .forEach(bridgedModule -> childHandler.setNewData(bridgedModule));
});
});
- }
+ });
}
@Override
import org.openhab.binding.netatmo.internal.api.dto.HomeData;
import org.openhab.binding.netatmo.internal.api.dto.HomeDataPerson;
import org.openhab.binding.netatmo.internal.api.dto.HomeStatusPerson;
-import org.openhab.binding.netatmo.internal.api.dto.NAHomeStatus;
+import org.openhab.binding.netatmo.internal.api.dto.NAHomeStatus.HomeStatus;
import org.openhab.binding.netatmo.internal.api.dto.NAObject;
import org.openhab.core.library.types.DecimalType;
import org.openhab.core.types.State;
super.setNewData(data);
if (data instanceof HomeData.Security securityData) {
knownIds = securityData.getKnownPersons().stream().map(HomeDataPerson::getId).toList();
- } else if (data instanceof NAHomeStatus.Security securityStatus) {
+ } else if (data instanceof HomeStatus securityStatus) {
List<HomeStatusPerson> present = securityStatus.getPersons().values().stream()
.filter(HomeStatusPerson::atHome).toList();