2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.millheat.internal.model;
15 import org.openhab.binding.millheat.internal.dto.DeviceDTO;
18 * The {@link Heater} represents a heater, either connected to a room or independent
20 * @author Arne Seime - Initial contribution
24 private final Long id;
25 private final String name;
26 private final String macAddress;
27 private final boolean heatingActive;
28 private boolean canChangeTemp = true;
29 private final int subDomain;
30 private final int currentTemp;
31 private Integer targetTemp;
32 private boolean fanActive;
33 private boolean powerStatus;
34 private final boolean windowOpen;
36 public Heater(final DeviceDTO dto) {
38 name = dto.deviceName;
39 macAddress = dto.macAddress;
40 heatingActive = dto.heaterFlag;
41 canChangeTemp = dto.canChangeTemp;
42 subDomain = dto.subDomainId;
43 currentTemp = (int) dto.currentTemp;
44 setTargetTemp(dto.holidayTemp);
45 setFanActive(dto.fanStatus);
46 setPowerStatus(dto.powerStatus);
47 windowOpen = dto.openWindow;
50 public Heater(final DeviceDTO dto, final Room room) {
53 name = dto.deviceName;
54 macAddress = dto.macAddress;
55 heatingActive = dto.heaterFlag;
56 canChangeTemp = dto.canChangeTemp;
57 subDomain = dto.subDomainId;
58 currentTemp = (int) dto.currentTemp;
59 if (room != null && room.getMode() != null) {
60 switch (room.getMode()) {
62 setTargetTemp(room.getComfortTemp());
65 setTargetTemp(room.getSleepTemp());
68 setTargetTemp(room.getAwayTemp());
77 setFanActive(dto.fanStatus);
78 setPowerStatus(dto.powerStatus);
79 windowOpen = dto.openWindow;
83 public String toString() {
84 return "Heater [room=" + room + ", id=" + id + ", name=" + name + ", macAddress=" + macAddress
85 + ", heatingActive=" + heatingActive + ", canChangeTemp=" + canChangeTemp + ", subDomain=" + subDomain
86 + ", currentTemp=" + currentTemp + ", targetTemp=" + getTargetTemp() + ", fanActive=" + fanActive()
87 + ", powerStatus=" + powerStatus() + ", windowOpen=" + windowOpen + "]";
90 public Room getRoom() {
98 public String getName() {
102 public String getMacAddress() {
106 public boolean isHeatingActive() {
107 return heatingActive;
110 public boolean canChangeTemp() {
111 return canChangeTemp;
114 public int getSubDomain() {
118 public int getCurrentTemp() {
122 public Integer getTargetTemp() {
126 public boolean fanActive() {
130 public boolean powerStatus() {
134 public boolean windowOpen() {
138 public void setTargetTemp(final Integer targetTemp) {
139 this.targetTemp = targetTemp;
142 public void setFanActive(final boolean fanActive) {
143 this.fanActive = fanActive;
146 public void setPowerStatus(final boolean powerStatus) {
147 this.powerStatus = powerStatus;