[comfoair] extend UoM support, add semantic tags & update state descriptions (#15167)
* enable UoM for rpm values * support uom for non-hour time channels * add state options for frost setting * add data type for percentage * support DecimalType for QuantityType channels * support rfc2217 * improve state description for time channels * improve code style in DataTypes * remove unnecessary command type check * enable UoM for enthalpy timer Signed-off-by: Hans Böhm <h.boehm@gmx.at>
This commit is contained in:
parent
f0bdeff81b
commit
4ddb3ce7e6
|
@ -69,8 +69,8 @@ The ComfoAir binding supports the following channels.
|
|||
| ventilation#fanIn3 | Number | Fan In Level 3 | Fan level 3 performance (%) of incoming fan | false | yes |
|
||||
| ventilation#fanInPercent | Number | Fan In (%) | Current relative speed (%) of incoming fan | false | yes |
|
||||
| ventilation#fanOutPercent | Number | Fan Out (%) | Current relative speed (%) of outgoing fan | true | yes |
|
||||
| ventilation#fanInRPM | Number | Fan In (rpm) | Current absolute speed (rpm) of incoming fan | true | yes |
|
||||
| ventilation#fanOutRPM | Number | Fan Out (rpm) | Current absolute speed (rpm) of outgoing fan | true | yes |
|
||||
| ventilation#fanInRPM | Number:Frequency | Fan In (rpm) | Current absolute speed (rpm) of incoming fan | true | yes |
|
||||
| ventilation#fanOutRPM | Number:Frequency | Fan Out (rpm) | Current absolute speed (rpm) of outgoing fan | true | yes |
|
||||
| **Temperature Values** | | | | | |
|
||||
| temperatures#targetTemperature | Number:Temperature | Target Temperature | Target (comfort) temperature | false | no |
|
||||
| temperatures#outdoorTemperatureIn | Number:Temperature | Outdoor Temperature Incoming | Intake air temperature (outside) | true | yes |
|
||||
|
@ -108,14 +108,14 @@ The ComfoAir binding supports the following channels.
|
|||
| menuP1#menu28Mode | Switch | Menu 28 Mode (P18) | State of menu 28 mode (P18) | true | yes |
|
||||
| menuP1#menu29Mode | Switch | Menu 29 Mode (P19) | State of menu 29 mode (P19) | true | yes |
|
||||
| **Menu P2: Delay Settings** | | | | | |
|
||||
| menuP2#bathroomStartDelay | Number | Menu P21 | Start delay for bathroom switch (min) | false | yes |
|
||||
| menuP2#bathroomEndDelay | Number | Menu P22 | End delay for bathroom switch (min) | false | yes |
|
||||
| menuP2#L1EndDelay | Number | Menu P23 | End delay for L1 switch (min) | false | yes |
|
||||
| menuP2#pulseVentilation | Number | Menu P27 | Period for pulse ventilation (min) | false | yes |
|
||||
| menuP2#filterWeeks | Number | Menu P24 | Usage period until filter pollution message (weeks) | false | yes |
|
||||
| menuP2#RFShortDelay | Number | Menu P25 | End delay (RF short actuation) for ventilation level 3 (min) | false | yes |
|
||||
| menuP2#RFLongDelay | Number | Menu P26 | End delay (RF long actuation) for ventilation level 3 (min) | false | yes |
|
||||
| menuP2#cookerhoodDelay | Number | Menu P20 | End delay for cooker hood control (min) | false | yes |
|
||||
| menuP2#bathroomStartDelay | Number:Time | Menu P21 | Start delay for bathroom switch (uses minutes internally) | false | yes |
|
||||
| menuP2#bathroomEndDelay | Number:Time | Menu P22 | End delay for bathroom switch (uses minutes internally) | false | yes |
|
||||
| menuP2#L1EndDelay | Number:Time | Menu P23 | End delay for L1 switch (uses minutes internally) | false | yes |
|
||||
| menuP2#pulseVentilation | Number:Time | Menu P27 | Period for pulse ventilation (uses minutes internally) | false | yes |
|
||||
| menuP2#filterWeeks | Number:Time | Menu P24 | Usage period until filter pollution message (uses weeks internally) | false | yes |
|
||||
| menuP2#RFShortDelay | Number:Time | Menu P25 | End delay (RF short actuation) for ventilation level 3 (uses minutes internally) | false | yes |
|
||||
| menuP2#RFLongDelay | Number:Time | Menu P26 | End delay (RF long actuation) for ventilation level 3 (uses minutes internally) | false | yes |
|
||||
| menuP2#cookerhoodDelay | Number:Time | Menu P20 | End delay for cooker hood control (uses minutes internally) | false | yes |
|
||||
| **Menu P9: Option States** | | | | | |
|
||||
| menuP9#chimneyState | Switch | Chimney Control State | State of the chimney control | true | yes |
|
||||
| menuP9#bypassState | Switch | Bypass State | State of the bypass (ON = open / OFF = closed) | true | yes |
|
||||
|
@ -140,7 +140,7 @@ The ComfoAir binding supports the following channels.
|
|||
| preheater#preheaterValve | Number | Preheater Valve | State of the preheater valve | true | yes |
|
||||
| preheater#preheaterFrostProtect | Switch | Frost Protection | State of the frost protection | true | yes |
|
||||
| preheater#preheaterHeating | Switch | Preheater | State of the preheater | true | yes |
|
||||
| preheater#preheaterFrostTime | Number | Preheater Frost Time | Frost minutes | true | yes |
|
||||
| preheater#preheaterFrostTime | Number:Time | Preheater Frost Time | Frost minutes | true | yes |
|
||||
| preheater#preheaterSafety | Number | Preheater Frost Safety | Frost safety setting | true | yes |
|
||||
| **GHX Values** | | | | | |
|
||||
| ewt#ewtTemperatureLow | Number:Temperature | GHX Temperature (low) | Lower temperature of the geothermal heat exchanger | true | yes |
|
||||
|
@ -156,7 +156,7 @@ The ComfoAir binding supports the following channels.
|
|||
| enthalpy#enthalpyTemperature | Number:Temperature | Enthalpy Sensor Temperature | Temperature of the enthalpy sensor | true | yes |
|
||||
| enthalpy#enthalpyHumidity | Number | Enthalpy Sensor Humidity | Humidity of the enthalpy sensor | true | yes |
|
||||
| enthalpy#enthalpyLevel | Number | Enthalpy Sensor Level | Level of the enthalpy sensor | true | yes |
|
||||
| enthalpy#enthalpyTime | Number | Enthalpy Sensor Timer | Timer state of the enthalpy sensor | true | yes |
|
||||
| enthalpy#enthalpyTime | Number:Time | Enthalpy Sensor Timer | Timer state of the enthalpy sensor | true | yes |
|
||||
| **Option Settings** | | | | | |
|
||||
| options#isPreheater | Switch | Preheater | Preheater option installed | true | yes |
|
||||
| options#isBypass | Switch | Bypass | Bypass option installed | true | yes |
|
||||
|
|
|
@ -30,10 +30,8 @@ import org.openhab.binding.comfoair.internal.datatypes.DataTypeTemperature;
|
|||
import org.openhab.binding.comfoair.internal.datatypes.DataTypeTime;
|
||||
import org.openhab.binding.comfoair.internal.datatypes.DataTypeVolt;
|
||||
import org.openhab.core.library.types.DecimalType;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
import org.openhab.core.types.Command;
|
||||
import org.openhab.core.types.State;
|
||||
import org.openhab.core.types.UnDefType;
|
||||
|
||||
/**
|
||||
* Represents all valid commands which could be processed by this binding
|
||||
|
@ -107,28 +105,28 @@ public enum ComfoAirCommandType {
|
|||
DataTypeBoolean.getInstance(), Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 7 },
|
||||
0x02),
|
||||
BATHROOM_START_DELAY(ComfoAirBindingConstants.CG_MENUP2_PREFIX + ComfoAirBindingConstants.CHANNEL_BR_START_DELAY,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 0, new ComfoAirCommandType[] { MENU21_MODE },
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 0, new ComfoAirCommandType[] { MENU21_MODE },
|
||||
Constants.REQUEST_GET_DELAYS, Constants.REPLY_GET_DELAYS, new int[] { 0 }),
|
||||
BATHROOM_END_DELAY(ComfoAirBindingConstants.CG_MENUP2_PREFIX + ComfoAirBindingConstants.CHANNEL_BR_END_DELAY,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 1, new ComfoAirCommandType[] { MENU22_MODE },
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 1, new ComfoAirCommandType[] { MENU22_MODE },
|
||||
Constants.REQUEST_GET_DELAYS, Constants.REPLY_GET_DELAYS, new int[] { 1 }),
|
||||
L1_END_DELAY(ComfoAirBindingConstants.CG_MENUP2_PREFIX + ComfoAirBindingConstants.CHANNEL_L1_END_DELAY,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 2, new ComfoAirCommandType[] { MENU27_MODE },
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 2, new ComfoAirCommandType[] { MENU27_MODE },
|
||||
Constants.REQUEST_GET_DELAYS, Constants.REPLY_GET_DELAYS, new int[] { 2 }),
|
||||
PULSE_VENTILATION(ComfoAirBindingConstants.CG_MENUP2_PREFIX + ComfoAirBindingConstants.CHANNEL_PULSE_VENTILATION,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 3, new ComfoAirCommandType[] { MENU23_MODE },
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 3, new ComfoAirCommandType[] { MENU23_MODE },
|
||||
Constants.REQUEST_GET_DELAYS, Constants.REPLY_GET_DELAYS, new int[] { 3 }),
|
||||
FILTER_WEEKS(ComfoAirBindingConstants.CG_MENUP2_PREFIX + ComfoAirBindingConstants.CHANNEL_FILTER_WEEKS,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 4, new ComfoAirCommandType[] { MENU24_MODE },
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 4, new ComfoAirCommandType[] { MENU24_MODE },
|
||||
Constants.REQUEST_GET_DELAYS, Constants.REPLY_GET_DELAYS, new int[] { 4 }),
|
||||
RF_SHORT_DELAY(ComfoAirBindingConstants.CG_MENUP2_PREFIX + ComfoAirBindingConstants.CHANNEL_RF_SHORT_DELAY,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 5, new ComfoAirCommandType[] { MENU25_MODE },
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 5, new ComfoAirCommandType[] { MENU25_MODE },
|
||||
Constants.REQUEST_GET_DELAYS, Constants.REPLY_GET_DELAYS, new int[] { 5 }),
|
||||
RF_LONG_DELAY(ComfoAirBindingConstants.CG_MENUP2_PREFIX + ComfoAirBindingConstants.CHANNEL_RF_LONG_DELAY,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 6, new ComfoAirCommandType[] { MENU26_MODE },
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 6, new ComfoAirCommandType[] { MENU26_MODE },
|
||||
Constants.REQUEST_GET_DELAYS, Constants.REPLY_GET_DELAYS, new int[] { 6 }),
|
||||
COOKERHOOD_DELAY(ComfoAirBindingConstants.CG_MENUP2_PREFIX + ComfoAirBindingConstants.CHANNEL_COOKERHOOD_DELAY,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 7, new ComfoAirCommandType[] { MENU20_MODE },
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_SET_DELAYS, 8, 7, new ComfoAirCommandType[] { MENU20_MODE },
|
||||
Constants.REQUEST_GET_DELAYS, Constants.REPLY_GET_DELAYS, new int[] { 7 }),
|
||||
CHIMNEY_STATE(ComfoAirBindingConstants.CG_MENUP9_PREFIX + ComfoAirBindingConstants.CHANNEL_CHIMNEY_STATE,
|
||||
DataTypeBoolean.getInstance(), Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 8 },
|
||||
|
@ -229,7 +227,7 @@ public enum ComfoAirCommandType {
|
|||
ENTHALPY_LEVEL(ComfoAirBindingConstants.CG_ENTHALPY_PREFIX + ComfoAirBindingConstants.CHANNEL_ENTHALPY_LEVEL,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_GET_SENSORS, Constants.REPLY_GET_SENSORS, new int[] { 4 }),
|
||||
ENTHALPY_TIME(ComfoAirBindingConstants.CG_ENTHALPY_PREFIX + ComfoAirBindingConstants.CHANNEL_ENTHALPY_TIME,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_GET_SENSORS, Constants.REPLY_GET_SENSORS, new int[] { 5 }),
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_GET_SENSORS, Constants.REPLY_GET_SENSORS, new int[] { 5 }),
|
||||
PREHEATER_VALVE(ComfoAirBindingConstants.CG_PREHEATER_PREFIX + ComfoAirBindingConstants.CHANNEL_PREHEATER_VALVE,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_GET_PREHEATER, Constants.REPLY_GET_PREHEATER,
|
||||
new int[] { 0 }),
|
||||
|
@ -242,7 +240,7 @@ public enum ComfoAirCommandType {
|
|||
new int[] { 2 }),
|
||||
PREHEATER_FROST_TIME(
|
||||
ComfoAirBindingConstants.CG_PREHEATER_PREFIX + ComfoAirBindingConstants.CHANNEL_PREHEATER_FROST_TIME,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_GET_PREHEATER, Constants.REPLY_GET_PREHEATER,
|
||||
DataTypeTime.getInstance(), Constants.REQUEST_GET_PREHEATER, Constants.REPLY_GET_PREHEATER,
|
||||
new int[] { 3, 4 }),
|
||||
PREHEATER_OPTION(ComfoAirBindingConstants.CG_PREHEATER_PREFIX + ComfoAirBindingConstants.CHANNEL_PREHEATER_SAFETY,
|
||||
DataTypeNumber.getInstance(), Constants.REQUEST_GET_PREHEATER, Constants.REPLY_GET_PREHEATER,
|
||||
|
@ -786,29 +784,22 @@ public enum ComfoAirCommandType {
|
|||
* new state
|
||||
* @return initialized ComfoAirCommand
|
||||
*/
|
||||
@SuppressWarnings("PMD.CompareObjectsWithEquals")
|
||||
public static @Nullable ComfoAirCommand getChangeCommand(String key, Command command) {
|
||||
ComfoAirCommandType commandType = getCommandTypeByKey(key);
|
||||
State value = UnDefType.NULL;
|
||||
|
||||
if (commandType != null) {
|
||||
ComfoAirDataType dataType = commandType.getDataType();
|
||||
if (dataType == DataTypeBoolean.getInstance() || dataType == DataTypeNumber.getInstance()
|
||||
|| dataType == DataTypeRPM.getInstance() || command instanceof QuantityType<?>) {
|
||||
value = (State) command;
|
||||
}
|
||||
if (value instanceof UnDefType) {
|
||||
return null;
|
||||
} else {
|
||||
int[] data = dataType.convertFromState(value, commandType);
|
||||
DecimalType decimalValue = value.as(DecimalType.class);
|
||||
if (decimalValue != null) {
|
||||
int intValue = decimalValue.intValue();
|
||||
|
||||
if (data != null) {
|
||||
int dataPosition = commandType.getChangeDataPos();
|
||||
return new ComfoAirCommand(key, commandType.changeCommand, null, data, dataPosition, intValue);
|
||||
}
|
||||
State value = (State) command;
|
||||
|
||||
int[] data = dataType.convertFromState(value, commandType);
|
||||
DecimalType decimalValue = value.as(DecimalType.class);
|
||||
if (decimalValue != null) {
|
||||
int intValue = decimalValue.intValue();
|
||||
|
||||
if (data != null) {
|
||||
int dataPosition = commandType.getChangeDataPos();
|
||||
return new ComfoAirCommand(key, commandType.changeCommand, null, data, dataPosition, intValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,9 +79,19 @@ public class ComfoAirSerialConnector {
|
|||
SerialPort serialPort = portIdentifier.open(this.getClass().getName(), 3000);
|
||||
serialPort.setSerialPortParams(baudRate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
|
||||
SerialPort.PARITY_NONE);
|
||||
serialPort.enableReceiveThreshold(1);
|
||||
serialPort.enableReceiveTimeout(1000);
|
||||
serialPort.notifyOnDataAvailable(true);
|
||||
|
||||
try {
|
||||
serialPort.enableReceiveThreshold(1);
|
||||
} catch (UnsupportedCommOperationException e) {
|
||||
logger.debug("Enable receive threshold is unsupported");
|
||||
}
|
||||
try {
|
||||
serialPort.enableReceiveTimeout(1000);
|
||||
} catch (UnsupportedCommOperationException e) {
|
||||
logger.debug("Enable receive timeout is unsupported");
|
||||
}
|
||||
|
||||
this.serialPort = serialPort;
|
||||
|
||||
inputStream = new DataInputStream(new BufferedInputStream(serialPort.getInputStream()));
|
||||
|
|
|
@ -16,6 +16,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
|
|||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.comfoair.internal.ComfoAirCommandType;
|
||||
import org.openhab.core.library.types.DecimalType;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
import org.openhab.core.library.unit.Units;
|
||||
import org.openhab.core.types.State;
|
||||
import org.openhab.core.types.UnDefType;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -52,20 +54,32 @@ public class DataTypeRPM implements ComfoAirDataType {
|
|||
return UnDefType.NULL;
|
||||
}
|
||||
// transferred value is (1875000 / rpm) per protocol
|
||||
return new DecimalType((int) (1875000.0 / value));
|
||||
return new QuantityType<>((int) (1875000.0 / value), Units.RPM);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int @Nullable [] convertFromState(State value, ComfoAirCommandType commandType) {
|
||||
if (value instanceof UnDefType) {
|
||||
int[] template = commandType.getChangeDataTemplate();
|
||||
float rpm;
|
||||
|
||||
if (value instanceof QuantityType<?> qt) {
|
||||
QuantityType<?> qtRpm = ((QuantityType<?>) value).toUnit(Units.RPM);
|
||||
|
||||
if (qtRpm != null) {
|
||||
rpm = qtRpm.floatValue();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else if (value instanceof DecimalType dt) {
|
||||
rpm = dt.floatValue();
|
||||
} else {
|
||||
logger.trace("\"DataTypeRPM\" class \"convertFromState\" undefined state");
|
||||
return null;
|
||||
} else {
|
||||
int[] template = commandType.getChangeDataTemplate();
|
||||
// transferred value is (1875000 / rpm) per protocol
|
||||
template[commandType.getChangeDataPos()] = (int) (1875000 / ((DecimalType) value).doubleValue());
|
||||
return template;
|
||||
}
|
||||
|
||||
// transferred value is (1875000 / rpm) per protocol
|
||||
template[commandType.getChangeDataPos()] = (int) (1875000 / rpm);
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ package org.openhab.binding.comfoair.internal.datatypes;
|
|||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.comfoair.internal.ComfoAirCommandType;
|
||||
import org.openhab.core.library.types.DecimalType;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
import org.openhab.core.library.unit.SIUnits;
|
||||
import org.openhab.core.types.State;
|
||||
|
@ -63,18 +64,28 @@ public class DataTypeTemperature implements ComfoAirDataType {
|
|||
@Override
|
||||
public int @Nullable [] convertFromState(State value, ComfoAirCommandType commandType) {
|
||||
int[] template = commandType.getChangeDataTemplate();
|
||||
QuantityType<?> celsius = ((QuantityType<?>) value).toUnit(SIUnits.CELSIUS);
|
||||
float celsius;
|
||||
|
||||
if (celsius != null) {
|
||||
if (commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_GHX) {
|
||||
template[commandType.getChangeDataPos()] = celsius.intValue();
|
||||
if (value instanceof QuantityType<?> qt) {
|
||||
QuantityType<?> qtCelsius = qt.toUnit(SIUnits.CELSIUS);
|
||||
|
||||
if (qtCelsius != null) {
|
||||
celsius = qtCelsius.floatValue();
|
||||
} else {
|
||||
template[commandType.getChangeDataPos()] = (int) (celsius.doubleValue() + 20) * 2;
|
||||
return null;
|
||||
}
|
||||
return template;
|
||||
} else if (value instanceof DecimalType dt) {
|
||||
celsius = dt.floatValue();
|
||||
} else {
|
||||
logger.trace("\"DataTypeTemperature\" class \"convertFromState\" undefined state");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_GHX) {
|
||||
template[commandType.getChangeDataPos()] = (int) celsius;
|
||||
} else {
|
||||
template[commandType.getChangeDataPos()] = (int) (celsius + 20) * 2;
|
||||
}
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ package org.openhab.binding.comfoair.internal.datatypes;
|
|||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.comfoair.internal.ComfoAirCommandType;
|
||||
import org.openhab.core.library.types.DecimalType;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
import org.openhab.core.library.unit.Units;
|
||||
import org.openhab.core.types.State;
|
||||
|
@ -52,6 +53,16 @@ public class DataTypeTime implements ComfoAirDataType {
|
|||
return UnDefType.NULL;
|
||||
}
|
||||
|
||||
if (commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_DELAYS
|
||||
|| commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_PREHEATER) {
|
||||
if (commandType == ComfoAirCommandType.FILTER_WEEKS) {
|
||||
return new QuantityType<>(value, Units.WEEK);
|
||||
} else {
|
||||
return new QuantityType<>(value, Units.MINUTE);
|
||||
}
|
||||
} else if (commandType == ComfoAirCommandType.ENTHALPY_TIME) {
|
||||
return new QuantityType<>(value * 12, Units.MINUTE);
|
||||
}
|
||||
return new QuantityType<>(value, Units.HOUR);
|
||||
}
|
||||
}
|
||||
|
@ -61,25 +72,44 @@ public class DataTypeTime implements ComfoAirDataType {
|
|||
int[] template = commandType.getChangeDataTemplate();
|
||||
int[] possibleValues = commandType.getPossibleValues();
|
||||
int position = commandType.getChangeDataPos();
|
||||
QuantityType<?> hours = ((QuantityType<?>) value).toUnit(Units.HOUR);
|
||||
int intValue;
|
||||
|
||||
if (hours != null) {
|
||||
int intValue = hours.intValue();
|
||||
if (value instanceof QuantityType<?> qt) {
|
||||
QuantityType<?> internalQuantity = new QuantityType<>();
|
||||
|
||||
if (possibleValues == null) {
|
||||
template[position] = intValue;
|
||||
} else {
|
||||
for (int i = 0; i < possibleValues.length; i++) {
|
||||
if (possibleValues[i] == intValue) {
|
||||
template[position] = intValue;
|
||||
break;
|
||||
}
|
||||
if (commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_DELAYS
|
||||
|| commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_PREHEATER) {
|
||||
if (commandType == ComfoAirCommandType.FILTER_WEEKS) {
|
||||
internalQuantity = qt.toUnit(Units.WEEK);
|
||||
} else {
|
||||
internalQuantity = qt.toUnit(Units.MINUTE);
|
||||
}
|
||||
} else {
|
||||
internalQuantity = qt.toUnit(Units.HOUR);
|
||||
}
|
||||
return template;
|
||||
|
||||
if (internalQuantity != null) {
|
||||
intValue = internalQuantity.intValue();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else if (value instanceof DecimalType dt) {
|
||||
intValue = dt.intValue();
|
||||
} else {
|
||||
logger.trace("\"DataTypeTime\" class \"convertFromState\" undefined state");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (possibleValues == null) {
|
||||
template[position] = intValue;
|
||||
} else {
|
||||
for (int i = 0; i < possibleValues.length; i++) {
|
||||
if (possibleValues[i] == intValue) {
|
||||
template[position] = intValue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ package org.openhab.binding.comfoair.internal.datatypes;
|
|||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.comfoair.internal.ComfoAirCommandType;
|
||||
import org.openhab.core.library.types.DecimalType;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
import org.openhab.core.library.unit.Units;
|
||||
import org.openhab.core.types.State;
|
||||
|
@ -44,7 +45,7 @@ public class DataTypeVolt implements ComfoAirDataType {
|
|||
@Override
|
||||
public State convertToState(int @Nullable [] data, ComfoAirCommandType commandType) {
|
||||
if (data == null) {
|
||||
logger.trace("\"DataTypeVolt\" class \"convertToState\" method parameter: null");
|
||||
logger.trace("\"DataTypeVoltage\" class \"convertToState\" method parameter: null");
|
||||
return UnDefType.NULL;
|
||||
} else {
|
||||
int[] readReplyDataPos = commandType.getReadReplyDataPos();
|
||||
|
@ -59,14 +60,24 @@ public class DataTypeVolt implements ComfoAirDataType {
|
|||
@Override
|
||||
public int @Nullable [] convertFromState(State value, ComfoAirCommandType commandType) {
|
||||
int[] template = commandType.getChangeDataTemplate();
|
||||
QuantityType<?> volts = ((QuantityType<?>) value).toUnit(Units.VOLT);
|
||||
float volt;
|
||||
|
||||
if (volts != null) {
|
||||
template[commandType.getChangeDataPos()] = (int) (volts.doubleValue() * 255 / 10);
|
||||
return template;
|
||||
if (value instanceof QuantityType<?> qt) {
|
||||
QuantityType<?> qtVolt = qt.toUnit(Units.VOLT);
|
||||
|
||||
if (qtVolt != null) {
|
||||
volt = qtVolt.floatValue();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else if (value instanceof DecimalType dt) {
|
||||
volt = dt.floatValue();
|
||||
} else {
|
||||
logger.trace("\"DataTypeVolt\" class \"convertFromState\" undefined state");
|
||||
return null;
|
||||
}
|
||||
|
||||
template[commandType.getChangeDataPos()] = (int) (volt * 255 / 10);
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,19 +53,23 @@ channel-group-type.comfoair.ventilation_WHR930.label = Ventilation Values
|
|||
# channel types
|
||||
|
||||
channel-type.comfoair.L1_end_delay.label = L1 Switch End Delay (P23)
|
||||
channel-type.comfoair.L1_end_delay.description = End delay for L1 switch (min)
|
||||
channel-type.comfoair.L1_end_delay.description = End delay for L1 switch (uses minutes internally)
|
||||
channel-type.comfoair.RF_long_delay.label = RF Long Delay (P26)
|
||||
channel-type.comfoair.RF_long_delay.description = End delay (RF long actuation) for ventilation level 3 (min)
|
||||
channel-type.comfoair.RF_long_delay.description = End delay (RF long actuation) for ventilation level 3 (uses minutes internally)
|
||||
channel-type.comfoair.RF_max.label = RF Input Max
|
||||
channel-type.comfoair.RF_max.description = Maximum setting for RF input
|
||||
channel-type.comfoair.RF_min.label = RF Input Min
|
||||
channel-type.comfoair.RF_min.description = Minimum setting for RF input
|
||||
channel-type.comfoair.RF_mode.label = RF Input State
|
||||
channel-type.comfoair.RF_mode.description = State of RF input
|
||||
channel-type.comfoair.RF_mode.state.option.OFF = Controlling
|
||||
channel-type.comfoair.RF_mode.state.option.ON = Programming
|
||||
channel-type.comfoair.RF_negative.label = RF Input Postive/Negative
|
||||
channel-type.comfoair.RF_negative.description = Postive/Negative state of RF input
|
||||
channel-type.comfoair.RF_negative.state.option.OFF = Positive
|
||||
channel-type.comfoair.RF_negative.state.option.ON = Negative
|
||||
channel-type.comfoair.RF_short_delay.label = RF Short Delay (P25)
|
||||
channel-type.comfoair.RF_short_delay.description = End delay (RF short actuation) for ventilation level 3 (min)
|
||||
channel-type.comfoair.RF_short_delay.description = End delay (RF short actuation) for ventilation level 3 (uses minutes internally)
|
||||
channel-type.comfoair.RF_value.label = RF Input Target
|
||||
channel-type.comfoair.RF_value.description = Target setting for RF input
|
||||
channel-type.comfoair.activate.label = Activate Binding Control
|
||||
|
@ -76,8 +80,12 @@ channel-type.comfoair.analog_min.label = Analog Input Min
|
|||
channel-type.comfoair.analog_min.description = Minimum setting for analog input
|
||||
channel-type.comfoair.analog_mode.label = Analog Input State
|
||||
channel-type.comfoair.analog_mode.description = State of analog input
|
||||
channel-type.comfoair.analog_mode.state.option.OFF = Controlling
|
||||
channel-type.comfoair.analog_mode.state.option.ON = Programming
|
||||
channel-type.comfoair.analog_negative.label = Analog Input Postive/Negative
|
||||
channel-type.comfoair.analog_negative.description = Postive/Negative state of analog input
|
||||
channel-type.comfoair.analog_negative.state.option.OFF = Positive
|
||||
channel-type.comfoair.analog_negative.state.option.ON = Negative
|
||||
channel-type.comfoair.analog_priority.label = Analog Priority
|
||||
channel-type.comfoair.analog_priority.description = Priority of analog inputs for highest fan level
|
||||
channel-type.comfoair.analog_priority.state.option.0 = Analog inputs
|
||||
|
@ -87,9 +95,9 @@ channel-type.comfoair.analog_value.description = Target setting for analog input
|
|||
channel-type.comfoair.analog_volt.label = Analog Input Voltage Level
|
||||
channel-type.comfoair.analog_volt.description = Voltage level of analog input
|
||||
channel-type.comfoair.bathroom_end_delay.label = Bathroom Switch End Delay (P22)
|
||||
channel-type.comfoair.bathroom_end_delay.description = End delay for bathroom switch (min)
|
||||
channel-type.comfoair.bathroom_end_delay.description = End delay for bathroom switch (uses minutes internally)
|
||||
channel-type.comfoair.bathroom_start_delay.label = Bathroom Switch Start Delay (P21)
|
||||
channel-type.comfoair.bathroom_start_delay.description = Start delay for bathroom switch (min)
|
||||
channel-type.comfoair.bathroom_start_delay.description = Start delay for bathroom switch (uses minutes internally)
|
||||
channel-type.comfoair.bypass_correction.label = Bypass Correction
|
||||
channel-type.comfoair.bypass_correction.description = Bypass correction state
|
||||
channel-type.comfoair.bypass_factor.label = Bypass Factor
|
||||
|
@ -98,18 +106,24 @@ channel-type.comfoair.bypass_level.label = Bypass Level
|
|||
channel-type.comfoair.bypass_level.description = Bypass level state
|
||||
channel-type.comfoair.bypass_state.label = Bypass State
|
||||
channel-type.comfoair.bypass_state.description = State of the bypass (ON = open / OFF = closed)
|
||||
channel-type.comfoair.bypass_state.state.option.ON = Open
|
||||
channel-type.comfoair.bypass_state.state.option.OFF = Closed
|
||||
channel-type.comfoair.bypass_summer.label = Bypass Summer Mode
|
||||
channel-type.comfoair.bypass_summer.description = Bypass summer mode
|
||||
channel-type.comfoair.bypass_time.label = Bypass Duration
|
||||
channel-type.comfoair.bypass_time.description = Hours of bypass open
|
||||
channel-type.comfoair.chimney_state.label = Chimney Control State
|
||||
channel-type.comfoair.chimney_state.description = State of the chimney control
|
||||
channel-type.comfoair.chimney_state.state.option.ON = Active
|
||||
channel-type.comfoair.chimney_state.state.option.OFF = Inactive
|
||||
channel-type.comfoair.cookerhood_delay.label = Cookerhood Delay (P20)
|
||||
channel-type.comfoair.cookerhood_delay.description = End delay for cooker hood control (min)
|
||||
channel-type.comfoair.cookerhood_delay.description = End delay for cooker hood control (uses minutes internally)
|
||||
channel-type.comfoair.cookerhood_speed.label = Cookerhood Speed Up (%)
|
||||
channel-type.comfoair.cookerhood_speed.description = Speed up of the cookerhood
|
||||
channel-type.comfoair.cookerhood_state.label = Cookerhood State
|
||||
channel-type.comfoair.cookerhood_state.description = State of the cookerhood control
|
||||
channel-type.comfoair.cookerhood_state.state.option.ON = Active
|
||||
channel-type.comfoair.cookerhood_state.state.option.OFF = Inactive
|
||||
channel-type.comfoair.cookerhood_temperature.label = Cookerhood Temperature
|
||||
channel-type.comfoair.cookerhood_temperature.description = Temperature of cookerhood sensor
|
||||
channel-type.comfoair.enthalpy_humidity.label = Enthalpy Sensor Humidity
|
||||
|
@ -118,6 +132,8 @@ channel-type.comfoair.enthalpy_level.label = Enthalpy Sensor Level
|
|||
channel-type.comfoair.enthalpy_level.description = Level of the enthalpy sensor
|
||||
channel-type.comfoair.enthalpy_state.label = Enthalpy State
|
||||
channel-type.comfoair.enthalpy_state.description = State of the enthalpy module
|
||||
channel-type.comfoair.enthalpy_state.state.option.ON = Active
|
||||
channel-type.comfoair.enthalpy_state.state.option.OFF = Inactive
|
||||
channel-type.comfoair.enthalpy_temperature.label = Enthalpy Sensor Temperature
|
||||
channel-type.comfoair.enthalpy_temperature.description = Temperature of the enthalpy sensor
|
||||
channel-type.comfoair.enthalpy_time.label = Enthalpy Sensor Timer
|
||||
|
@ -148,7 +164,7 @@ channel-type.comfoair.fan_in_2.description = Fan level 2 performance (%) of inco
|
|||
channel-type.comfoair.fan_in_3.label = Fan In Level 3
|
||||
channel-type.comfoair.fan_in_3.description = Fan level 3 performance (%) of incoming fan
|
||||
channel-type.comfoair.fan_in_RPM.label = Fan In (rpm)
|
||||
channel-type.comfoair.fan_in_RPM.description = Current absolute speed (rpm) of incoming fan
|
||||
channel-type.comfoair.fan_in_RPM.description = Current rotational speed of incoming fan
|
||||
channel-type.comfoair.fan_in_percent.label = Fan In (%)
|
||||
channel-type.comfoair.fan_in_percent.description = Current relative speed (%) of incoming fan
|
||||
channel-type.comfoair.fan_out_0.label = Fan Out Level 0 (away)
|
||||
|
@ -160,7 +176,7 @@ channel-type.comfoair.fan_out_2.description = Fan level 2 performance (%) of out
|
|||
channel-type.comfoair.fan_out_3.label = Fan Out Level 3
|
||||
channel-type.comfoair.fan_out_3.description = Fan level 3 performance (%) of outgoing fan
|
||||
channel-type.comfoair.fan_out_RPM.label = Fan Out (rpm)
|
||||
channel-type.comfoair.fan_out_RPM.description = Current absolute speed (rpm) of outgoing fan
|
||||
channel-type.comfoair.fan_out_RPM.description = Current rotational speed of outgoing fan
|
||||
channel-type.comfoair.fan_out_percent.label = Fan Out (%)
|
||||
channel-type.comfoair.fan_out_percent.description = Current relative speed (%) of outgoing fan
|
||||
channel-type.comfoair.filter_error.label = Filter Error
|
||||
|
@ -171,15 +187,19 @@ channel-type.comfoair.filter_reset.label = Filter Reset
|
|||
channel-type.comfoair.filter_reset.description = Reset filter uptime
|
||||
channel-type.comfoair.filter_reset.command.option.1 = Reset
|
||||
channel-type.comfoair.filter_weeks.label = Filter Period (P24)
|
||||
channel-type.comfoair.filter_weeks.description = Usage period until filter pollution message (weeks)
|
||||
channel-type.comfoair.filter_weeks.description = Usage period until filter pollution message (uses full weeks internally)
|
||||
channel-type.comfoair.freeze_time.label = Antifrost Duration
|
||||
channel-type.comfoair.freeze_time.description = Uptime of antifrost
|
||||
channel-type.comfoair.frost_state.label = Antifrost State
|
||||
channel-type.comfoair.frost_state.description = State of the antifrost control
|
||||
channel-type.comfoair.frost_state.state.option.ON = Active
|
||||
channel-type.comfoair.frost_state.state.option.OFF = Inactive
|
||||
channel-type.comfoair.ghx_speed.label = GHX Speed Up (%)
|
||||
channel-type.comfoair.ghx_speed.description = Speed up of the geothermal heat exchanger
|
||||
channel-type.comfoair.ghx_state.label = Geothermal Heat exchanger State
|
||||
channel-type.comfoair.ghx_state.description = State of the geothermal heat exchanger valve (ON = open / OFF = closed)
|
||||
channel-type.comfoair.ghx_state.state.option.ON = Open
|
||||
channel-type.comfoair.ghx_state.state.option.OFF = Closed
|
||||
channel-type.comfoair.ghx_temperature.label = GHX Temperature
|
||||
channel-type.comfoair.ghx_temperature.description = Temperature of geothermal heat exchanger sensor
|
||||
channel-type.comfoair.ghx_temperature_high.label = GHX Temperature (high)
|
||||
|
@ -192,6 +212,8 @@ channel-type.comfoair.heater_power_I.label = Heater Power I-Parameter
|
|||
channel-type.comfoair.heater_power_I.description = Heater power I-parameter value
|
||||
channel-type.comfoair.heater_state.label = Heater State
|
||||
channel-type.comfoair.heater_state.description = State of the heater
|
||||
channel-type.comfoair.heater_state.state.option.ON = Active
|
||||
channel-type.comfoair.heater_state.state.option.OFF = Inactive
|
||||
channel-type.comfoair.heater_target_temperature.label = Heater Target Temperature
|
||||
channel-type.comfoair.heater_target_temperature.description = Target temperature of the heater
|
||||
channel-type.comfoair.heater_temperature.label = Heater Temperature
|
||||
|
@ -286,18 +308,29 @@ channel-type.comfoair.outdoor_temperature_out.label = Outdoor Temperature Outgoi
|
|||
channel-type.comfoair.outdoor_temperature_out.description = Outlet air temperature (outside)
|
||||
channel-type.comfoair.preheater_frost_protect.label = Frost Protection
|
||||
channel-type.comfoair.preheater_frost_protect.description = State of the frost protection
|
||||
channel-type.comfoair.preheater_frost_protect.state.option.ON = Active
|
||||
channel-type.comfoair.preheater_frost_protect.state.option.OFF = Inactive
|
||||
channel-type.comfoair.preheater_frost_time.label = Preheater Frost Time
|
||||
channel-type.comfoair.preheater_frost_time.description = Frost minutes
|
||||
channel-type.comfoair.preheater_frost_time.description = Frost time
|
||||
channel-type.comfoair.preheater_heating.label = Preheater
|
||||
channel-type.comfoair.preheater_heating.description = State of the preheater
|
||||
channel-type.comfoair.preheater_heating.state.option.ON = Active
|
||||
channel-type.comfoair.preheater_heating.state.option.OFF = Inactive
|
||||
channel-type.comfoair.preheater_safety.label = Preheater Frost Safety
|
||||
channel-type.comfoair.preheater_safety.description = Frost safety setting
|
||||
channel-type.comfoair.preheater_safety.state.option.0 = Extra-safe setting
|
||||
channel-type.comfoair.preheater_safety.state.option.1 = Safe setting
|
||||
channel-type.comfoair.preheater_safety.state.option.2 = Normal setting
|
||||
channel-type.comfoair.preheater_safety.state.option.3 = Economy setting
|
||||
channel-type.comfoair.preheater_time.label = Preheater Duration
|
||||
channel-type.comfoair.preheater_time.description = Uptime of preheater
|
||||
channel-type.comfoair.preheater_valve.label = Preheater Valve
|
||||
channel-type.comfoair.preheater_valve.description = State of the preheater valve
|
||||
channel-type.comfoair.preheater_valve.state.option.0 = Closed
|
||||
channel-type.comfoair.preheater_valve.state.option.1 = Open
|
||||
channel-type.comfoair.preheater_valve.state.option.2 = Unknown
|
||||
channel-type.comfoair.pulse_ventilation.label = Pulse Ventilation Period (P27)
|
||||
channel-type.comfoair.pulse_ventilation.description = Period for pulse ventilation (min)
|
||||
channel-type.comfoair.pulse_ventilation.description = Period for pulse ventilation (uses minutes internally)
|
||||
channel-type.comfoair.recu_size.label = Comfoair Size
|
||||
channel-type.comfoair.recu_size.description = Size of the ComfoAir (1 = big / 2 = small)
|
||||
channel-type.comfoair.recu_size.state.option.1 = Big
|
||||
|
@ -310,3 +343,5 @@ channel-type.comfoair.target_temperature.label = Target Temperature
|
|||
channel-type.comfoair.target_temperature.description = Target (comfort) temperature
|
||||
channel-type.comfoair.v_control_state.label = 0-10V Control State
|
||||
channel-type.comfoair.v_control_state.description = State of the 0-10V control
|
||||
channel-type.comfoair.v_control_state.state.option.ON = Active
|
||||
channel-type.comfoair.v_control_state.state.option.OFF = Inactive
|
||||
|
|
|
@ -41,6 +41,10 @@
|
|||
<channel-group id="resets" typeId="resets"/>
|
||||
</channel-groups>
|
||||
|
||||
<properties>
|
||||
<property name="thingTypeVersion">1</property>
|
||||
</properties>
|
||||
|
||||
<config-description-ref uri="thing-type:comfoair:serial"/>
|
||||
|
||||
</thing-type>
|
||||
|
@ -66,6 +70,11 @@
|
|||
<channel-group id="resets" typeId="resets"/>
|
||||
</channel-groups>
|
||||
|
||||
<properties>
|
||||
<property name="vendor">Zehnder</property>
|
||||
<property name="thingTypeVersion">1</property>
|
||||
</properties>
|
||||
|
||||
<config-description-ref uri="thing-type:comfoair:serial"/>
|
||||
|
||||
</thing-type>
|
||||
|
@ -409,6 +418,10 @@
|
|||
<label>Fan Level</label>
|
||||
<description>Fan level</description>
|
||||
<category>Number</category>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Level</tag>
|
||||
</tags>
|
||||
<state readOnly="false">
|
||||
<options>
|
||||
<option value="1">Away</option>
|
||||
|
@ -424,6 +437,10 @@
|
|||
<label>Target Temperature</label>
|
||||
<description>Target (comfort) temperature</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state min="12" max="28" step="0.5" pattern="%.1f %unit%" readOnly="false"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -540,19 +557,19 @@
|
|||
</channel-type>
|
||||
|
||||
<channel-type id="fan_in_RPM" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Frequency</item-type>
|
||||
<label>Fan In (rpm)</label>
|
||||
<description>Current absolute speed (rpm) of incoming fan</description>
|
||||
<description>Current rotational speed of incoming fan</description>
|
||||
<category>Number</category>
|
||||
<state readOnly="true"/>
|
||||
<state readOnly="true" pattern="%.0f rpm"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="fan_out_RPM" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Frequency</item-type>
|
||||
<label>Fan Out (rpm)</label>
|
||||
<description>Current absolute speed (rpm) of outgoing fan</description>
|
||||
<description>Current rotational speed of outgoing fan</description>
|
||||
<category>Number</category>
|
||||
<state readOnly="true"/>
|
||||
<state readOnly="true" pattern="%.0f rpm"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="outdoor_temperature_in">
|
||||
|
@ -560,6 +577,10 @@
|
|||
<label>Outdoor Temperature Incoming</label>
|
||||
<description>Intake air temperature (outside)</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -568,6 +589,10 @@
|
|||
<label>Outdoor Temperature Outgoing</label>
|
||||
<description>Outlet air temperature (outside)</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -576,6 +601,10 @@
|
|||
<label>Indoor Temperature Incoming</label>
|
||||
<description>Inlet air temperature (inside)</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -584,6 +613,10 @@
|
|||
<label>Indoor Temperature Outgoing</label>
|
||||
<description>Uptake air temperature (inside)</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -648,7 +681,15 @@
|
|||
<label>Chimney Control State</label>
|
||||
<description>State of the chimney control</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Active</option>
|
||||
<option value="OFF">Inactive</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bypass_state" advanced="true">
|
||||
|
@ -656,7 +697,15 @@
|
|||
<label>Bypass State</label>
|
||||
<description>State of the bypass (ON = open / OFF = closed)</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Open</option>
|
||||
<option value="OFF">Closed</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="ghx_state" advanced="true">
|
||||
|
@ -664,7 +713,15 @@
|
|||
<label>Geothermal Heat exchanger State</label>
|
||||
<description>State of the geothermal heat exchanger valve (ON = open / OFF = closed)</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Open</option>
|
||||
<option value="OFF">Closed</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="heater_state" advanced="true">
|
||||
|
@ -672,7 +729,15 @@
|
|||
<label>Heater State</label>
|
||||
<description>State of the heater</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Active</option>
|
||||
<option value="OFF">Inactive</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="v_control_state" advanced="true">
|
||||
|
@ -680,7 +745,15 @@
|
|||
<label>0-10V Control State</label>
|
||||
<description>State of the 0-10V control</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Active</option>
|
||||
<option value="OFF">Inactive</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="frost_state" advanced="true">
|
||||
|
@ -688,7 +761,15 @@
|
|||
<label>Antifrost State</label>
|
||||
<description>State of the antifrost control</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Active</option>
|
||||
<option value="OFF">Inactive</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="cookerhood_state" advanced="true">
|
||||
|
@ -696,7 +777,15 @@
|
|||
<label>Cookerhood State</label>
|
||||
<description>State of the cookerhood control</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Active</option>
|
||||
<option value="OFF">Inactive</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="enthalpy_state" advanced="true">
|
||||
|
@ -704,7 +793,15 @@
|
|||
<label>Enthalpy State</label>
|
||||
<description>State of the enthalpy module</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Active</option>
|
||||
<option value="OFF">Inactive</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="ghx_temperature" advanced="true">
|
||||
|
@ -712,6 +809,10 @@
|
|||
<label>GHX Temperature</label>
|
||||
<description>Temperature of geothermal heat exchanger sensor</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -720,6 +821,10 @@
|
|||
<label>Heater Temperature</label>
|
||||
<description>Temperature of heater sensor</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -728,6 +833,10 @@
|
|||
<label>Cookerhood Temperature</label>
|
||||
<description>Temperature of cookerhood sensor</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -736,7 +845,7 @@
|
|||
<label>Level 0 Duration</label>
|
||||
<description>Uptime at level 0 (away)</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||
<state readOnly="true" pattern="%.0f h"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="level1_time" advanced="true">
|
||||
|
@ -744,7 +853,7 @@
|
|||
<label>Level 1 Duration</label>
|
||||
<description>Uptime at level 1</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||
<state readOnly="true" pattern="%.0f h"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="level2_time" advanced="true">
|
||||
|
@ -752,7 +861,7 @@
|
|||
<label>Level 2 Duration</label>
|
||||
<description>Uptime at level 2</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||
<state readOnly="true" pattern="%.0f h"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="level3_time" advanced="true">
|
||||
|
@ -760,7 +869,7 @@
|
|||
<label>Level 3 Duration</label>
|
||||
<description>Uptime at level 3</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||
<state readOnly="true" pattern="%.0f h"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="freeze_time" advanced="true">
|
||||
|
@ -768,7 +877,7 @@
|
|||
<label>Antifrost Duration</label>
|
||||
<description>Uptime of antifrost</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||
<state readOnly="true" pattern="%.0f h"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="preheater_time" advanced="true">
|
||||
|
@ -776,7 +885,7 @@
|
|||
<label>Preheater Duration</label>
|
||||
<description>Uptime of preheater</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||
<state readOnly="true" pattern="%.0f h"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bypass_time" advanced="true">
|
||||
|
@ -784,7 +893,7 @@
|
|||
<label>Bypass Duration</label>
|
||||
<description>Hours of bypass open</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||
<state readOnly="true" pattern="%.0f h"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="filter_hours">
|
||||
|
@ -792,7 +901,7 @@
|
|||
<label>Filter Duration</label>
|
||||
<description>Uptime of the filter</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||
<state readOnly="true" pattern="%.0f h"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bypass_factor" advanced="true">
|
||||
|
@ -832,7 +941,16 @@
|
|||
<label>Preheater Valve</label>
|
||||
<description>State of the preheater valve</description>
|
||||
<category>Number</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="0">Closed</option>
|
||||
<option value="1">Open</option>
|
||||
<option value="2">Unknown</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="preheater_frost_protect" advanced="true">
|
||||
|
@ -840,7 +958,15 @@
|
|||
<label>Frost Protection</label>
|
||||
<description>State of the frost protection</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Active</option>
|
||||
<option value="OFF">Inactive</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="preheater_heating" advanced="true">
|
||||
|
@ -848,15 +974,23 @@
|
|||
<label>Preheater</label>
|
||||
<description>State of the preheater</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="ON">Active</option>
|
||||
<option value="OFF">Inactive</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="preheater_frost_time" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Preheater Frost Time</label>
|
||||
<description>Frost minutes</description>
|
||||
<category>Number</category>
|
||||
<state readOnly="true"/>
|
||||
<description>Frost time</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="preheater_safety" advanced="true">
|
||||
|
@ -864,7 +998,17 @@
|
|||
<label>Preheater Frost Safety</label>
|
||||
<description>Frost safety setting</description>
|
||||
<category>Number</category>
|
||||
<state readOnly="true"/>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true">
|
||||
<options>
|
||||
<option value="0">Extra-safe setting</option>
|
||||
<option value="1">Safe setting</option>
|
||||
<option value="2">Normal setting</option>
|
||||
<option value="3">Economy setting</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="ghx_temperature_low" advanced="true">
|
||||
|
@ -872,7 +1016,11 @@
|
|||
<label>GHX Temperature (low)</label>
|
||||
<description>Lower temperature of the geothermal heat exchanger</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state min="0" max="15" step="1" pattern="%.1f %unit%" readOnly="false"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="ghx_temperature_high" advanced="true">
|
||||
|
@ -880,7 +1028,11 @@
|
|||
<label>GHX Temperature (high)</label>
|
||||
<description>Upper temperature of the geothermal heat exchanger</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state min="10" max="25" step="1" pattern="%.1f %unit%" readOnly="false"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="ghx_speed" advanced="true">
|
||||
|
@ -888,7 +1040,7 @@
|
|||
<label>GHX Speed Up (%)</label>
|
||||
<description>Speed up of the geothermal heat exchanger</description>
|
||||
<category>Number</category>
|
||||
<state readOnly="true"/>
|
||||
<state min="0" max="99" step="1" pattern="%.0f %%" readOnly="false"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="heater_power" advanced="true">
|
||||
|
@ -912,7 +1064,11 @@
|
|||
<label>Heater Target Temperature</label>
|
||||
<description>Target temperature of the heater</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state min="5" max="40" step="1" pattern="%.1f %unit%" readOnly="false"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="cookerhood_speed" advanced="true">
|
||||
|
@ -928,6 +1084,10 @@
|
|||
<label>Enthalpy Sensor Temperature</label>
|
||||
<description>Temperature of the enthalpy sensor</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -936,6 +1096,10 @@
|
|||
<label>Enthalpy Sensor Humidity</label>
|
||||
<description>Humidity of the enthalpy sensor</description>
|
||||
<category>Humidity</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Humidity</tag>
|
||||
</tags>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
|
@ -948,11 +1112,11 @@
|
|||
</channel-type>
|
||||
|
||||
<channel-type id="enthalpy_time" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Enthalpy Sensor Timer</label>
|
||||
<description>Timer state of the enthalpy sensor</description>
|
||||
<category>Time</category>
|
||||
<state readOnly="true"/>
|
||||
<state readOnly="true" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="is_preheater" advanced="true">
|
||||
|
@ -1186,67 +1350,95 @@
|
|||
</channel-type>
|
||||
|
||||
<channel-type id="cookerhood_delay" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Cookerhood Delay (P20)</label>
|
||||
<description>End delay for cooker hood control (min)</description>
|
||||
<description>End delay for cooker hood control (uses minutes internally)</description>
|
||||
<category>Time</category>
|
||||
<state min="0" max="180" step="1" readOnly="false"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Duration</tag>
|
||||
</tags>
|
||||
<state min="0" max="180" step="1" readOnly="false" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bathroom_start_delay" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Bathroom Switch Start Delay (P21)</label>
|
||||
<description>Start delay for bathroom switch (min)</description>
|
||||
<description>Start delay for bathroom switch (uses minutes internally)</description>
|
||||
<category>Time</category>
|
||||
<state min="0" max="120" step="1" readOnly="false"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Duration</tag>
|
||||
</tags>
|
||||
<state min="0" max="120" step="1" readOnly="false" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bathroom_end_delay" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Bathroom Switch End Delay (P22)</label>
|
||||
<description>End delay for bathroom switch (min)</description>
|
||||
<description>End delay for bathroom switch (uses minutes internally)</description>
|
||||
<category>Time</category>
|
||||
<state min="0" max="120" step="1" readOnly="false"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Duration</tag>
|
||||
</tags>
|
||||
<state min="0" max="120" step="1" readOnly="false" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="L1_end_delay" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>L1 Switch End Delay (P23)</label>
|
||||
<description>End delay for L1 switch (min)</description>
|
||||
<description>End delay for L1 switch (uses minutes internally)</description>
|
||||
<category>Time</category>
|
||||
<state min="0" max="120" step="1" readOnly="false"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Duration</tag>
|
||||
</tags>
|
||||
<state min="0" max="120" step="1" readOnly="false" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="filter_weeks" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Filter Period (P24)</label>
|
||||
<description>Usage period until filter pollution message (weeks)</description>
|
||||
<description>Usage period until filter pollution message (uses full weeks internally)</description>
|
||||
<category>Time</category>
|
||||
<state min="10" max="26" step="1" readOnly="false"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Duration</tag>
|
||||
</tags>
|
||||
<state min="10" max="26" step="1" readOnly="false" pattern="%.0f week"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="RF_short_delay" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>RF Short Delay (P25)</label>
|
||||
<description>End delay (RF short actuation) for ventilation level 3 (min)</description>
|
||||
<description>End delay (RF short actuation) for ventilation level 3 (uses minutes internally)</description>
|
||||
<category>Time</category>
|
||||
<state min="1" max="20" step="1" readOnly="false"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Duration</tag>
|
||||
</tags>
|
||||
<state min="1" max="20" step="1" readOnly="false" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="RF_long_delay" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>RF Long Delay (P26)</label>
|
||||
<description>End delay (RF long actuation) for ventilation level 3 (min)</description>
|
||||
<description>End delay (RF long actuation) for ventilation level 3 (uses minutes internally)</description>
|
||||
<category>Time</category>
|
||||
<state min="1" max="120" step="1" readOnly="false"/>
|
||||
<state min="1" max="120" step="1" readOnly="false" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="pulse_ventilation" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Pulse Ventilation Period (P27)</label>
|
||||
<description>Period for pulse ventilation (min)</description>
|
||||
<description>Period for pulse ventilation (uses minutes internally)</description>
|
||||
<category>Time</category>
|
||||
<state min="0" max="120" step="1" readOnly="false"/>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Duration</tag>
|
||||
</tags>
|
||||
<state min="0" max="120" step="1" readOnly="false" pattern="%.0f min"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="is_analog" advanced="true">
|
||||
|
@ -1270,7 +1462,12 @@
|
|||
<label>Analog Input State</label>
|
||||
<description>State of analog input</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="false"/>
|
||||
<state readOnly="false">
|
||||
<options>
|
||||
<option value="OFF">Controlling</option>
|
||||
<option value="ON">Programming</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="RF_mode" advanced="true">
|
||||
|
@ -1278,7 +1475,12 @@
|
|||
<label>RF Input State</label>
|
||||
<description>State of RF input</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="false"/>
|
||||
<state readOnly="false">
|
||||
<options>
|
||||
<option value="OFF">Controlling</option>
|
||||
<option value="ON">Programming</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="analog_negative" advanced="true">
|
||||
|
@ -1286,7 +1488,12 @@
|
|||
<label>Analog Input Postive/Negative</label>
|
||||
<description>Postive/Negative state of analog input</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="false"/>
|
||||
<state readOnly="false">
|
||||
<options>
|
||||
<option value="OFF">Positive</option>
|
||||
<option value="ON">Negative</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="RF_negative" advanced="true">
|
||||
|
@ -1294,7 +1501,12 @@
|
|||
<label>RF Input Postive/Negative</label>
|
||||
<description>Postive/Negative state of RF input</description>
|
||||
<category>Switch</category>
|
||||
<state readOnly="false"/>
|
||||
<state readOnly="false">
|
||||
<options>
|
||||
<option value="OFF">Positive</option>
|
||||
<option value="ON">Negative</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="analog_volt" advanced="true">
|
||||
|
@ -1302,6 +1514,10 @@
|
|||
<label>Analog Input Voltage Level</label>
|
||||
<description>Voltage level of analog input</description>
|
||||
<category>Number</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Voltage</tag>
|
||||
</tags>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<update:update-descriptions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:update="https://openhab.org/schemas/update-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/update-description/v1.0.0 https://openhab.org/schemas/update-description-1.0.0.xsd">
|
||||
|
||||
<thing-type uid="comfoair:comfoair">
|
||||
|
||||
<instruction-set targetVersion="1">
|
||||
<update-channel id="fanInRPM" groupIds="ventilation">
|
||||
<type>comfoair:fan_in_RPM</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="fanOutRPM" groupIds="ventilation">
|
||||
<type>comfoair:fan_out_RPM</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="bathroomStartDelay" groupIds="menuP2">
|
||||
<type>comfoair:bathroom_start_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="bathroomEndDelay" groupIds="menuP2">
|
||||
<type>comfoair:bathroom_end_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="L1EndDelay" groupIds="menuP2">
|
||||
<type>comfoair:L1_end_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="pulseVentilation" groupIds="menuP2">
|
||||
<type>comfoair:pulse_ventilation</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="filterWeeks" groupIds="menuP2">
|
||||
<type>comfoair:filter_weeks</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="RFShortDelay" groupIds="menuP2">
|
||||
<type>comfoair:RF_short_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="RFLongDelay" groupIds="menuP2">
|
||||
<type>comfoair:RF_long_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="cookerhoodDelay" groupIds="menuP2">
|
||||
<type>comfoair:cookerhood_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="enthalpyTime" groupIds="enthalpy">
|
||||
<type>comfoair:enthalpy_time</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="preheaterFrostTime" groupIds="preheater">
|
||||
<type>comfoair:preheater_frost_time</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="preheaterSafety" groupIds="preheater">
|
||||
<type>comfoair:preheater_safety</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="ewtTemperatureLow" groupIds="ghx">
|
||||
<type>comfoair:ghx_temperature_low</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="ewtTemperatureHigh" groupIds="ghx">
|
||||
<type>comfoair:ghx_temperature_high</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="ewtSpeed" groupIds="ghx">
|
||||
<type>comfoair:ghx_speed</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="heaterTargetTemperature" groupIds="heater">
|
||||
<type>comfoair:heater_target_temperature</type>
|
||||
</update-channel>
|
||||
</instruction-set>
|
||||
|
||||
</thing-type>
|
||||
|
||||
<thing-type uid="comfoair:WHR930">
|
||||
|
||||
<instruction-set targetVersion="1">
|
||||
<update-channel id="fanInRPM" groupIds="ventilation">
|
||||
<type>comfoair:fan_in_RPM</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="fanOutRPM" groupIds="ventilation">
|
||||
<type>comfoair:fan_out_RPM</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="bathroomStartDelay" groupIds="menuP2">
|
||||
<type>comfoair:bathroom_start_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="bathroomEndDelay" groupIds="menuP2">
|
||||
<type>comfoair:bathroom_end_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="L1EndDelay" groupIds="menuP2">
|
||||
<type>comfoair:L1_end_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="filterWeeks" groupIds="menuP2">
|
||||
<type>comfoair:filter_weeks</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="RFShortDelay" groupIds="menuP2">
|
||||
<type>comfoair:RF_short_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="RFLongDelay" groupIds="menuP2">
|
||||
<type>comfoair:RF_long_delay</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="preheaterFrostTime" groupIds="preheater">
|
||||
<type>comfoair:preheater_frost_time</type>
|
||||
</update-channel>
|
||||
|
||||
<update-channel id="preheaterSafety" groupIds="preheater">
|
||||
<type>comfoair:preheater_safety</type>
|
||||
</update-channel>
|
||||
</instruction-set>
|
||||
|
||||
</thing-type>
|
||||
|
||||
</update:update-descriptions>
|
Loading…
Reference in New Issue