]> git.basschouten.com Git - openhab-addons.git/blob
6093ed584ac157da35f59c377b1e77b403dbc6a1
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.avmfritz.internal.dto;
14
15 import java.math.BigDecimal;
16
17 import javax.xml.bind.annotation.XmlAttribute;
18 import javax.xml.bind.annotation.XmlElement;
19
20 /**
21  * See {@link DeviceListModel}.
22  *
23  * In the functionbitmask element value the following bits are used:
24  *
25  * <ol>
26  * <li>Bit 0: HAN-FUN Gerät</li>
27  * <li>Bit 3: Button</li>
28  * <li>Bit 4: Alarm-Sensor</li>
29  * <li>Bit 6: Comet DECT, Heizkörperregler</li>
30  * <li>Bit 7: Energie Messgerät</li>
31  * <li>Bit 8: Temperatursensor</li>
32  * <li>Bit 9: Schaltsteckdose</li>
33  * <li>Bit 10: AVM DECT Repeater</li>
34  * <li>Bit 11: Mikrofon</li>
35  * <li>Bit 13: HAN-FUN Unit</li>
36  * </ol>
37  *
38  * @author Robert Bausdorf - Initial contribution
39  * @author Christoph Weitkamp - Added support for AVM FRITZ!DECT 300 and Comet DECT
40  * @author Christoph Weitkamp - Added support for groups
41  */
42 public abstract class AVMFritzBaseModel implements BatteryModel {
43     protected static final int HAN_FUN_DEVICE_BIT = 1; // Bit 0
44     protected static final int HAN_FUN_BUTTON_BIT = 1 << 3; // Bit 3 - undocumented
45     protected static final int HAN_FUN_ALARM_SENSOR_BIT = 1 << 4; // Bit 4
46     protected static final int BUTTON_BIT = 1 << 5; // Bit 5 - undocumented
47     protected static final int HEATING_THERMOSTAT_BIT = 1 << 6; // Bit 6
48     protected static final int POWERMETER_BIT = 1 << 7; // Bit 7
49     protected static final int TEMPSENSOR_BIT = 1 << 8; // Bit 8
50     protected static final int OUTLET_BIT = 1 << 9; // Bit 9
51     protected static final int DECT_REPEATER_BIT = 1 << 10; // Bit 10
52     protected static final int MICROPHONE_BIT = 1 << 11; // Bit 11
53     protected static final int HAN_FUN_UNIT_BIT = 1 << 13; // Bit 13
54
55     @XmlAttribute(name = "identifier")
56     private String ident;
57
58     @XmlAttribute(name = "id")
59     private String deviceId;
60
61     @XmlAttribute(name = "functionbitmask")
62     private int bitmask;
63
64     @XmlAttribute(name = "fwversion")
65     private String firmwareVersion;
66
67     @XmlAttribute(name = "manufacturer")
68     private String deviceManufacturer;
69
70     @XmlAttribute(name = "productname")
71     private String productName;
72
73     @XmlElement(name = "present")
74     private Integer present;
75
76     @XmlElement(name = "name")
77     private String name;
78
79     @XmlElement(name = "battery")
80     private BigDecimal battery;
81
82     @XmlElement(name = "batterylow")
83     private BigDecimal batterylow;
84
85     @XmlElement(name = "switch")
86     private SwitchModel switchModel;
87
88     @XmlElement(name = "powermeter")
89     private PowerMeterModel powermeterModel;
90
91     @XmlElement(name = "hkr")
92     private HeatingModel heatingModel;
93
94     public PowerMeterModel getPowermeter() {
95         return powermeterModel;
96     }
97
98     public void setPowermeter(PowerMeterModel powermeter) {
99         this.powermeterModel = powermeter;
100     }
101
102     public HeatingModel getHkr() {
103         return heatingModel;
104     }
105
106     public void setHkr(HeatingModel heatingModel) {
107         this.heatingModel = heatingModel;
108     }
109
110     public SwitchModel getSwitch() {
111         return switchModel;
112     }
113
114     public void setSwitch(SwitchModel switchModel) {
115         this.switchModel = switchModel;
116     }
117
118     public String getIdentifier() {
119         return ident != null ? ident.replace(" ", "") : null;
120     }
121
122     public void setIdentifier(String identifier) {
123         this.ident = identifier;
124     }
125
126     public String getDeviceId() {
127         return deviceId;
128     }
129
130     public boolean isHANFUNDevice() {
131         return (bitmask & HAN_FUN_DEVICE_BIT) > 0;
132     }
133
134     public boolean isHANFUNButton() {
135         return (bitmask & HAN_FUN_BUTTON_BIT) > 0;
136     }
137
138     public boolean isHANFUNAlarmSensor() {
139         return (bitmask & HAN_FUN_ALARM_SENSOR_BIT) > 0;
140     }
141
142     public boolean isButton() {
143         return (bitmask & BUTTON_BIT) > 0;
144     }
145
146     public boolean isSwitchableOutlet() {
147         return (bitmask & OUTLET_BIT) > 0;
148     }
149
150     public boolean isTempSensor() {
151         return (bitmask & TEMPSENSOR_BIT) > 0;
152     }
153
154     public boolean isPowermeter() {
155         return (bitmask & POWERMETER_BIT) > 0;
156     }
157
158     public boolean isDectRepeater() {
159         return (bitmask & DECT_REPEATER_BIT) > 0;
160     }
161
162     public boolean isHeatingThermostat() {
163         return (bitmask & HEATING_THERMOSTAT_BIT) > 0;
164     }
165
166     public boolean isMicrophone() {
167         return (bitmask & MICROPHONE_BIT) > 0;
168     }
169
170     public boolean isHANFUNUnit() {
171         return (bitmask & HAN_FUN_UNIT_BIT) > 0;
172     }
173
174     public String getFirmwareVersion() {
175         return firmwareVersion;
176     }
177
178     public String getManufacturer() {
179         return deviceManufacturer;
180     }
181
182     public String getProductName() {
183         return productName;
184     }
185
186     public int getPresent() {
187         return present;
188     }
189
190     public String getName() {
191         return name;
192     }
193
194     @Override
195     public BigDecimal getBattery() {
196         return battery;
197     }
198
199     @Override
200     public BigDecimal getBatterylow() {
201         return batterylow;
202     }
203
204     @Override
205     public String toString() {
206         return new StringBuilder().append("[ain=").append(ident).append(",bitmask=").append(bitmask)
207                 .append(",isHANFUNDevice=").append(isHANFUNDevice()).append(",isHANFUNButton=").append(isHANFUNButton())
208                 .append(",isHANFUNAlarmSensor=").append(isHANFUNAlarmSensor()).append(",isButton").append(isButton())
209                 .append(",isSwitchableOutlet=").append(isSwitchableOutlet()).append(",isTempSensor=")
210                 .append(isTempSensor()).append(",isPowermeter=").append(isPowermeter()).append(",isDectRepeater=")
211                 .append(isDectRepeater()).append(",isHeatingThermostat=").append(isHeatingThermostat())
212                 .append(",isMicrophone=").append(isMicrophone()).append(",isHANFUNUnit=").append(isHANFUNUnit())
213                 .append(",id=").append(deviceId).append(",manufacturer=").append(deviceManufacturer)
214                 .append(",productname=").append(productName).append(",fwversion=").append(firmwareVersion)
215                 .append(",present=").append(present).append(",name=").append(name).append(",battery")
216                 .append(getBattery()).append(",batterylow").append(getBatterylow()).append(getSwitch())
217                 .append(getPowermeter()).append(getHkr()).toString();
218     }
219 }