mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 07:02:02 +01:00
[ecotouch] add Waterkotte EcoTouch binding (ported from OH1) (#10010)
Signed-off-by: Sebastian Held <sebastian.held@gmx.de>
This commit is contained in:
parent
9a0ad98f44
commit
7d13795380
@ -66,6 +66,7 @@
|
||||
/bundles/org.openhab.binding.dwdpollenflug/ @DerOetzi
|
||||
/bundles/org.openhab.binding.dwdunwetter/ @limdul79
|
||||
/bundles/org.openhab.binding.ecobee/ @mhilbush
|
||||
/bundles/org.openhab.binding.ecotouch/ @sibbi77
|
||||
/bundles/org.openhab.binding.elerotransmitterstick/ @vbier
|
||||
/bundles/org.openhab.binding.energenie/ @hmerk
|
||||
/bundles/org.openhab.binding.enigma2/ @gdolfen
|
||||
|
@ -316,6 +316,11 @@
|
||||
<artifactId>org.openhab.binding.ecobee</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openhab.addons.bundles</groupId>
|
||||
<artifactId>org.openhab.binding.ecotouch</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openhab.addons.bundles</groupId>
|
||||
<artifactId>org.openhab.binding.elerotransmitterstick</artifactId>
|
||||
|
13
bundles/org.openhab.binding.ecotouch/NOTICE
Normal file
13
bundles/org.openhab.binding.ecotouch/NOTICE
Normal file
@ -0,0 +1,13 @@
|
||||
This content is produced and maintained by the openHAB project.
|
||||
|
||||
* Project home: https://www.openhab.org
|
||||
|
||||
== Declared Project Licenses
|
||||
|
||||
This program and the accompanying materials are made available under the terms
|
||||
of the Eclipse Public License 2.0 which is available at
|
||||
https://www.eclipse.org/legal/epl-2.0/.
|
||||
|
||||
== Source Code
|
||||
|
||||
https://github.com/openhab/openhab-addons
|
200
bundles/org.openhab.binding.ecotouch/README.md
Normal file
200
bundles/org.openhab.binding.ecotouch/README.md
Normal file
@ -0,0 +1,200 @@
|
||||
# EcoTouch Binding
|
||||
|
||||
The openHAB EcoTouch binding allows interaction with a [Waterkotte](https://www.waterkotte.de/) heat pump.
|
||||
|
||||
## Supported Things
|
||||
|
||||
| Thing type | Description |
|
||||
|-----------------|--------------------------------------------------|
|
||||
| geo | Waterkotte EcoTouch Geo + EcoVent |
|
||||
| air | Waterkotte EcoTouch Air + EcoVent |
|
||||
|
||||
This binding was tested with a Waterkotte DS 5027 Ai DS 5010.5Ai geothermal heat pump.
|
||||
|
||||
## Discovery
|
||||
|
||||
Discovery is not supported. You need to provide the IP address of the display unit of the heatpump.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
Things can be fully configured via the UI. The following information is useful when configuring things via thing configuration files.
|
||||
|
||||
| Property | Type | Default | Required | Description |
|
||||
|---------------------------------|---------|---------|----------|-------------|
|
||||
| ip | String | | yes | IP address or hostname of the display unit of the heat pump |
|
||||
| username | String | | yes | since software version 1.6.xx of the display unit: "waterkotte"; previously "admin". |
|
||||
| password | String | | yes | since software version 1.6.xx of the display unit: "waterkotte"; previously "wtkadmin". |
|
||||
| refresh | Integer | 60 | no | time in s after which all channels will be requested again from the heat pump |
|
||||
|
||||
## Channels
|
||||
|
||||
Standard channels:
|
||||
|
||||
| Channel ID | Type | Read-Only | Description |
|
||||
|----------------------------|----------------------|-----------|-----------------------------------------------------------------|
|
||||
| adapt_heating | Number:Temperature | no | Allows to adjust the heating temperature by an offset |
|
||||
| alarm | Number:Dimensionless | yes | Alarm |
|
||||
| cop_cooling | Number:Dimensionless | yes | COP Cooling |
|
||||
| cop_heating | Number:Dimensionless | yes | COP Heating |
|
||||
| enable_cooling | Switch | no | Enable Cooling |
|
||||
| enable_heating | Switch | no | Enable Heating |
|
||||
| enable_warmwater | Switch | no | Enable Warm Water |
|
||||
| power_compressor | Number:Power | yes | Power Compressor |
|
||||
| power_cooling | Number:Power | yes | Power Cooling |
|
||||
| power_heating | Number:Power | yes | Power Heating |
|
||||
| state_alarm | Switch | yes | State Alarm |
|
||||
| temperature_cooling_return | Number:Temperature | yes | Temperature Cooling Return |
|
||||
| temperature_cooling_set2 | Number:Temperature | no | Temperature Cooling Setpoint BMS |
|
||||
| temperature_flow | Number:Temperature | yes | Temperature Flow |
|
||||
| temperature_heating_return | Number:Temperature | yes | Temperature Heating Return |
|
||||
| temperature_heating_set | Number:Temperature | yes | Temperature Heating Setpoint |
|
||||
| temperature_outside | Number:Temperature | yes | The current outside temperature |
|
||||
| temperature_outside_24h | Number:Temperature | yes | The outside temperature averaged over one day |
|
||||
| temperature_return | Number:Temperature | yes | Temperature Return |
|
||||
| temperature_return_set | Number:Temperature | yes | Temperature Return Setpoint |
|
||||
| temperature_room | Number:Temperature | yes | Temperature Room |
|
||||
| temperature_room_1h | Number:Temperature | yes | Temperature Room 1h Average |
|
||||
| temperature_source_in | Number:Temperature | yes | Temperature Source Input |
|
||||
| temperature_source_out | Number:Temperature | yes | Temperature Source Output |
|
||||
| temperature_water | Number:Temperature | yes | Temperature Water |
|
||||
| temperature_water_set2 | Number:Temperature | no | Temperature Water Setpoint BMS |
|
||||
|
||||
Advanced channels:
|
||||
|
||||
| Channel ID | Type | Read-Only | Description |
|
||||
|----------------------------------|----------------------|-----------|-------------------------------------------------------------------------|
|
||||
| compressor_power | Number:Dimensionless | yes | Percent Power Compressor |
|
||||
| coolEnableTemp | Number:Temperature | yes | Temperature Cooling Enable |
|
||||
| date_day | Number:Dimensionless | yes | Day |
|
||||
| date_month | Number:Dimensionless | yes | Month |
|
||||
| date_year | Number:Dimensionless | yes | Year |
|
||||
| enable_pool | Switch | no | Enable Pool |
|
||||
| enable_pv | Switch | no | Enable PV |
|
||||
| hysteresis_heating | Number:Temperature | no | Hysteresis Heating |
|
||||
| interruptions | Number:Dimensionless | yes | Interruptions |
|
||||
| manual_4wayvalve | Number:Dimensionless | no | Operating Mode 4Way Valve |
|
||||
| manual_coolvalve | Number:Dimensionless | no | Operating Mode Cooling Valve |
|
||||
| manual_heatingpump | Number:Dimensionless | no | Operating Mode Heating Pump |
|
||||
| manual_multiext | Number:Dimensionless | no | Operating Mode Multi Ouput Ext |
|
||||
| manual_poolvalve | Number:Dimensionless | no | Operating Mode Pool Valve |
|
||||
| manual_solarpump1 | Number:Dimensionless | no | Operating Mode Solar Pump |
|
||||
| manual_solarpump2 | Number:Dimensionless | no | Operating Mode Solar Pump 2 |
|
||||
| manual_sourcepump | Number:Dimensionless | no | Operating Mode Source Pump |
|
||||
| manual_tankpump | Number:Dimensionless | no | Operating Mode Tank Pump |
|
||||
| manual_valve | Number:Dimensionless | no | Operating Mode Valve |
|
||||
| maxVLTemp | Number:Temperature | yes | maxVLTemp |
|
||||
| nviHeizkreisNorm | Number:Temperature | no | nviHeizkreisNorm |
|
||||
| nviNormAussen | Number:Temperature | no | nviNormAussen |
|
||||
| nviSollKuehlen | Number:Temperature | yes | nviSollKuehlen |
|
||||
| nviTHeizgrenze | Number:Temperature | no | nviTHeizgrenze |
|
||||
| nviTHeizgrenzeSoll | Number:Temperature | no | nviTHeizgrenze Setpoint |
|
||||
| operating_hours_circulation_pump | Number:Time | yes | Operating Hours Circulation Pump |
|
||||
| operating_hours_compressor1 | Number:Time | yes | Operating Hours Compressor 1 |
|
||||
| operating_hours_compressor2 | Number:Time | yes | Operating Hours Compressor 2 |
|
||||
| operating_hours_solar | Number:Time | yes | Operating Hours Solar |
|
||||
| operating_hours_source_pump | Number:Time | yes | Operating Hours Source Pump |
|
||||
| percent_compressor | Number:Dimensionless | yes | Percent Compressor |
|
||||
| percent_heat_circ_pump | Number:Dimensionless | yes | Percent Heating Circulation Pump |
|
||||
| percent_source_pump | Number:Dimensionless | yes | Percent Source Pump |
|
||||
| position_expansion_valve | Number:Dimensionless | yes | Position Expansion Valve |
|
||||
| pressure_condensation | Number:Pressure | yes | Pressure Condensation |
|
||||
| pressure_evaporation | Number:Pressure | yes | Pressure Evaporation |
|
||||
| state | Number:Dimensionless | yes | A Bitfield which encodes the state of all valves, pumps and compressors |
|
||||
| state_compressor1 | Switch | yes | State Compressor 1 |
|
||||
| state_compressor2 | Switch | yes | State Compressor 2 |
|
||||
| state_cooling | Switch | yes | State Cooling |
|
||||
| state_cooling4way | Switch | yes | State Cooling4Way |
|
||||
| state_evd | Switch | yes | State EVD |
|
||||
| state_extheater | Switch | yes | State External Heater |
|
||||
| state_heatingpump | Switch | yes | State Heating Pump |
|
||||
| state_pool | Switch | yes | State Pool |
|
||||
| state_service | Switch | yes | State Service Mode |
|
||||
| state_solar | Switch | yes | State Solar |
|
||||
| state_sourcepump | Switch | yes | State Source Pump |
|
||||
| state_water | Switch | yes | State Water |
|
||||
| tempSet0Deg | Number:Temperature | yes | Heating Setpoint at 0°C Outside |
|
||||
| tempchange_cooling_pv | Number:Temperature | no | Temperature Change Cooling if PV |
|
||||
| tempchange_heating_pv | Number:Temperature | no | Temperature Change Heating if PV |
|
||||
| tempchange_pool_pv | Number:Temperature | no | Temperature Change Pool if PV |
|
||||
| tempchange_warmwater_pv | Number:Temperature | no | Temperature Change Water if PV |
|
||||
| temperature2_outside_1h | Number:Temperature | yes | Temperature Outside 1h Average |
|
||||
| temperature_condensation | Number:Temperature | yes | Temperature Condensation |
|
||||
| temperature_cooling_set | Number:Temperature | yes | Temperature Cooling Setpoint |
|
||||
| temperature_evaporation | Number:Temperature | yes | Temperature Evaporation |
|
||||
| temperature_heating_set2 | Number:Temperature | no | Temperature Heating Setpoint BMS |
|
||||
| temperature_outside_1h | Number:Temperature | yes | The outside temperature averaged over one hour |
|
||||
| temperature_pool | Number:Temperature | yes | Temperature Pool |
|
||||
| temperature_pool_set | Number:Temperature | yes | Temperature Pool Setpoint |
|
||||
| temperature_pool_set2 | Number:Temperature | no | Temperature Pool Setpoint BMS |
|
||||
| temperature_solar | Number:Temperature | yes | Temperature Solar |
|
||||
| temperature_solar_flow | Number:Temperature | yes | Temperature Solar Flow |
|
||||
| temperature_storage | Number:Temperature | yes | Temperature Storage |
|
||||
| temperature_suction | Number:Temperature | yes | Temperature Suction |
|
||||
| temperature_water_set | Number:Temperature | yes | Temperature Water Setpoint |
|
||||
| time_hour | Number:Dimensionless | yes | Hour |
|
||||
| time_minute | Number:Dimensionless | yes | Minute |
|
||||
| version_bios | Number:Dimensionless | yes | Version BIOS |
|
||||
| version_controller | Number:Dimensionless | yes | Version Display Controller |
|
||||
| version_controller_build | Number:Dimensionless | yes | Build Number Display Controller |
|
||||
|
||||
If the Ecovent Unit is attached to the heat pump, the following additional channels are available:
|
||||
|
||||
| Channel ID | Type | Read-Only | Description |
|
||||
|----------------------------|----------------------|-----------|-------------|
|
||||
| ecovent_CO2_value | Number:Dimensionless | yes | EcoVent CO2 |
|
||||
| ecovent_mode | Number:Dimensionless | no | EcoVent Mode (0..5: Day, Night, Timer, Party, Vacation, Bypass) |
|
||||
| ecovent_moisture_value | Number:Dimensionless | yes | EcoVent Air Moisture |
|
||||
| ecovent_output_y1 | Number:Dimensionless | yes | EcoVent Fan |
|
||||
| ecovent_temp_exhaust_air | Number:Temperature | yes | EcoVent Temperature Exhaust Air |
|
||||
| ecovent_temp_exit_air | Number:Temperature | yes | EcoVent Temperature Exit Air |
|
||||
| ecovent_temp_outdoor_air | Number:Temperature | yes | EcoVent Temperature Outdoor Air |
|
||||
| ecovent_temp_supply_air | Number:Temperature | yes | EcoVent Temperature Supply Air |
|
||||
|
||||
The air heatpump has the following additional channels:
|
||||
|
||||
| Channel ID | Type | Read-Only | Description |
|
||||
|-------------------------|--------------------|-----------|-------------------------|
|
||||
| temperature_suction_air | Number:Temperature | yes | Temperature Suction Air |
|
||||
| temperature_sump | Number:Temperature | yes | Temperature Sump |
|
||||
| temperature_surrounding | Number:Temperature | yes | Temperature Surrounding |
|
||||
|
||||
## Example
|
||||
|
||||
### ecotouch.things
|
||||
|
||||
```
|
||||
Thing ecotouch:geo:heatpump "Waterkotte Heatpump" @ "basement" [ ip="192.168.1.100", username="admin", password="wtkadmin", refresh=120 ]
|
||||
```
|
||||
|
||||
### ecotouch.items
|
||||
|
||||
```
|
||||
Number:Temperature HeatPump_Temp_Aussen { channel="ecotouch:geo:heatpump:temperature_outside" }
|
||||
Number:Temperature HeatPump_Temp_Aussen_1d { channel="ecotouch:geo:heatpump:temperature_outside_24h" }
|
||||
Number:Temperature HeatPump_Temp_Quelle_in { channel="ecotouch:geo:heatpump:temperature_source_in" }
|
||||
Number:Temperature HeatPump_Temp_Quelle_out { channel="ecotouch:geo:heatpump:temperature_source_out" }
|
||||
Number:Temperature HeatPump_Temp_Wasser { channel="ecotouch:geo:heatpump:temperature_water" }
|
||||
Number:Temperature HeatPump_Temp_Heizen { channel="ecotouch:geo:heatpump:temperature_heating_return" }
|
||||
Number:Power HeatPump_power_el { channel="ecotouch:geo:heatpump:power_compressor" }
|
||||
Number:Power HeatPump_power_th { channel="ecotouch:geo:heatpump:power_heating" }
|
||||
Number HeatPump_COP_heating { channel="ecotouch:geo:heatpump:cop_heating" }
|
||||
Number:Temperature HeatPump_adaptHeating { channel="ecotouch:geo:heatpump:adapt_heating" }
|
||||
```
|
||||
|
||||
### ecotouch.sitemap
|
||||
|
||||
```
|
||||
sitemap ecotouch label="Waterkotte EcoTouch"
|
||||
{
|
||||
Text item=HeatPump_Temp_Aussen
|
||||
Text item=HeatPump_Temp_Aussen_1d
|
||||
Text item=HeatPump_Temp_Quelle_in
|
||||
Text item=HeatPump_Temp_Quelle_out
|
||||
Text item=HeatPump_Temp_Wasser
|
||||
Text item=HeatPump_Temp_Heizen
|
||||
Text item=HeatPump_Temp_Heizen
|
||||
Text item=HeatPump_power_th
|
||||
Text item=HeatPump_COP_heating
|
||||
Setpoint item=HeatPump_adaptHeating minValue=-2.0 maxValue=2.0 step=0.5
|
||||
}
|
||||
```
|
17
bundles/org.openhab.binding.ecotouch/pom.xml
Normal file
17
bundles/org.openhab.binding.ecotouch/pom.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.openhab.addons.bundles</groupId>
|
||||
<artifactId>org.openhab.addons.reactor.bundles</artifactId>
|
||||
<version>3.1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>org.openhab.binding.ecotouch</artifactId>
|
||||
|
||||
<name>openHAB Add-ons :: Bundles :: EcoTouch Binding</name>
|
||||
|
||||
</project>
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<features name="org.openhab.binding.ecotouch-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
|
||||
<repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository>
|
||||
|
||||
<feature name="openhab-binding-ecotouch" description="EcoTouch Binding" version="${project.version}">
|
||||
<feature>openhab-runtime-base</feature>
|
||||
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.ecotouch/${project.version}</bundle>
|
||||
</feature>
|
||||
</features>
|
@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Copyright (c) 2010-2021 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.ecotouch.internal;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.openhab.core.thing.ThingTypeUID;
|
||||
|
||||
/**
|
||||
* The {@link EcoTouchBindingConstants} class defines common constants, which are
|
||||
* used across the whole binding.
|
||||
*
|
||||
* @author Sebastian Held - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class EcoTouchBindingConstants {
|
||||
|
||||
private static final String BINDING_ID = "ecotouch";
|
||||
|
||||
// List of all Thing Type UIDs
|
||||
public static final ThingTypeUID THING_TYPE_GEO = new ThingTypeUID(BINDING_ID, "geo");
|
||||
public static final ThingTypeUID THING_TYPE_AIR = new ThingTypeUID(BINDING_ID, "air");
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Copyright (c) 2010-2021 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.ecotouch.internal;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
|
||||
/**
|
||||
* The {@link EcoTouchConfiguration} class contains fields mapping thing configuration parameters.
|
||||
*
|
||||
* @author Sebastian Held - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class EcoTouchConfiguration {
|
||||
public String ip = "";
|
||||
public String username = "";
|
||||
public String password = "";
|
||||
public Integer refresh = 60;
|
||||
}
|
@ -0,0 +1,332 @@
|
||||
/**
|
||||
* Copyright (c) 2010-2021 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.ecotouch.internal;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Network communication with Waterkotte EcoTouch heat pumps.
|
||||
*
|
||||
* The communication protocol was reverse engineered from the Easy-Con Android
|
||||
* app. The meaning of the EcoTouch tags was provided by Waterkotte's technical
|
||||
* service (by an excerpt of a developer manual).
|
||||
*
|
||||
* @author Sebastian Held <sebastian.held@gmx.de> - Initial contribution
|
||||
* @since 1.5.0
|
||||
*/
|
||||
|
||||
@NonNullByDefault
|
||||
public class EcoTouchConnector {
|
||||
private String ip;
|
||||
private String username;
|
||||
private String password;
|
||||
@Nullable
|
||||
List<String> cookies;
|
||||
static Pattern responsePattern = Pattern.compile("#(.+)\\s+S_OK[^0-9-]+([0-9-]+)\\s+([0-9-.]+)");
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(EcoTouchConnector.class);
|
||||
|
||||
/**
|
||||
* Create a network communication without having a current access token.
|
||||
*/
|
||||
public EcoTouchConnector(String ip, String username, String password) {
|
||||
this.ip = ip;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
this.cookies = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a network communication with access token. This speeds up
|
||||
* retrieving values, because the log in step is omitted.
|
||||
*/
|
||||
public EcoTouchConnector(String ip, String username, String password, List<String> cookies) {
|
||||
this.ip = ip;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
this.cookies = cookies;
|
||||
}
|
||||
|
||||
private synchronized void trylogin(boolean force) throws Exception {
|
||||
if (!force && cookies != null) {
|
||||
// we've a login token already
|
||||
return;
|
||||
}
|
||||
login();
|
||||
}
|
||||
|
||||
private void login() throws IOException {
|
||||
cookies = null;
|
||||
String url = null;
|
||||
String line2 = null;
|
||||
String cause = null;
|
||||
try {
|
||||
url = "http://" + ip + "/cgi/login?username=" + URLEncoder.encode(username, "UTF-8") + "&password="
|
||||
+ URLEncoder.encode(password, "UTF-8");
|
||||
URL loginurl = new URL(url);
|
||||
URLConnection connection = loginurl.openConnection();
|
||||
cookies = connection.getHeaderFields().get("Set-Cookie");
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
||||
in.readLine();
|
||||
line2 = in.readLine();
|
||||
} catch (MalformedURLException e) {
|
||||
cause = e.toString();
|
||||
} catch (Exception e) {
|
||||
cause = e.toString();
|
||||
}
|
||||
|
||||
if (line2 != null && line2.trim().equals("#E_USER_DONT_EXIST")) {
|
||||
throw new IOException("Username does not exist.");
|
||||
}
|
||||
if (line2 != null && line2.trim().equals("#E_PASS_DONT_MATCH")) {
|
||||
throw new IOException("Password does not match.");
|
||||
}
|
||||
if (line2 != null && line2.trim().equals("#E_TOO_MANY_USERS")) {
|
||||
throw new IOException("Too many users already logged in.");
|
||||
}
|
||||
if (cookies == null) {
|
||||
if (cause == null)
|
||||
throw new IOException("Cannot login");
|
||||
else
|
||||
throw new IOException("Cannot login: " + cause);
|
||||
}
|
||||
}
|
||||
|
||||
public void logout() {
|
||||
if (cookies != null) {
|
||||
try {
|
||||
URL logouturl = new URL("http://" + ip + "/cgi/logout");
|
||||
logouturl.openConnection();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
cookies = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request a value from the heat pump
|
||||
*
|
||||
* @param tag
|
||||
* The register to query (e.g. "A1")
|
||||
* @return value This value is a 16-bit integer.
|
||||
*/
|
||||
public String getValue(String tag) throws Exception {
|
||||
Map<String, String> result = getValues(Set.of(tag));
|
||||
String value = result.get(tag);
|
||||
if (value == null) {
|
||||
// failed
|
||||
logger.debug("Cannot get value for tag '{}' from Waterkotte EcoTouch.", tag);
|
||||
throw new EcoTouchException("invalid response from EcoTouch");
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request multiple values from the heat pump
|
||||
*
|
||||
* @param tags
|
||||
* The registers to query (e.g. "A1")
|
||||
* @return values A map of tags and their respective string values
|
||||
*/
|
||||
public Map<String, String> getValues(Set<String> tags) throws Exception {
|
||||
final Integer maxNum = 100;
|
||||
|
||||
Map<String, String> result = new HashMap<String, String>();
|
||||
Integer counter = 1;
|
||||
StringBuilder query = new StringBuilder();
|
||||
Iterator<String> iter = tags.iterator();
|
||||
while (iter.hasNext()) {
|
||||
query.append(String.format("t%d=%s&", counter, iter.next()));
|
||||
counter++;
|
||||
if (counter > maxNum) {
|
||||
query.deleteCharAt(query.length() - 1); // remove last '&'
|
||||
String queryStr = String.format("http://%s/cgi/readTags?n=%d&", ip, maxNum) + query;
|
||||
result.putAll(getValues(queryStr));
|
||||
counter = 1;
|
||||
query = new StringBuilder();
|
||||
}
|
||||
}
|
||||
|
||||
if (query.length() > 0) {
|
||||
query.deleteCharAt(query.length() - 1); // remove last '&'
|
||||
String queryStr = String.format("http://%s/cgi/readTags?n=%d&", ip, counter - 1) + query;
|
||||
result.putAll(getValues(queryStr));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a request to the heat pump and evaluate the result
|
||||
*
|
||||
* @param url
|
||||
* The URL to connect to
|
||||
* @return values A map of tags and their respective string values
|
||||
*/
|
||||
private Map<String, String> getValues(String url) throws Exception {
|
||||
trylogin(false);
|
||||
Map<String, String> result = new HashMap<String, String>();
|
||||
int loginAttempt = 0;
|
||||
while (loginAttempt < 2) {
|
||||
BufferedReader reader = null;
|
||||
try {
|
||||
URLConnection connection = new URL(url).openConnection();
|
||||
var localCookies = cookies;
|
||||
if (localCookies != null) {
|
||||
for (String cookie : localCookies) {
|
||||
connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
|
||||
}
|
||||
}
|
||||
InputStream response = connection.getInputStream();
|
||||
reader = new BufferedReader(new InputStreamReader(response));
|
||||
// the answer is s.th. like
|
||||
// #A30 S_OK
|
||||
// 192 223
|
||||
// [...]
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String line2 = reader.readLine();
|
||||
if (line2 == null)
|
||||
break;
|
||||
String doubleline = line + "\n" + line2;
|
||||
Matcher m = responsePattern.matcher(doubleline);
|
||||
if (m.find()) {
|
||||
String tag = m.group(1);
|
||||
String value = m.group(3).trim();
|
||||
result.put(tag, value);
|
||||
}
|
||||
}
|
||||
|
||||
if (result.isEmpty()) {
|
||||
// s.th. went wrong; try to log in again
|
||||
throw new EcoTouchException();
|
||||
}
|
||||
|
||||
// succeeded
|
||||
break;
|
||||
} catch (Exception e) {
|
||||
if (loginAttempt == 0) {
|
||||
// try to login once
|
||||
trylogin(true);
|
||||
}
|
||||
loginAttempt++;
|
||||
} finally {
|
||||
if (reader != null)
|
||||
reader.close();
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a value
|
||||
*
|
||||
* @param tag
|
||||
* The register to set (e.g. "A1")
|
||||
* @param value
|
||||
* The 16-bit integer to set the register to
|
||||
* @return value This value is a 16-bit integer.
|
||||
*/
|
||||
public int setValue(String tag, int value) throws Exception {
|
||||
trylogin(false);
|
||||
|
||||
// set value
|
||||
String url = "http://" + ip + "/cgi/writeTags?returnValue=true&n=1&t1=" + tag + "&v1=" + value;
|
||||
StringBuilder body = null;
|
||||
int loginAttempt = 0;
|
||||
while (loginAttempt < 2) {
|
||||
BufferedReader reader = null;
|
||||
try {
|
||||
URLConnection connection = new URL(url).openConnection();
|
||||
var localCookies = cookies;
|
||||
if (localCookies != null) {
|
||||
for (String cookie : localCookies) {
|
||||
connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
|
||||
}
|
||||
}
|
||||
InputStream response = connection.getInputStream();
|
||||
reader = new BufferedReader(new InputStreamReader(response));
|
||||
body = new StringBuilder();
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
body.append(line + "\n");
|
||||
}
|
||||
if (body.toString().contains("#" + tag)) {
|
||||
// succeeded
|
||||
break;
|
||||
}
|
||||
// s.th. went wrong; try to log in
|
||||
throw new EcoTouchException();
|
||||
} catch (Exception e) {
|
||||
if (loginAttempt == 0) {
|
||||
// try to login once
|
||||
trylogin(true);
|
||||
}
|
||||
loginAttempt++;
|
||||
} finally {
|
||||
if (reader != null)
|
||||
reader.close();
|
||||
}
|
||||
}
|
||||
|
||||
if (body == null || !body.toString().contains("#" + tag)) {
|
||||
// failed
|
||||
logger.debug("Cannot get value for tag '{}' from Waterkotte EcoTouch.", tag);
|
||||
throw new EcoTouchException("invalid response from EcoTouch");
|
||||
}
|
||||
|
||||
// ok, the body now contains s.th. like
|
||||
// #A30 S_OK
|
||||
// 192 223
|
||||
|
||||
Matcher m = responsePattern.matcher(body.toString());
|
||||
boolean b = m.find();
|
||||
if (!b) {
|
||||
// ill formatted response
|
||||
logger.debug("ill formatted response: '{}'", body);
|
||||
throw new EcoTouchException("invalid response from EcoTouch");
|
||||
}
|
||||
|
||||
logger.debug("response: '{}'", body.toString());
|
||||
return Integer.parseInt(m.group(3));
|
||||
}
|
||||
|
||||
/**
|
||||
* Authentication token. Store this and use it, when creating the next
|
||||
* instance of this class.
|
||||
*
|
||||
* @return cookies: This includes the authentication token retrieved during
|
||||
* log in.
|
||||
*/
|
||||
@Nullable
|
||||
public List<String> getCookies() {
|
||||
return cookies;
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
/**
|
||||
* Copyright (c) 2010-2021 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.ecotouch.internal;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
|
||||
/**
|
||||
* Trivial Exception Class.
|
||||
*
|
||||
* Used to solve compiler warning: "Avoid throwing raw exception types".
|
||||
*
|
||||
* @author Sebastian Held <sebastian.held@gmx.de> - Initial contribution
|
||||
* @since 3.1.0
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class EcoTouchException extends Exception {
|
||||
private static final long serialVersionUID = -346364205220073265L;
|
||||
|
||||
public EcoTouchException(String errorMessage, Throwable err) {
|
||||
super(errorMessage, err);
|
||||
}
|
||||
|
||||
public EcoTouchException(String errorMessage) {
|
||||
super(errorMessage);
|
||||
}
|
||||
|
||||
public EcoTouchException() {
|
||||
super();
|
||||
}
|
||||
}
|
@ -0,0 +1,236 @@
|
||||
/**
|
||||
* Copyright (c) 2010-2021 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.ecotouch.internal;
|
||||
|
||||
import static org.openhab.core.library.unit.SIUnits.*;
|
||||
import static org.openhab.core.library.unit.Units.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.core.library.types.DecimalType;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
import org.openhab.core.thing.ChannelUID;
|
||||
import org.openhab.core.thing.Thing;
|
||||
import org.openhab.core.thing.ThingStatus;
|
||||
import org.openhab.core.thing.ThingStatusDetail;
|
||||
import org.openhab.core.thing.binding.BaseThingHandler;
|
||||
import org.openhab.core.types.Command;
|
||||
import org.openhab.core.types.RefreshType;
|
||||
import org.openhab.core.types.State;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* The {@link EcoTouchHandler} is responsible for handling commands, which are
|
||||
* sent to one of the channels.
|
||||
*
|
||||
* @author Sebastian Held - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class EcoTouchHandler extends BaseThingHandler {
|
||||
|
||||
private @Nullable EcoTouchConnector connector = null;
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(EcoTouchHandler.class);
|
||||
|
||||
private @Nullable EcoTouchConfiguration config = null;
|
||||
|
||||
private @Nullable ScheduledFuture<?> refreshJob = null;
|
||||
|
||||
public EcoTouchHandler(Thing thing) {
|
||||
super(thing);
|
||||
}
|
||||
|
||||
private void updateChannel(String tag, String value_str) {
|
||||
try {
|
||||
List<EcoTouchTags> ecoTouchTags = EcoTouchTags.fromTag(tag);
|
||||
for (EcoTouchTags ecoTouchTag : ecoTouchTags) {
|
||||
String channel = ecoTouchTag.getCommand();
|
||||
BigDecimal value = ecoTouchTag.decodeValue(value_str);
|
||||
if (ecoTouchTag == EcoTouchTags.TYPE_ADAPT_HEATING) {
|
||||
// this type needs special treatment
|
||||
// the following reads: value = value / 2 - 2
|
||||
value = value.divide(new BigDecimal(2), 1, RoundingMode.UNNECESSARY).subtract(new BigDecimal(2));
|
||||
QuantityType<?> quantity = new QuantityType<javax.measure.quantity.Temperature>(value, CELSIUS);
|
||||
updateState(channel, quantity);
|
||||
} else {
|
||||
if (ecoTouchTag.getUnit() != ONE) {
|
||||
// this is a quantity type
|
||||
QuantityType<?> quantity = new QuantityType<>(value, ecoTouchTag.getUnit());
|
||||
updateState(channel, quantity);
|
||||
} else {
|
||||
DecimalType number = new DecimalType(value);
|
||||
updateState(channel, number);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleCommand(ChannelUID channelUID, Command command) {
|
||||
var localConnector = connector;
|
||||
if (localConnector == null) {
|
||||
// the binding was not initialized, yet
|
||||
return;
|
||||
}
|
||||
if (command instanceof RefreshType) {
|
||||
// request a refresh of a channel
|
||||
try {
|
||||
EcoTouchTags tag = EcoTouchTags.fromString(channelUID.getId());
|
||||
if (tag != null) {
|
||||
String valueStr = localConnector.getValue(tag.getTagName());
|
||||
updateChannel(tag.getTagName(), valueStr);
|
||||
updateStatus(ThingStatus.ONLINE);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
} else {
|
||||
// send command to heat pump
|
||||
try {
|
||||
EcoTouchTags ecoTouchTag = EcoTouchTags.fromString(channelUID.getId());
|
||||
if (ecoTouchTag == EcoTouchTags.TYPE_ADAPT_HEATING) {
|
||||
// this type needs special treatment
|
||||
QuantityType<?> value = (QuantityType<?>) command;
|
||||
int raw = Math.round(value.floatValue() * 2 + 4);
|
||||
localConnector.setValue(ecoTouchTag.getTagName(), raw);
|
||||
} else {
|
||||
if (ecoTouchTag.getUnit() != ONE) {
|
||||
if (command instanceof QuantityType) {
|
||||
// convert from user unit to heat pump unit
|
||||
QuantityType<?> value = (QuantityType<?>) command;
|
||||
QuantityType<?> rawUnit = value.toUnit(ecoTouchTag.getUnit());
|
||||
if (rawUnit != null) {
|
||||
int raw = rawUnit.intValue();
|
||||
raw *= ecoTouchTag.getDivisor();
|
||||
localConnector.setValue(ecoTouchTag.getTagName(), raw);
|
||||
}
|
||||
} else {
|
||||
logger.debug("handleCommand: requires a QuantityType");
|
||||
}
|
||||
} else {
|
||||
State state = (State) command;
|
||||
DecimalType decimalType = state.as(DecimalType.class);
|
||||
if (decimalType != null) {
|
||||
BigDecimal decimal = decimalType.toBigDecimal();
|
||||
decimal = decimal.multiply(new BigDecimal(ecoTouchTag.getDivisor()));
|
||||
int raw = decimal.intValue();
|
||||
localConnector.setValue(ecoTouchTag.getTagName(), raw);
|
||||
} else {
|
||||
logger.debug("cannot convert {} to a DecimalType", state);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.debug("handleCommand: {}", e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
config = getConfigAs(EcoTouchConfiguration.class);
|
||||
|
||||
var localConfig = config;
|
||||
if (localConfig == null) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
connector = new EcoTouchConnector(localConfig.ip, localConfig.username, localConfig.password);
|
||||
|
||||
scheduler.execute(() -> {
|
||||
try {
|
||||
// try to get a single value
|
||||
var localConnector = connector;
|
||||
if (localConnector == null) {
|
||||
updateStatus(ThingStatus.OFFLINE);
|
||||
return;
|
||||
}
|
||||
localConnector.getValue("A1");
|
||||
} catch (IOException io) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, io.toString());
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
updateStatus(ThingStatus.ONLINE);
|
||||
});
|
||||
|
||||
// start refresh handler
|
||||
startAutomaticRefresh();
|
||||
}
|
||||
|
||||
private void startAutomaticRefresh() {
|
||||
var localRefreshJob = refreshJob;
|
||||
if (localRefreshJob == null || localRefreshJob.isCancelled()) {
|
||||
Runnable runnable = () -> {
|
||||
try {
|
||||
Set<String> tags = new HashSet<String>();
|
||||
for (EcoTouchTags ecoTouchTag : EcoTouchTags.values()) {
|
||||
String channel = ecoTouchTag.getCommand();
|
||||
boolean linked = isLinked(channel);
|
||||
if (linked)
|
||||
tags.add(ecoTouchTag.getTagName());
|
||||
}
|
||||
var localConnector = connector;
|
||||
if (localConnector != null) {
|
||||
Map<String, String> result = localConnector.getValues(tags);
|
||||
|
||||
Iterator<Map.Entry<String, String>> it = result.entrySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
Map.Entry<String, String> pair = it.next();
|
||||
updateChannel(pair.getKey(), pair.getValue());
|
||||
}
|
||||
}
|
||||
} catch (IOException io) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, io.toString());
|
||||
} catch (Exception e) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.toString());
|
||||
} catch (Error e) {
|
||||
// during thing creation, the following error is thrown:
|
||||
// java.lang.NoSuchMethodError: 'org.openhab.binding.ecotouch.internal.EcoTouchTags[]
|
||||
// org.openhab.binding.ecotouch.internal.EcoTouchTags.values()'
|
||||
// not sure why... lets ignore it for now
|
||||
updateStatus(ThingStatus.OFFLINE);
|
||||
}
|
||||
};
|
||||
|
||||
var localConfig = config;
|
||||
if (localConfig != null)
|
||||
refreshJob = scheduler.scheduleWithFixedDelay(runnable, 10, localConfig.refresh, TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
var localRefreshJob = refreshJob;
|
||||
if (localRefreshJob != null && !localRefreshJob.isCancelled()) {
|
||||
localRefreshJob.cancel(true);
|
||||
localRefreshJob = null;
|
||||
}
|
||||
var localConnector = connector;
|
||||
if (localConnector != null)
|
||||
localConnector.logout();
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Copyright (c) 2010-2021 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.ecotouch.internal;
|
||||
|
||||
import static org.openhab.binding.ecotouch.internal.EcoTouchBindingConstants.THING_TYPE_AIR;
|
||||
import static org.openhab.binding.ecotouch.internal.EcoTouchBindingConstants.THING_TYPE_GEO;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.core.thing.Thing;
|
||||
import org.openhab.core.thing.ThingTypeUID;
|
||||
import org.openhab.core.thing.binding.BaseThingHandlerFactory;
|
||||
import org.openhab.core.thing.binding.ThingHandler;
|
||||
import org.openhab.core.thing.binding.ThingHandlerFactory;
|
||||
import org.osgi.service.component.annotations.Component;
|
||||
|
||||
/**
|
||||
* The {@link EcoTouchHandlerFactory} is responsible for creating things and thing
|
||||
* handlers.
|
||||
*
|
||||
* @author Sebastian Held - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
@Component(configurationPid = "binding.ecotouch", service = ThingHandlerFactory.class)
|
||||
public class EcoTouchHandlerFactory extends BaseThingHandlerFactory {
|
||||
|
||||
private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
|
||||
.unmodifiableSet(Stream.of(THING_TYPE_GEO, THING_TYPE_AIR).collect(Collectors.toSet()));
|
||||
|
||||
@Override
|
||||
public boolean supportsThingType(ThingTypeUID thingTypeUID) {
|
||||
return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable ThingHandler createHandler(Thing thing) {
|
||||
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
|
||||
|
||||
if (THING_TYPE_GEO.equals(thingTypeUID) || THING_TYPE_AIR.equals(thingTypeUID)) {
|
||||
return new EcoTouchHandler(thing);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<binding:binding id="ecotouch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:binding="https://openhab.org/schemas/binding/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/binding/v1.0.0 https://openhab.org/schemas/binding-1.0.0.xsd">
|
||||
|
||||
<name>EcoTouch Binding</name>
|
||||
<description>This is the binding for a Waterkotte EcoTouch heat pump.</description>
|
||||
<author>Sebastian Held</author>
|
||||
|
||||
</binding:binding>
|
@ -0,0 +1,247 @@
|
||||
# binding
|
||||
binding.ecotouch.name = EcoTouch Binding
|
||||
binding.ecotouch.description = Überwachung und Steuerung von Waterkotte EcoTouch Wärmepumpen
|
||||
|
||||
# thing types (geo)
|
||||
thing-type.ecotouch.geo.label = Waterkotte EcoTouch Geo
|
||||
thing-type.ecotouch.geo.description = Waterkotte EcoTouch Geo Erdwärmepumpe
|
||||
|
||||
# thing types (air)
|
||||
thing-type.ecotouch.air.label = Waterkotte EcoTouch Air
|
||||
thing-type.ecotouch.air.description = Waterkotte EcoTouch Air Luftwärmepumpe
|
||||
|
||||
# thing type config description (geo)
|
||||
thing-type.config.ecotouch.geo.ip.label = IP Adresse / Hostname
|
||||
thing-type.config.ecotouch.geo.ip.description = IP Adresse oder Hostname der EcoTouch Anzeigeeinheit
|
||||
thing-type.config.ecotouch.geo.username.label = Login Benutzername
|
||||
thing-type.config.ecotouch.geo.username.description = Seit Software Version 1.6.xx der Anzeigeeinheit ist der Benutzername "waterkotte". Davor war es "admin".
|
||||
thing-type.config.ecotouch.geo.password.label = Login Passwort
|
||||
thing-type.config.ecotouch.geo.password.description = Seit Software Version 1.6.xx der Anzeigeeinheit ist das Passwort "waterkotte". Davor war es "wtkadmin".
|
||||
|
||||
# thing type config description (air)
|
||||
thing-type.config.ecotouch.air.ip.label = IP Adresse / Hostname
|
||||
thing-type.config.ecotouch.air.ip.description = IP Adresse oder Hostname der EcoTouch Anzeigeeinheit
|
||||
thing-type.config.ecotouch.air.username.label = Login Benutzername
|
||||
thing-type.config.ecotouch.air.username.description = Seit Software Version 1.6.xx der Anzeigeeinheit ist der Benutzername "waterkotte". Davor war es "admin".
|
||||
thing-type.config.ecotouch.air.password.label = Login Passwort
|
||||
thing-type.config.ecotouch.air.password.description = Seit Software Version 1.6.xx der Anzeigeeinheit ist das Passwort "waterkotte". Davor war es "wtkadmin".
|
||||
|
||||
# channel types
|
||||
channel-type.ecotouch.temperature_outside.label = Außentemperatur
|
||||
channel-type.ecotouch.temperature_outside.description = Aktuelle Außentemperatur
|
||||
channel-type.ecotouch.temperature_outside_1h.label = Außentemperatur gemittelt 1h
|
||||
channel-type.ecotouch.temperature_outside_1h.description = Außentemperatur gemittelt über 1 Stunde
|
||||
channel-type.ecotouch.temperature_outside_24h.label = Außentemperatur gemittelt 24h
|
||||
channel-type.ecotouch.temperature_outside_24h.description = Außentemperatur gemittelt über 24 Stunden
|
||||
channel-type.ecotouch.temperature_source_in.label = Quelleneintrittstemperatur
|
||||
channel-type.ecotouch.temperature_source_in.description = Quelleneintrittstemperatur
|
||||
channel-type.ecotouch.temperature_source_out.label = Quellenaustrittstemperatur
|
||||
channel-type.ecotouch.temperature_source_out.description = Quellenaustrittstemperatur
|
||||
channel-type.ecotouch.temperature_evaporation.label = Verdampfungstemperatur
|
||||
channel-type.ecotouch.temperature_evaporation.description = Verdampfungstemperatur
|
||||
channel-type.ecotouch.temperature_suction.label = Sauggastemperatur
|
||||
channel-type.ecotouch.temperature_suction.description = Sauggastemperatur
|
||||
channel-type.ecotouch.pressure_evaporation.label = Verdampfungsdruck
|
||||
channel-type.ecotouch.pressure_evaporation.description = Verdampfungsdruck
|
||||
channel-type.ecotouch.temperature_return_set.label = Temperatur Rücklauf Soll
|
||||
channel-type.ecotouch.temperature_return_set.description = Temperatur Rücklauf Soll
|
||||
channel-type.ecotouch.temperature_return.label = Rücklauftemperatur
|
||||
channel-type.ecotouch.temperature_return.description = Rücklauftemperatur
|
||||
channel-type.ecotouch.temperature_flow.label = Vorlauftemperatur
|
||||
channel-type.ecotouch.temperature_flow.description = Vorlauftemperatur
|
||||
channel-type.ecotouch.temperature_condensation.label = Kondensationstemperatur
|
||||
channel-type.ecotouch.temperature_condensation.description = Kondensationstemperatur
|
||||
channel-type.ecotouch.pressure_condensation.label = Kondensationsdruck
|
||||
channel-type.ecotouch.pressure_condensation.description = Kondensationsdruck
|
||||
channel-type.ecotouch.temperature_storage.label = Speichertemperatur
|
||||
channel-type.ecotouch.temperature_storage.description = Speichertemperatur
|
||||
channel-type.ecotouch.temperature_room.label = Raumtemperatur
|
||||
channel-type.ecotouch.temperature_room.description = Raumtemperatur
|
||||
channel-type.ecotouch.temperature_room_1h.label = Raumtemperatur gemittelt 1h
|
||||
channel-type.ecotouch.temperature_room_1h.description = Raumtemperatur gemittelt über 1 Stunde
|
||||
channel-type.ecotouch.temperature_water.label = Warmwassertemperatur
|
||||
channel-type.ecotouch.temperature_water.description = Aktuelle Temperatur im Warmwasserspeicher
|
||||
channel-type.ecotouch.temperature_pool.label = Pool-Temperatur
|
||||
channel-type.ecotouch.temperature_pool.description = Pool-Temperatur
|
||||
channel-type.ecotouch.temperature_solarlabel = Solarkollektortemperatur
|
||||
channel-type.ecotouch.temperature_solar.description = Solarkollektortemperatur
|
||||
channel-type.ecotouch.temperature_solar_flow.label = Solarkreis Vorlauftemperatur
|
||||
channel-type.ecotouch.temperature_solar_flow.description = Solarkreis Vorlauftemperatur
|
||||
channel-type.ecotouch.position_expansion_valve.label = Ventilöffnung el. Expansionsventil
|
||||
channel-type.ecotouch.position_expansion_valve.description = Ventilöffnung elektrisches Expansionsventil
|
||||
channel-type.ecotouch.power_compressor.label = Elektrische Antriebsleitung Verdichter
|
||||
channel-type.ecotouch.power_compressor.description = Aktuelle elektrische Antriebsleitung für den Verdichter
|
||||
channel-type.ecotouch.power_heating.label = Thermische Wärmeleistungsabgabe
|
||||
channel-type.ecotouch.power_heating.description = Aktuelle abgegebene thermische Leistung der Wärmepumpe
|
||||
channel-type.ecotouch.power_cooling.label = Thermische Kälteleistungsabgabe
|
||||
channel-type.ecotouch.power_cooling.description = Aktuelle abgegebene thermische Kälteleistung der Wärmepumpe
|
||||
channel-type.ecotouch.cop_heating.label = COP heizen
|
||||
channel-type.ecotouch.cop_heating.description = Wirkungsgrad bzw. Leitungszahl heizen
|
||||
channel-type.ecotouch.cop_cooling.label = COP kühlen
|
||||
channel-type.ecotouch.cop_cooling.description = Wirkungsgrad bzw. Leitungszahl kühlen
|
||||
channel-type.ecotouch.temperature_heating_return.label = Heizkreistemperatur
|
||||
channel-type.ecotouch.temperature_heating_return.description = Aktuelle Heizkreistemperatur
|
||||
channel-type.ecotouch.temperature_heating_set.label = Sollwert Heizbetrieb
|
||||
channel-type.ecotouch.temperature_heating_set.description = Geforderte Temperatur im Heizbetrieb
|
||||
channel-type.ecotouch.temperature_heating_set2.label = BMS Sollwert Heizbetrieb
|
||||
channel-type.ecotouch.temperature_heating_set2.description = Geforderte Heizkreistemperatur vom BMS
|
||||
channel-type.ecotouch.temperature_cooling_return.label = Kühlkreistemperatur
|
||||
channel-type.ecotouch.temperature_cooling_return.description = Aktuelle Kühlkreistemperatur
|
||||
channel-type.ecotouch.temperature_cooling_set.label = Sollwert Kühlkreistemperatur
|
||||
channel-type.ecotouch.temperature_cooling_set.description = Geforderte Kühlkreistemperatur
|
||||
channel-type.ecotouch.temperature_cooling_set2.label = BMS Sollwert Kühlkreistemperatur
|
||||
channel-type.ecotouch.temperature_cooling_set2.description = Geforderte Kühlkreistemperatur vom BMS
|
||||
channel-type.ecotouch.temperature_water_set.label = Sollwert Warmwasserspeicher
|
||||
channel-type.ecotouch.temperature_water_set.description = Geforderte Temperatur im Warmwasserspeicher
|
||||
channel-type.ecotouch.temperature_water_set2.label = BMS Sollwert Warmwasserspeicher
|
||||
channel-type.ecotouch.temperature_water_set2.description = Solltemperatur im Warmwasserspeicher vom BMS
|
||||
channel-type.ecotouch.temperature_pool_set.label = Sollwert Pool-Temperatur
|
||||
channel-type.ecotouch.temperature_pool_set.description = Geforderte Poolwasser-Temperatur
|
||||
channel-type.ecotouch.temperature_pool_set2.label = BMS Sollwert Pool-Temperatur
|
||||
channel-type.ecotouch.temperature_pool_set2.description = Geforderte Poolwasser-Temperatur vom BMS
|
||||
channel-type.ecotouch.compressor_power.label = Sollwert Verdichter
|
||||
channel-type.ecotouch.compressor_power.description = Geforderte Verdichterleistung
|
||||
channel-type.ecotouch.percent_heat_circ_pump.label = Aktivität Heizungsumwälzpumpe
|
||||
channel-type.ecotouch.percent_heat_circ_pump.description = Aktivität Heizungsumwälzpumpe
|
||||
channel-type.ecotouch.percent_source_pump.label = Aktivität Quellenpumpe
|
||||
channel-type.ecotouch.percent_source_pump.description = Aktivität Quellenpumpe
|
||||
channel-type.ecotouch.percent_compressor.label = Aktivität Verdichter
|
||||
channel-type.ecotouch.percent_compressor.description = Aktivität Verdichter
|
||||
channel-type.ecotouch.hysteresis_heating.label = Hysterese Heizung
|
||||
channel-type.ecotouch.hysteresis_heating.description = Hysterese Heizung
|
||||
channel-type.ecotouch.temperature2_outside_1h.label = Außentemperatur gemittelt 1h (A90)
|
||||
channel-type.ecotouch.temperature2_outside_1h.description = Außentemperatur gemittelt über 1 Stunde (A90)
|
||||
channel-type.ecotouch.nviNormAussen.label = Heizkurve - nviNormAussen
|
||||
channel-type.ecotouch.nviNormAussen.description = Heizkurve - nviNormAussen
|
||||
channel-type.ecotouch.nviHeizkreisNorm.label = Heizkurve - nviHeizkreisNorm
|
||||
channel-type.ecotouch.nviHeizkreisNorm.description = Heizkurve - nviHeizkreisNorm
|
||||
channel-type.ecotouch.nviTHeizgrenze.label = Heizkurve - nviTHeizgrenze
|
||||
channel-type.ecotouch.nviTHeizgrenze.description = Heizkurve - nviTHeizgrenze
|
||||
channel-type.ecotouch.nviTHeizgrenzeSoll.label = Heizkurve - nviTHeizgrenzeSoll
|
||||
channel-type.ecotouch.nviTHeizgrenzeSoll.description = Heizkurve - nviTHeizgrenzeSoll
|
||||
channel-type.ecotouch.maxVLTemp.label = Heizkurve max. VL-Temp (?)
|
||||
channel-type.ecotouch.maxVLTemp.description = Heizkurve max. VL-Temp (?)
|
||||
channel-type.ecotouch.tempSet0Deg.label = Heizkreis Soll-Temp 0°C
|
||||
channel-type.ecotouch.tempSet0Deg.description = Heizkreis Soll-Temp bei 0°C Außentemperatur
|
||||
channel-type.ecotouch.coolEnableTemp.label = Kühlen Einschalt-Temp. Außentemp (?)
|
||||
channel-type.ecotouch.coolEnableTemp.description = Kühlen Einschalt-Temp. Außentemp (?)
|
||||
channel-type.ecotouch.nviSollKuehlen.label = Heizkurve - nviSollKuehlen
|
||||
channel-type.ecotouch.nviSollKuehlen.description = Heizkurve - nviSollKuehlen
|
||||
channel-type.ecotouch.tempchange_heating_pv.label = Änderung Heizkreis PV
|
||||
channel-type.ecotouch.tempchange_heating_pv.description = Temperaturveränderung Heizkreis bei PV-Ertrag
|
||||
channel-type.ecotouch.tempchange_cooling_pv.label = Änderung Kühlkreis PV
|
||||
channel-type.ecotouch.tempchange_cooling_pv.description = Temperaturveränderung Kühlkreis bei PV-Ertrag
|
||||
channel-type.ecotouch.tempchange_warmwater_pv.label = Änderung Warmwasser PV
|
||||
channel-type.ecotouch.tempchange_warmwater_pv.description = Temperaturveränderung Warmwasser bei PV-Ertrag
|
||||
channel-type.ecotouch.tempchange_pool_pv.label = Änderung Pool PV
|
||||
channel-type.ecotouch.tempchange_pool_pv.description = Temperaturveränderung Pool bei PV-Ertrag
|
||||
channel-type.ecotouch.version_controller.label = Firmware-Version Regler
|
||||
channel-type.ecotouch.version_controller.description = Firmware-Version Regler
|
||||
channel-type.ecotouch.version_controller_build.label = Firmware-Build Regler
|
||||
channel-type.ecotouch.version_controller_build.description = Firmware-Build Regler
|
||||
channel-type.ecotouch.version_bios.label = BIOS-Version
|
||||
channel-type.ecotouch.version_bios.description = BIOS-Version
|
||||
channel-type.ecotouch.date_day.label = Datum: Tag
|
||||
channel-type.ecotouch.date_day.description = Datum: Tag
|
||||
channel-type.ecotouch.date_month.label = Datum: Monat
|
||||
channel-type.ecotouch.date_month.description = Datum: Monat
|
||||
channel-type.ecotouch.date_year.label = Datum: Jahr
|
||||
channel-type.ecotouch.date_year.description = Datum: Jahr
|
||||
channel-type.ecotouch.time_hour.label = Uhrzeit: Stunde
|
||||
channel-type.ecotouch.time_hour.description = Uhrzeit: Stunde
|
||||
channel-type.ecotouch.time_minute.label = Uhrzeit: Minute
|
||||
channel-type.ecotouch.time_minute.description = Uhrzeit: Minute
|
||||
channel-type.ecotouch.operating_hours_compressor1.label = Stunden Verdichter 1
|
||||
channel-type.ecotouch.operating_hours_compressor1.description = Betriebsstunden Verdichter 1
|
||||
channel-type.ecotouch.operating_hours_compressor2.label = Stunden Verdichter 2
|
||||
channel-type.ecotouch.operating_hours_compressor2.description = Betriebsstunden Verdichter 2
|
||||
channel-type.ecotouch.operating_hours_circulation_pump.label = Stunden Heizungsumwälzpumpe
|
||||
channel-type.ecotouch.operating_hours_circulation_pump.description = Betriebsstunden Heizungsumwälzpumpe
|
||||
channel-type.ecotouch.operating_hours_source_pump.label = Stunden Quellenpumpe
|
||||
channel-type.ecotouch.operating_hours_source_pump.description = Betriebsstunden Quellenpumpe
|
||||
channel-type.ecotouch.operating_hours_solar.label = Stunden Solarkreis
|
||||
channel-type.ecotouch.operating_hours_solar.description = Betriebsstunden Solarkreis
|
||||
channel-type.ecotouch.enable_heating.label = Abschaltung Heizen
|
||||
channel-type.ecotouch.enable_heating.description = Handabschaltung Heizbetrieb
|
||||
channel-type.ecotouch.enable_cooling.label = Abschaltung Kühlen
|
||||
channel-type.ecotouch.enable_cooling.description = Handabschaltung Kühlbetrieb
|
||||
channel-type.ecotouch.enable_warmwater.label = Abschaltung Warmwasser
|
||||
channel-type.ecotouch.enable_warmwater.description = Handabschaltung Warmwasserbetrieb
|
||||
channel-type.ecotouch.enable_pool.label = Abschaltung Pool
|
||||
channel-type.ecotouch.enable_pool.description = Handabschaltung Pool_Heizbetrieb
|
||||
channel-type.ecotouch.enable_pv.label = Abschaltung PV
|
||||
channel-type.ecotouch.enable_pv.description = Betriebsmodus PV
|
||||
channel-type.ecotouch.state.label = Status Wärmepumpe
|
||||
channel-type.ecotouch.state.description = Status der Wärmepumpenkomponenten (Bitfeld, siehe auch die Einzelzustände)
|
||||
channel-type.ecotouch.state_sourcepump.label = Status Quellenpumpe
|
||||
channel-type.ecotouch.state_sourcepump.description = Status der Wärmepumpenkomponenten: Quellenpumpe
|
||||
channel-type.ecotouch.state_heatingpump.label = Status Heizungsumwälzpumpe
|
||||
channel-type.ecotouch.state_heatingpump.description = Status der Wärmepumpenkomponenten: Heizungsumwälzpumpe
|
||||
channel-type.ecotouch.state_evd.label = Status el. Expansionsventil
|
||||
channel-type.ecotouch.state_evd.description = Status der Wärmepumpenkomponenten: el. Expansionsventil
|
||||
channel-type.ecotouch.state_compressor1.label = Status Verdichter 1
|
||||
channel-type.ecotouch.state_compressor1.description = Status der Wärmepumpenkomponenten: Verdichter 1
|
||||
channel-type.ecotouch.state_compressor2.label = Status Verdichter 2
|
||||
channel-type.ecotouch.state_compressor2.description = Status der Wärmepumpenkomponenten: Verdichter 2
|
||||
channel-type.ecotouch.state_extheater.label = Status ext. Wärmeerzeuger
|
||||
channel-type.ecotouch.state_extheater.description = Status der Wärmepumpenkomponenten: externer Wärmeerzeuger
|
||||
channel-type.ecotouch.state_alarm.label = Status Alarmausgang
|
||||
channel-type.ecotouch.state_alarm.description = Status der Wärmepumpenkomponenten: Alarmausgang
|
||||
channel-type.ecotouch.state_cooling.label = Status Motorventil Kühlen
|
||||
channel-type.ecotouch.state_cooling.description = Status der Wärmepumpenkomponenten: Motorventil Kühlbetrieb
|
||||
channel-type.ecotouch.state_water.label = Status Motorventil Wasser
|
||||
channel-type.ecotouch.state_water.description = Status der Wärmepumpenkomponenten: Motorventil Warmwasser
|
||||
channel-type.ecotouch.state_pool.label = Status Motorventil Pool
|
||||
channel-type.ecotouch.state_pool.description = Status der Wärmepumpenkomponenten: Motorventil Pool
|
||||
channel-type.ecotouch.state_solar.label = Status Solarbetrieb
|
||||
channel-type.ecotouch.state_solar.description = Status der Wärmepumpenkomponenten: Solarbetrieb
|
||||
channel-type.ecotouch.state_cooling4way.label = Status 4-Wegeventil
|
||||
channel-type.ecotouch.state_cooling4way.description = Status der Wärmepumpenkomponenten: 4-Wegeventil im Kältekreis
|
||||
channel-type.ecotouch.alarm.label = Alarmmeldungen
|
||||
channel-type.ecotouch.alarm.description = Meldungen von Ausfällen F0xx die zum Wärmepumpenausfall führen
|
||||
channel-type.ecotouch.interruptions.label = Unterbrechungen
|
||||
channel-type.ecotouch.interruptions.description = Unterbrechungen
|
||||
channel-type.ecotouch.state_service.label = Serviceebene
|
||||
channel-type.ecotouch.state_service.description = Serviceebene
|
||||
channel-type.ecotouch.adapt_heating.label = Temperaturanpassung heizen
|
||||
channel-type.ecotouch.adapt_heating.description = Temperaturanpassung für die Heizung
|
||||
channel-type.ecotouch.manual_heatingpump.label = Heizungspumpe
|
||||
channel-type.ecotouch.manual_heatingpump.description = Handschaltung Heizungspumpe
|
||||
channel-type.ecotouch.manual_sourcepump.label = Quellenpumpe
|
||||
channel-type.ecotouch.manual_sourcepump.description = Handschaltung Quellenpumpe
|
||||
channel-type.ecotouch.manual_solarpump1.label = Solarpumpe 1
|
||||
channel-type.ecotouch.manual_solarpump1.description = Handschaltung Solarpumpe 1
|
||||
channel-type.ecotouch.manual_solarpump2.label = Solarpumpe 2
|
||||
channel-type.ecotouch.manual_solarpump2.description = Handschaltung Solarpumpe 2
|
||||
channel-type.ecotouch.manual_tankpump.label = Speicherpumpe
|
||||
channel-type.ecotouch.manual_tankpump.description = Handschaltung Speicherladepumpe
|
||||
channel-type.ecotouch.manual_valve.label = Brauchwasserventil
|
||||
channel-type.ecotouch.manual_valve.description = Handschaltung Brauchwasserventil
|
||||
channel-type.ecotouch.manual_poolvalve.label = Poolventil
|
||||
channel-type.ecotouch.manual_poolvalve.description = Handschaltung Poolventil
|
||||
channel-type.ecotouch.manual_coolvalve.label = Kühlventil
|
||||
channel-type.ecotouch.manual_coolvalve.description = Handschaltung Kühlventil
|
||||
channel-type.ecotouch.manual_4wayvalve.label = Vierwegeventil
|
||||
channel-type.ecotouch.manual_4wayvalve.description = Handschaltung Vierwegeventil
|
||||
channel-type.ecotouch.manual_multiext.label = Multiausgang Ext.
|
||||
channel-type.ecotouch.manual_multiext.description = Handschaltung Multiausgang Ext.
|
||||
channel-type.ecotouch.temperature_surrounding.label = Temperatur Umgebung
|
||||
channel-type.ecotouch.temperature_surrounding.description = Temperatur Umgebung
|
||||
channel-type.ecotouch.temperature_suction_air.label = Temperatur Sauggas
|
||||
channel-type.ecotouch.temperature_suction_air.description = Temperatur Sauggas
|
||||
channel-type.ecotouch.temperature_sump.label = Temperatur Ölsumpf
|
||||
channel-type.ecotouch.temperature_sump.description = Temperatur Ölsumpf
|
||||
channel-type.ecotouch.ecovent_temp_exhaust_air.label = EcoVent Abluft
|
||||
channel-type.ecotouch.ecovent_temp_exhaust_air.description = EcoVent Abluft
|
||||
channel-type.ecotouch.ecovent_temp_exit_air.label = EcoVent Fortluft
|
||||
channel-type.ecotouch.ecovent_temp_exit_air.description = EcoVent Fortluft
|
||||
channel-type.ecotouch.ecovent_temp_outdoor_air.label = EcoVent Außenluft
|
||||
channel-type.ecotouch.ecovent_temp_outdoor_air.description = EcoVent Außenluft
|
||||
channel-type.ecotouch.ecovent_temp_supply_air.label = EcoVent Zuluft
|
||||
channel-type.ecotouch.ecovent_temp_supply_air.description = EcoVent Zuluft
|
||||
channel-type.ecotouch.ecovent_CO2_value.label = EcoVent CO2
|
||||
channel-type.ecotouch.ecovent_CO2_value.description = EcoVent CO2
|
||||
channel-type.ecotouch.ecovent_moisture_value.label = EcoVent Luftfeuchtigkeit
|
||||
channel-type.ecotouch.ecovent_moisture_value.description = EcoVent Luftfeuchtigkeit
|
||||
channel-type.ecotouch.ecovent_output_y1.label = EcoVent Lüfterdrehzahl
|
||||
channel-type.ecotouch.ecovent_output_y1.description = EcoVent Lüfterdrehzahl
|
@ -0,0 +1,943 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<thing:thing-descriptions bindingId="ecotouch"
|
||||
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">
|
||||
|
||||
<thing-type id="geo">
|
||||
<label>Waterkotte EcoTouch Geo</label>
|
||||
<description>Waterkotte EcoTouch Geo heat pump</description>
|
||||
<category>HVAC</category>
|
||||
|
||||
<channels>
|
||||
<channel id="temperature_outside" typeId="temperature_outside"/>
|
||||
<channel id="temperature_outside_1h" typeId="temperature_outside_1h"/>
|
||||
<channel id="temperature_outside_24h" typeId="temperature_outside_24h"/>
|
||||
<channel id="temperature_source_in" typeId="temperature_source_in"/>
|
||||
<channel id="temperature_source_out" typeId="temperature_source_out"/>
|
||||
<channel id="temperature_evaporation" typeId="temperature_evaporation"/>
|
||||
<channel id="temperature_suction" typeId="temperature_suction"/>
|
||||
<channel id="pressure_evaporation" typeId="pressure_evaporation"/>
|
||||
<channel id="temperature_return_set" typeId="temperature_return_set"/>
|
||||
<channel id="temperature_return" typeId="temperature_return"/>
|
||||
<channel id="temperature_flow" typeId="temperature_flow"/>
|
||||
<channel id="temperature_condensation" typeId="temperature_condensation"/>
|
||||
<channel id="pressure_condensation" typeId="pressure_condensation"/>
|
||||
<channel id="temperature_storage" typeId="temperature_storage"/>
|
||||
<channel id="temperature_room" typeId="temperature_room"/>
|
||||
<channel id="temperature_room_1h" typeId="temperature_room_1h"/>
|
||||
<channel id="temperature_water" typeId="temperature_water"/>
|
||||
<channel id="temperature_pool" typeId="temperature_pool"/>
|
||||
<channel id="temperature_solar" typeId="temperature_solar"/>
|
||||
<channel id="temperature_solar_flow" typeId="temperature_solar_flow"/>
|
||||
<channel id="position_expansion_valve" typeId="position_expansion_valve"/>
|
||||
<channel id="power_compressor" typeId="power_compressor"/>
|
||||
<channel id="power_heating" typeId="power_heating"/>
|
||||
<channel id="power_cooling" typeId="power_cooling"/>
|
||||
<channel id="cop_heating" typeId="cop_heating"/>
|
||||
<channel id="cop_cooling" typeId="cop_cooling"/>
|
||||
<channel id="temperature_heating_return" typeId="temperature_heating_return"/>
|
||||
<channel id="temperature_heating_set" typeId="temperature_heating_set"/>
|
||||
<channel id="temperature_heating_set2" typeId="temperature_heating_set2"/>
|
||||
<channel id="temperature_cooling_return" typeId="temperature_cooling_return"/>
|
||||
<channel id="temperature_cooling_set" typeId="temperature_cooling_set"/>
|
||||
<channel id="temperature_cooling_set2" typeId="temperature_cooling_set2"/>
|
||||
<channel id="temperature_water_set" typeId="temperature_water_set"/>
|
||||
<channel id="temperature_water_set2" typeId="temperature_water_set2"/>
|
||||
<channel id="temperature_pool_set" typeId="temperature_pool_set"/>
|
||||
<channel id="temperature_pool_set2" typeId="temperature_pool_set2"/>
|
||||
<channel id="compressor_power" typeId="compressor_power"/>
|
||||
<channel id="percent_heat_circ_pump" typeId="percent_heat_circ_pump"/>
|
||||
<channel id="percent_source_pump" typeId="percent_source_pump"/>
|
||||
<channel id="percent_compressor" typeId="percent_compressor"/>
|
||||
<channel id="hysteresis_heating" typeId="hysteresis_heating"/>
|
||||
<channel id="temperature2_outside_1h" typeId="temperature2_outside_1h"/>
|
||||
<channel id="nviNormAussen" typeId="nviNormAussen"/>
|
||||
<channel id="nviHeizkreisNorm" typeId="nviHeizkreisNorm"/>
|
||||
<channel id="nviTHeizgrenze" typeId="nviTHeizgrenze"/>
|
||||
<channel id="nviTHeizgrenzeSoll" typeId="nviTHeizgrenzeSoll"/>
|
||||
<channel id="maxVLTemp" typeId="maxVLTemp"/>
|
||||
<channel id="tempSet0Deg" typeId="tempSet0Deg"/>
|
||||
<channel id="coolEnableTemp" typeId="coolEnableTemp"/>
|
||||
<channel id="nviSollKuehlen" typeId="nviSollKuehlen"/>
|
||||
<channel id="tempchange_heating_pv" typeId="tempchange_heating_pv"/>
|
||||
<channel id="tempchange_cooling_pv" typeId="tempchange_cooling_pv"/>
|
||||
<channel id="tempchange_warmwater_pv" typeId="tempchange_warmwater_pv"/>
|
||||
<channel id="tempchange_pool_pv" typeId="tempchange_pool_pv"/>
|
||||
<channel id="version_controller" typeId="version_controller"/>
|
||||
<channel id="version_controller_build" typeId="version_controller_build"/>
|
||||
<channel id="version_bios" typeId="version_bios"/>
|
||||
<channel id="date_day" typeId="date_day"/>
|
||||
<channel id="date_month" typeId="date_month"/>
|
||||
<channel id="date_year" typeId="date_year"/>
|
||||
<channel id="time_hour" typeId="time_hour"/>
|
||||
<channel id="time_minute" typeId="time_minute"/>
|
||||
<channel id="operating_hours_compressor1" typeId="operating_hours_compressor1"/>
|
||||
<channel id="operating_hours_compressor2" typeId="operating_hours_compressor2"/>
|
||||
<channel id="operating_hours_circulation_pump" typeId="operating_hours_circulation_pump"/>
|
||||
<channel id="operating_hours_source_pump" typeId="operating_hours_source_pump"/>
|
||||
<channel id="operating_hours_solar" typeId="operating_hours_solar"/>
|
||||
<channel id="enable_heating" typeId="enable_heating"/>
|
||||
<channel id="enable_cooling" typeId="enable_cooling"/>
|
||||
<channel id="enable_warmwater" typeId="enable_warmwater"/>
|
||||
<channel id="enable_pool" typeId="enable_pool"/>
|
||||
<channel id="enable_pv" typeId="enable_pv"/>
|
||||
<channel id="state" typeId="state"/>
|
||||
<channel id="state_sourcepump" typeId="state_sourcepump"/>
|
||||
<channel id="state_heatingpump" typeId="state_heatingpump"/>
|
||||
<channel id="state_evd" typeId="state_evd"/>
|
||||
<channel id="state_compressor1" typeId="state_compressor1"/>
|
||||
<channel id="state_compressor2" typeId="state_compressor2"/>
|
||||
<channel id="state_extheater" typeId="state_extheater"/>
|
||||
<channel id="state_alarm" typeId="state_alarm"/>
|
||||
<channel id="state_cooling" typeId="state_cooling"/>
|
||||
<channel id="state_water" typeId="state_water"/>
|
||||
<channel id="state_pool" typeId="state_pool"/>
|
||||
<channel id="state_solar" typeId="state_solar"/>
|
||||
<channel id="state_cooling4way" typeId="state_cooling4way"/>
|
||||
<channel id="alarm" typeId="alarm"/>
|
||||
<channel id="interruptions" typeId="interruptions"/>
|
||||
<channel id="state_service" typeId="state_service"/>
|
||||
<channel id="adapt_heating" typeId="adapt_heating"/>
|
||||
<channel id="manual_heatingpump" typeId="manual_heatingpump"/>
|
||||
<channel id="manual_sourcepump" typeId="manual_sourcepump"/>
|
||||
<channel id="manual_solarpump1" typeId="manual_solarpump1"/>
|
||||
<channel id="manual_solarpump2" typeId="manual_solarpump2"/>
|
||||
<channel id="manual_tankpump" typeId="manual_tankpump"/>
|
||||
<channel id="manual_valve" typeId="manual_valve"/>
|
||||
<channel id="manual_poolvalve" typeId="manual_poolvalve"/>
|
||||
<channel id="manual_coolvalve" typeId="manual_coolvalve"/>
|
||||
<channel id="manual_4wayvalve" typeId="manual_4wayvalve"/>
|
||||
<channel id="manual_multiext" typeId="manual_multiext"/>
|
||||
|
||||
<channel id="ecovent_temp_exhaust_air" typeId="ecovent_temp_exhaust_air"/>
|
||||
<channel id="ecovent_temp_exit_air" typeId="ecovent_temp_exit_air"/>
|
||||
<channel id="ecovent_temp_outdoor_air" typeId="ecovent_temp_outdoor_air"/>
|
||||
<channel id="ecovent_temp_supply_air" typeId="ecovent_temp_supply_air"/>
|
||||
<channel id="ecovent_CO2_value" typeId="ecovent_CO2_value"/>
|
||||
<channel id="ecovent_moisture_value" typeId="ecovent_moisture_value"/>
|
||||
<channel id="ecovent_output_y1" typeId="ecovent_output_y1"/>
|
||||
<channel id="ecovent_mode" typeId="ecovent_mode"/>
|
||||
</channels>
|
||||
|
||||
<config-description>
|
||||
<parameter name="ip" type="text" required="true">
|
||||
<context>network-address</context>
|
||||
<label>Address of Heat Pump</label>
|
||||
<description>Enter the IP address or the hostname of the EcoTouch display unit</description>
|
||||
</parameter>
|
||||
<parameter name="username" type="text" required="true">
|
||||
<label>Username</label>
|
||||
<description>Since Waterkotte Display software version 1.6.xx, the username default value is waterkotte. Prior to
|
||||
that, the username default was admin</description>
|
||||
</parameter>
|
||||
<parameter name="password" type="text" required="true">
|
||||
<context>password</context>
|
||||
<label>Password</label>
|
||||
<description>Since Waterkotte Display software version 1.6.xx, the password default value is waterkotte. Prior to
|
||||
that, the password default was wtkadmin</description>
|
||||
</parameter>
|
||||
<parameter name="refresh" type="integer" required="false" min="10" unit="s">
|
||||
<default>60</default>
|
||||
<label>Refresh Interval</label>
|
||||
<description>This is the refresh interval in seconds for all channels.</description>
|
||||
</parameter>
|
||||
</config-description>
|
||||
|
||||
</thing-type>
|
||||
|
||||
<thing-type id="air">
|
||||
<label>Waterkotte EcoTouch Air</label>
|
||||
<description>Waterkotte EcoTouch Air heat pump</description>
|
||||
<category>HVAC</category>
|
||||
|
||||
<channels>
|
||||
<channel id="temperature_outside" typeId="temperature_outside"/>
|
||||
<channel id="temperature_outside_1h" typeId="temperature_outside_1h"/>
|
||||
<channel id="temperature_outside_24h" typeId="temperature_outside_24h"/>
|
||||
<channel id="temperature_source_in" typeId="temperature_source_in"/>
|
||||
<channel id="temperature_source_out" typeId="temperature_source_out"/>
|
||||
<channel id="temperature_evaporation" typeId="temperature_evaporation"/>
|
||||
<channel id="temperature_suction" typeId="temperature_suction"/>
|
||||
<channel id="pressure_evaporation" typeId="pressure_evaporation"/>
|
||||
<channel id="temperature_return_set" typeId="temperature_return_set"/>
|
||||
<channel id="temperature_return" typeId="temperature_return"/>
|
||||
<channel id="temperature_flow" typeId="temperature_flow"/>
|
||||
<channel id="temperature_condensation" typeId="temperature_condensation"/>
|
||||
<channel id="pressure_condensation" typeId="pressure_condensation"/>
|
||||
<channel id="temperature_storage" typeId="temperature_storage"/>
|
||||
<channel id="temperature_room" typeId="temperature_room"/>
|
||||
<channel id="temperature_room_1h" typeId="temperature_room_1h"/>
|
||||
<channel id="temperature_water" typeId="temperature_water"/>
|
||||
<channel id="temperature_pool" typeId="temperature_pool"/>
|
||||
<channel id="temperature_solar" typeId="temperature_solar"/>
|
||||
<channel id="temperature_solar_flow" typeId="temperature_solar_flow"/>
|
||||
<channel id="position_expansion_valve" typeId="position_expansion_valve"/>
|
||||
<channel id="power_compressor" typeId="power_compressor"/>
|
||||
<channel id="power_heating" typeId="power_heating"/>
|
||||
<channel id="power_cooling" typeId="power_cooling"/>
|
||||
<channel id="cop_heating" typeId="cop_heating"/>
|
||||
<channel id="cop_cooling" typeId="cop_cooling"/>
|
||||
<channel id="temperature_heating_return" typeId="temperature_heating_return"/>
|
||||
<channel id="temperature_heating_set" typeId="temperature_heating_set"/>
|
||||
<channel id="temperature_heating_set2" typeId="temperature_heating_set2"/>
|
||||
<channel id="temperature_cooling_return" typeId="temperature_cooling_return"/>
|
||||
<channel id="temperature_cooling_set" typeId="temperature_cooling_set"/>
|
||||
<channel id="temperature_cooling_set2" typeId="temperature_cooling_set2"/>
|
||||
<channel id="temperature_water_set" typeId="temperature_water_set"/>
|
||||
<channel id="temperature_water_set2" typeId="temperature_water_set2"/>
|
||||
<channel id="temperature_pool_set" typeId="temperature_pool_set"/>
|
||||
<channel id="temperature_pool_set2" typeId="temperature_pool_set2"/>
|
||||
<channel id="compressor_power" typeId="compressor_power"/>
|
||||
<channel id="percent_heat_circ_pump" typeId="percent_heat_circ_pump"/>
|
||||
<channel id="percent_source_pump" typeId="percent_source_pump"/>
|
||||
<channel id="percent_compressor" typeId="percent_compressor"/>
|
||||
<channel id="hysteresis_heating" typeId="hysteresis_heating"/>
|
||||
<channel id="temperature2_outside_1h" typeId="temperature2_outside_1h"/>
|
||||
<channel id="nviNormAussen" typeId="nviNormAussen"/>
|
||||
<channel id="nviHeizkreisNorm" typeId="nviHeizkreisNorm"/>
|
||||
<channel id="nviTHeizgrenze" typeId="nviTHeizgrenze"/>
|
||||
<channel id="nviTHeizgrenzeSoll" typeId="nviTHeizgrenzeSoll"/>
|
||||
<channel id="maxVLTemp" typeId="maxVLTemp"/>
|
||||
<channel id="tempSet0Deg" typeId="tempSet0Deg"/>
|
||||
<channel id="coolEnableTemp" typeId="coolEnableTemp"/>
|
||||
<channel id="nviSollKuehlen" typeId="nviSollKuehlen"/>
|
||||
<channel id="tempchange_heating_pv" typeId="tempchange_heating_pv"/>
|
||||
<channel id="tempchange_cooling_pv" typeId="tempchange_cooling_pv"/>
|
||||
<channel id="tempchange_warmwater_pv" typeId="tempchange_warmwater_pv"/>
|
||||
<channel id="tempchange_pool_pv" typeId="tempchange_pool_pv"/>
|
||||
<channel id="version_controller" typeId="version_controller"/>
|
||||
<channel id="version_controller_build" typeId="version_controller_build"/>
|
||||
<channel id="version_bios" typeId="version_bios"/>
|
||||
<channel id="date_day" typeId="date_day"/>
|
||||
<channel id="date_month" typeId="date_month"/>
|
||||
<channel id="date_year" typeId="date_year"/>
|
||||
<channel id="time_hour" typeId="time_hour"/>
|
||||
<channel id="time_minute" typeId="time_minute"/>
|
||||
<channel id="operating_hours_compressor1" typeId="operating_hours_compressor1"/>
|
||||
<channel id="operating_hours_compressor2" typeId="operating_hours_compressor2"/>
|
||||
<channel id="operating_hours_circulation_pump" typeId="operating_hours_circulation_pump"/>
|
||||
<channel id="operating_hours_source_pump" typeId="operating_hours_source_pump"/>
|
||||
<channel id="operating_hours_solar" typeId="operating_hours_solar"/>
|
||||
<channel id="enable_heating" typeId="enable_heating"/>
|
||||
<channel id="enable_cooling" typeId="enable_cooling"/>
|
||||
<channel id="enable_warmwater" typeId="enable_warmwater"/>
|
||||
<channel id="enable_pool" typeId="enable_pool"/>
|
||||
<channel id="enable_pv" typeId="enable_pv"/>
|
||||
<channel id="state" typeId="state"/>
|
||||
<channel id="state_sourcepump" typeId="state_sourcepump"/>
|
||||
<channel id="state_heatingpump" typeId="state_heatingpump"/>
|
||||
<channel id="state_evd" typeId="state_evd"/>
|
||||
<channel id="state_compressor1" typeId="state_compressor1"/>
|
||||
<channel id="state_compressor2" typeId="state_compressor2"/>
|
||||
<channel id="state_extheater" typeId="state_extheater"/>
|
||||
<channel id="state_alarm" typeId="state_alarm"/>
|
||||
<channel id="state_cooling" typeId="state_cooling"/>
|
||||
<channel id="state_water" typeId="state_water"/>
|
||||
<channel id="state_pool" typeId="state_pool"/>
|
||||
<channel id="state_solar" typeId="state_solar"/>
|
||||
<channel id="state_cooling4way" typeId="state_cooling4way"/>
|
||||
<channel id="alarm" typeId="alarm"/>
|
||||
<channel id="interruptions" typeId="interruptions"/>
|
||||
<channel id="state_service" typeId="state_service"/>
|
||||
<channel id="adapt_heating" typeId="adapt_heating"/>
|
||||
<channel id="manual_heatingpump" typeId="manual_heatingpump"/>
|
||||
<channel id="manual_sourcepump" typeId="manual_sourcepump"/>
|
||||
<channel id="manual_solarpump1" typeId="manual_solarpump1"/>
|
||||
<channel id="manual_solarpump2" typeId="manual_solarpump2"/>
|
||||
<channel id="manual_tankpump" typeId="manual_tankpump"/>
|
||||
<channel id="manual_valve" typeId="manual_valve"/>
|
||||
<channel id="manual_poolvalve" typeId="manual_poolvalve"/>
|
||||
<channel id="manual_coolvalve" typeId="manual_coolvalve"/>
|
||||
<channel id="manual_4wayvalve" typeId="manual_4wayvalve"/>
|
||||
<channel id="manual_multiext" typeId="manual_multiext"/>
|
||||
|
||||
<channel id="temperature_surrounding" typeId="temperature_surrounding"/>
|
||||
<channel id="temperature_suction_air" typeId="temperature_suction_air"/>
|
||||
<channel id="temperature_sump" typeId="temperature_sump"/>
|
||||
|
||||
<channel id="ecovent_temp_exhaust_air" typeId="ecovent_temp_exhaust_air"/>
|
||||
<channel id="ecovent_temp_exit_air" typeId="ecovent_temp_exit_air"/>
|
||||
<channel id="ecovent_temp_outdoor_air" typeId="ecovent_temp_outdoor_air"/>
|
||||
<channel id="ecovent_temp_supply_air" typeId="ecovent_temp_supply_air"/>
|
||||
<channel id="ecovent_CO2_value" typeId="ecovent_CO2_value"/>
|
||||
<channel id="ecovent_moisture_value" typeId="ecovent_moisture_value"/>
|
||||
<channel id="ecovent_output_y1" typeId="ecovent_output_y1"/>
|
||||
<channel id="ecovent_mode" typeId="ecovent_mode"/>
|
||||
</channels>
|
||||
|
||||
<config-description>
|
||||
<parameter name="ip" type="text" required="true">
|
||||
<context>network-address</context>
|
||||
<label>Address of Heat Pump</label>
|
||||
<description>Enter the IP address or the hostname of the EcoTouch display unit</description>
|
||||
</parameter>
|
||||
<parameter name="username" type="text" required="true">
|
||||
<label>Username</label>
|
||||
<description>Since Waterkotte Display software version 1.6.xx, the username default value is waterkotte. Prior to
|
||||
that, the username default was admin</description>
|
||||
</parameter>
|
||||
<parameter name="password" type="text" required="true">
|
||||
<context>password</context>
|
||||
<label>Password</label>
|
||||
<description>Since Waterkotte Display software version 1.6.xx, the password default value is waterkotte. Prior to
|
||||
that, the password default was wtkadmin</description>
|
||||
</parameter>
|
||||
<parameter name="refresh" type="integer" required="false" min="10" unit="s">
|
||||
<default>60</default>
|
||||
<label>Refresh Interval</label>
|
||||
<description>This is the refresh interval in seconds for all channels.</description>
|
||||
</parameter>
|
||||
</config-description>
|
||||
|
||||
</thing-type>
|
||||
|
||||
<channel-type id="temperature_outside">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Outside</label>
|
||||
<description>The current outside temperature</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_outside_1h" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Average Temperature 1h</label>
|
||||
<description>The outside temperature averaged over one hour</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_outside_24h">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Average Temperature 24h</label>
|
||||
<description>The outside temperature averaged over one day</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_source_in">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Source In</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_source_out">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Source Out</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_evaporation" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Evaporation</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_suction" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Suction</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="pressure_evaporation" advanced="true">
|
||||
<item-type>Number:Pressure</item-type>
|
||||
<label>Pressure Evaporation</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_return_set">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Return Set</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_return">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Return</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_flow">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Flow</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_condensation" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Condensation</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="pressure_condensation" advanced="true">
|
||||
<item-type>Number:Pressure</item-type>
|
||||
<label>Pressure Condensation</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_storage" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Storage</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_room">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Room</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_room_1h">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Avg. Room Temp 1h</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_water">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Water</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_pool" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Pool</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_solar" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Solar</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_solar_flow" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Solar Flow</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="position_expansion_valve" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Position Expansion Valve</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="power_compressor">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>Power Compressor</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="power_heating">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>Power Heating</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="power_cooling">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>Power Cooling</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="cop_heating">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>COP Heating</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="cop_cooling">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>COP Cooling</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_heating_return">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Heating Return</label>
|
||||
<description>Temperature Heating Return</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_heating_set">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Heating Set</label>
|
||||
<description>Temperature Heating Setpoint</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_heating_set2" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Heating Set BMS</label>
|
||||
<description>Temperature Heating Setpoint BMS</description>
|
||||
<category>Temperature</category>
|
||||
<state min="15" max="65" readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_cooling_return">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Cooling Return</label>
|
||||
<description>Temperature Cooling Return</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_cooling_set" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Cooling Set</label>
|
||||
<description>Temperature Cooling Setpoint</description>
|
||||
<category>Temperature</category>
|
||||
<state min="15" readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_cooling_set2">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Cooling Set BMS</label>
|
||||
<description>Temperature Cooling Setpoint BMS</description>
|
||||
<category>Temperature</category>
|
||||
<state min="5" max="26" readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_water_set" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Water Set</label>
|
||||
<description>Temperature Water Setpoint</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_water_set2">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Water Set BMS</label>
|
||||
<description>Temperature Water Setpoint BMS</description>
|
||||
<category>Temperature</category>
|
||||
<state min="28" max="70" readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_pool_set" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Pool Set</label>
|
||||
<description>Temperature Pool Setpoint</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_pool_set2" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Pool Set BMS</label>
|
||||
<description>Temperature Pool Setpoint BMS</description>
|
||||
<category>Temperature</category>
|
||||
<state min="15" max="40" readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="compressor_power" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Percent Power Compressor</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="percent_heat_circ_pump" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Percent Circulation Pump</label>
|
||||
<description>Percent Heating Circulation Pump</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="percent_source_pump" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Percent Source Pump</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="percent_compressor" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Percent Compressor</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="hysteresis_heating" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Hysteresis Heating</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature2_outside_1h" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Outside 1h Average</label>
|
||||
<description>Temperature Outside 1h Average (A90)</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="nviNormAussen" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>nviNormAussen</label>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="nviHeizkreisNorm" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>nviHeizkreisNorm</label>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="nviTHeizgrenze" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>nviTHeizgrenze</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="nviTHeizgrenzeSoll" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>nviTHeizgrenze Setpoint</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="maxVLTemp" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>maxVLTemp</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="tempSet0Deg" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Heating Set 0°C</label>
|
||||
<description>Heating Setpoint at 0°C Outside</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="coolEnableTemp" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Cooling Enable</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="nviSollKuehlen" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>nviSollKuehlen</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="tempchange_heating_pv" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Change Heating PV</label>
|
||||
<description>Temperature Change Heating if PV</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="tempchange_cooling_pv" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Change Cooling PV</label>
|
||||
<description>Temperature Change Cooling if PV</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="tempchange_warmwater_pv" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Change Water PV</label>
|
||||
<description>Temperature Change Water if PV</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="tempchange_pool_pv" advanced="true">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Change Pool PV</label>
|
||||
<description>Temperature Change Pool if PV</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="false" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="version_controller" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Version Controller</label>
|
||||
<description>Version Display Controller</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="version_controller_build" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Build Number Controller</label>
|
||||
<description>Build Number Display Controller</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="version_bios" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Version BIOS</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="date_day" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Day</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="date_month" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Month</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="date_year" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Year</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="time_hour" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Hour</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="time_minute" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Minute</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="operating_hours_compressor1" advanced="true">
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Hours Compressor 1</label>
|
||||
<description>Operating Hours Compressor 1</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="operating_hours_compressor2" advanced="true">
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Hours Compressor 2</label>
|
||||
<description>Operating Hours Compressor 2</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="operating_hours_circulation_pump" advanced="true">
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Hours Circulation Pump</label>
|
||||
<description>Operating Hours Circulation Pump</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="operating_hours_source_pump" advanced="true">
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Hours Source Pump</label>
|
||||
<description>Operating Hours Source Pump</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="operating_hours_solar" advanced="true">
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Hours Solar</label>
|
||||
<description>Operating Hours Solar</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="enable_heating">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Enable Heating</label>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="enable_cooling">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Enable Cooling</label>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="enable_warmwater">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Enable Water</label>
|
||||
<description>Enable Warm Water</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="enable_pool" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Enable Pool</label>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="enable_pv" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Enable PV</label>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="state" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>State</label>
|
||||
<description>A Bitfield which encodes the state of all valves, pumps and compressors</description>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_sourcepump" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Source Pump</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_heatingpump" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Heating Pump</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_evd" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State EVD</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_compressor1" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Compressor 1</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_compressor2" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Compressor 2</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_extheater" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State External Heater</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_alarm">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Alarm</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_cooling" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Cooling</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_water" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Water</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_pool" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Pool</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_solar" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Solar</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_cooling4way" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Cooling4Way</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="alarm">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Alarm</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="interruptions" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Interruptions</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="state_service" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>State Service Mode</label>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="adapt_heating">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Adapt Heating</label>
|
||||
<description>Adjust the Heating Temperature by an Offset</description>
|
||||
<category>Temperature</category>
|
||||
<state min="-2" max="2" step="0.5" readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_heatingpump" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Heating Pump</label>
|
||||
<description>Operating Mode Heating Pump</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_sourcepump" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Source Pump</label>
|
||||
<description>Operating Mode Source Pump</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_solarpump1" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Solar Pump</label>
|
||||
<description>Operating Mode Solar Pump</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_solarpump2" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Solar Pump 2</label>
|
||||
<description>Operating Mode Solar Pump 2</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_tankpump" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Tank Pump</label>
|
||||
<description>Operating Mode Tank Pump</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_valve" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Valve</label>
|
||||
<description>Operating Mode Valve</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_poolvalve" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Pool Valve</label>
|
||||
<description>Operating Mode Pool Valve</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_coolvalve" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Cooling Valve</label>
|
||||
<description>Operating Mode Cooling Valve</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_4wayvalve" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable 4Way Valve</label>
|
||||
<description>Operating Mode 4Way Valve</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
<channel-type id="manual_multiext" advanced="true">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>Enable Multi Ouput</label>
|
||||
<description>Operating Mode Multi Ouput Ext</description>
|
||||
<state readOnly="false"/>
|
||||
</channel-type>
|
||||
|
||||
<!-- The following tags are only available for Air Heat Pumps -->
|
||||
<channel-type id="temperature_surrounding">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Surrounding</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_suction_air">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Suction Air</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="temperature_sump">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>Temperature Sump</label>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
<!-- The following tags are only available, if an Ecovent System is attached to the Ecotouch -->
|
||||
<channel-type id="ecovent_temp_exhaust_air">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>EcoVent Exhaust Air</label>
|
||||
<description>EcoVent Temperature Exhaust Air</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="ecovent_temp_exit_air">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>EcoVent Exit Air</label>
|
||||
<description>EcoVent Temperature Exit Air</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="ecovent_temp_outdoor_air">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>EcoVent Outdoor Air</label>
|
||||
<description>EcoVent Temperature Outdoor Air</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="ecovent_temp_supply_air">
|
||||
<item-type>Number:Temperature</item-type>
|
||||
<label>EcoVent Supply Air</label>
|
||||
<description>EcoVent Temperature Supply Air</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="ecovent_CO2_value">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>EcoVent CO2</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="ecovent_moisture_value">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>EcoVent Air Moisture</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="ecovent_output_y1">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>EcoVent Fan</label>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="ecovent_mode">
|
||||
<item-type>Number:Dimensionless</item-type>
|
||||
<label>EcoVent Mode</label>
|
||||
<description>EcoVent Mode (0..5: Day, Night, Timer, Party, Vacation, Bypass)</description>
|
||||
<state min="0" max="5" step="1" readOnly="false"/>
|
||||
</channel-type>
|
||||
|
||||
</thing:thing-descriptions>
|
@ -98,6 +98,7 @@
|
||||
<module>org.openhab.binding.dwdpollenflug</module>
|
||||
<module>org.openhab.binding.dwdunwetter</module>
|
||||
<module>org.openhab.binding.ecobee</module>
|
||||
<module>org.openhab.binding.ecotouch</module>
|
||||
<module>org.openhab.binding.elerotransmitterstick</module>
|
||||
<module>org.openhab.binding.energenie</module>
|
||||
<module>org.openhab.binding.enigma2</module>
|
||||
|
Loading…
Reference in New Issue
Block a user