Updated external content (Jenkins build 931)

pull/1839/head
openHAB Build Server 2022-05-08 04:48:51 +00:00
parent 621fe74601
commit 12380c947e
6 changed files with 668 additions and 1 deletions

File diff suppressed because one or more lines are too long

View File

@ -137,6 +137,7 @@ Advanced parameters
| `timeBetweenTransactionsMillis` | | integer | `60` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
| `timeBetweenReconnectMillis` | | integer | `0` | How long to wait to before trying to establish a new connection after the previous one has been disconnected. In milliseconds. |
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
| `reconnectAfterMillis` | | integer | `0` | The connection is kept open at least the time specified here. Value of zero means that connection is disconnected after every MODBUS transaction. In milliseconds. |
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means that system/OS default is respected. In milliseconds. |
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
@ -173,6 +174,7 @@ Advanced parameters
| `flowControlOut` | | text | `"none"` | Type of flow control for sending. Valid values are: `"none"`, `"xon/xoff out"`, `"rts/cts out"`. |
| `timeBetweenTransactionsMillis` | | integer | `35` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means thatsystem/OS default is respected. In milliseconds. |
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |

View File

@ -0,0 +1,317 @@
---
id: vesync
label: VeSync
title: VeSync - Bindings
type: binding
description: "Its current support is for the Air Purifiers & Humidifer's branded as Levoit which utilise the VeSync app based on the V2 protocol."
since: 3x
install: manual
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# VeSync Binding
Its current support is for the Air Purifiers & Humidifer's branded as Levoit which utilise the VeSync app based on the V2 protocol.
### Verified Models
Air Filtering models supported are Core300S, Core400S.
Air Humidifier models supported are Dual 200S, Classic 300S, 600S.
### Awaiting User Verification Models
Air Filtering models supported are Core200S and Core600S.
Air Humidifier Classic 200S (Same as 300S without the nightlight from initial checks)
## Supported Things
This binding supports the follow thing types:
| Thing | Thing Type | Thing Type UID | Discovery | Description |
|----------------|------------|----------------|-----------|----------------------------------------------------------------------|
| Bridge | Bridge | bridge | Manual | A single connection to the VeSync API |
| Air Purifier | Thing | airPurifier | Automatic | A Air Purifier supporting V2 e.g. Core200S/Core300S or Core400S unit |
| Air Humidifier | Thing | airHumidifier | Automatic | A Air Humidifier supporting V2 e.g. Classic300S or 600s |
This binding was developed from the great work in the listed projects.
The only Air Filter unit it has been tested against is the Core400S unit, **I'm looking for others to confirm** my queries regarding **the Core200S and Core300S** units.
The ***Classic 300S Humidifier*** has been tested, and ***600S with current warm mode restrictions***.
## Discovery
Once the bridge is configured auto discovery will discover supported devices from the VeSync API.
## Thing Configuration
### Bridge configuration parameters
| Name | Type | Description | Recommended Values |
|----------------------------------|--------|-----------------------------------------------------------|--------------------|
| username | String | The username as used in the VeSync mobile application | |
| password | String | The password as used in the VeSync mobile application | |
| airPurifierPollInterval | Number | The poll interval (seconds) for air filters / humidifiers | 60 |
| backgroundDeviceDiscovery | Switch | Should the system scan periodically for new devices | ON |
| refreshBackgroundDeviceDiscovery | Number | Frequency (seconds) of scans for new new devices | 120 |
* Note Air PM Levels don't usually change quickly - 60s seems reasonable if openHAB is controlling it and your don't want near instant feedback of physical interactions with the devices.
### AirPurifier configuration parameters
It is recommended to use the device name, for locating devices. For this to work all the devices should have a unique
name in the VeSync mobile application.
The mac address from the VeSync mobile application may not align to the one the API
uses, therefore it's best left not configured or taken from auto-discovered information.
Device's will be found communicated with via the MAC Id first and if unsuccessful then by the deviceName.
| Name | Type | Description |
|------------------------|-------------------------|---------------------------------------------------------------------|
| deviceName | String | The name given to the device under Settings -> Device Name |
| macId | String | The mac for the device under Settings -> Device Info -> MAC Address |
## Channels
Channel names in **bold** are read/write, everything else is read-only
### AirPurifier Thing
| Channel | Type | Description | Model's Supported | Controllable Values |
|----------------------|----------------------|------------------------------------------------------------|-------------------|-----------------------|
| **enabled** | Switch | Whether the hardware device is enabled (Switched on) | 600S, 400S, 300S | [ON, OFF] |
| **childLock** | Switch | Whether the child lock (display lock is enabled) | 600S, 400S, 300S | [ON, OFF] |
| **display** | Switch | Whether the display is enabled (display is shown) | 600S, 400S, 300S | [ON, OFF] |
| **fanMode** | String | The operation mode of the fan | 600S, 400S | [auto, manual, sleep] |
| **fanMode** | String | The operation mode of the fan | 200S, 300S, | [manual, sleep] |
| **manualFanSpeed** | Number:Dimensionless | The speed of the fan when in manual mode | 600S, 400S | [1...4] |
| **manualFanSpeed** | Number:Dimensionless | The speed of the fan when in manual mode | 300S | [1...3] |
| **nightLightMode** | String | The night lights mode | 200S, 300S | [on, dim, off] |
| filterLifePercentage | Number:Dimensionless | The remaining filter life as a percentage | 600S, 400S, 300S | |
| airQuality | Number:Dimensionless | The air quality as represented by the Core200S / Core300S | 600S, 400S, 300S | |
| airQualityPM25 | Number:Density | The air quality as represented by the Core400S | 600S, 400S, 300S | |
| errorCode | Number:Dimensionless | The error code reported by the device | 600S, 400S, 300S | |
| timerExpiry | DateTime | The expected expiry time of the current timer | 600S, 400S | |
| schedulesCount | Number:Dimensionless | The number schedules configured | 600S, 400S | |
| configDisplayForever | Switch | Config: Whether the display will disable when not active | 600S, 400S, 300S | |
| configAutoMode | String | Config: The mode of operation when auto is active | 600S, 400S, 300S | |
| configAutoRoomSize | Number:Dimensionless | Config: The room size set when auto utilises the room size | 600S, 400S, 300S | |
### AirHumidifier Thing
| Channel | Type | Description | Model's Supported | Controllable Values |
|----------------------------|----------------------|---------------------------------------------------------------|----------------------------|---------------------|
| **enabled** | Switch | Whether the hardware device is enabled (Switched on) | 200S, Dual200S, 300S, 600S | [ON, OFF] |
| **display** | Switch | Whether the display is enabled (display is shown) | 200S, Dual200S, 300S, 600S | [ON, OFF] |
| waterLacking | Switch | Indicator whether the unit is lacking water | 200S, Dual200S, 300S, 600S | |
| humidityHigh | Switch | Indicator for high humidity | 200S, Dual200S, 300S, 600S | |
| waterTankLifted | Switch | Indicator for whether the water tank is removed | 200S, Dual200S, 300S, 600S | |
| **stopAtHumiditySetpoint** | Switch | Whether the unit is set to stop when the set point is reached | 200S, Dual200S, 300S, 600S | [ON, OFF] |
| humidity | Number:Dimensionless | Indicator for the currently measured humidity % level | 200S, Dual200S, 300S, 600S | |
| **mistLevel** | Number:Dimensionless | The current mist level set | 300S | [1...2] |
| **mistLevel** | Number:Dimensionless | The current mist level set | 200S, Dual200S, 600S | [1...3] |
| **humidifierMode** | String | The current mode of operation | 200S, Dual200S, 300S, 600S | [auto, sleep] |
| **nightLightMode** | String | The night light mode | 200S, Dual200S, 300S | [on, dim, off] |
| **humiditySetpoint** | Number:Dimensionless | Humidity % set point to reach | 200S, Dual200S, 300S, 600S | [30...80] |
| warmEnabled | Switch | Indicator for warm mist mode | 600S | |
## Full Example
### Configuration (*.things)
#### Air Purifiers Core 200S/300S/400S Models & Air Humidifier Classic300S/600S Models
```
Bridge vesync:bridge:vesyncServers [username="<USERNAME>", password="<PASSWORD>", airPurifierPollInterval=60] {
airPurifier loungeAirFilter [deviceName="<DEVICE NAME FROM APP>"]
airPurifier bedroomAirFilter [deviceName="<DEVICE NAME FROM APP>"]
airHumidifier loungeHumidifier [deviceName="<DEVICE NAME FROM APP>"]
}
```
### Configuration (*.items)
#### Air Purifier Core 400S / 600S Model
```
Switch LoungeAPPower "Lounge Air Purifier Power" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:enabled" }
Switch LoungeAPDisplay "Lounge Air Purifier Display" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:display" }
Switch LoungeAPControlsLock "Lounge Air Purifier Controls Locked" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:childLock" }
Number:Dimensionless LoungeAPFilterRemainingUse "Lounge Air Purifier Filter Remaining [%.0f %unit%]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:filterLifePercentage" }
String LoungeAPMode "Lounge Air Purifier Mode [%s]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:fanMode" }
Number:Dimensionless LoungeAPManualFanSpeed "Lounge Air Purifier Manual Fan Speed" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:manualFanSpeed" }
Number:Density LoungeAPAirQuality "Lounge Air Purifier Air Quality [%.0f% %unit%]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:airQualityPM25" }
Number LoungeAPErrorCode "Lounge Air Purifier Error Code" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:errorCode" }
String LoungeAPAutoMode "Lounge Air Purifier Auto Mode" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:configAutoMode" }
Number LoungeAPAutoRoomSize "Lounge Air Purifier Auto Room Size [%.0f% sqft]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:configAutoRoomSize" }
Number:Time LoungeAPTimerLeft "Lounge Air Purifier Timer Left [%1$Tp]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:timerRemain" }
DateTime LoungeAPTimerExpiry "Lounge Air Purifier Timer Expiry [%1$tA %1$tI:%1$tM %1$Tp]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:timerExpiry" }
Number LoungeAPSchedulesCount "Lounge Air Purifier Schedules Count" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:schedulesCount" }
```
#### Air Purifier Core 200S/300S Model
```
Switch LoungeAPPower "Lounge Air Purifier Power" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:enabled" }
Switch LoungeAPDisplay "Lounge Air Purifier Display" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:display" }
String LoungeAPNightLightMode "Lounge Air Purifier Night Light Mode" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:nightLightMode" }
Switch LoungeAPControlsLock "Lounge Air Purifier Controls Locked" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:childLock" }
Number:Dimensionless LoungeAPFilterRemainingUse "Lounge Air Purifier Filter Remaining [%.0f %unit%]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:filterLifePercentage" }
String LoungeAPMode "Lounge Air Purifier Mode [%s]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:fanMode" }
Number:Dimensionless LoungeAPManualFanSpeed "Lounge Air Purifier Manual Fan Speed" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:manualFanSpeed" }
Number:Density LoungeAPAirQuality "Lounge Air Purifier Air Quality [%.0f%]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:airQuality" }
Number LoungeAPErrorCode "Lounge Air Purifier Error Code" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:errorCode" }
String LoungeAPAutoMode "Lounge Air Purifier Auto Mode" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:configAutoMode" }
Number LoungeAPAutoRoomSize "Lounge Air Purifier Auto Room Size [%.0f% sqft]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:configAutoRoomSize" }
Number:Time LoungeAPTimerLeft "Lounge Air Purifier Timer Left [%1$Tp]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:timerRemain" }
DateTime LoungeAPTimerExpiry "Lounge Air Purifier Timer Expiry [%1$tA %1$tI:%1$tM %1$Tp]" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:timerExpiry" }
Number LoungeAPSchedulesCount "Lounge Air Purifier Schedules Count" { channel="vesync:airPurifier:vesyncServers:loungeAirFilter:schedulesCount" }
```
#### Air Humidifier Classic 200S / Dual 200S Model
```
Switch LoungeAHPower "Lounge Air Humidifier Power" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:enabled" }
Switch LoungeAHDisplay "Lounge Air Humidifier Display" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:display" }
String LoungeAHMode "Lounge Air Humidifier Mode" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidifierMode" }
Switch LoungeAHWaterLacking "Lounge Air Humidifier Water Lacking" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:waterLacking" }
Switch LoungeAHHighHumidity "Lounge Air Humidifier High Humidity" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidityHigh" }
Switch LoungeAHWaterTankRemoved "Lounge Air Humidifier Water Tank Removed" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:waterTankLifted" }
Number:Dimensionless LoungeAHHumidity "Lounge Air Humidifier Measured Humidity [%.0f %unit%]" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidity" }
Switch LoungeAHTargetStop "Lounge Air Humidifier Stop at target" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:stopAtTargetLevel" }
Number:Dimensionless LoungeAHTarget "Lounge Air Humidifier Target Humidity [%.0f %unit%]" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humiditySetpoint" }
Number:Dimensionless LoungeAHMistLevel "Lounge Air Humidifier Mist Level" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:mistLevel" }
```
#### Air Humidifier Classic 300S Model
```
Switch LoungeAHPower "Lounge Air Humidifier Power" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:enabled" }
Switch LoungeAHDisplay "Lounge Air Humidifier Display" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:display" }
String LoungeAHNightLightMode "Lounge Air Humidifier Night Light Mode" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:nightLightMode }
String LoungeAHMode "Lounge Air Humidifier Mode" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidifierMode" }
Switch LoungeAHWaterLacking "Lounge Air Humidifier Water Lacking" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:waterLacking" }
Switch LoungeAHHighHumidity "Lounge Air Humidifier High Humidity" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidityHigh" }
Switch LoungeAHWaterTankRemoved "Lounge Air Humidifier Water Tank Removed" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:waterTankLifted" }
Number:Dimensionless LoungeAHHumidity "Lounge Air Humidifier Measured Humidity [%.0f %unit%]" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidity" }
Switch LoungeAHTargetStop "Lounge Air Humidifier Stop at target" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:stopAtTargetLevel" }
Number:Dimensionless LoungeAHTarget "Lounge Air Humidifier Target Humidity [%.0f %unit%]" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humiditySetpoint" }
Number:Dimensionless LoungeAHMistLevel "Lounge Air Humidifier Mist Level" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:mistLevel" }
```
#### Air Humidifier 600S Model
```
Switch LoungeAHPower "Lounge Air Humidifier Power" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:enabled" }
Switch LoungeAHDisplay "Lounge Air Humidifier Display" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:display" }
String LoungeAHMode "Lounge Air Humidifier Mode" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidifierMode" }
Switch LoungeAHWaterLacking "Lounge Air Humidifier Water Lacking" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:waterLacking" }
Switch LoungeAHHighHumidity "Lounge Air Humidifier High Humidity" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidityHigh" }
Switch LoungeAHWaterTankRemoved "Lounge Air Humidifier Water Tank Removed" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:waterTankLifted" }
Number:Dimensionless LoungeAHHumidity "Lounge Air Humidifier Measured Humidity [%.0f %unit%]" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humidity" }
Switch LoungeAHTargetStop "Lounge Air Humidifier Stop at target" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:stopAtTargetLevel" }
Number:Dimensionless LoungeAHTarget "Lounge Air Humidifier Target Humidity [%.0f %unit%]" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:humiditySetpoint" }
Number:Dimensionless LoungeAHMistLevel "Lounge Air Humidifier Mist Level" { channel="vesync:airHumidifier:vesyncServers:loungeHumidifier:mistLevel" }
```
### Configuration (*.sitemap)
#### Air Purifier Core 400S / 600S Model
```
Frame {
Switch item=LoungeAPPower label="Power"
Text item=LoungeAPFilterRemainingUse label="Filter Remaining"
Switch item=LoungeAPDisplay label="Display"
Text item=LoungeAPAirQuality label="Air Quality [%.0f (PM2.5)]"
Switch item=LoungeAPControlsLock label="Controls Locked"
Text item=LoungeAPTimerExpiry label="Timer Shutdown @" icon="clock"
Switch item=LoungeAPMode label="Mode" mappings=[auto="Auto", manual="Manual Fan Control", sleep="Sleeping"] icon="settings"
Text item=LoungeAPErrorCode label="Error Code [%.0f]"
Switch item=LoungeAPManualFanSpeed label="Manual Fan Speed [%.0f]" mappings=[1="1", 2="2", 3="3", 4="4"] icon="settings"
}
```
#### Air Purifier Core 200S/300S Model
```
Frame {
Switch item=LoungeAPPower label="Power"
Text item=LoungeAPFilterRemainingUse label="Filter Remaining"
Switch item=LoungeAPDisplay label="Display"
Switch item=LoungeAPNightLightMode label="Night Light Mode" mappings=[on="On", dim="Dimmed", off="Off"] icon="settings"
Text item=LoungeAPAirQuality label="Air Quality [%.0f]"
Switch item=LoungeAPControlsLock label="Controls Locked"
Text item=LoungeAPTimerExpiry label="Timer Shutdown @" icon="clock"
Switch item=LoungeAPMode label="Mode" mappings=[manual="Manual Fan Control", sleep="Sleeping"] icon="settings"
Text item=LoungeAPErrorCode label="Error Code [%.0f]"
Switch item=LoungeAPManualFanSpeed label="Manual Fan Speed [%.0f]" mappings=[1="1", 2="2", 3="3"] icon="settings"
}
```
#### Air Humidifier Classic 200S / Dual 200S Model
```
Frame {
Switch item=LoungeAHPower
Switch item=LoungeAHDisplay
Switch item=LoungeAHMode label="Mode" mappings=[auto="Auto", sleep="Sleeping"] icon="settings"
Text icon="none" item=LoungeAHWaterLacking
Text icon="none" item=LoungeAHHighHumidity
Text icon="none" item=LoungeAHWaterTankRemoved
Text icon="none" item=LoungeAHHumidity
Switch item=LoungeAHTargetStop
Slider item=LoungeAHTarget minValue=30 maxValue=80
Slider item=LoungeAHMistLevel minValue=1 maxValue=3
}
```
#### Air Humidifier Classic 300S Model
```
Frame {
Switch item=LoungeAHPower
Switch item=LoungeAHDisplay
Switch item=LoungeAHNightLightMode label="Night Light Mode" mappings=[on="On", dim="Dimmed", off="Off"] icon="settings"
Switch item=LoungeAHMode label="Mode" mappings=[auto="Auto", sleep="Sleeping"] icon="settings"
Text icon="none" item=LoungeAHWaterLacking
Text icon="none" item=LoungeAHHighHumidity
Text icon="none" item=LoungeAHWaterTankRemoved
Text icon="none" item=LoungeAHHumidity
Switch item=LoungeAHTargetStop
Slider item=LoungeAHTarget minValue=30 maxValue=80
Slider item=LoungeAHMistLevel minValue=1 maxValue=3
}
```
#### Air Humidifier 600S Model
```
Frame {
Switch item=LoungeAHPower
Switch item=LoungeAHDisplay
Switch item=LoungeAHMode label="Mode" mappings=[auto="Auto", sleep="Sleeping"] icon="settings"
Text icon="none" item=LoungeAHWaterLacking
Text icon="none" item=LoungeAHHighHumidity
Text icon="none" item=LoungeAHWaterTankRemoved
Text icon="none" item=LoungeAHHumidity
Switch item=LoungeAHTargetStop
Slider item=LoungeAHTarget minValue=30 maxValue=80
Slider item=LoungeAHMistLevel minValue=1 maxValue=3
}
```
### Credits
The binding code is based on a lot of work done by other developers:
- Contributors of (https://github.com/webdjoe/pyvesync) - Python interface for VeSync
- Rene Scherer, Holger Eisold - (https://www.openhab.org/addons/bindings/surepetcare) Sure Petcare Binding for openHAB as a reference point for the starting blocks of this code

View File

@ -136,6 +136,13 @@
<default>1</default>
<advanced>true</advanced>
</parameter>
<parameter name="afterConnectionDelayMillis" type="integer" min="0" unit="ms">
<label>Connection warm-up time</label>
<description>Connection warm-up time. Additional time which is spent on preparing connection which should be spent
waiting while end device is getting ready to answer first modbus call. In milliseconds.</description>
<default>0</default>
<advanced>true</advanced>
</parameter>
<parameter name="connectTimeoutMillis" type="integer" min="0" unit="ms">
<label>Timeout for Establishing the Connection</label>
<description>The maximum time that is waited when establishing the connection. Value of zero means that system/OS

View File

@ -58,6 +58,13 @@
<default>1</default>
<advanced>true</advanced>
</parameter>
<parameter name="afterConnectionDelayMillis" type="integer" min="0" unit="ms">
<label>Connection warm-up time</label>
<description>Connection warm-up time. Additional time which is spent on preparing connection which should be spent
waiting while end device is getting ready to answer first modbus call. In milliseconds.</description>
<default>0</default>
<advanced>true</advanced>
</parameter>
<parameter name="reconnectAfterMillis" type="integer" min="0" unit="ms">
<label>Reconnect Again After</label>
<description>The connection is kept open at least the time specified here. Value of zero means that connection is

View File

@ -0,0 +1,334 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="vesync"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<bridge-type id="bridge">
<label>VeSync Bridge</label>
<description>The VeSync bridge represents the VeSync cloud service.</description>
<properties>
<property name="Registration Time"/>
<property name="Country Code"/>
<property name="Accept Language"/>
</properties>
<config-description>
<parameter name="username" type="text">
<context>email</context>
<required>true</required>
<label>Username</label>
<description>Name of a registered VeSync user, that allows to access the mobile application.</description>
</parameter>
<parameter name="password" type="text">
<context>password</context>
<required>true</required>
<label>Password</label>
<description>Password for the registered VeSync username, that allows to access the mobile application.</description>
</parameter>
<parameter name="backgroundDeviceDiscovery" type="boolean">
<label>Background Device Scans</label>
<description>Enable background scanning for new devices.</description>
<default>true</default>
</parameter>
<parameter name="airPurifierPollInterval" type="integer" min="5" step="1" unit="s">
<label>Air Filters/Humidifiers Poll Rate</label>
<description>Seconds between fetching background updates about the air purifiers / humidifiers.</description>
<default>60</default>
</parameter>
</config-description>
</bridge-type>
<thing-type id="airPurifier">
<supported-bridge-type-refs>
<bridge-type-ref id="bridge"/>
</supported-bridge-type-refs>
<label>Air Purifier via VeSync</label>
<description>A Air Purifier uplinking to VeSync</description>
<channels>
<channel id="enabled" typeId="deviceEnabledType"/>
<channel id="childLock" typeId="deviceChildLockEnabledType"/>
<channel id="display" typeId="deviceDisplayEnabledType"/>
<channel id="filterLifePercentage" typeId="deviceFilterLifePercentageType"/>
<channel id="fanMode" typeId="airPurifierModeType"/>
<channel id="manualFanSpeed" typeId="airPurifierFanLevelType"/>
<channel id="errorCode" typeId="deviceErrorCodeType"/>
<channel id="airQuality" typeId="deviceAirQualityBasicType"/>
<channel id="airQualityPM25" typeId="airQualityPM25"/>
<channel id="configDisplayForever" typeId="deviceAFConfigDisplayForever"/>
<channel id="configAutoMode" typeId="deviceAFConfigAutoPrefType"/>
<channel id="timerExpiry" typeId="deviceAFTimerExpiry"/>
<channel id="configAutoRoomSize" typeId="deviceAFConfigAutoPrefRoomSizeType"/>
<channel id="schedulesCount" typeId="deviceAFConfigAutoScheduleCountType"/>
<channel id="nightLightMode" typeId="deviceAFNightLight"/>
</channels>
<properties>
<property name="Device Name"/>
<property name="Device Type"/>
<property name="MAC Id"/>
</properties>
<representation-property>macId</representation-property>
<config-description>
<parameter name="macId" type="text">
<label>MAC Id</label>
<description>The MAC Id of the device as reported by the API.</description>
</parameter>
<parameter name="deviceName" type="text">
<label>Device Name</label>
<description>The name allocated to the device by the app. (Must be unique if used)</description>
</parameter>
</config-description>
</thing-type>
<thing-type id="airHumidifier">
<supported-bridge-type-refs>
<bridge-type-ref id="bridge"/>
</supported-bridge-type-refs>
<label>Air Humidifier via VeSync</label>
<description>A Air Humidifier uplinking to VeSync</description>
<channels>
<channel id="enabled" typeId="deviceEnabledType"/>
<channel id="display" typeId="deviceDisplayEnabledType"/>
<channel id="waterLacking" typeId="deviceWaterLackingType"/>
<channel id="humidityHigh" typeId="deviceHighHumidityType"/>
<channel id="waterTankLifted" typeId="deviceWaterTankLiftedType"/>
<channel id="stopAtHumiditySetpoint" typeId="deviceAutomaticStopReachTargetType"/>
<channel id="humidity" typeId="deviceHumidityType"/>
<channel id="mistLevel" typeId="deviceMistLevelType"/>
<channel id="humidifierMode" typeId="airHumidifierModeType"/>
<channel id="nightLightMode" typeId="deviceAFNightLight"/>
<channel id="humiditySetpoint" typeId="deviceConfigTargetHumidity"/>
<channel id="warmEnabled" typeId="warmModeEnabled"/>
<channel id="warmLevel" typeId="warmLevel"/>
</channels>
<properties>
<property name="Device Name"/>
<property name="Device Type"/>
<property name="MAC Id"/>
</properties>
<representation-property>macId</representation-property>
<config-description>
<parameter name="macId" type="text">
<label>MAC Id</label>
<description>The MAC Id of the device as reported by the API.</description>
</parameter>
<parameter name="deviceName" type="text">
<label>Device Name</label>
<description>The name allocated to the device by the app. (Must be unique if used)</description>
</parameter>
</config-description>
</thing-type>
<channel-type id="deviceEnabledType">
<item-type>Switch</item-type>
<label>Switched On</label>
<description>Indicator if the device is switched on</description>
<state readOnly="false"/>
</channel-type>
<channel-type id="deviceChildLockEnabledType">
<item-type>Switch</item-type>
<label>Display Lock</label>
<description>Indicator if the devices child lock is enabled (Display Lock)</description>
<state readOnly="false"/>
</channel-type>
<channel-type id="deviceDisplayEnabledType">
<item-type>Switch</item-type>
<label>Display</label>
<description>Indicator if the devices display is enabled</description>
<state readOnly="false"/>
</channel-type>
<channel-type id="deviceFilterLifePercentageType">
<item-type>Number:Dimensionless</item-type>
<label>Filter Life Remaining</label>
<description>Indicator of the remaining filter life</description>
<state readOnly="true" pattern="%.0f %%"/>
</channel-type>
<channel-type id="airPurifierModeType">
<item-type>String</item-type>
<label>Operation Mode</label>
<description>The operating mode the air purifier is currently set to</description>
<state readOnly="false">
<options>
<option value="auto">Auto</option>
<option value="manual">Manual Fan Control</option>
<option value="sleep">Sleeping Auto</option>
</options>
</state>
</channel-type>
<channel-type id="deviceAFNightLight">
<item-type>String</item-type>
<label>Night Light</label>
<description>The operating mode of the night light functionality</description>
<state readOnly="false">
<options>
<option value="on">On</option>
<option value="dim">Dimmed</option>
<option value="off">Off</option>
</options>
</state>
</channel-type>
<channel-type id="airPurifierFanLevelType">
<item-type>Number:Dimensionless</item-type>
<label>Fan Speed</label>
<description>Indicator of the current fan speed</description>
<state readOnly="true" pattern="%.0f"/>
</channel-type>
<channel-type id="deviceErrorCodeType">
<item-type>Number:Dimensionless</item-type>
<label>Device Error Code</label>
<description>Indicator of the current error code of the device</description>
<state readOnly="true" pattern="%.0f"/>
</channel-type>
<channel-type id="deviceAirQualityBasicType">
<item-type>Number:Dimensionless</item-type>
<label>Air Quality</label>
<description>System representation of air quality</description>
<state readOnly="true" pattern="%.0f"/>
</channel-type>
<channel-type id="airQualityPM25">
<item-type>Number:Density</item-type>
<label>Air Quality PPM2.5</label>
<description>Indicator of current air quality</description>
<state readOnly="true" pattern="%.0f %unit%"/>
</channel-type>
<channel-type id="deviceAFConfigDisplayForever">
<item-type>Switch</item-type>
<label>Config: Display Forever</label>
<description>Configuration: If the devices display is enabled forever</description>
</channel-type>
<channel-type id="deviceAFConfigAutoPrefType">
<item-type>String</item-type>
<label>Config: Auto Mode</label>
<description>The operating mode when the air purifier is set to auto</description>
<state readOnly="true">
<options>
<option value="default">Auto (Air Quality)</option>
<option value="quiet">Quiet (No High Speed)</option>
<option value="efficient">Auto (Room Size)</option>
</options>
</state>
</channel-type>
<channel-type id="deviceAFTimerExpiry">
<item-type>DateTime</item-type>
<label>Auto Off Expiry</label>
<description>The time when the auto off timer will be reached</description>
<state readOnly="true" pattern="%1$tF %1$tR"/>
</channel-type>
<channel-type id="deviceAFConfigAutoPrefRoomSizeType">
<item-type>Number:Dimensionless</item-type>
<label>Config: Room size</label>
<description>Room size (foot sq) for efficient auto mode</description>
<state readOnly="true" pattern="%.0f sq ft"/>
</channel-type>
<channel-type id="deviceAFConfigAutoScheduleCountType">
<item-type>Number:Dimensionless</item-type>
<label>Config: Schedules Count</label>
<description>The current number of schedules configured</description>
<state readOnly="true" pattern="%.0f"/>
</channel-type>
<channel-type id="deviceWaterLackingType">
<item-type>Switch</item-type>
<label>Water Low/Empty</label>
<description>Indicator if the devices water is low or empty</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="deviceHighHumidityType">
<item-type>Switch</item-type>
<label>High Humidity</label>
<description>Indicator if the device is measuring high humidity</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="deviceWaterTankLiftedType">
<item-type>Switch</item-type>
<label>Water Tank Removed</label>
<description>Indicator if the device is reporting the water tank as removed</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="deviceAutomaticStopReachTargetType">
<item-type>Switch</item-type>
<label>Stop @ Set Point</label>
<description>Indicator if the device is set to stop when the humidity set point has been reached</description>
<state readOnly="false"/>
</channel-type>
<channel-type id="deviceHumidityType">
<item-type>Number:Dimensionless</item-type>
<label>Humidity Level</label>
<description>System representation of humidity</description>
<state readOnly="true" pattern="%.0f %unit%"/>
</channel-type>
<channel-type id="deviceConfigTargetHumidity">
<item-type>Number:Dimensionless</item-type>
<label>Humidity Set Point</label>
<description>Humidity Set Point</description>
<state readOnly="false" pattern="%.0f %unit%"/>
</channel-type>
<channel-type id="deviceMistLevelType">
<item-type>Number:Dimensionless</item-type>
<label>Mist Level</label>
<description>System representation of mist level</description>
<state readOnly="false" pattern="%.0f"/>
</channel-type>
<channel-type id="airHumidifierModeType">
<item-type>String</item-type>
<label>Operation Mode</label>
<description>The operating mode the air humidifier is currently set to</description>
<state readOnly="false">
<options>
<option value="auto">Auto</option>
<option value="manual">Manual Control</option>
<option value="sleep">Sleeping Auto</option>
</options>
</state>
</channel-type>
<channel-type id="warmModeEnabled">
<item-type>Switch</item-type>
<label>Warm Mode Enabled</label>
<description>Indicator if the device is set to warm mist</description>
<state readOnly="false"/>
</channel-type>
<channel-type id="warmLevel">
<item-type>Number:Dimensionless</item-type>
<label>Warm Level</label>
<description>Warm Level</description>
<state readOnly="false" pattern="%.0f"/>
</channel-type>
</thing:thing-descriptions>