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.enocean.internal.eep.A5_09;
15 import static org.openhab.binding.enocean.internal.EnOceanBindingConstants.*;
17 import java.util.function.Function;
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;
32 * @author Zhivka Dimova - Initial contribution
35 public abstract class A5_09 extends _4BSMessage {
37 public A5_09(ERP1Message packet) {
42 protected double getUnscaledCOMin() {
46 protected double getUnscaledCOMax() {
50 protected double getScaledCOMin() {
54 protected double getScaledCOMax() {
58 protected int getUnscaledCOValue() {
63 protected double getUnscaledCO2Min() {
67 protected double getUnscaledCO2Max() {
71 protected double getScaledCO2Min() {
75 protected double getScaledCO2Max() {
79 protected int getUnscaledCO2Value() {
84 protected double getUnscaledTemperatureMin() {
88 protected double getUnscaledTemperatureMax() {
92 protected double getScaledTemperatureMin() {
96 protected double getScaledTemperatureMax() {
100 protected int getUnscaledTemperatureValue() {
101 return getDB1Value();
105 protected double getUnscaledHumidityMin() {
109 protected double getUnscaledHumidityMax() {
113 protected double getScaledHumidityMin() {
117 protected double getScaledHumidityMax() {
121 protected int getUnscaledHumidityValue() {
122 return getDB3Value();
126 protected double getUnscaledBatteryVoltageMin() {
130 protected double getUnscaledBatteryVoltageMax() {
134 protected double getScaledBatteryVoltageMin() {
138 protected double getScaledBatteryVoltageMax() {
142 private int getUnscaledBatteryVoltageValue() {
143 return getDB3Value();
147 protected State convertToStateImpl(String channelId, String channelTypeId,
148 Function<String, State> getCurrentStateFunc, Configuration config) {
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(),
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(),
168 return UnDefType.UNDEF;