Add operation channels (#18582)
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>pull/18584/head
parent
6996dc8b57
commit
7c918e7a21
|
@ -38,12 +38,14 @@ These are the available configuration parameters:
|
||||||
| humidity | humidity | Number:Dimensionless | RO | Current relative humidity measured by the air unit |
|
| humidity | humidity | Number:Dimensionless | RO | Current relative humidity measured by the air unit |
|
||||||
| bypass | recuperator | Switch | RW | Disables the heat exchange. Useful in summer when room temperature is above target and outside temperature is below target. |
|
| bypass | recuperator | Switch | RW | Disables the heat exchange. Useful in summer when room temperature is above target and outside temperature is below target. |
|
||||||
| defrost | recuperator | Switch | RO | Defrost status. Active when low outdoor temperatures pose a risk of ice formation in the heat exchanger. |
|
| defrost | recuperator | Switch | RO | Defrost status. Active when low outdoor temperatures pose a risk of ice formation in the heat exchanger. |
|
||||||
| supply_temp | recuperator | Number | RO | Temperature of air which is passed to the rooms |
|
| supply_temp | recuperator | Number:Temperature | RO | Temperature of air which is passed to the rooms |
|
||||||
| extract_temp | recuperator | Number | RO | Temperature of the air as extracted from the rooms |
|
| extract_temp | recuperator | Number:Temperature | RO | Temperature of the air as extracted from the rooms |
|
||||||
| exhaust_temp | recuperator | Number | RO | Temperature of the air when pushed outside |
|
| exhaust_temp | recuperator | Number:Temperature | RO | Temperature of the air when pushed outside |
|
||||||
| battery_life | service | Number | RO | Remaining Air Dial Battery Level (percentage) |
|
| battery_life | service | Number | RO | Remaining Air Dial Battery Level (percentage) |
|
||||||
| filter_life | service | Number | RO | Remaining life of filter until exchange is necessary (percentage) |
|
| filter_life | service | Number | RO | Remaining life of filter until exchange is necessary (percentage) |
|
||||||
| filter_period | service | Number | RW | Number of months between filter replacements (between 3 and 12). This value affects calculation of filter_life by the unit, and might get overwritten by Air Dial or Link CC Controller. |
|
| filter_period | service | Number | RW | Number of months between filter replacements (between 3 and 12). This value affects calculation of filter_life by the unit, and might get overwritten by Air Dial or Link CC Controller. |
|
||||||
|
| power_cycles | operation | Number | RO | The total count of power cycles, indicating how many times the unit has been turned off and on again. |
|
||||||
|
| operating_hours | operation | Number:Time | RO | The number of hours the unit has been in operation (in minutes). |
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ import org.eclipse.jdt.annotation.Nullable;
|
||||||
public enum Channel {
|
public enum Channel {
|
||||||
|
|
||||||
// Main Channels
|
// Main Channels
|
||||||
|
|
||||||
CHANNEL_CURRENT_TIME("current_time", ChannelGroup.MAIN, DanfossAirUnit::getCurrentTime),
|
CHANNEL_CURRENT_TIME("current_time", ChannelGroup.MAIN, DanfossAirUnit::getCurrentTime),
|
||||||
CHANNEL_MODE("mode", ChannelGroup.MAIN, DanfossAirUnit::getMode, DanfossAirUnit::setMode),
|
CHANNEL_MODE("mode", ChannelGroup.MAIN, DanfossAirUnit::getMode, DanfossAirUnit::setMode),
|
||||||
CHANNEL_MANUAL_FAN_STEP("manual_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getManualFanStep,
|
CHANNEL_MANUAL_FAN_STEP("manual_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getManualFanStep,
|
||||||
|
@ -34,7 +33,6 @@ public enum Channel {
|
||||||
CHANNEL_SUPPLY_FAN_SPEED("supply_fan_speed", ChannelGroup.MAIN, DanfossAirUnit::getSupplyFanSpeed),
|
CHANNEL_SUPPLY_FAN_SPEED("supply_fan_speed", ChannelGroup.MAIN, DanfossAirUnit::getSupplyFanSpeed),
|
||||||
CHANNEL_EXTRACT_FAN_STEP("extract_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getExtractFanStep),
|
CHANNEL_EXTRACT_FAN_STEP("extract_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getExtractFanStep),
|
||||||
CHANNEL_SUPPLY_FAN_STEP("supply_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getSupplyFanStep),
|
CHANNEL_SUPPLY_FAN_STEP("supply_fan_step", ChannelGroup.MAIN, DanfossAirUnit::getSupplyFanStep),
|
||||||
|
|
||||||
CHANNEL_BOOST("boost", ChannelGroup.MAIN, DanfossAirUnit::getBoost, DanfossAirUnit::setBoost),
|
CHANNEL_BOOST("boost", ChannelGroup.MAIN, DanfossAirUnit::getBoost, DanfossAirUnit::setBoost),
|
||||||
CHANNEL_NIGHT_COOLING("night_cooling", ChannelGroup.MAIN, DanfossAirUnit::getNightCooling,
|
CHANNEL_NIGHT_COOLING("night_cooling", ChannelGroup.MAIN, DanfossAirUnit::getNightCooling,
|
||||||
DanfossAirUnit::setNightCooling),
|
DanfossAirUnit::setNightCooling),
|
||||||
|
@ -48,18 +46,22 @@ public enum Channel {
|
||||||
// Humidity Channel
|
// Humidity Channel
|
||||||
CHANNEL_HUMIDITY("humidity", ChannelGroup.HUMIDITY, DanfossAirUnit::getHumidity),
|
CHANNEL_HUMIDITY("humidity", ChannelGroup.HUMIDITY, DanfossAirUnit::getHumidity),
|
||||||
|
|
||||||
// recuperator channels
|
// Recuperator channels
|
||||||
CHANNEL_BYPASS("bypass", ChannelGroup.RECUPERATOR, DanfossAirUnit::getBypass, DanfossAirUnit::setBypass),
|
CHANNEL_BYPASS("bypass", ChannelGroup.RECUPERATOR, DanfossAirUnit::getBypass, DanfossAirUnit::setBypass),
|
||||||
CHANNEL_DEFROST("defrost", ChannelGroup.RECUPERATOR, DanfossAirUnit::getDefrostStatus),
|
CHANNEL_DEFROST("defrost", ChannelGroup.RECUPERATOR, DanfossAirUnit::getDefrostStatus),
|
||||||
CHANNEL_SUPPLY_TEMP("supply_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getSupplyTemperature),
|
CHANNEL_SUPPLY_TEMP("supply_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getSupplyTemperature),
|
||||||
CHANNEL_EXTRACT_TEMP("extract_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getExtractTemperature),
|
CHANNEL_EXTRACT_TEMP("extract_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getExtractTemperature),
|
||||||
CHANNEL_EXHAUST_TEMP("exhaust_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getExhaustTemperature),
|
CHANNEL_EXHAUST_TEMP("exhaust_temp", ChannelGroup.RECUPERATOR, DanfossAirUnit::getExhaustTemperature),
|
||||||
|
|
||||||
// service channels
|
// Service channels
|
||||||
CHANNEL_BATTERY_LIFE("battery_life", ChannelGroup.SERVICE, DanfossAirUnit::getBatteryLife),
|
CHANNEL_BATTERY_LIFE("battery_life", ChannelGroup.SERVICE, DanfossAirUnit::getBatteryLife),
|
||||||
CHANNEL_FILTER_LIFE("filter_life", ChannelGroup.SERVICE, DanfossAirUnit::getFilterLife),
|
CHANNEL_FILTER_LIFE("filter_life", ChannelGroup.SERVICE, DanfossAirUnit::getFilterLife),
|
||||||
CHANNEL_FILTER_PERIOD("filter_period", ChannelGroup.SERVICE, DanfossAirUnit::getFilterPeriod,
|
CHANNEL_FILTER_PERIOD("filter_period", ChannelGroup.SERVICE, DanfossAirUnit::getFilterPeriod,
|
||||||
DanfossAirUnit::setFilterPeriod);
|
DanfossAirUnit::setFilterPeriod),
|
||||||
|
|
||||||
|
// Operation channels
|
||||||
|
CHANNEL_POWER_CYCLES("power_cycles", ChannelGroup.OPERATION, DanfossAirUnit::getPowerCycles),
|
||||||
|
CHANNEL_OPERATING_HOURS("operating_hours", ChannelGroup.OPERATION, DanfossAirUnit::getOperationTime);
|
||||||
|
|
||||||
private final String channelName;
|
private final String channelName;
|
||||||
private final ChannelGroup group;
|
private final ChannelGroup group;
|
||||||
|
|
|
@ -25,7 +25,8 @@ public enum ChannelGroup {
|
||||||
TEMPS("temps"),
|
TEMPS("temps"),
|
||||||
HUMIDITY("humidity"),
|
HUMIDITY("humidity"),
|
||||||
RECUPERATOR("recuperator"),
|
RECUPERATOR("recuperator"),
|
||||||
SERVICE("service");
|
SERVICE("service"),
|
||||||
|
OPERATION("operation");
|
||||||
|
|
||||||
private final String groupName;
|
private final String groupName;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ import java.time.ZonedDateTime;
|
||||||
import javax.measure.quantity.Dimensionless;
|
import javax.measure.quantity.Dimensionless;
|
||||||
import javax.measure.quantity.Frequency;
|
import javax.measure.quantity.Frequency;
|
||||||
import javax.measure.quantity.Temperature;
|
import javax.measure.quantity.Temperature;
|
||||||
|
import javax.measure.quantity.Time;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.openhab.binding.danfossairunit.internal.protocol.Parameter;
|
import org.openhab.binding.danfossairunit.internal.protocol.Parameter;
|
||||||
|
@ -257,6 +258,14 @@ public class DanfossAirUnit {
|
||||||
return new DateTimeType(timestamp);
|
return new DateTimeType(timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public QuantityType<Time> getOperationTime() throws IOException, UnexpectedResponseValueException {
|
||||||
|
return new QuantityType<>(getInt(Parameter.OPERATION_TIME), Units.MINUTE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DecimalType getPowerCycles() throws IOException {
|
||||||
|
return new DecimalType(BigDecimal.valueOf(getByte(Parameter.POWER_CYCLE_COUNTER)));
|
||||||
|
}
|
||||||
|
|
||||||
public PercentType setManualFanStep(Command cmd) throws IOException {
|
public PercentType setManualFanStep(Command cmd) throws IOException {
|
||||||
return setPercentTypeRegister(cmd, Parameter.MANUAL_FAN_SPEED_STEP);
|
return setPercentTypeRegister(cmd, Parameter.MANUAL_FAN_SPEED_STEP);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public enum Parameter {
|
public enum Parameter {
|
||||||
CCM_SERIAL_NUMBER(Endpoint.ENDPOINT_0, Flag.READ, (short) 22),
|
CCM_SERIAL_NUMBER(Endpoint.ENDPOINT_0, Flag.READ, (short) 22),
|
||||||
|
OPERATION_TIME(Endpoint.ENDPOINT_0, Flag.READ, (short) 992),
|
||||||
ROOM_TEMPERATURE_CALCULATED(Endpoint.ENDPOINT_0, Flag.READ, (short) 5270),
|
ROOM_TEMPERATURE_CALCULATED(Endpoint.ENDPOINT_0, Flag.READ, (short) 5270),
|
||||||
ROOM_TEMPERATURE(Endpoint.ENDPOINT_1, Flag.READ, (short) 768),
|
ROOM_TEMPERATURE(Endpoint.ENDPOINT_1, Flag.READ, (short) 768),
|
||||||
BATTERY_LIFE(Endpoint.ENDPOINT_1, Flag.READ, (short) 783),
|
BATTERY_LIFE(Endpoint.ENDPOINT_1, Flag.READ, (short) 783),
|
||||||
|
@ -40,6 +41,7 @@ public enum Parameter {
|
||||||
UNIT_HARDWARE_REVISION(Endpoint.ENDPOINT_4, Flag.READ, (short) 34),
|
UNIT_HARDWARE_REVISION(Endpoint.ENDPOINT_4, Flag.READ, (short) 34),
|
||||||
UNIT_SOFTWARE_REVISION(Endpoint.ENDPOINT_4, Flag.READ, (short) 35),
|
UNIT_SOFTWARE_REVISION(Endpoint.ENDPOINT_4, Flag.READ, (short) 35),
|
||||||
UNIT_SERIAL(Endpoint.ENDPOINT_4, Flag.READ, (short) 37),
|
UNIT_SERIAL(Endpoint.ENDPOINT_4, Flag.READ, (short) 37),
|
||||||
|
POWER_CYCLE_COUNTER(Endpoint.ENDPOINT_4, Flag.READ, (short) 5125),
|
||||||
SUPPLY_FAN_STEP(Endpoint.ENDPOINT_4, Flag.READ, (short) 5160),
|
SUPPLY_FAN_STEP(Endpoint.ENDPOINT_4, Flag.READ, (short) 5160),
|
||||||
EXTRACT_FAN_STEP(Endpoint.ENDPOINT_4, Flag.READ, (short) 5161),
|
EXTRACT_FAN_STEP(Endpoint.ENDPOINT_4, Flag.READ, (short) 5161),
|
||||||
SUPPLY_FAN_SPEED(Endpoint.ENDPOINT_4, Flag.READ, (short) 5200),
|
SUPPLY_FAN_SPEED(Endpoint.ENDPOINT_4, Flag.READ, (short) 5200),
|
||||||
|
|
|
@ -25,6 +25,7 @@ channel-group-type.danfossairunit.humidity.label = Humidity
|
||||||
channel-group-type.danfossairunit.humidity.channel.humidity.label = Humidity
|
channel-group-type.danfossairunit.humidity.channel.humidity.label = Humidity
|
||||||
channel-group-type.danfossairunit.humidity.channel.humidity.description = Current relative humidity measured by the air unit
|
channel-group-type.danfossairunit.humidity.channel.humidity.description = Current relative humidity measured by the air unit
|
||||||
channel-group-type.danfossairunit.main.label = Mode and Fan Speeds
|
channel-group-type.danfossairunit.main.label = Mode and Fan Speeds
|
||||||
|
channel-group-type.danfossairunit.operation.label = Operation
|
||||||
channel-group-type.danfossairunit.recuperator.label = Recuperator
|
channel-group-type.danfossairunit.recuperator.label = Recuperator
|
||||||
channel-group-type.danfossairunit.recuperator.description = Heat exchaning device in the Air Unit
|
channel-group-type.danfossairunit.recuperator.description = Heat exchaning device in the Air Unit
|
||||||
channel-group-type.danfossairunit.recuperator.channel.exhaust_temp.label = Exhaust Air Temperature
|
channel-group-type.danfossairunit.recuperator.channel.exhaust_temp.label = Exhaust Air Temperature
|
||||||
|
@ -72,6 +73,10 @@ channel-type.danfossairunit.mode.state.option.MANUAL = Manual
|
||||||
channel-type.danfossairunit.mode.state.option.OFF = Off
|
channel-type.danfossairunit.mode.state.option.OFF = Off
|
||||||
channel-type.danfossairunit.night-cooling.label = Night Cooling
|
channel-type.danfossairunit.night-cooling.label = Night Cooling
|
||||||
channel-type.danfossairunit.night-cooling.description = Enables night cooling
|
channel-type.danfossairunit.night-cooling.description = Enables night cooling
|
||||||
|
channel-type.danfossairunit.operating-hours.label = Operating Hours
|
||||||
|
channel-type.danfossairunit.operating-hours.description = The number of hours the unit has been in operation (in minutes)
|
||||||
|
channel-type.danfossairunit.power-cycles.label = Power Cycles
|
||||||
|
channel-type.danfossairunit.power-cycles.description = The total count of power cycles, indicating how many times the unit has been turned off and on again
|
||||||
channel-type.danfossairunit.supplyFanSpeed.label = Supply Fan Speed
|
channel-type.danfossairunit.supplyFanSpeed.label = Supply Fan Speed
|
||||||
channel-type.danfossairunit.supplyFanSpeed.description = Current rotation of the fan supplying air to the rooms
|
channel-type.danfossairunit.supplyFanSpeed.description = Current rotation of the fan supplying air to the rooms
|
||||||
channel-type.danfossairunit.supplyFanStep.label = Supply Fan Step
|
channel-type.danfossairunit.supplyFanStep.label = Supply Fan Step
|
||||||
|
|
|
@ -15,11 +15,12 @@
|
||||||
<channel-group id="humidity" typeId="humidity"/>
|
<channel-group id="humidity" typeId="humidity"/>
|
||||||
<channel-group id="recuperator" typeId="recuperator"/>
|
<channel-group id="recuperator" typeId="recuperator"/>
|
||||||
<channel-group id="service" typeId="service"/>
|
<channel-group id="service" typeId="service"/>
|
||||||
|
<channel-group id="operation" typeId="operation"/>
|
||||||
</channel-groups>
|
</channel-groups>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<property name="vendor">Danfoss</property>
|
<property name="vendor">Danfoss</property>
|
||||||
<property name="thingTypeVersion">4</property>
|
<property name="thingTypeVersion">5</property>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<representation-property>serialNumber</representation-property>
|
<representation-property>serialNumber</representation-property>
|
||||||
|
@ -127,6 +128,14 @@
|
||||||
</channels>
|
</channels>
|
||||||
</channel-group-type>
|
</channel-group-type>
|
||||||
|
|
||||||
|
<channel-group-type id="operation">
|
||||||
|
<label>Operation</label>
|
||||||
|
<channels>
|
||||||
|
<channel id="power_cycles" typeId="power-cycles"/>
|
||||||
|
<channel id="operating_hours" typeId="operating-hours"/>
|
||||||
|
</channels>
|
||||||
|
</channel-group-type>
|
||||||
|
|
||||||
<!--Channel Definitions -->
|
<!--Channel Definitions -->
|
||||||
<channel-type id="currentTime">
|
<channel-type id="currentTime">
|
||||||
<item-type>DateTime</item-type>
|
<item-type>DateTime</item-type>
|
||||||
|
@ -238,6 +247,7 @@
|
||||||
<category>Temperature</category>
|
<category>Temperature</category>
|
||||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="defrost" advanced="true">
|
<channel-type id="defrost" advanced="true">
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Defrost</label>
|
<label>Defrost</label>
|
||||||
|
@ -245,4 +255,19 @@
|
||||||
<state readOnly="true"/>
|
<state readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="power-cycles">
|
||||||
|
<item-type>Number</item-type>
|
||||||
|
<label>Power Cycles</label>
|
||||||
|
<description>The total count of power cycles, indicating how many times the unit has been turned off and on again</description>
|
||||||
|
<state readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="operating-hours">
|
||||||
|
<item-type unitHint="min">Number:Time</item-type>
|
||||||
|
<label>Operating Hours</label>
|
||||||
|
<description>The number of hours the unit has been in operation (in minutes)</description>
|
||||||
|
<category>Time</category>
|
||||||
|
<state pattern="%1$tdd %1$tHh %1$tMm" readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
</thing:thing-descriptions>
|
</thing:thing-descriptions>
|
||||||
|
|
|
@ -79,6 +79,15 @@
|
||||||
</update-channel>
|
</update-channel>
|
||||||
</instruction-set>
|
</instruction-set>
|
||||||
|
|
||||||
|
<instruction-set targetVersion="5">
|
||||||
|
<add-channel id="power_cycles" groupIds="operation">
|
||||||
|
<type>danfossairunit:power-cycles</type>
|
||||||
|
</add-channel>
|
||||||
|
<add-channel id="operating_hours" groupIds="operation">
|
||||||
|
<type>danfossairunit:operating-hours</type>
|
||||||
|
</add-channel>
|
||||||
|
</instruction-set>
|
||||||
|
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|
||||||
</update:update-descriptions>
|
</update:update-descriptions>
|
||||||
|
|
Loading…
Reference in New Issue