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