]> git.basschouten.com Git - openhab-addons.git/blob
387c95c7b723d2d3e01e7ef1a21ea32f13ebf0d0
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 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.enocean.internal.eep.A5_09;
14
15 import static org.openhab.binding.enocean.internal.EnOceanBindingConstants.*;
16
17 import java.util.function.Function;
18
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.binding.enocean.internal.eep.Base._4BSMessage;
21 import org.openhab.binding.enocean.internal.eep.EEPHelper;
22 import org.openhab.binding.enocean.internal.messages.ERP1Message;
23 import org.openhab.core.config.core.Configuration;
24 import org.openhab.core.library.types.DecimalType;
25 import org.openhab.core.library.unit.SIUnits;
26 import org.openhab.core.library.unit.Units;
27 import org.openhab.core.types.State;
28 import org.openhab.core.types.UnDefType;
29
30 /**
31  *
32  * @author Zhivka Dimova - Initial contribution
33  */
34 @NonNullByDefault
35 public abstract class A5_09 extends _4BSMessage {
36
37     public A5_09(ERP1Message packet) {
38         super(packet);
39     }
40
41     // CO
42     protected double getUnscaledCOMin() {
43         return 0;
44     }
45
46     protected double getUnscaledCOMax() {
47         return 255;
48     }
49
50     protected double getScaledCOMin() {
51         return 0;
52     }
53
54     protected double getScaledCOMax() {
55         return 1020;
56     }
57
58     protected int getUnscaledCOValue() {
59         return getDB2Value();
60     }
61
62     // CO2
63     protected double getUnscaledCO2Min() {
64         return 0;
65     }
66
67     protected double getUnscaledCO2Max() {
68         return 255;
69     }
70
71     protected double getScaledCO2Min() {
72         return 0;
73     }
74
75     protected double getScaledCO2Max() {
76         return 2550;
77     }
78
79     protected int getUnscaledCO2Value() {
80         return getDB2Value();
81     }
82
83     // Temperature
84     protected double getUnscaledTemperatureMin() {
85         return 0;
86     }
87
88     protected double getUnscaledTemperatureMax() {
89         return 255;
90     }
91
92     protected double getScaledTemperatureMin() {
93         return 0;
94     }
95
96     protected double getScaledTemperatureMax() {
97         return 51;
98     }
99
100     protected int getUnscaledTemperatureValue() {
101         return getDB1Value();
102     }
103
104     // Humidity
105     protected double getUnscaledHumidityMin() {
106         return 0;
107     }
108
109     protected double getUnscaledHumidityMax() {
110         return 200;
111     }
112
113     protected double getScaledHumidityMin() {
114         return 0;
115     }
116
117     protected double getScaledHumidityMax() {
118         return 100;
119     }
120
121     protected int getUnscaledHumidityValue() {
122         return getDB3Value();
123     }
124
125     // Battery
126     protected double getUnscaledBatteryVoltageMin() {
127         return 0;
128     }
129
130     protected double getUnscaledBatteryVoltageMax() {
131         return 255;
132     }
133
134     protected double getScaledBatteryVoltageMin() {
135         return 0;
136     }
137
138     protected double getScaledBatteryVoltageMax() {
139         return 5.1;
140     }
141
142     private int getUnscaledBatteryVoltageValue() {
143         return getDB3Value();
144     }
145
146     @Override
147     protected State convertToStateImpl(String channelId, String channelTypeId,
148             Function<String, State> getCurrentStateFunc, Configuration config) {
149
150         if (CHANNEL_CO.equals(channelId)) {
151             return EEPHelper.calculateState(getUnscaledCOValue(), getScaledCOMin(), getScaledCOMax(),
152                     getUnscaledCOMin(), getUnscaledCOMax(), Units.PARTS_PER_MILLION);
153         } else if (CHANNEL_CO2.equals(channelId)) {
154             return EEPHelper.calculateState(getUnscaledCO2Value(), getScaledCO2Min(), getScaledCO2Max(),
155                     getUnscaledCO2Min(), getUnscaledCO2Max(), Units.PARTS_PER_MILLION);
156         } else if (CHANNEL_TEMPERATURE.equals(channelId)) {
157             return EEPHelper.calculateState(getUnscaledTemperatureValue(), getScaledTemperatureMin(),
158                     getScaledTemperatureMax(), getUnscaledTemperatureMin(), getUnscaledTemperatureMax(),
159                     SIUnits.CELSIUS);
160         } else if (CHANNEL_HUMIDITY.equals(channelId)) {
161             return new DecimalType((getUnscaledHumidityValue() * 100.0) / getUnscaledHumidityMax());
162         } else if (CHANNEL_BATTERY_VOLTAGE.equals(channelId)) {
163             return EEPHelper.calculateState(getUnscaledBatteryVoltageValue(), getScaledBatteryVoltageMin(),
164                     getScaledBatteryVoltageMax(), getUnscaledBatteryVoltageMin(), getUnscaledBatteryVoltageMax(),
165                     Units.VOLT);
166         }
167
168         return UnDefType.UNDEF;
169     }
170 }