/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.openhab.binding.swegonventilation.internal;
import java.io.InvalidClassException;
import org.openhab.core.items.Item;
import org.openhab.core.library.items.NumberItem;
import org.openhab.core.library.items.SwitchItem;
/**
* Represents all valid command types which could be processed by this binding.
*
* @author Pauli Anttila
* @since 1.4.0
*/
public enum SwegonVentilationCommandType {
T1("T1", NumberItem.class), // Temperature sensor, outdoor air
T2("T2", NumberItem.class), // Temperature sensor, supply air
T3("T3", NumberItem.class), // Temperature sensor, extract air
T4("T4", NumberItem.class), // Temperature sensor, supply air, re-heating
T5("T5", NumberItem.class),
T6("T6", NumberItem.class), // The freeze protection sensor of the water-heated air heater
T7("T7", NumberItem.class), // Excess temperature sensor for the pre-heating air heater
T8("T8", NumberItem.class), // Temperature sensor, exhaust air, freeze protection
OUTDOOR_TEMP("OutdoorTemperature", NumberItem.class), // T1
SUPPLY_TEMP("SupplyAirTemperature", NumberItem.class), // T2
EXTRACT_TEMP("ExtractAirTemperature", NumberItem.class), // T3
SUPPLY_TEMP_HEATED("SupplyAirTemperatureReheated", NumberItem.class), // T4
EXHAUST_TEMP("ExhaustAirTemperature", NumberItem.class), // T8
SUPPLY_AIR_FAN_SPEED("SupplyAirFanSpeed", NumberItem.class),
EXTRACT_AIR_FAN_SPEED("ExtractAirFanSpeed", NumberItem.class),
EFFICIENCY("Efficiency", NumberItem.class),
EFFICIENCY_SUPPLY("EfficiencySupply", NumberItem.class),
EFFICIENCY_EXTRACT("EfficiencyExtract", NumberItem.class),
FAN_SPEED("FanSpeed", NumberItem.class),
PREHEAT_STATE("PreheatState", SwitchItem.class),
REHEAT_STATE("ReheatState", SwitchItem.class),
CO2("CO2", NumberItem.class),
HUMIDITY("Humidity", NumberItem.class),
OPERATING_MODE("OperatingMode", NumberItem.class),
UNIT_STATE("UnitState", NumberItem.class),
HEATING_STATE("HeatingState", SwitchItem.class),
COOLING_STATE("CoolingState", SwitchItem.class),
BYBASS_STATE("BybassState", SwitchItem.class),
FREEZE_PROTECTION_STATE("FreezeProtectionState", SwitchItem.class),
PREHEATING_STATE("PreheatingState", SwitchItem.class),
CHILLING_STATE("ChillingState", SwitchItem.class),
PREHEATER_OVERHEAT_STATE("PreheaterOverheatState", SwitchItem.class),
REHEATING_STATE("ReheatingState", SwitchItem.class),
FIREPLACE_FUNCTION_STATE("FireplaceFunctionState", SwitchItem.class),
UNDERPRESSURE_COMPENSATION_STATE("UnderpressureCompensationState", SwitchItem.class),
EXTERNAL_BOOST_STATE("ExternalBoostState", SwitchItem.class),
HUMIDITY_BOOST_STATE("HumidityBoostState", SwitchItem.class),
CO2_BOOST_STATE("CO2State", SwitchItem.class),
DEFROSTING_STATE("DefrostingState", SwitchItem.class),
DEFROST_STARTER_MODE("DefrostingStarterMode", NumberItem.class),
TF_STOP_STATE("TFStopState", SwitchItem.class),
EXTERNAL_BOOST_FUNCTION_STATE("ExternalBoostFunctionState", SwitchItem.class),
EXTERNAL_FIREPLACE_FUNCTION_STATE("ExternalFireplaceFunctionState", SwitchItem.class),
FILTER_GUARD_STATUS("FilterGuardStatus", SwitchItem.class),
IR_FREEZE_PROTECTION_STATUS("IRFreezeProctionStatus", SwitchItem.class),
EMERGENCY_STOP_STATE("EmergencyStopState", SwitchItem.class),
REHEATING_FREEZING_ALARM("ReheatingFreezingAlarm", SwitchItem.class),
REHEATING_OVERHEAT_ALARM("ReheatingOverheatAlarm", SwitchItem.class),
IR_SENSOR_FAILURE("IRSensorFailure", SwitchItem.class),
SUPPLY_FAN_FAILURE("SupplyFanFailure", SwitchItem.class),
EXTRACT_FAN_FAILURE("ExtractFanFailure", SwitchItem.class),
TEMPERATURE_DEVIATION_FAILURE("TemperatureDeviationFailure", SwitchItem.class),
EFFICINECY_ALARM("EfficiencyAlarm", SwitchItem.class),
FILTER_GUARD_ALARM("FilterGuardAlarm", SwitchItem.class),
SERVICE_REMINDER("ServiceReminder", SwitchItem.class),
TEMPERATURE_FAILURE("TemperatureFailure", SwitchItem.class),
AFTERHEATING_SETPOINT_SUPPLY_AIR_REGULATED("AfterheatingSetpointSupplyAirRegulated", NumberItem.class),
AFTERHEATING_SETPOINT_ROOM_REGULATED("AfterheatingSetpointRoomRegulated", NumberItem.class),
SUPPLY_FAN_VIRTUAL_SPEED("SupplyFanVirtualSpeed", NumberItem.class),
EXTRACT_FAN_VIRTUAL_SPEED("ExtractFanVirtualSpeed", NumberItem.class),
UNIT_STATUS("UnitStatus", NumberItem.class);
private final String text;
private Class<? extends Item> itemClass;
private SwegonVentilationCommandType(final String text, Class<? extends Item> itemClass) {
this.text = text;
this.itemClass = itemClass;
}
@Override
public String toString() {
return text;
}
public Class<? extends Item> getItemClass() {
return itemClass;
}
/**
* Procedure to validate command type string.
*
* @param commandTypeText
* command string e.g. T1
* @return true if item is valid.
* @throws IllegalArgumentException
* Not valid command type.
* @throws InvalidClassException
* Not valid class for command type.
*/
public static boolean validateBinding(String commandTypeText, Class<? extends Item> itemClass)
throws IllegalArgumentException, InvalidClassException {
for (SwegonVentilationCommandType c : SwegonVentilationCommandType.values()) {
if (c.text.equals(commandTypeText)) {
if (c.getItemClass().equals(itemClass)) {
return true;
} else {
throw new InvalidClassException("Not valid class for command type");
}
}
}
throw new IllegalArgumentException("Not valid command type");
}
/**
* Procedure to convert command type string to command type class.
*
* @param commandTypeText
* command string e.g. T1
* @return corresponding command type.
* @throws InvalidClassException
* Not valid class for command type.
*/
public static SwegonVentilationCommandType getCommandType(String commandTypeText) throws IllegalArgumentException {
for (SwegonVentilationCommandType c : SwegonVentilationCommandType.values()) {
if (c.text.equals(commandTypeText)) {
return c;
}
}
throw new IllegalArgumentException("Not valid command type");
}
}