diff --git a/bundles/org.openhab.binding.danfossairunit/README.md b/bundles/org.openhab.binding.danfossairunit/README.md
index 669d08e2827dd..7763c732333cb 100644
--- a/bundles/org.openhab.binding.danfossairunit/README.md
+++ b/bundles/org.openhab.binding.danfossairunit/README.md
@@ -41,6 +41,7 @@ These are the available configuration parameters:
| exhaust_temp | recuperator | Number | RO | Temperature of the air when pushed outside |
| 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_period | service | Number | RW | Number of months between filter replacements (between 3 and 12) |
## Full Example
diff --git a/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/Channel.java b/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/Channel.java
index ea77d6baf9e26..4aaeeb2b7c6b5 100644
--- a/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/Channel.java
+++ b/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/Channel.java
@@ -59,7 +59,9 @@ public enum Channel {
// service channels
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,
+ DanfossAirUnit::setFilterPeriod);
private final String channelName;
private final ChannelGroup group;
diff --git a/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/Commands.java b/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/Commands.java
index ba98872a2afb8..752458d031993 100644
--- a/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/Commands.java
+++ b/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/Commands.java
@@ -57,6 +57,7 @@ public class Commands {
public static byte[] EXHAUST_TEMPERATURE = { 0x14, 0x75 };
public static byte[] BATTERY_LIFE = { 0x03, 0x0f };
public static byte[] FILTER_LIFE = { 0x14, 0x6a };
+ public static byte[] FILTER_PERIOD = { 0x14, 0x69 };
public static byte[] CURRENT_TIME = { 0x15, (byte) 0xe0 };
public static byte[] AWAY_TO = { 0x15, 0x20 };
public static byte[] AWAY_FROM = { 0x15, 0x21 };
diff --git a/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/DanfossAirUnit.java b/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/DanfossAirUnit.java
index 0e3646281ed17..80a8e3271d087 100644
--- a/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/DanfossAirUnit.java
+++ b/bundles/org.openhab.binding.danfossairunit/src/main/java/org/openhab/binding/danfossairunit/internal/DanfossAirUnit.java
@@ -216,6 +216,14 @@ public DecimalType getFilterLife() throws IOException {
return new DecimalType(BigDecimal.valueOf(asPercentByte(getByte(REGISTER_1_READ, FILTER_LIFE))));
}
+ public DecimalType getFilterPeriod() throws IOException {
+ return new DecimalType(BigDecimal.valueOf(getByte(REGISTER_1_READ, FILTER_PERIOD)));
+ }
+
+ public DecimalType setFilterPeriod(Command cmd) throws IOException {
+ return setNumberTypeRegister(cmd, FILTER_PERIOD);
+ }
+
public DateTimeType getCurrentTime() throws IOException, UnexpectedResponseValueException {
ZonedDateTime timestamp = getTimestamp(REGISTER_1_READ, CURRENT_TIME);
return new DateTimeType(timestamp);
@@ -225,6 +233,14 @@ public PercentType setManualFanStep(Command cmd) throws IOException {
return setPercentTypeRegister(cmd, MANUAL_FAN_SPEED_STEP);
}
+ private DecimalType setNumberTypeRegister(Command cmd, byte[] register) throws IOException {
+ if (cmd instanceof DecimalType) {
+ byte value = (byte) ((((DecimalType) cmd).intValue()));
+ set(REGISTER_1_WRITE, register, value);
+ }
+ return new DecimalType(BigDecimal.valueOf(getByte(REGISTER_1_READ, register)));
+ }
+
private PercentType setPercentTypeRegister(Command cmd, byte[] register) throws IOException {
if (cmd instanceof PercentType) {
byte value = (byte) ((((PercentType) cmd).intValue() + 5) / 10);
diff --git a/bundles/org.openhab.binding.danfossairunit/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.danfossairunit/src/main/resources/OH-INF/thing/thing-types.xml
index fe22f1e907b94..11e5555762a87 100644
--- a/bundles/org.openhab.binding.danfossairunit/src/main/resources/OH-INF/thing/thing-types.xml
+++ b/bundles/org.openhab.binding.danfossairunit/src/main/resources/OH-INF/thing/thing-types.xml
@@ -124,6 +124,7 @@
Remaining life of filter until exchange is necessary
+
@@ -190,6 +191,12 @@
Fan
+
+ Number
+
+ Number of months between filter replacements
+
+
Number