[ventaair] Add Air quality and service time channels (#11792)

* [ventaair] Add Air quality and service time channels

- also add value 4 for water level

Signed-off-by: Stefan Triller <github@stefantriller.de>
This commit is contained in:
Stefan Triller 2021-12-21 08:26:32 +01:00 committed by GitHub
parent 817de38683
commit df7552c92b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 43 additions and 2 deletions

View File

@ -41,6 +41,7 @@ public class VentaAirBindingConstants {
public static final String CHANNEL_AUTOMATIC = "automatic";
public static final String CHANNEL_TEMPERATURE = "temperature";
public static final String CHANNEL_HUMIDITY = "humidity";
public static final String CHANNEL_PM25 = "pm25";
public static final String CHANNEL_WATERLEVEL = "waterLevel";
public static final String CHANNEL_FAN_RPM = "fanRPM";
public static final String CHANNEL_CLEAN_MODE = "cleanMode";
@ -48,6 +49,7 @@ public class VentaAirBindingConstants {
public static final String CHANNEL_DISC_REPLACE_TIME = "discReplaceTime";
public static final String CHANNEL_CLEANING_TIME = "cleaningTime";
public static final String CHANNEL_TIMER_TIME_PASSED = "timerTimePassed";
public static final String CHANNEL_SERVICE_TIME = "serviceTime";
public static final int PORT = 48000;
}

View File

@ -38,6 +38,7 @@ import org.openhab.binding.ventaair.internal.message.dto.DeviceInfoMessage;
import org.openhab.binding.ventaair.internal.message.dto.Header;
import org.openhab.binding.ventaair.internal.message.dto.Info;
import org.openhab.binding.ventaair.internal.message.dto.Measurements;
import org.openhab.core.library.dimension.Density;
import org.openhab.core.library.types.DecimalType;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.library.types.QuantityType;
@ -275,6 +276,11 @@ public class VentaThingHandler extends BaseThingHandler {
updateState(VentaAirBindingConstants.CHANNEL_HUMIDITY, humidityState);
channelValueCache.put(VentaAirBindingConstants.CHANNEL_HUMIDITY, humidityState);
QuantityType<Density> pm25State = new QuantityType<>(measurements.getDust(),
Units.MICROGRAM_PER_CUBICMETRE);
updateState(VentaAirBindingConstants.CHANNEL_PM25, pm25State);
channelValueCache.put(VentaAirBindingConstants.CHANNEL_PM25, pm25State);
DecimalType waterLevelState = new DecimalType(measurements.getWaterLevel());
updateState(VentaAirBindingConstants.CHANNEL_WATERLEVEL, waterLevelState);
channelValueCache.put(VentaAirBindingConstants.CHANNEL_WATERLEVEL, waterLevelState);
@ -310,6 +316,10 @@ public class VentaThingHandler extends BaseThingHandler {
updateState(VentaAirBindingConstants.CHANNEL_TIMER_TIME_PASSED, timerTimePassedState);
channelValueCache.put(VentaAirBindingConstants.CHANNEL_TIMER_TIME_PASSED, timerTimePassedState);
QuantityType<Time> serviceTimeState = new QuantityType<Time>(info.getServiceT(), Units.MINUTE);
updateState(VentaAirBindingConstants.CHANNEL_SERVICE_TIME, serviceTimeState);
channelValueCache.put(VentaAirBindingConstants.CHANNEL_SERVICE_TIME, serviceTimeState);
updateProperties(info);
}

View File

@ -54,6 +54,9 @@ public class Info {
@SerializedName(value = "FilterT")
private int filterT;
@SerializedName(value = "ServiceT")
private int serviceT;
@SerializedName(value = "UVCOnT")
private int uvCOnT;
@ -110,6 +113,10 @@ public class Info {
return filterT;
}
public int getServiceT() {
return serviceT;
}
public int getUvCOnT() {
return uvCOnT;
}

View File

@ -28,7 +28,7 @@ public class Measurements {
private double humidity;
@SerializedName(value = "Dust")
private int dust;
private double dust;
@SerializedName(value = "WaterLevel")
private int waterLevel;
@ -44,7 +44,7 @@ public class Measurements {
return humidity;
}
public int getDust() {
public double getDust() {
return dust;
}

View File

@ -51,6 +51,10 @@ channel-type.ventaair.humidity.label = Humidity
channel-type.ventaair.humidity.description = Current Humidity
channel-type.ventaair.operationTime.label = Operation Time
channel-type.ventaair.operationTime.description = Operation Time since the device was first started (in hours)
channel-type.ventaair.pm25.label = Air Quality
channel-type.ventaair.pm25.description = Current Air Quality measured in PM 2.5
channel-type.ventaair.serviceTime.label = Service Time
channel-type.ventaair.serviceTime.description = Service time in minutes
channel-type.ventaair.sleepMode.label = Sleep Mode
channel-type.ventaair.sleepMode.description = Sleep Mode
channel-type.ventaair.targetHumidity.label = Target Humidity
@ -82,3 +86,4 @@ channel-type.ventaair.waterLevel.state.option.0 = Critical
channel-type.ventaair.waterLevel.state.option.1 = Refill tank
channel-type.ventaair.waterLevel.state.option.2 = OK
channel-type.ventaair.waterLevel.state.option.3 = Full
channel-type.ventaair.waterLevel.state.option.4 = Max

View File

@ -103,6 +103,13 @@
<state pattern="%.1f %unit%" readOnly="true"/>
</channel-type>
<channel-type id="pm25">
<item-type>Number:Density</item-type>
<label>Air Quality</label>
<description>Current Air Quality measured in PM 2.5</description>
<state pattern="%.1f %unit%" readOnly="true"/>
</channel-type>
<channel-type id="waterLevel">
<item-type>Number</item-type>
<label>Water Level</label>
@ -113,6 +120,7 @@
<option value="1">Refill tank</option>
<option value="2">OK</option>
<option value="3">Full</option>
<option value="4">Max</option>
</options>
</state>
</channel-type>
@ -152,4 +160,11 @@
<state pattern="%d" readOnly="true"/>
</channel-type>
<channel-type id="serviceTime">
<item-type>Number:Time</item-type>
<label>Service Time</label>
<description>Service time in minutes</description>
<state pattern="%d" readOnly="true"/>
</channel-type>
</thing:thing-descriptions>

View File

@ -49,6 +49,7 @@
<channel id="automatic" typeId="automatic"/>
<channel id="temperature" typeId="temperature"/>
<channel id="humidity" typeId="humidity"/>
<channel id="pm25" typeId="pm25"/>
<channel id="waterLevel" typeId="waterLevel"/>
<channel id="fanRPM" typeId="fanRPM"/>
<channel id="cleanMode" typeId="cleanMode"/>
@ -56,6 +57,7 @@
<channel id="operationTime" typeId="operationTime"/>
<channel id="discReplaceTime" typeId="discReplaceTime"/>
<channel id="cleaningTime" typeId="cleaningTime"/>
<channel id="serviceTime" typeId="serviceTime"/>
</channels>
<representation-property>macAddress</representation-property>