[helioseasycontrols] Internationalization + actions for messages - Attempt 2 (#9772)
* Internationalization + actions for messages - Internationalization of UI relevant texts - Better support for the error/warning/info/status messages received from the device Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Review inputs + improvements - inputs from @ssalonen - additional action to retrieve all messages collectively - added rule example for handling the collective message action - added semantic tags in items example Signed-off-by: Bernhard Bauer <bern77@gmail.com> * mvn spotless:apply Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Update bundles/org.openhab.binding.modbus.helioseasycontrols/README.md Co-authored-by: Fabian Wolter <github@fabian-wolter.de> Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Update bundles/org.openhab.binding.modbus.helioseasycontrols/README.md Co-authored-by: Fabian Wolter <github@fabian-wolter.de> Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Update bundles/org.openhab.binding.modbus.helioseasycontrols/src/main/java/org/openhab/binding/modbus/helioseasycontrols/internal/HeliosEasyControlsHandler.java Co-authored-by: Fabian Wolter <github@fabian-wolter.de> Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Update bundles/org.openhab.binding.modbus.helioseasycontrols/src/main/resources/OH-INF/i18n/helioseasycontrols_de.properties Co-authored-by: Fabian Wolter <github@fabian-wolter.de> Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Update bundles/org.openhab.binding.modbus.helioseasycontrols/src/main/resources/OH-INF/thing/thing-types.xml Co-authored-by: Fabian Wolter <github@fabian-wolter.de> Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Review inputs from @fwolter Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Inputs from @fwolter - changed return type for actions with a single return value - corrected findings from static code analysis Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Removed configurationPid from TranslationProvider Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Changes requested by @fwolter Signed-off-by: Bernhard Bauer <bern77@gmail.com> * Changed log level to debug when catching InterruptedException Signed-off-by: Bernhard Bauer <bern77@gmail.com> Co-authored-by: Fabian Wolter <github@fabian-wolter.de>
This commit is contained in:
parent
32fa27aaba
commit
e04cf82c10
|
@ -1,7 +1,7 @@
|
|||
# Helios easyControls
|
||||
|
||||
Helios Heat-Recovery Ventilation devices use a Modbus protocol to communicate with different sensors, switches, etc. Some devices come with an integrated web interface (easyControls) as well as a Modbus TCP/IP Gateway.
|
||||
See https://www.easycontrols.net/de/service/downloads/send/4-software/16-modbus-dokumentation-f%C3%BCr-kwl-easycontrols-ger%C3%A4te for the corresponding specification.
|
||||
See the corresponding [specification](https://www.easycontrols.net/de/service/downloads/send/4-software/16-modbus-dokumentation-f%C3%BCr-kwl-easycontrols-ger%C3%A4te).
|
||||
|
||||
## Supported Things
|
||||
|
||||
|
@ -116,16 +116,16 @@ The following channels are supported:
|
|||
| operatingHoursNhz | general | Operating hours afterheater (in minutes) (0 - 2^32-1 min) | Number:Time | R |
|
||||
| outputPowerVhz | general | Output power of preheater (in percent) (0 - 2^32-1 %) | Number:Dimensionless | R |
|
||||
| outputPowerNhz | general | Output power of afterheater (in percent) (0 - 2^32-1 %) | Number:Dimensionless | R |
|
||||
| errors | general | Errors as integer value (0 - 2^32-1) | Number | R |
|
||||
| warnings | general | Warnings as integer value (0 - 2^32-1) | Number | R |
|
||||
| infos | general | Infos as integer value (0 - 2^32-1) | Number | R |
|
||||
| noOfErrors | general | Number of bit-coded errors (0 - 32) | Number | R |
|
||||
| noOfWarnings | general | Number of bit-coded warnings (0 - 8) | Number | R |
|
||||
| noOfInfos | general | Number of bit-coded infos (0 - 8) | Number | R |
|
||||
| errorsMsg | general | Errors as string | String | R |
|
||||
| warningsMsg | general | Warnings as string | String | R |
|
||||
| infosMsg | general | Infos as string | String | R |
|
||||
| statusFlags | general | Status flags | String | R |
|
||||
| errors | general | Errors as integer value (see [Errors / Warnings / Infos](#errors-warnings-infos)) (0 - 2^32-1) | Number | R |
|
||||
| warnings | general | Warnings as integer value (see [Errors / Warnings / Infos](#errors-warnings-infos)) (0 - 2^32-1) | Number | R |
|
||||
| infos | general | Infos as integer value (see [Errors / Warnings / Infos](#errors-warnings-infos)) (0 - 2^32-1) | Number | R |
|
||||
| noOfErrors | general | Number of bit-coded errors (see [Errors / Warnings / Infos](#errors-warnings-infos)) (0 - 32) | Number | R |
|
||||
| noOfWarnings | general | Number of bit-coded warnings (see [Errors / Warnings / Infos](#errors-warnings-infos)) (0 - 8) | Number | R |
|
||||
| noOfInfos | general | Number of bit-coded infos (see [Errors / Warnings / Infos](#errors-warnings-infos)) (0 - 8) | Number | R |
|
||||
| errorsMsg | general | Errors as string (see [Errors / Warnings / Infos](#errors-warnings-infos)) | String | R |
|
||||
| warningsMsg | general | Warnings as string (see [Errors / Warnings / Infos](#errors-warnings-infos)) | String | R |
|
||||
| infosMsg | general | Infos as string (see [Errors / Warnings / Infos](#errors-warnings-infos)) | String | R |
|
||||
| statusFlags | general | Status flags (see [Errors / Warnings / Infos](#errors-warnings-infos)) | String | R |
|
||||
| bypassStatus | general | Status of the bypass (OFF = closed, ON = open) | Switch | R |
|
||||
| bypassFrom | unitConfig | Bypass active from | DateTime | RW |
|
||||
| bypassTo | unitConfig | Bypass active to | DateTime | RW |
|
||||
|
@ -183,6 +183,7 @@ public void setBypassFrom(int day, int month)
|
|||
```
|
||||
|
||||
*Parameters:*
|
||||
|
||||
* *day:* The day from when the bypass should be active
|
||||
* *month:* The month from when the bypass should be active
|
||||
|
||||
|
@ -192,10 +193,59 @@ public void setBypassTo(int day, int month)
|
|||
```
|
||||
|
||||
*Parameters:*
|
||||
|
||||
* *day:* The day until when the bypass should be active
|
||||
* *month:* The month until when the bypass should be active
|
||||
|
||||
|
||||
```
|
||||
public Map<String, Object> getErrorMessages()
|
||||
```
|
||||
|
||||
*Return values:*
|
||||
|
||||
* *errorMessages:* A `List<String>` object containing all error messages
|
||||
|
||||
|
||||
```
|
||||
public Map<String, Object> getWarningMessages()
|
||||
```
|
||||
|
||||
*Return values:*
|
||||
|
||||
* *warningMessages:* A `List<String>` object containing all warning messages
|
||||
|
||||
|
||||
```
|
||||
public Map<String, Object> getInfoMessages()
|
||||
```
|
||||
|
||||
*Return values:*
|
||||
|
||||
* *infoMessages:* A `List<String>` object containing all info messages
|
||||
|
||||
|
||||
```
|
||||
public Map<String, Object> getStatusMessages()
|
||||
```
|
||||
|
||||
*Return values:*
|
||||
|
||||
* *statusMessages:* A `List<String>` object containing all status messages
|
||||
|
||||
|
||||
```
|
||||
public Map<String, Object> getMessages()
|
||||
```
|
||||
|
||||
*Return values:*
|
||||
|
||||
* *errorMessages:* A `List<String>` object containing all error messages
|
||||
* *warningMessages:* A `List<String>` object containing all warning messages
|
||||
* *infoMessages:* A `List<String>` object containing all info messages
|
||||
* *statusMessages:* A `List<String>` object containing all status messages
|
||||
|
||||
|
||||
## Properties
|
||||
|
||||
The binding provides the following properties:
|
||||
|
@ -277,6 +327,21 @@ The binding provides the following properties:
|
|||
| sensorConfigKwlFtf8 | Sensor configuration (installed or not) KWL-FTF 8 (OFF = no sensor, ON = sensor installed) |
|
||||
|
||||
|
||||
## Errors / Warnings / Infos
|
||||
|
||||
Errors, warnings and infos of the device are provided in a bit encoded way. I.e. each bit in a 8 bit or 32 bit variable encodes potentially multiple errors, warnings or infos.
|
||||
Also status flags are provided this way. For details please refer to the manufacturer's [specification](https://www.easycontrols.net/de/service/downloads/send/4-software/16-modbus-dokumentation-f%C3%BCr-kwl-easycontrols-ger%C3%A4te).
|
||||
|
||||
Based on that concept, errors, warnings and infos are provided in 3 different ways:
|
||||
|
||||
* As an unsigned integer value with the decimal representation of the encoded bits
|
||||
* The total number of encoded errors, warning or infos
|
||||
* The bit encoded as a string
|
||||
|
||||
Since there can potentially be several errors, warnings or infos, using a simple MAP to display the corresponding message in a UI will not work in all cases. String items with multiple lines will not display properly in the UIs.
|
||||
Therefore the binding provides actions to retrieve the different messages as an `ArrayList<String>` object which can then be used to e.g. send the messages via email.
|
||||
|
||||
|
||||
## Full Example
|
||||
|
||||
### Thing Configuration
|
||||
|
@ -291,50 +356,71 @@ Bridge modbus:tcp:modbus-gateway "Modbus TCP/IP Gateway" [ host="192.168.47.11",
|
|||
|
||||
```
|
||||
// Manual operation
|
||||
Number KWL_Manual "Manual operation" <fan> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#operatingMode"}
|
||||
Number KWL_Stage "KWL fan stage" <fan> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#fanStage"}
|
||||
Number:Dimensionless KWL_Stage_Percent "KWL fan stage [%d %unit%]" <fan> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#percentageFanStage"}
|
||||
Number KWL_Manual "Manual operation" <fan> (gKWL) ["Control"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#operatingMode"}
|
||||
Number KWL_Stage "KWL fan stage" <fan> (gKWL) ["Setpoint", "Level"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#fanStage"}
|
||||
Number:Dimensionless KWL_Stage_Percent "KWL fan stage [%d %unit%]" <fan> (gKWL) ["Status", "Level"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#percentageFanStage"}
|
||||
|
||||
// Party mode
|
||||
Switch KWL_Party_Mode "Party mode" <parents> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeStatus"}
|
||||
Number:Time KWL_Party_Mode_Duration "Party mode duration [%d %unit%]" <clock> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeDuration"}
|
||||
Number KWL_Party_Mode_Stage "Party mode fan stage" <fan> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeFanStage"}
|
||||
Number:Time KWL_Party_Mode_Remaining "Party mode remaining time [%d %unit%]" <clock> (gKWL) {channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:operation#partyModeRemainingTime"}
|
||||
Switch KWL_Party_Mode "Party mode" <parents> (gKWL) ["Control"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeStatus"}
|
||||
Number:Time KWL_Party_Mode_Duration "Party mode duration [%d %unit%]" <clock> (gKWL) ["Setpoint", "Duration"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeDuration"}
|
||||
Number KWL_Party_Mode_Stage "Party mode fan stage" <fan> (gKWL) ["Setpoint", "Level"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeFanStage"}
|
||||
Number:Time KWL_Party_Mode_Remaining "Party mode remaining time [%d %unit%]" <clock> (gKWL) ["Status", "Duration"] {channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:operation#partyModeRemainingTime"}
|
||||
|
||||
// Standby mode
|
||||
Switch KWL_Standby_Mode "Standby mode" <fan_off> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeStatus"}
|
||||
Number:Time KWL_Standby_Mode_Duration "Standby mode duration [%d %unit%]" <clock> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeDuration"}
|
||||
Number KWL_Standby_Mode_Stage "Standby mode fan stage" <fan> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeFanStage"}
|
||||
Number:Time KWL_Standby_Mode_Remaining "Standby mode remaining time [%d %unit%]" <clock> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeRemainingTime"}
|
||||
Switch KWL_Standby_Mode "Standby mode" <fan_off> (gKWL) ["Control"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeStatus"}
|
||||
Number:Time KWL_Standby_Mode_Duration "Standby mode duration [%d %unit%]" <clock> (gKWL) ["Setpoint", "Duration"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeDuration"}
|
||||
Number KWL_Standby_Mode_Stage "Standby mode fan stage" <fan> (gKWL) ["Setpoint", "Level"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeFanStage"}
|
||||
Number:Time KWL_Standby_Mode_Remaining "Standby mode remaining time [%d %unit%]" <clock> (gKWL) ["Status", "Duration"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeRemainingTime"}
|
||||
|
||||
// Status infos
|
||||
Number:Temperature KWL_Temp_Outide_Air "Temperature outside air [%.1f °C]" <temperature> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureOutsideAir"}
|
||||
Number:Temperature KWL_Temp_Supply_Air "Temperature supply air [%.1f °C]" <temperature> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureSupplyAir"}
|
||||
Number:Temperature KWL_Temp_Outgoing_Air "Temperature outgoing air [%.1f °C]" <temperature> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureOutgoingAir"}
|
||||
Number:Temperature KWL_Temp_Extract_Air "Temperature extract air [%.1f °C]" <temperature> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureExtractAir"}
|
||||
Number KWL_Supply_Air_RPM "RPM supply air [%d]" <fan> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#supplyAirRpm"}
|
||||
Number KWL_Extract_Air_RPM "RPM extract air [%d]" <fan> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#extractAirRpm"}
|
||||
Number KWL_Filter_Change "Filter change [MAP(helios_yes_no.map):%s]" <none> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:unitConfig#filterChange"}
|
||||
Number:Time KWL_Filter_Change_Remaining "Filter change [%d %unit%]" <clock> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#filterChangeRemainingTime"}
|
||||
Number:Temperature KWL_Temp_Outide_Air "Temperature outside air [%.1f °C]" <temperature> (gKWL) ["Measurement", "Temperature"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureOutsideAir"}
|
||||
Number:Temperature KWL_Temp_Supply_Air "Temperature supply air [%.1f °C]" <temperature> (gKWL) ["Measurement", "Temperature"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureSupplyAir"}
|
||||
Number:Temperature KWL_Temp_Outgoing_Air "Temperature outgoing air [%.1f °C]" <temperature> (gKWL) ["Measurement", "Temperature"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureOutgoingAir"}
|
||||
Number:Temperature KWL_Temp_Extract_Air "Temperature extract air [%.1f °C]" <temperature> (gKWL) ["Measurement", "Temperature"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureExtractAir"}
|
||||
Number KWL_Supply_Air_RPM "RPM supply air [%d]" <fan> (gKWL) ["Measurement", "Property"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#supplyAirRpm"}
|
||||
Number KWL_Extract_Air_RPM "RPM extract air [%d]" <fan> (gKWL) ["Measurement", "Property"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#extractAirRpm"}
|
||||
Number KWL_Filter_Change "Filter change [MAP(helios_yes_no.map):%s]" <none> (gKWL) ["Status"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:unitConfig#filterChange"}
|
||||
Number:Time KWL_Filter_Change_Remaining "Filter change [%d %unit%]" <clock> (gKWL) ["Status", "Duration"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#filterChangeRemainingTime"}
|
||||
|
||||
Number KWL_Errors "Number errors [%d]" <error> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfErrors"}
|
||||
String KWL_Errors_String "Error messages [%s]" <error> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#errorsMsg"}
|
||||
Number KWL_Warnings "Number warnings [%d]" <warning> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfWarnings"}
|
||||
String KWL_Warnings_String "Warning messages [%s]" <warning> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#warningsMsg"}
|
||||
Number KWL_Infos "Number infos [%d]" <info> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfInfos"}
|
||||
String KWL_Infos_String "Info messages [%s]" <info> (gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#infosMsg"}
|
||||
Number KWL_Errors "Number errors [%d]" <error> (gKWL) ["Status"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfErrors"}
|
||||
String KWL_Errors_String "Error messages [%s]" <error> (gKWL) ["Status"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#errorsMsg"}
|
||||
Number KWL_Warnings "Number warnings [%d]" <warning> (gKWL) ["Status"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfWarnings"}
|
||||
String KWL_Warnings_String "Warning messages [%s]" <warning> (gKWL) ["Status"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#warningsMsg"}
|
||||
Number KWL_Infos "Number infos [%d]" <info> (gKWL) ["Status"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfInfos"}
|
||||
String KWL_Infos_String "Info messages [%s]" <info> (gKWL) ["Status"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#infosMsg"}
|
||||
String KWL_Status_Flags "Status Flags [%s]" <info> (gKWL) ["Status"] {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#statusFlags"}
|
||||
```
|
||||
|
||||
### Rule
|
||||
|
||||
```
|
||||
rule "Rest filter change remaining time"
|
||||
import java.util.List
|
||||
import java.util.Map
|
||||
|
||||
rule "Reset filter change remaining time"
|
||||
when
|
||||
Item Rem_KWL_Filter received command OFF
|
||||
then
|
||||
val kwlActions = getActions("modbus.helioseasycontrols", "modbus:helios-easycontrols:modbus-gateway:kwl")
|
||||
kwlActions.resetFilterChangeTimer()
|
||||
end
|
||||
|
||||
|
||||
rule "Log KWL messages"
|
||||
when
|
||||
Item KWL_Errors_String changed or
|
||||
Item KWL_Warnings_String changed or
|
||||
Item KWL_Infos_String changed or
|
||||
KWL_Status_Flags changed
|
||||
then
|
||||
val kwlActions = getActions("modbus.helioseasycontrols", "modbus:helios-easycontrols:modbus-gateway:kwl")
|
||||
val Map<String, List<String>> msg = kwlActions.getMessages
|
||||
logInfo("KWL Error Messages", msg.get("errorMessages").toString)
|
||||
logInfo("KWL Warning Messages", msg.get("warningMessages").toString)
|
||||
logInfo("KWL Info Messages", msg.get("infoMessages").toString)
|
||||
logInfo("KWL Status Messages", msg.get("statusMessages").toString)
|
||||
end
|
||||
|
||||
```
|
||||
|
||||
### Transformation
|
||||
|
|
|
@ -12,9 +12,15 @@
|
|||
*/
|
||||
package org.openhab.binding.modbus.helioseasycontrols.internal;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.core.automation.annotation.ActionInput;
|
||||
import org.openhab.core.automation.annotation.ActionOutput;
|
||||
import org.openhab.core.automation.annotation.RuleAction;
|
||||
import org.openhab.core.thing.binding.ThingActions;
|
||||
import org.openhab.core.thing.binding.ThingActionsScope;
|
||||
|
@ -48,14 +54,19 @@ public class HeliosEasyControlsActions implements ThingActions {
|
|||
private void triggerSwitch(String variableName) {
|
||||
try {
|
||||
if (handler != null) {
|
||||
|
||||
handler.writeValue(variableName, "1");
|
||||
}
|
||||
} catch (HeliosException e) {
|
||||
logger.warn("Error executing action triggering switch for variable {}: {}", variableName, e.getMessage());
|
||||
} catch (InterruptedException e) {
|
||||
logger.debug(
|
||||
"{} encountered Exception when trying to lock Semaphore for writing variable {} to the device: {}",
|
||||
HeliosEasyControlsActions.class.getSimpleName(), variableName, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@RuleAction(label = "reset filter change timer", description = "Sets the filter change timer back to the configured interval.")
|
||||
@RuleAction(label = "@text/action.resetFilterChangeTimer.label", description = "@text/action.resetFilterChangeTimer.description")
|
||||
public void resetFilterChangeTimer() {
|
||||
triggerSwitch(HeliosEasyControlsBindingConstants.FILTER_CHANGE_RESET);
|
||||
}
|
||||
|
@ -64,7 +75,7 @@ public class HeliosEasyControlsActions implements ThingActions {
|
|||
((HeliosEasyControlsActions) actions).resetFilterChangeTimer();
|
||||
}
|
||||
|
||||
@RuleAction(label = "reset error messages", description = "Reset error/warning/info messages.")
|
||||
@RuleAction(label = "@text/action.resetErrors.label", description = "@text/action.resetErrors.description")
|
||||
public void resetErrors() {
|
||||
triggerSwitch(HeliosEasyControlsBindingConstants.RESET_FLAG);
|
||||
}
|
||||
|
@ -73,7 +84,7 @@ public class HeliosEasyControlsActions implements ThingActions {
|
|||
((HeliosEasyControlsActions) actions).resetErrors();
|
||||
}
|
||||
|
||||
@RuleAction(label = "reset to factory defaults", description = "Reset device to factory defaults.")
|
||||
@RuleAction(label = "@text/action.resetToFactoryDefaults.label", description = "@text/action.resetToFactoryDefaults.description")
|
||||
public void resetToFactoryDefaults() {
|
||||
triggerSwitch(HeliosEasyControlsBindingConstants.FACTORY_RESET);
|
||||
}
|
||||
|
@ -82,7 +93,7 @@ public class HeliosEasyControlsActions implements ThingActions {
|
|||
((HeliosEasyControlsActions) actions).resetToFactoryDefaults();
|
||||
}
|
||||
|
||||
@RuleAction(label = "reset individual switching times", description = "Reset individual switching times.")
|
||||
@RuleAction(label = "@text/action.resetSwitchingTimes.label", description = "@text/action.resetSwitchingTimes.description")
|
||||
public void resetSwitchingTimes() {
|
||||
triggerSwitch(HeliosEasyControlsBindingConstants.FACTORY_SETTING_WZU);
|
||||
}
|
||||
|
@ -91,11 +102,17 @@ public class HeliosEasyControlsActions implements ThingActions {
|
|||
((HeliosEasyControlsActions) actions).resetSwitchingTimes();
|
||||
}
|
||||
|
||||
@RuleAction(label = "set system date and time", description = "Sets the device's system date and time based on OH's system date and time.")
|
||||
@RuleAction(label = "@text/action.setSysDateTime.label", description = "@text/action.setSysDateTime.description")
|
||||
public void setSysDateTime() {
|
||||
HeliosEasyControlsHandler handler = this.handler;
|
||||
if (handler != null) {
|
||||
handler.setSysDateTime();
|
||||
try {
|
||||
handler.setSysDateTime();
|
||||
} catch (InterruptedException e) {
|
||||
logger.debug(
|
||||
"{} encountered Exception when trying to lock Semaphore for setting system date and time on the device: {}",
|
||||
HeliosEasyControlsActions.class.getSimpleName(), e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -106,14 +123,20 @@ public class HeliosEasyControlsActions implements ThingActions {
|
|||
private void setBypass(boolean from, int day, int month) {
|
||||
HeliosEasyControlsHandler handler = this.handler;
|
||||
if (handler != null) {
|
||||
handler.setBypass(from, day, month);
|
||||
try {
|
||||
handler.setBypass(from, day, month);
|
||||
} catch (InterruptedException e) {
|
||||
logger.debug(
|
||||
"{} encountered Exception when trying to lock Semaphore for setting bypass date on the device: {}",
|
||||
HeliosEasyControlsActions.class.getSimpleName(), e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@RuleAction(label = "set the bypass from day and month", description = "Sets the day and month from when the bypass should be active.")
|
||||
@RuleAction(label = "@text/action.setBypassFrom.label", description = "@text/action.setBypassFrom.description")
|
||||
public void setBypassFrom(
|
||||
@ActionInput(name = "day", label = "bypass from day", description = "The day from when the bypass should be active") int day,
|
||||
@ActionInput(name = "month", label = "bypass from month", description = "The month from when the bypass should be active") int month) {
|
||||
@ActionInput(name = "day", label = "@text/action.setBypassFrom.inputParams.day.label", description = "@text/action.setBypassFrom.inputParams.day.description") int day,
|
||||
@ActionInput(name = "month", label = "@text/action.setBypassFrom.inputParams.month.label", description = "@text/action.setBypassFrom.inputParams.month.description") int month) {
|
||||
setBypass(true, day, month);
|
||||
}
|
||||
|
||||
|
@ -121,14 +144,67 @@ public class HeliosEasyControlsActions implements ThingActions {
|
|||
((HeliosEasyControlsActions) actions).setBypassFrom(day, month);
|
||||
}
|
||||
|
||||
@RuleAction(label = "set the bypass to day and month", description = "Sets the day and month until when the bypass should be active.")
|
||||
@RuleAction(label = "@text/action.setBypassTo.label", description = "@text/action.setBypassTo.description")
|
||||
public void setBypassTo(
|
||||
@ActionInput(name = "day", label = "bypass to day", description = "The day until when the bypass should be active") int day,
|
||||
@ActionInput(name = "month", label = "bypass to month", description = "The month until when the bypass should be active") int month) {
|
||||
@ActionInput(name = "day", label = "@text/action.setBypassTo.inputParams.day.label", description = "@text/action.setBypassTo.inputParams.day.description") int day,
|
||||
@ActionInput(name = "month", label = "@text/action.setBypassTo.inputParams.day.label", description = "@text/action.setBypassTo.inputParams.day.description") int month) {
|
||||
setBypass(false, day, month);
|
||||
}
|
||||
|
||||
public static void setBypassTo(ThingActions actions, int day, int month) {
|
||||
((HeliosEasyControlsActions) actions).setBypassTo(day, month);
|
||||
}
|
||||
|
||||
@RuleAction(label = "@text/action.getErrorMessages.label", description = "@text/action.getErrorMessages.description")
|
||||
public @ActionOutput(name = "errorMessages", type = "java.util.List<String>") List<String> getErrorMessages() {
|
||||
return (handler != null) ? handler.getErrorMessages() : new ArrayList<String>();
|
||||
}
|
||||
|
||||
public static List<String> getErrorMessages(ThingActions actions) {
|
||||
return ((HeliosEasyControlsActions) actions).getErrorMessages();
|
||||
}
|
||||
|
||||
@RuleAction(label = "@text/action.getWarningMessages.label", description = "@text/action.getWarningMessages.description")
|
||||
public @ActionOutput(name = "warningMessages", type = "java.util.List<String>") List<String> getWarningMessages() {
|
||||
return (handler != null) ? handler.getWarningMessages() : new ArrayList<String>();
|
||||
}
|
||||
|
||||
public static List<String> getWarningMessages(ThingActions actions) {
|
||||
return ((HeliosEasyControlsActions) actions).getWarningMessages();
|
||||
}
|
||||
|
||||
@RuleAction(label = "@text/action.getInfoMessages.label", description = "@text/action.getInfoMessages.description")
|
||||
public @ActionOutput(name = "infoMessages", type = "java.util.List<String>") List<String> getInfoMessages() {
|
||||
return (handler != null) ? handler.getInfoMessages() : new ArrayList<String>();
|
||||
}
|
||||
|
||||
public static List<String> getInfoMessages(ThingActions actions) {
|
||||
return ((HeliosEasyControlsActions) actions).getInfoMessages();
|
||||
}
|
||||
|
||||
@RuleAction(label = "@text/action.getStatusMessages.label", description = "@text/action.getStatusMessages.description")
|
||||
public @ActionOutput(name = "statusMessages", type = "java.util.List<String>") List<String> getStatusMessages() {
|
||||
return (handler != null) ? handler.getStatusMessages() : new ArrayList<String>();
|
||||
}
|
||||
|
||||
public static List<String> getStatusMessages(ThingActions actions) {
|
||||
return ((HeliosEasyControlsActions) actions).getStatusMessages();
|
||||
}
|
||||
|
||||
@RuleAction(label = "@text/action.getMessages.label", description = "@text/action.getMessages.description")
|
||||
public @ActionOutput(name = "errorMessages", type = "java.util.List<String>") @ActionOutput(name = "warningMessages", type = "java.util.List<String>") @ActionOutput(name = "infoMessages", type = "java.util.List<String>") @ActionOutput(name = "statusMessages", type = "java.util.List<String>") Map<String, Object> getMessages() {
|
||||
Map<String, Object> messages = new HashMap<>();
|
||||
HeliosEasyControlsHandler handler = this.handler;
|
||||
if (handler != null) {
|
||||
messages.put("errorMessages", handler.getErrorMessages());
|
||||
messages.put("warningMessages", handler.getWarningMessages());
|
||||
messages.put("infoMessages", handler.getInfoMessages());
|
||||
messages.put("statusMessages", handler.getStatusMessages());
|
||||
}
|
||||
return messages;
|
||||
}
|
||||
|
||||
public static Map<String, Object> getMessages(ThingActions actions) {
|
||||
return ((HeliosEasyControlsActions) actions).getMessages();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,239 +37,252 @@ public class HeliosEasyControlsBindingConstants {
|
|||
// List of all Channel IDs
|
||||
// -----------------------
|
||||
// Device Config
|
||||
public final static String SYS_DATE = "sysdate"; // for the combined item (based on DATE, TIME and
|
||||
public static final String SYS_DATE = "sysdate"; // for the combined item (based on DATE, TIME and
|
||||
// TIME_ZONE_DIFFERENCE_TO_GMT)
|
||||
public final static String DATE = "date";
|
||||
public final static String TIME = "time";
|
||||
public final static String TIME_ZONE_DIFFERENCE_TO_GMT = "timeZoneDifferenceToGmt";
|
||||
public final static String SUMMER_WINTER = "summerWinter";
|
||||
public final static String ACCESS_HELIOS_PORTAL = "accessHeliosPortal";
|
||||
public final static String AUTO_SW_UPDATE = "autoSwUpdate";
|
||||
public final static String MIN_FAN_STAGE = "minFanStage";
|
||||
public final static String COMFORT_TEMP = "comfortTemp";
|
||||
public final static String SUPPLY_AIR_FAN_STAGE = "supplyAirFanStage";
|
||||
public final static String EXTRACT_AIR_FAN_STAGE = "extractAirFanStage";
|
||||
public static final String DATE = "date";
|
||||
public static final String TIME = "time";
|
||||
public static final String TIME_ZONE_DIFFERENCE_TO_GMT = "timeZoneDifferenceToGmt";
|
||||
public static final String SUMMER_WINTER = "summerWinter";
|
||||
public static final String ACCESS_HELIOS_PORTAL = "accessHeliosPortal";
|
||||
public static final String AUTO_SW_UPDATE = "autoSwUpdate";
|
||||
public static final String MIN_FAN_STAGE = "minFanStage";
|
||||
public static final String COMFORT_TEMP = "comfortTemp";
|
||||
public static final String SUPPLY_AIR_FAN_STAGE = "supplyAirFanStage";
|
||||
public static final String EXTRACT_AIR_FAN_STAGE = "extractAirFanStage";
|
||||
// Operation
|
||||
public final static String PARTY_MODE_DURATION = "partyModeDuration";
|
||||
public final static String PARTY_MODE_FAN_STAGE = "partyModeFanStage";
|
||||
public final static String PARTY_MODE_REMAINING_TIME = "partyModeRemainingTime";
|
||||
public final static String PARTY_MODE_STATUS = "partyModeStatus";
|
||||
public final static String STANDBY_MODE_DURATION = "standbyModeDuration";
|
||||
public final static String STANDBY_MODE_FAN_STAGE = "standbyModeFanStage";
|
||||
public final static String STANDBY_MODE_REMAINING_TIME = "standbyModeRemainingTime";
|
||||
public final static String STANDBY_MODE_STATUS = "standbyModeStatus";
|
||||
public final static String HOLIDAY_PROGRAMME = "holidayProgramme";
|
||||
public final static String HOLIDAY_PROGRAMME_FAN_STAGE = "holidayProgrammeFanStage";
|
||||
public final static String HOLIDAY_PROGRAMME_START = "holidayProgrammeStart";
|
||||
public final static String HOLIDAY_PROGRAMME_END = "holidayProgrammeEnd";
|
||||
public final static String HOLIDAY_PROGRAMME_INTERVAL = "holidayProgrammeInterval";
|
||||
public final static String HOLIDAY_PROGRAMME_ACTIVATION_TIME = "holidayProgrammeActivationTime";
|
||||
public final static String OPERATING_MODE = "operatingMode";
|
||||
public final static String FAN_STAGE = "fanStage";
|
||||
public final static String PERCENTAGE_FAN_STAGE = "percentageFanStage";
|
||||
public final static String TEMPERATURE_OUTSIDE_AIR = "temperatureOutsideAir";
|
||||
public final static String TEMPERATURE_SUPPLY_AIR = "temperatureSupplyAir";
|
||||
public final static String TEMPERATURE_OUTGOING_AIR = "temperatureOutgoingAir";
|
||||
public final static String TEMPERATURE_EXTRACT_AIR = "temperatureExtractAir";
|
||||
public final static String VHZ_DUCT_SENSOR = "vhzDuctSensor";
|
||||
public final static String NHZ_DUCT_SENSOR = "nhzDuctSensor";
|
||||
public final static String NHZ_RETURN_SENSOR = "nhzReturnSensor";
|
||||
public final static String SUPPLY_AIR_RPM = "supplyAirRpm";
|
||||
public final static String EXTRACT_AIR_RPM = "extractAirRpm";
|
||||
public final static String OPERATING_HOURS_SUPPLY_AIR_VENT = "operatingHoursSupplyAirVent";
|
||||
public final static String OPERATING_HOURS_EXTRACT_AIR_VENT = "operatingHoursExtractAirVent";
|
||||
public static final String PARTY_MODE_DURATION = "partyModeDuration";
|
||||
public static final String PARTY_MODE_FAN_STAGE = "partyModeFanStage";
|
||||
public static final String PARTY_MODE_REMAINING_TIME = "partyModeRemainingTime";
|
||||
public static final String PARTY_MODE_STATUS = "partyModeStatus";
|
||||
public static final String STANDBY_MODE_DURATION = "standbyModeDuration";
|
||||
public static final String STANDBY_MODE_FAN_STAGE = "standbyModeFanStage";
|
||||
public static final String STANDBY_MODE_REMAINING_TIME = "standbyModeRemainingTime";
|
||||
public static final String STANDBY_MODE_STATUS = "standbyModeStatus";
|
||||
public static final String HOLIDAY_PROGRAMME = "holidayProgramme";
|
||||
public static final String HOLIDAY_PROGRAMME_FAN_STAGE = "holidayProgrammeFanStage";
|
||||
public static final String HOLIDAY_PROGRAMME_START = "holidayProgrammeStart";
|
||||
public static final String HOLIDAY_PROGRAMME_END = "holidayProgrammeEnd";
|
||||
public static final String HOLIDAY_PROGRAMME_INTERVAL = "holidayProgrammeInterval";
|
||||
public static final String HOLIDAY_PROGRAMME_ACTIVATION_TIME = "holidayProgrammeActivationTime";
|
||||
public static final String OPERATING_MODE = "operatingMode";
|
||||
public static final String FAN_STAGE = "fanStage";
|
||||
public static final String PERCENTAGE_FAN_STAGE = "percentageFanStage";
|
||||
public static final String TEMPERATURE_OUTSIDE_AIR = "temperatureOutsideAir";
|
||||
public static final String TEMPERATURE_SUPPLY_AIR = "temperatureSupplyAir";
|
||||
public static final String TEMPERATURE_OUTGOING_AIR = "temperatureOutgoingAir";
|
||||
public static final String TEMPERATURE_EXTRACT_AIR = "temperatureExtractAir";
|
||||
public static final String VHZ_DUCT_SENSOR = "vhzDuctSensor";
|
||||
public static final String NHZ_DUCT_SENSOR = "nhzDuctSensor";
|
||||
public static final String NHZ_RETURN_SENSOR = "nhzReturnSensor";
|
||||
public static final String SUPPLY_AIR_RPM = "supplyAirRpm";
|
||||
public static final String EXTRACT_AIR_RPM = "extractAirRpm";
|
||||
public static final String OPERATING_HOURS_SUPPLY_AIR_VENT = "operatingHoursSupplyAirVent";
|
||||
public static final String OPERATING_HOURS_EXTRACT_AIR_VENT = "operatingHoursExtractAirVent";
|
||||
// Heater
|
||||
public final static String PRE_HEATER_STATUS = "preHeaterStatus";
|
||||
public final static String WEEK_PROFILE_NHZ = "weekProfileNhz";
|
||||
public final static String RUN_ON_TIME_VHZ_NHZ = "runOnTimeVhzNhz";
|
||||
public final static String OPERATING_HOURS_VHZ = "operatingHoursVhz";
|
||||
public final static String OPERATING_HOURS_NHZ = "operatingHoursNhz";
|
||||
public final static String OUTPUT_POWER_VHZ = "outputPowerVhz";
|
||||
public final static String OUTPUT_POWER_NHZ = "outputPowerNhz";
|
||||
public static final String PRE_HEATER_STATUS = "preHeaterStatus";
|
||||
public static final String WEEK_PROFILE_NHZ = "weekProfileNhz";
|
||||
public static final String RUN_ON_TIME_VHZ_NHZ = "runOnTimeVhzNhz";
|
||||
public static final String OPERATING_HOURS_VHZ = "operatingHoursVhz";
|
||||
public static final String OPERATING_HOURS_NHZ = "operatingHoursNhz";
|
||||
public static final String OUTPUT_POWER_VHZ = "outputPowerVhz";
|
||||
public static final String OUTPUT_POWER_NHZ = "outputPowerNhz";
|
||||
// Humidity control
|
||||
public final static String HUMIDITY_CONTROL_SET_VALUE = "humidityControlSetValue";
|
||||
public final static String HUMIDITY_CONTROL_STEPS = "humidityControlSteps";
|
||||
public final static String HUMIDITY_STOP_TIME = "humidityStopTime";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_1 = "externalSensorKwlFtfHumidity1";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_2 = "externalSensorKwlFtfHumidity2";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_3 = "externalSensorKwlFtfHumidity3";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_4 = "externalSensorKwlFtfHumidity4";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_5 = "externalSensorKwlFtfHumidity5";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_6 = "externalSensorKwlFtfHumidity6";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_7 = "externalSensorKwlFtfHumidity7";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_8 = "externalSensorKwlFtfHumidity8";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_1 = "externalSensorKwlFtfTemperature1";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_2 = "externalSensorKwlFtfTemperature2";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_3 = "externalSensorKwlFtfTemperature3";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_4 = "externalSensorKwlFtfTemperature4";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_5 = "externalSensorKwlFtfTemperature5";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_6 = "externalSensorKwlFtfTemperature6";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_7 = "externalSensorKwlFtfTemperature7";
|
||||
public final static String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_8 = "externalSensorKwlFtfTemperature8";
|
||||
public static final String HUMIDITY_CONTROL_SET_VALUE = "humidityControlSetValue";
|
||||
public static final String HUMIDITY_CONTROL_STEPS = "humidityControlSteps";
|
||||
public static final String HUMIDITY_STOP_TIME = "humidityStopTime";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_1 = "externalSensorKwlFtfHumidity1";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_2 = "externalSensorKwlFtfHumidity2";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_3 = "externalSensorKwlFtfHumidity3";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_4 = "externalSensorKwlFtfHumidity4";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_5 = "externalSensorKwlFtfHumidity5";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_6 = "externalSensorKwlFtfHumidity6";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_7 = "externalSensorKwlFtfHumidity7";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_HUMIDITY_8 = "externalSensorKwlFtfHumidity8";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_1 = "externalSensorKwlFtfTemperature1";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_2 = "externalSensorKwlFtfTemperature2";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_3 = "externalSensorKwlFtfTemperature3";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_4 = "externalSensorKwlFtfTemperature4";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_5 = "externalSensorKwlFtfTemperature5";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_6 = "externalSensorKwlFtfTemperature6";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_7 = "externalSensorKwlFtfTemperature7";
|
||||
public static final String EXTERNAL_SENSOR_KWL_FTF_TEMPERATURE_8 = "externalSensorKwlFtfTemperature8";
|
||||
// CO2 control
|
||||
public final static String CO2_CONTROL_SET_VALUE = "co2ControlSetValue";
|
||||
public final static String CO2_CONTROL_STEPS = "co2ControlSteps";
|
||||
public final static String EXTERNAL_SENSOR_KWL_CO2_1 = "externalSensorKwlCo21";
|
||||
public final static String EXTERNAL_SENSOR_KWL_CO2_2 = "externalSensorKwlCo22";
|
||||
public final static String EXTERNAL_SENSOR_KWL_CO2_3 = "externalSensorKwlCo23";
|
||||
public final static String EXTERNAL_SENSOR_KWL_CO2_4 = "externalSensorKwlCo24";
|
||||
public final static String EXTERNAL_SENSOR_KWL_CO2_5 = "externalSensorKwlCo25";
|
||||
public final static String EXTERNAL_SENSOR_KWL_CO2_6 = "externalSensorKwlCo26";
|
||||
public final static String EXTERNAL_SENSOR_KWL_CO2_7 = "externalSensorKwlCo27";
|
||||
public final static String EXTERNAL_SENSOR_KWL_CO2_8 = "externalSensorKwlCo28";
|
||||
public final static String SENSOR_NAME_CO2_1 = "sensorNameCo21";
|
||||
public final static String SENSOR_NAME_CO2_2 = "sensorNameCo22";
|
||||
public final static String SENSOR_NAME_CO2_3 = "sensorNameCo23";
|
||||
public final static String SENSOR_NAME_CO2_4 = "sensorNameCo24";
|
||||
public final static String SENSOR_NAME_CO2_5 = "sensorNameCo25";
|
||||
public final static String SENSOR_NAME_CO2_6 = "sensorNameCo26";
|
||||
public final static String SENSOR_NAME_CO2_7 = "sensorNameCo27";
|
||||
public final static String SENSOR_NAME_CO2_8 = "sensorNameCo28";
|
||||
public static final String CO2_CONTROL_SET_VALUE = "co2ControlSetValue";
|
||||
public static final String CO2_CONTROL_STEPS = "co2ControlSteps";
|
||||
public static final String EXTERNAL_SENSOR_KWL_CO2_1 = "externalSensorKwlCo21";
|
||||
public static final String EXTERNAL_SENSOR_KWL_CO2_2 = "externalSensorKwlCo22";
|
||||
public static final String EXTERNAL_SENSOR_KWL_CO2_3 = "externalSensorKwlCo23";
|
||||
public static final String EXTERNAL_SENSOR_KWL_CO2_4 = "externalSensorKwlCo24";
|
||||
public static final String EXTERNAL_SENSOR_KWL_CO2_5 = "externalSensorKwlCo25";
|
||||
public static final String EXTERNAL_SENSOR_KWL_CO2_6 = "externalSensorKwlCo26";
|
||||
public static final String EXTERNAL_SENSOR_KWL_CO2_7 = "externalSensorKwlCo27";
|
||||
public static final String EXTERNAL_SENSOR_KWL_CO2_8 = "externalSensorKwlCo28";
|
||||
public static final String SENSOR_NAME_CO2_1 = "sensorNameCo21";
|
||||
public static final String SENSOR_NAME_CO2_2 = "sensorNameCo22";
|
||||
public static final String SENSOR_NAME_CO2_3 = "sensorNameCo23";
|
||||
public static final String SENSOR_NAME_CO2_4 = "sensorNameCo24";
|
||||
public static final String SENSOR_NAME_CO2_5 = "sensorNameCo25";
|
||||
public static final String SENSOR_NAME_CO2_6 = "sensorNameCo26";
|
||||
public static final String SENSOR_NAME_CO2_7 = "sensorNameCo27";
|
||||
public static final String SENSOR_NAME_CO2_8 = "sensorNameCo28";
|
||||
// VOC control
|
||||
public final static String VOC_CONTROL_SET_VALUE = "vocControlSetValue";
|
||||
public final static String VOC_CONTROL_STEPS = "vocControlSteps";
|
||||
public final static String EXTERNAL_SENSOR_KWL_VOC_1 = "externalSensorKwlVoc1";
|
||||
public final static String EXTERNAL_SENSOR_KWL_VOC_2 = "externalSensorKwlVoc2";
|
||||
public final static String EXTERNAL_SENSOR_KWL_VOC_3 = "externalSensorKwlVoc3";
|
||||
public final static String EXTERNAL_SENSOR_KWL_VOC_4 = "externalSensorKwlVoc4";
|
||||
public final static String EXTERNAL_SENSOR_KWL_VOC_5 = "externalSensorKwlVoc5";
|
||||
public final static String EXTERNAL_SENSOR_KWL_VOC_6 = "externalSensorKwlVoc6";
|
||||
public final static String EXTERNAL_SENSOR_KWL_VOC_7 = "externalSensorKwlVoc7";
|
||||
public final static String EXTERNAL_SENSOR_KWL_VOC_8 = "externalSensorKwlVoc8";
|
||||
public final static String SENSOR_NAME_VOC_1 = "sensorNameVoc1";
|
||||
public final static String SENSOR_NAME_VOC_2 = "sensorNameVoc2";
|
||||
public final static String SENSOR_NAME_VOC_3 = "sensorNameVoc3";
|
||||
public final static String SENSOR_NAME_VOC_4 = "sensorNameVoc4";
|
||||
public final static String SENSOR_NAME_VOC_5 = "sensorNameVoc5";
|
||||
public final static String SENSOR_NAME_VOC_6 = "sensorNameVoc6";
|
||||
public final static String SENSOR_NAME_VOC_7 = "sensorNameVoc7";
|
||||
public final static String SENSOR_NAME_VOC_8 = "sensorNameVoc8";
|
||||
public static final String VOC_CONTROL_SET_VALUE = "vocControlSetValue";
|
||||
public static final String VOC_CONTROL_STEPS = "vocControlSteps";
|
||||
public static final String EXTERNAL_SENSOR_KWL_VOC_1 = "externalSensorKwlVoc1";
|
||||
public static final String EXTERNAL_SENSOR_KWL_VOC_2 = "externalSensorKwlVoc2";
|
||||
public static final String EXTERNAL_SENSOR_KWL_VOC_3 = "externalSensorKwlVoc3";
|
||||
public static final String EXTERNAL_SENSOR_KWL_VOC_4 = "externalSensorKwlVoc4";
|
||||
public static final String EXTERNAL_SENSOR_KWL_VOC_5 = "externalSensorKwlVoc5";
|
||||
public static final String EXTERNAL_SENSOR_KWL_VOC_6 = "externalSensorKwlVoc6";
|
||||
public static final String EXTERNAL_SENSOR_KWL_VOC_7 = "externalSensorKwlVoc7";
|
||||
public static final String EXTERNAL_SENSOR_KWL_VOC_8 = "externalSensorKwlVoc8";
|
||||
public static final String SENSOR_NAME_VOC_1 = "sensorNameVoc1";
|
||||
public static final String SENSOR_NAME_VOC_2 = "sensorNameVoc2";
|
||||
public static final String SENSOR_NAME_VOC_3 = "sensorNameVoc3";
|
||||
public static final String SENSOR_NAME_VOC_4 = "sensorNameVoc4";
|
||||
public static final String SENSOR_NAME_VOC_5 = "sensorNameVoc5";
|
||||
public static final String SENSOR_NAME_VOC_6 = "sensorNameVoc6";
|
||||
public static final String SENSOR_NAME_VOC_7 = "sensorNameVoc7";
|
||||
public static final String SENSOR_NAME_VOC_8 = "sensorNameVoc8";
|
||||
// Errors
|
||||
public final static String ERROR_OUTPUT_FUNCTION = "errorOutputFunction";
|
||||
public final static String ERRORS = "errors";
|
||||
public final static String WARNINGS = "warnings";
|
||||
public final static String INFOS = "infos";
|
||||
public final static String NO_OF_ERRORS = "noOfErrors";
|
||||
public final static String NO_OF_WARNINGS = "noOfWarnings";
|
||||
public final static String NO_OF_INFOS = "noOfInfos";
|
||||
public final static String ERRORS_MSG = "errorsMsg";
|
||||
public final static String WARNINGS_MSG = "warningsMsg";
|
||||
public final static String INFOS_MSG = "infosMsg";
|
||||
public final static String STATUS_FLAGS = "statusFlags";
|
||||
public static final String ERROR_OUTPUT_FUNCTION = "errorOutputFunction";
|
||||
public static final String ERRORS = "errors";
|
||||
public static final String WARNINGS = "warnings";
|
||||
public static final String INFOS = "infos";
|
||||
public static final String NO_OF_ERRORS = "noOfErrors";
|
||||
public static final String NO_OF_WARNINGS = "noOfWarnings";
|
||||
public static final String NO_OF_INFOS = "noOfInfos";
|
||||
public static final String ERRORS_MSG = "errorsMsg";
|
||||
public static final String WARNINGS_MSG = "warningsMsg";
|
||||
public static final String INFOS_MSG = "infosMsg";
|
||||
public static final String STATUS_FLAGS = "statusFlags";
|
||||
// Filter
|
||||
public final static String FILTER_CHANGE = "filterChange";
|
||||
public final static String FILTER_CHANGE_INTERVAL = "filterChangeInterval";
|
||||
public final static String FILTER_CHANGE_REMAINING_TIME = "filterChangeRemainingTime";
|
||||
public static final String FILTER_CHANGE = "filterChange";
|
||||
public static final String FILTER_CHANGE_INTERVAL = "filterChangeInterval";
|
||||
public static final String FILTER_CHANGE_REMAINING_TIME = "filterChangeRemainingTime";
|
||||
// Bypass
|
||||
public final static String BYPASS_ROOM_TEMPERATURE = "bypassRoomTemperature";
|
||||
public final static String BYPASS_MIN_OUTSIDE_TEMPERATURE = "bypassMinOutsideTemperature";
|
||||
public final static String BYPASS_STATUS = "bypassStatus";
|
||||
public final static String BYPASS_FROM = "bypassFrom"; // for the combined item (based on BYPASS_FROM_DAY and
|
||||
public static final String BYPASS_ROOM_TEMPERATURE = "bypassRoomTemperature";
|
||||
public static final String BYPASS_MIN_OUTSIDE_TEMPERATURE = "bypassMinOutsideTemperature";
|
||||
public static final String BYPASS_STATUS = "bypassStatus";
|
||||
public static final String BYPASS_FROM = "bypassFrom"; // for the combined item (based on BYPASS_FROM_DAY and
|
||||
// BYPASS_FROM_MONTH)
|
||||
public final static String BYPASS_FROM_DAY = "bypassFromDay";
|
||||
public final static String BYPASS_FROM_MONTH = "bypassFromMonth";
|
||||
public final static String BYPASS_TO = "bypassTo"; // for the combined item (based on BYPASS_TO_DAY and
|
||||
public static final String BYPASS_FROM_DAY = "bypassFromDay";
|
||||
public static final String BYPASS_FROM_MONTH = "bypassFromMonth";
|
||||
public static final String BYPASS_TO = "bypassTo"; // for the combined item (based on BYPASS_TO_DAY and
|
||||
// BYPASS_TO_MONTH)
|
||||
public final static String BYPASS_TO_DAY = "bypassToDay";
|
||||
public final static String BYPASS_TO_MONTH = "bypassToMonth";
|
||||
public static final String BYPASS_TO_DAY = "bypassToDay";
|
||||
public static final String BYPASS_TO_MONTH = "bypassToMonth";
|
||||
|
||||
// List of all Properties
|
||||
// ----------------------
|
||||
// Device Config
|
||||
public final static String ARTICLE_DESCRIPTION = "articleDescription";
|
||||
public final static String REF_NO = "refNo";
|
||||
public final static String SER_NO = "serNo";
|
||||
public final static String PROD_CODE = "prodCode";
|
||||
public final static String MAC_ADDRESS = "macAddress";
|
||||
public final static String SOFTWARE_VERSION_BASIS = "softwareVersionBasis";
|
||||
public final static String DATE_FORMAT = "dateFormat";
|
||||
public final static String LANGUAGE = "language";
|
||||
public final static String UNIT_CONFIG = "unitConfig";
|
||||
public final static String KWL_BE = "kwlBe";
|
||||
public final static String KWL_BEC = "kwlBec";
|
||||
public final static String EXTERNAL_CONTACT = "externalContact";
|
||||
public final static String FUNCTION_TYPE_KWL_EM = "functionTypeKwlEm";
|
||||
public final static String HEAT_EXCHANGER_TYPE = "heatExchangerType";
|
||||
public final static String OFFSET_EXTRACT_AIR = "offsetExtractAir";
|
||||
public final static String ASSIGNMENT_FAN_STAGES = "assignmentFanStages";
|
||||
public final static String VOLTAGE_FAN_STAGE_1_EXTRACT_AIR = "voltageFanStage1ExtractAir";
|
||||
public final static String VOLTAGE_FAN_STAGE_2_EXTRACT_AIR = "voltageFanStage2ExtractAir";
|
||||
public final static String VOLTAGE_FAN_STAGE_3_EXTRACT_AIR = "voltageFanStage3ExtractAir";
|
||||
public final static String VOLTAGE_FAN_STAGE_4_EXTRACT_AIR = "voltageFanStage4ExtractAir";
|
||||
public final static String VOLTAGE_FAN_STAGE_1_SUPPLY_AIR = "voltageFanStage1SupplyAir";
|
||||
public final static String VOLTAGE_FAN_STAGE_2_SUPPLY_AIR = "voltageFanStage2SupplyAir";
|
||||
public final static String VOLTAGE_FAN_STAGE_3_SUPPLY_AIR = "voltageFanStage3SupplyAir";
|
||||
public final static String VOLTAGE_FAN_STAGE_4_SUPPLY_AIR = "voltageFanStage4SupplyAir";
|
||||
public final static String FAN_STAGE_STEPPED_0TO2V = "fanStageStepped0to2v";
|
||||
public final static String FAN_STAGE_STEPPED_2TO4V = "fanStageStepped2to4v";
|
||||
public final static String FAN_STAGE_STEPPED_4TO6V = "fanStageStepped4to6v";
|
||||
public final static String FAN_STAGE_STEPPED_6TO8V = "fanStageStepped6to8v";
|
||||
public final static String FAN_STAGE_STEPPED_8TO10V = "fanStageStepped8to10v";
|
||||
public static final String ARTICLE_DESCRIPTION = "articleDescription";
|
||||
public static final String REF_NO = "refNo";
|
||||
public static final String SER_NO = "serNo";
|
||||
public static final String PROD_CODE = "prodCode";
|
||||
public static final String MAC_ADDRESS = "macAddress";
|
||||
public static final String SOFTWARE_VERSION_BASIS = "softwareVersionBasis";
|
||||
public static final String DATE_FORMAT = "dateFormat";
|
||||
public static final String LANGUAGE = "language";
|
||||
public static final String UNIT_CONFIG = "unitConfig";
|
||||
public static final String KWL_BE = "kwlBe";
|
||||
public static final String KWL_BEC = "kwlBec";
|
||||
public static final String EXTERNAL_CONTACT = "externalContact";
|
||||
public static final String FUNCTION_TYPE_KWL_EM = "functionTypeKwlEm";
|
||||
public static final String HEAT_EXCHANGER_TYPE = "heatExchangerType";
|
||||
public static final String OFFSET_EXTRACT_AIR = "offsetExtractAir";
|
||||
public static final String ASSIGNMENT_FAN_STAGES = "assignmentFanStages";
|
||||
public static final String VOLTAGE_FAN_STAGE_1_EXTRACT_AIR = "voltageFanStage1ExtractAir";
|
||||
public static final String VOLTAGE_FAN_STAGE_2_EXTRACT_AIR = "voltageFanStage2ExtractAir";
|
||||
public static final String VOLTAGE_FAN_STAGE_3_EXTRACT_AIR = "voltageFanStage3ExtractAir";
|
||||
public static final String VOLTAGE_FAN_STAGE_4_EXTRACT_AIR = "voltageFanStage4ExtractAir";
|
||||
public static final String VOLTAGE_FAN_STAGE_1_SUPPLY_AIR = "voltageFanStage1SupplyAir";
|
||||
public static final String VOLTAGE_FAN_STAGE_2_SUPPLY_AIR = "voltageFanStage2SupplyAir";
|
||||
public static final String VOLTAGE_FAN_STAGE_3_SUPPLY_AIR = "voltageFanStage3SupplyAir";
|
||||
public static final String VOLTAGE_FAN_STAGE_4_SUPPLY_AIR = "voltageFanStage4SupplyAir";
|
||||
public static final String FAN_STAGE_STEPPED_0TO2V = "fanStageStepped0to2v";
|
||||
public static final String FAN_STAGE_STEPPED_2TO4V = "fanStageStepped2to4v";
|
||||
public static final String FAN_STAGE_STEPPED_4TO6V = "fanStageStepped4to6v";
|
||||
public static final String FAN_STAGE_STEPPED_6TO8V = "fanStageStepped6to8v";
|
||||
public static final String FAN_STAGE_STEPPED_8TO10V = "fanStageStepped8to10v";
|
||||
// Heater
|
||||
public final static String VHZ_TYPE = "vhzType";
|
||||
public static final String VHZ_TYPE = "vhzType";
|
||||
// Humidty control
|
||||
public final static String HUMIDITY_CONTROL_STATUS = "humidityControlStatus";
|
||||
public final static String KWL_FTF_CONFIG_0 = "kwlFtfConfig0";
|
||||
public final static String KWL_FTF_CONFIG_1 = "kwlFtfConfig1";
|
||||
public final static String KWL_FTF_CONFIG_2 = "kwlFtfConfig2";
|
||||
public final static String KWL_FTF_CONFIG_3 = "kwlFtfConfig3";
|
||||
public final static String KWL_FTF_CONFIG_4 = "kwlFtfConfig4";
|
||||
public final static String KWL_FTF_CONFIG_5 = "kwlFtfConfig5";
|
||||
public final static String KWL_FTF_CONFIG_6 = "kwlFtfConfig6";
|
||||
public final static String KWL_FTF_CONFIG_7 = "kwlFtfConfig7";
|
||||
public final static String SENSOR_CONFIG_KWL_FTF_1 = "sensorConfigKwlFtf1";
|
||||
public final static String SENSOR_CONFIG_KWL_FTF_2 = "sensorConfigKwlFtf2";
|
||||
public final static String SENSOR_CONFIG_KWL_FTF_3 = "sensorConfigKwlFtf3";
|
||||
public final static String SENSOR_CONFIG_KWL_FTF_4 = "sensorConfigKwlFtf4";
|
||||
public final static String SENSOR_CONFIG_KWL_FTF_5 = "sensorConfigKwlFtf5";
|
||||
public final static String SENSOR_CONFIG_KWL_FTF_6 = "sensorConfigKwlFtf6";
|
||||
public final static String SENSOR_CONFIG_KWL_FTF_7 = "sensorConfigKwlFtf7";
|
||||
public final static String SENSOR_CONFIG_KWL_FTF_8 = "sensorConfigKwlFtf8";
|
||||
public final static String SENSOR_NAME_HUMIDITY_AND_TEMP_1 = "sensorNameHumidityAndTemp1";
|
||||
public final static String SENSOR_NAME_HUMIDITY_AND_TEMP_2 = "sensorNameHumidityAndTemp2";
|
||||
public final static String SENSOR_NAME_HUMIDITY_AND_TEMP_3 = "sensorNameHumidityAndTemp3";
|
||||
public final static String SENSOR_NAME_HUMIDITY_AND_TEMP_4 = "sensorNameHumidityAndTemp4";
|
||||
public final static String SENSOR_NAME_HUMIDITY_AND_TEMP_5 = "sensorNameHumidityAndTemp5";
|
||||
public final static String SENSOR_NAME_HUMIDITY_AND_TEMP_6 = "sensorNameHumidityAndTemp6";
|
||||
public final static String SENSOR_NAME_HUMIDITY_AND_TEMP_7 = "sensorNameHumidityAndTemp7";
|
||||
public final static String SENSOR_NAME_HUMIDITY_AND_TEMP_8 = "sensorNameHumidityAndTemp8";
|
||||
public static final String HUMIDITY_CONTROL_STATUS = "humidityControlStatus";
|
||||
public static final String KWL_FTF_CONFIG_0 = "kwlFtfConfig0";
|
||||
public static final String KWL_FTF_CONFIG_1 = "kwlFtfConfig1";
|
||||
public static final String KWL_FTF_CONFIG_2 = "kwlFtfConfig2";
|
||||
public static final String KWL_FTF_CONFIG_3 = "kwlFtfConfig3";
|
||||
public static final String KWL_FTF_CONFIG_4 = "kwlFtfConfig4";
|
||||
public static final String KWL_FTF_CONFIG_5 = "kwlFtfConfig5";
|
||||
public static final String KWL_FTF_CONFIG_6 = "kwlFtfConfig6";
|
||||
public static final String KWL_FTF_CONFIG_7 = "kwlFtfConfig7";
|
||||
public static final String SENSOR_CONFIG_KWL_FTF_1 = "sensorConfigKwlFtf1";
|
||||
public static final String SENSOR_CONFIG_KWL_FTF_2 = "sensorConfigKwlFtf2";
|
||||
public static final String SENSOR_CONFIG_KWL_FTF_3 = "sensorConfigKwlFtf3";
|
||||
public static final String SENSOR_CONFIG_KWL_FTF_4 = "sensorConfigKwlFtf4";
|
||||
public static final String SENSOR_CONFIG_KWL_FTF_5 = "sensorConfigKwlFtf5";
|
||||
public static final String SENSOR_CONFIG_KWL_FTF_6 = "sensorConfigKwlFtf6";
|
||||
public static final String SENSOR_CONFIG_KWL_FTF_7 = "sensorConfigKwlFtf7";
|
||||
public static final String SENSOR_CONFIG_KWL_FTF_8 = "sensorConfigKwlFtf8";
|
||||
public static final String SENSOR_NAME_HUMIDITY_AND_TEMP_1 = "sensorNameHumidityAndTemp1";
|
||||
public static final String SENSOR_NAME_HUMIDITY_AND_TEMP_2 = "sensorNameHumidityAndTemp2";
|
||||
public static final String SENSOR_NAME_HUMIDITY_AND_TEMP_3 = "sensorNameHumidityAndTemp3";
|
||||
public static final String SENSOR_NAME_HUMIDITY_AND_TEMP_4 = "sensorNameHumidityAndTemp4";
|
||||
public static final String SENSOR_NAME_HUMIDITY_AND_TEMP_5 = "sensorNameHumidityAndTemp5";
|
||||
public static final String SENSOR_NAME_HUMIDITY_AND_TEMP_6 = "sensorNameHumidityAndTemp6";
|
||||
public static final String SENSOR_NAME_HUMIDITY_AND_TEMP_7 = "sensorNameHumidityAndTemp7";
|
||||
public static final String SENSOR_NAME_HUMIDITY_AND_TEMP_8 = "sensorNameHumidityAndTemp8";
|
||||
// CO2 control
|
||||
public final static String CO2_CONTROL_STATUS = "co2ControlStatus";
|
||||
public static final String CO2_CONTROL_STATUS = "co2ControlStatus";
|
||||
// VOC control
|
||||
public final static String VOC_CONTROL_STATUS = "vocControlStatus";
|
||||
public static final String VOC_CONTROL_STATUS = "vocControlStatus";
|
||||
|
||||
// List of all variables used in actions
|
||||
public final static String FILTER_CHANGE_RESET = "filterChangeReset";
|
||||
public final static String FACTORY_SETTING_WZU = "factorySettingWzu";
|
||||
public final static String FACTORY_RESET = "factoryReset";
|
||||
public final static String RESET_FLAG = "resetFlag";
|
||||
public static final String FILTER_CHANGE_RESET = "filterChangeReset";
|
||||
public static final String FACTORY_SETTING_WZU = "factorySettingWzu";
|
||||
public static final String FACTORY_RESET = "factoryReset";
|
||||
public static final String RESET_FLAG = "resetFlag";
|
||||
|
||||
// List of all unused variables (defined in the specification but not implemented as channels, properties or
|
||||
// actions)
|
||||
public final static String GLOBAL_MANUAL_WEB_UPDATE = "globalManualWebUpdate";
|
||||
public final static String PORTAL_GLOBALS_ERROR_FOR_WEB = "portalGlobalsErrorForWeb";
|
||||
public final static String CLEAR_ERROR = "clearError";
|
||||
public final static String TBD = "tbd";
|
||||
public final static String LOGOUT = "logout";
|
||||
public static final String GLOBAL_MANUAL_WEB_UPDATE = "globalManualWebUpdate";
|
||||
public static final String PORTAL_GLOBALS_ERROR_FOR_WEB = "portalGlobalsErrorForWeb";
|
||||
public static final String CLEAR_ERROR = "clearError";
|
||||
public static final String TBD = "tbd";
|
||||
public static final String LOGOUT = "logout";
|
||||
|
||||
// List of all Configuration Parameters
|
||||
public final static String CONFIG_REFRESH_INTERVAL = "refreshInterval";
|
||||
public static final String CONFIG_REFRESH_INTERVAL = "refreshInterval";
|
||||
|
||||
// Messages
|
||||
public static final String PREFIX_ERROR_MSG = "error.";
|
||||
public static final int BITS_ERROR_MSG = 32;
|
||||
public static final String PREFIX_WARNING_MSG = "warning.";
|
||||
public static final int BITS_WARNING_MSG = 8;
|
||||
public static final String PREFIX_INFO_MSG = "info.";
|
||||
public static final int BITS_INFO_MSG = 8;
|
||||
public static final String PREFIX_STATUS_MSG = "stateflag.";
|
||||
public static final int BITS_STATUS_MSG = 32;
|
||||
|
||||
// Other constants
|
||||
public final static int UNIT_ID = 180;
|
||||
public final static int START_ADDRESS = 1;
|
||||
public final static String VARIABLES_DEFINITION_FILE = "variables.json";
|
||||
public final static int MAX_TRIES = 5;
|
||||
public static final int UNIT_ID = 180;
|
||||
public static final int START_ADDRESS = 1;
|
||||
public static final String VARIABLES_DEFINITION_FILE = "variables.json";
|
||||
public static final int MAX_TRIES = 5;
|
||||
public static final String PROPERTIES_PREFIX = "property.";
|
||||
|
||||
// List of all variables that have to be updated regardless if they are linked to an item
|
||||
public final static List<String> ALWAYS_UPDATE_VARIABLES = Arrays.asList(
|
||||
public static final List<String> ALWAYS_UPDATE_VARIABLES = Arrays.asList(
|
||||
HeliosEasyControlsBindingConstants.DATE_FORMAT, HeliosEasyControlsBindingConstants.DATE,
|
||||
HeliosEasyControlsBindingConstants.TIME, HeliosEasyControlsBindingConstants.TIME_ZONE_DIFFERENCE_TO_GMT,
|
||||
HeliosEasyControlsBindingConstants.BYPASS_FROM_DAY, HeliosEasyControlsBindingConstants.BYPASS_FROM_MONTH,
|
||||
HeliosEasyControlsBindingConstants.BYPASS_TO_DAY, HeliosEasyControlsBindingConstants.BYPASS_TO_MONTH);
|
||||
HeliosEasyControlsBindingConstants.BYPASS_TO_DAY, HeliosEasyControlsBindingConstants.BYPASS_TO_MONTH,
|
||||
HeliosEasyControlsBindingConstants.ERRORS, HeliosEasyControlsBindingConstants.WARNINGS,
|
||||
HeliosEasyControlsBindingConstants.INFOS, HeliosEasyControlsBindingConstants.STATUS_FLAGS);
|
||||
|
||||
// List of all properties
|
||||
public final static List<String> PROPERTY_NAMES = Arrays.asList(
|
||||
public static final List<String> PROPERTY_NAMES = Arrays.asList(
|
||||
HeliosEasyControlsBindingConstants.ARTICLE_DESCRIPTION, HeliosEasyControlsBindingConstants.REF_NO,
|
||||
HeliosEasyControlsBindingConstants.SER_NO, HeliosEasyControlsBindingConstants.PROD_CODE,
|
||||
HeliosEasyControlsBindingConstants.MAC_ADDRESS, HeliosEasyControlsBindingConstants.SOFTWARE_VERSION_BASIS,
|
||||
|
|
|
@ -19,8 +19,10 @@ import java.lang.reflect.Type;
|
|||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
@ -74,6 +76,8 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
|
||||
private final Logger logger = LoggerFactory.getLogger(HeliosEasyControlsHandler.class);
|
||||
|
||||
private final HeliosEasyControlsTranslationProvider translationProvider;
|
||||
|
||||
private @Nullable HeliosEasyControlsConfiguration config;
|
||||
|
||||
private @Nullable ScheduledFuture<?> pollingJob;
|
||||
|
@ -93,9 +97,13 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
private int dateFormat = -1;
|
||||
private ZonedDateTime sysDate = ZonedDateTime.now(); // initialize with local system time as a best guess
|
||||
// before reading from device
|
||||
private long errors = 0;
|
||||
private int warnings = 0;
|
||||
private int infos = 0;
|
||||
private String statusFlags = "";
|
||||
|
||||
private class BypassDate {
|
||||
private final int[] MONTH_MAX_DAYS = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
|
||||
private static class BypassDate {
|
||||
private static final int[] MONTH_MAX_DAYS = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
|
||||
|
||||
// initialization to avoid issues when updating before all variables were read
|
||||
private int month = 1;
|
||||
|
@ -142,8 +150,9 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
|
||||
private @Nullable BypassDate bypassFrom, bypassTo;
|
||||
|
||||
public HeliosEasyControlsHandler(Thing thing) {
|
||||
public HeliosEasyControlsHandler(Thing thing, HeliosEasyControlsTranslationProvider translationProvider) {
|
||||
super(thing);
|
||||
this.translationProvider = translationProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -311,15 +320,21 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
if (command instanceof OnOffType) {
|
||||
value = command == OnOffType.ON ? "1" : "0";
|
||||
} else if (command instanceof DateTimeType) {
|
||||
ZonedDateTime d = ((DateTimeType) command).getZonedDateTime();
|
||||
if (channelId.equals(HeliosEasyControlsBindingConstants.SYS_DATE)) {
|
||||
setSysDateTime(d);
|
||||
} else if (channelId.equals(HeliosEasyControlsBindingConstants.BYPASS_FROM)) {
|
||||
this.setBypass(true, d.getDayOfMonth(), d.getMonthValue());
|
||||
} else if (channelId.equals(HeliosEasyControlsBindingConstants.BYPASS_TO)) {
|
||||
this.setBypass(false, d.getDayOfMonth(), d.getMonthValue());
|
||||
} else {
|
||||
value = formatDate(channelId, ((DateTimeType) command).getZonedDateTime());
|
||||
try {
|
||||
ZonedDateTime d = ((DateTimeType) command).getZonedDateTime();
|
||||
if (channelId.equals(HeliosEasyControlsBindingConstants.SYS_DATE)) {
|
||||
setSysDateTime(d);
|
||||
} else if (channelId.equals(HeliosEasyControlsBindingConstants.BYPASS_FROM)) {
|
||||
this.setBypass(true, d.getDayOfMonth(), d.getMonthValue());
|
||||
} else if (channelId.equals(HeliosEasyControlsBindingConstants.BYPASS_TO)) {
|
||||
this.setBypass(false, d.getDayOfMonth(), d.getMonthValue());
|
||||
} else {
|
||||
value = formatDate(channelId, ((DateTimeType) command).getZonedDateTime());
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
logger.debug(
|
||||
"{} encountered Exception when trying to lock Semaphore for writing variable {} to the device: {}",
|
||||
HeliosEasyControlsHandler.class.getSimpleName(), channelId, e.getMessage());
|
||||
}
|
||||
} else if ((command instanceof DecimalType) || (command instanceof StringType)) {
|
||||
value = command.toString();
|
||||
|
@ -327,36 +342,39 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
// convert item's unit to the Helios device's unit
|
||||
Map<String, HeliosVariable> variableMap = this.variableMap;
|
||||
if (variableMap != null) {
|
||||
String unit = variableMap.get(channelId).getUnit();
|
||||
QuantityType<?> val = (QuantityType<?>) command;
|
||||
if (unit != null) {
|
||||
switch (unit) {
|
||||
case HeliosVariable.UNIT_DAY:
|
||||
val = val.toUnit(Units.DAY);
|
||||
break;
|
||||
case HeliosVariable.UNIT_HOUR:
|
||||
val = val.toUnit(Units.HOUR);
|
||||
break;
|
||||
case HeliosVariable.UNIT_MIN:
|
||||
val = val.toUnit(Units.MINUTE);
|
||||
break;
|
||||
case HeliosVariable.UNIT_SEC:
|
||||
val = val.toUnit(Units.SECOND);
|
||||
break;
|
||||
case HeliosVariable.UNIT_VOLT:
|
||||
val = val.toUnit(Units.VOLT);
|
||||
break;
|
||||
case HeliosVariable.UNIT_PERCENT:
|
||||
val = val.toUnit(Units.PERCENT);
|
||||
break;
|
||||
case HeliosVariable.UNIT_PPM:
|
||||
val = val.toUnit(Units.PARTS_PER_MILLION);
|
||||
break;
|
||||
case HeliosVariable.UNIT_TEMP:
|
||||
val = val.toUnit(SIUnits.CELSIUS);
|
||||
break;
|
||||
HeliosVariable v = variableMap.get(channelId);
|
||||
if (v != null) {
|
||||
String unit = v.getUnit();
|
||||
QuantityType<?> val = (QuantityType<?>) command;
|
||||
if (unit != null) {
|
||||
switch (unit) {
|
||||
case HeliosVariable.UNIT_DAY:
|
||||
val = val.toUnit(Units.DAY);
|
||||
break;
|
||||
case HeliosVariable.UNIT_HOUR:
|
||||
val = val.toUnit(Units.HOUR);
|
||||
break;
|
||||
case HeliosVariable.UNIT_MIN:
|
||||
val = val.toUnit(Units.MINUTE);
|
||||
break;
|
||||
case HeliosVariable.UNIT_SEC:
|
||||
val = val.toUnit(Units.SECOND);
|
||||
break;
|
||||
case HeliosVariable.UNIT_VOLT:
|
||||
val = val.toUnit(Units.VOLT);
|
||||
break;
|
||||
case HeliosVariable.UNIT_PERCENT:
|
||||
val = val.toUnit(Units.PERCENT);
|
||||
break;
|
||||
case HeliosVariable.UNIT_PPM:
|
||||
val = val.toUnit(Units.PARTS_PER_MILLION);
|
||||
break;
|
||||
case HeliosVariable.UNIT_TEMP:
|
||||
val = val.toUnit(SIUnits.CELSIUS);
|
||||
break;
|
||||
}
|
||||
value = val != null ? String.valueOf(val.doubleValue()) : null; // ignore the UoM
|
||||
}
|
||||
value = val != null ? String.valueOf(val.doubleValue()) : null; // ignore the UoM
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -375,6 +393,11 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
} catch (HeliosException e) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
|
||||
"Writing value " + v + "to channel " + channelId + " failed: " + e.getMessage());
|
||||
} catch (InterruptedException e) {
|
||||
logger.debug(
|
||||
"{} encountered Exception when trying to lock Semaphore for writing variable {} to the device: {}",
|
||||
HeliosEasyControlsHandler.class.getSimpleName(), channelId, e.getMessage());
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -404,7 +427,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
* @return The value if the transaction succeeded, <tt>null</tt> otherwise
|
||||
* @throws HeliosException Thrown if the variable is read-only or the provided value is out of range
|
||||
*/
|
||||
public void writeValue(String variableName, String value) throws HeliosException {
|
||||
public void writeValue(String variableName, String value) throws HeliosException, InterruptedException {
|
||||
if (this.variableMap == null) {
|
||||
this.handleError("Variable definition is unavailable.", ThingStatusDetail.CONFIGURATION_ERROR);
|
||||
return;
|
||||
|
@ -413,39 +436,37 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
if (variableMap != null) {
|
||||
HeliosVariable v = variableMap.get(variableName);
|
||||
|
||||
if (!v.hasWriteAccess()) {
|
||||
throw new HeliosException("Variable " + variableName + " is read-only");
|
||||
} else if (!v.isInAllowedRange(value)) {
|
||||
throw new HeliosException(
|
||||
"Value " + value + " is outside of allowed range of variable " + variableName);
|
||||
} else if (this.comms != null) {
|
||||
// write to device
|
||||
String payload = v.getVariableString() + "=" + value;
|
||||
ModbusCommunicationInterface comms = this.comms;
|
||||
if (comms != null) {
|
||||
final Semaphore lock = transactionLocks.get(comms.getEndpoint());
|
||||
try {
|
||||
lock.acquire();
|
||||
comms.submitOneTimeWrite(
|
||||
new ModbusWriteRegisterRequestBlueprint(HeliosEasyControlsBindingConstants.UNIT_ID,
|
||||
HeliosEasyControlsBindingConstants.START_ADDRESS, preparePayload(payload),
|
||||
true, HeliosEasyControlsBindingConstants.MAX_TRIES),
|
||||
result -> {
|
||||
lock.release();
|
||||
updateStatus(ThingStatus.ONLINE);
|
||||
}, failureInfo -> {
|
||||
lock.release();
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
|
||||
"Error writing to device: " + failureInfo.getCause().getMessage());
|
||||
});
|
||||
} catch (InterruptedException e) {
|
||||
logger.warn(
|
||||
"{} encountered Exception when trying to lock Semaphore for writing variable {} to the device: {}",
|
||||
HeliosEasyControlsHandler.class.getSimpleName(), variableName, e.getMessage());
|
||||
if (v != null) {
|
||||
if (!v.hasWriteAccess()) {
|
||||
throw new HeliosException("Variable " + variableName + " is read-only");
|
||||
} else if (!v.isInAllowedRange(value)) {
|
||||
throw new HeliosException(
|
||||
"Value " + value + " is outside of allowed range of variable " + variableName);
|
||||
} else if (this.comms != null) {
|
||||
// write to device
|
||||
String payload = v.getVariableString() + "=" + value;
|
||||
ModbusCommunicationInterface comms = this.comms;
|
||||
if (comms != null) {
|
||||
final Semaphore lock = transactionLocks.get(comms.getEndpoint());
|
||||
if (lock != null) {
|
||||
lock.acquire();
|
||||
comms.submitOneTimeWrite(new ModbusWriteRegisterRequestBlueprint(
|
||||
HeliosEasyControlsBindingConstants.UNIT_ID,
|
||||
HeliosEasyControlsBindingConstants.START_ADDRESS, preparePayload(payload), true,
|
||||
HeliosEasyControlsBindingConstants.MAX_TRIES), result -> {
|
||||
lock.release();
|
||||
updateStatus(ThingStatus.ONLINE);
|
||||
}, failureInfo -> {
|
||||
lock.release();
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
|
||||
"Error writing to device: " + failureInfo.getCause().getMessage());
|
||||
});
|
||||
}
|
||||
}
|
||||
} else { // comms is null
|
||||
this.handleError("Modbus communication interface is null",
|
||||
ThingStatusDetail.COMMUNICATION_ERROR);
|
||||
}
|
||||
} else { // comms is null
|
||||
this.handleError("Modbus communication interface is null", ThingStatusDetail.COMMUNICATION_ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -463,7 +484,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
if ((comms != null) && (variableMap != null)) {
|
||||
final Semaphore lock = transactionLocks.get(comms.getEndpoint());
|
||||
HeliosVariable v = variableMap.get(variableName);
|
||||
if (v.hasReadAccess()) {
|
||||
if ((v != null) && v.hasReadAccess() && (lock != null)) {
|
||||
try {
|
||||
lock.acquire(); // will block until lock is available
|
||||
} catch (InterruptedException e) {
|
||||
|
@ -536,7 +557,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
this.sysDate = sysDate;
|
||||
}
|
||||
|
||||
private void setSysDateTime(ZonedDateTime date) {
|
||||
private void setSysDateTime(ZonedDateTime date) throws InterruptedException {
|
||||
try {
|
||||
this.writeValue(HeliosEasyControlsBindingConstants.DATE,
|
||||
this.formatDate(HeliosEasyControlsBindingConstants.DATE, date));
|
||||
|
@ -550,7 +571,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
}
|
||||
}
|
||||
|
||||
protected void setSysDateTime() {
|
||||
protected void setSysDateTime() throws InterruptedException {
|
||||
this.setSysDateTime(ZonedDateTime.now());
|
||||
}
|
||||
|
||||
|
@ -575,7 +596,7 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
}
|
||||
}
|
||||
|
||||
protected void setBypass(boolean from, int day, int month) {
|
||||
protected void setBypass(boolean from, int day, int month) throws InterruptedException {
|
||||
BypassDate bypassDate = new BypassDate(day, month);
|
||||
try {
|
||||
this.writeValue(from ? HeliosEasyControlsBindingConstants.BYPASS_FROM_DAY
|
||||
|
@ -623,6 +644,75 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private List<String> getMessages(long bitMask, int bits, String prefix) {
|
||||
ArrayList<String> msg = new ArrayList<String>();
|
||||
long mask = 1;
|
||||
for (int i = 0; i < bits; i++) {
|
||||
if ((bitMask & mask) != 0) {
|
||||
msg.add(translationProvider.getText(prefix + i));
|
||||
}
|
||||
mask <<= 1;
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the errors provided by the device into a human readable form (the basis for the
|
||||
* corresponding action)
|
||||
*
|
||||
* @return an <code>List</code> of messages indicated by the error flags sent by the device
|
||||
*/
|
||||
protected List<String> getErrorMessages() {
|
||||
return this.getMessages(this.errors, HeliosEasyControlsBindingConstants.BITS_ERROR_MSG,
|
||||
HeliosEasyControlsBindingConstants.PREFIX_ERROR_MSG);
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the warnings provided by the device into a human readable form (the basis for the
|
||||
* corresponding action)
|
||||
*
|
||||
* @return an <code>List</code> of messages indicated by the warning flags sent by the device
|
||||
*/
|
||||
protected List<String> getWarningMessages() {
|
||||
return this.getMessages(this.warnings, HeliosEasyControlsBindingConstants.BITS_WARNING_MSG,
|
||||
HeliosEasyControlsBindingConstants.PREFIX_WARNING_MSG);
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the infos provided by the device into a human readable form (the basis for the
|
||||
* corresponding action)
|
||||
*
|
||||
* @return an <code>List</code> of messages indicated by the info flags sent by the device
|
||||
*/
|
||||
protected List<String> getInfoMessages() {
|
||||
return this.getMessages(this.infos, HeliosEasyControlsBindingConstants.BITS_INFO_MSG,
|
||||
HeliosEasyControlsBindingConstants.PREFIX_INFO_MSG);
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the status flags provided by the device into a human readable form (the basis for the
|
||||
* corresponding action)
|
||||
*
|
||||
* @return an <code>List</code> of messages indicated by the status flags sent by the device
|
||||
*/
|
||||
protected List<String> getStatusMessages() {
|
||||
ArrayList<String> msg = new ArrayList<String>();
|
||||
if (this.statusFlags.length() == HeliosEasyControlsBindingConstants.BITS_STATUS_MSG) {
|
||||
for (int i = 0; i < HeliosEasyControlsBindingConstants.BITS_STATUS_MSG; i++) {
|
||||
String key = HeliosEasyControlsBindingConstants.PREFIX_STATUS_MSG + i + "."
|
||||
+ (this.statusFlags.substring(HeliosEasyControlsBindingConstants.BITS_STATUS_MSG - i - 1,
|
||||
HeliosEasyControlsBindingConstants.BITS_STATUS_MSG - i));
|
||||
String text = translationProvider.getText(key);
|
||||
if (!text.equals(key)) { // there is a text in the properties file (no text => flag is irrelevant)
|
||||
msg.add(text);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
msg.add("Status messages have not yet been read from the device");
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a DateTimeType object based on the provided String and the device's configured date format
|
||||
*
|
||||
|
@ -718,7 +808,10 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
if ((parts.length == 2) && (v.getVariableString().equals(parts[0]))) {
|
||||
if (this.isProperty(v.getName())) {
|
||||
try {
|
||||
updateProperty(v.getName(), v.formatPropertyValue(parts[1]));
|
||||
updateProperty(
|
||||
translationProvider
|
||||
.getText(HeliosEasyControlsBindingConstants.PROPERTIES_PREFIX + v.getName()),
|
||||
v.formatPropertyValue(parts[1], translationProvider));
|
||||
} catch (HeliosException e) {
|
||||
logger.warn("{} encountered Exception when trying to update property: {}",
|
||||
HeliosEasyControlsHandler.class.getSimpleName(), e.getMessage());
|
||||
|
@ -772,9 +865,15 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
if (state != null) {
|
||||
updateState(v.getGroupAndName(), state);
|
||||
updateStatus(ThingStatus.ONLINE);
|
||||
// update date format and UTC offset upon read
|
||||
// update date format and messages upon read
|
||||
if (v.getName().equals(HeliosEasyControlsBindingConstants.DATE_FORMAT)) {
|
||||
this.dateFormat = Integer.parseInt(value);
|
||||
} else if (v.getName().equals(HeliosEasyControlsBindingConstants.ERRORS)) {
|
||||
this.errors = Long.parseLong(value);
|
||||
} else if (v.getName().equals(HeliosEasyControlsBindingConstants.WARNINGS)) {
|
||||
this.warnings = Integer.parseInt(value);
|
||||
} else if (v.getName().equals(HeliosEasyControlsBindingConstants.INFOS)) {
|
||||
this.infos = Integer.parseInt(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -787,6 +886,9 @@ public class HeliosEasyControlsHandler extends BaseThingHandler {
|
|||
case "String":
|
||||
if (variableType.equals(HeliosVariable.TYPE_STRING)) {
|
||||
updateState(v.getGroupAndName(), StringType.valueOf(value));
|
||||
if (v.getName().equals(HeliosEasyControlsBindingConstants.STATUS_FLAGS)) {
|
||||
this.statusFlags = value;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "DateTime":
|
||||
|
|
|
@ -24,7 +24,10 @@ 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.ComponentContext;
|
||||
import org.osgi.service.component.annotations.Activate;
|
||||
import org.osgi.service.component.annotations.Component;
|
||||
import org.osgi.service.component.annotations.Reference;
|
||||
|
||||
/**
|
||||
* The {@link HeliosEasyControlsHandlerFactory} is responsible for creating things and thing
|
||||
|
@ -38,6 +41,14 @@ public class HeliosEasyControlsHandlerFactory extends BaseThingHandlerFactory {
|
|||
|
||||
private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
|
||||
.singleton(THING_TYPE_HELIOS_VENTILATION_EASY_CONTROLS);
|
||||
private final HeliosEasyControlsTranslationProvider translationProvider;
|
||||
|
||||
@Activate
|
||||
public HeliosEasyControlsHandlerFactory(@Reference HeliosEasyControlsTranslationProvider translationProvider,
|
||||
ComponentContext componentContext) {
|
||||
super.activate(componentContext);
|
||||
this.translationProvider = translationProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsThingType(ThingTypeUID thingTypeUID) {
|
||||
|
@ -48,7 +59,7 @@ public class HeliosEasyControlsHandlerFactory extends BaseThingHandlerFactory {
|
|||
protected @Nullable ThingHandler createHandler(Thing thing) {
|
||||
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
|
||||
if (THING_TYPE_HELIOS_VENTILATION_EASY_CONTROLS.equals(thingTypeUID)) {
|
||||
return new HeliosEasyControlsHandler(thing);
|
||||
return new HeliosEasyControlsHandler(thing, this.translationProvider);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
/**
|
||||
* 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.modbus.helioseasycontrols.internal;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.core.i18n.LocaleProvider;
|
||||
import org.openhab.core.i18n.TranslationProvider;
|
||||
import org.osgi.framework.Bundle;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.service.component.annotations.Activate;
|
||||
import org.osgi.service.component.annotations.Component;
|
||||
import org.osgi.service.component.annotations.Reference;
|
||||
|
||||
/**
|
||||
* This class provides translated texts
|
||||
*
|
||||
* @author Bernhard Bauer - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
@Component(service = HeliosEasyControlsTranslationProvider.class)
|
||||
public class HeliosEasyControlsTranslationProvider {
|
||||
|
||||
private final Bundle bundle;
|
||||
private final TranslationProvider i18nProvider;
|
||||
private final LocaleProvider localeProvider;
|
||||
|
||||
@Activate
|
||||
public HeliosEasyControlsTranslationProvider(@Reference TranslationProvider i18nProvider,
|
||||
@Reference LocaleProvider localeProvider, BundleContext context) {
|
||||
this.bundle = context.getBundle();
|
||||
this.i18nProvider = i18nProvider;
|
||||
this.localeProvider = localeProvider;
|
||||
}
|
||||
|
||||
public HeliosEasyControlsTranslationProvider(final HeliosEasyControlsTranslationProvider other) {
|
||||
this.bundle = other.bundle;
|
||||
this.i18nProvider = other.i18nProvider;
|
||||
this.localeProvider = other.localeProvider;
|
||||
}
|
||||
|
||||
public String getText(String key, @Nullable Object... arguments) {
|
||||
try {
|
||||
Locale locale = localeProvider.getLocale();
|
||||
String message = i18nProvider.getText(bundle, key, this.getDefaultText(key), locale, arguments);
|
||||
if (message != null) {
|
||||
return message;
|
||||
}
|
||||
} catch (IllegalArgumentException e) {
|
||||
}
|
||||
return "Unable to load message for key " + key;
|
||||
}
|
||||
|
||||
public @Nullable String getDefaultText(String key) {
|
||||
return i18nProvider.getText(bundle, key, key, Locale.ENGLISH);
|
||||
}
|
||||
}
|
|
@ -380,7 +380,7 @@ public class HeliosVariable implements Comparable<HeliosVariable> {
|
|||
if (this.type.equals(HeliosVariable.TYPE_INTEGER)) {
|
||||
// using long becuase some variable are specified with a max of 2^32-1
|
||||
// parsing double to allow floating point values to be processed as well
|
||||
long l = new Double(value).longValue();
|
||||
long l = Double.valueOf(value).longValue();
|
||||
return (minVal.longValue() <= l) && (maxVal.longValue() >= l);
|
||||
} else if (this.type.equals(HeliosVariable.TYPE_FLOAT)) {
|
||||
double d = Double.parseDouble(value);
|
||||
|
@ -395,44 +395,41 @@ public class HeliosVariable implements Comparable<HeliosVariable> {
|
|||
return false;
|
||||
}
|
||||
|
||||
private String getText(String property, String value, HeliosEasyControlsTranslationProvider translationProvider)
|
||||
throws HeliosException {
|
||||
String key = "property." + property + "." + value;
|
||||
String text = translationProvider.getText(key);
|
||||
if (!key.equals(text)) {
|
||||
return text;
|
||||
} else {
|
||||
throw new HeliosException("Illegal value for variable " + this.getName() + ": " + value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Depending on the type of variable this method formats the provided value according to the interpretation of its
|
||||
* value
|
||||
*
|
||||
* @param value The value to format
|
||||
* @param translationProvider The i18n translation provider to use for finding internationalized texts
|
||||
* @return The formatted value
|
||||
* @throws HeliosException if the provided value doesn't fit to the variable
|
||||
*/
|
||||
public String formatPropertyValue(String value) throws HeliosException {
|
||||
public String formatPropertyValue(String value, HeliosEasyControlsTranslationProvider translationProvider)
|
||||
throws HeliosException {
|
||||
switch (this.getName()) {
|
||||
case HeliosEasyControlsBindingConstants.DATE_FORMAT:
|
||||
switch (value) {
|
||||
case "0":
|
||||
return "dd.mm.yyyy";
|
||||
case "1":
|
||||
return "mm.dd.yyyy";
|
||||
case "2":
|
||||
return "yyyy.mm.dd";
|
||||
}
|
||||
throw new HeliosException(this.createErrorMessage(value));
|
||||
case HeliosEasyControlsBindingConstants.UNIT_CONFIG:
|
||||
return value.equals("1") ? "DIBt" : "PHI";
|
||||
case HeliosEasyControlsBindingConstants.HEAT_EXCHANGER_TYPE:
|
||||
case HeliosEasyControlsBindingConstants.ASSIGNMENT_FAN_STAGES:
|
||||
case HeliosEasyControlsBindingConstants.VHZ_TYPE:
|
||||
return this.getText(this.getName(), value, translationProvider);
|
||||
case HeliosEasyControlsBindingConstants.KWL_BE:
|
||||
case HeliosEasyControlsBindingConstants.KWL_BEC:
|
||||
return value.equals("1") ? "On" : "Off";
|
||||
return this.getText("onOff", value, translationProvider);
|
||||
case HeliosEasyControlsBindingConstants.EXTERNAL_CONTACT:
|
||||
case HeliosEasyControlsBindingConstants.FUNCTION_TYPE_KWL_EM:
|
||||
return "Function " + value;
|
||||
case HeliosEasyControlsBindingConstants.HEAT_EXCHANGER_TYPE:
|
||||
switch (value) {
|
||||
case "1":
|
||||
return "Plastic";
|
||||
case "2":
|
||||
return "Aluminium";
|
||||
case "3":
|
||||
return "Enthalpy";
|
||||
}
|
||||
throw new HeliosException(this.createErrorMessage(value));
|
||||
return this.getText("function", value, translationProvider);
|
||||
case HeliosEasyControlsBindingConstants.OFFSET_EXTRACT_AIR:
|
||||
case HeliosEasyControlsBindingConstants.VOLTAGE_FAN_STAGE_1_EXTRACT_AIR:
|
||||
case HeliosEasyControlsBindingConstants.VOLTAGE_FAN_STAGE_2_EXTRACT_AIR:
|
||||
|
@ -443,8 +440,6 @@ public class HeliosVariable implements Comparable<HeliosVariable> {
|
|||
case HeliosEasyControlsBindingConstants.VOLTAGE_FAN_STAGE_3_SUPPLY_AIR:
|
||||
case HeliosEasyControlsBindingConstants.VOLTAGE_FAN_STAGE_4_SUPPLY_AIR:
|
||||
return this.getUnit() != null ? value + this.getUnit() : value;
|
||||
case HeliosEasyControlsBindingConstants.ASSIGNMENT_FAN_STAGES:
|
||||
return value.equals("0") ? "0...10V" : "stepped";
|
||||
case HeliosEasyControlsBindingConstants.FAN_STAGE_STEPPED_0TO2V:
|
||||
case HeliosEasyControlsBindingConstants.FAN_STAGE_STEPPED_2TO4V:
|
||||
case HeliosEasyControlsBindingConstants.FAN_STAGE_STEPPED_4TO6V:
|
||||
|
@ -459,18 +454,6 @@ public class HeliosVariable implements Comparable<HeliosVariable> {
|
|||
case HeliosEasyControlsBindingConstants.SENSOR_NAME_HUMIDITY_AND_TEMP_7:
|
||||
case HeliosEasyControlsBindingConstants.SENSOR_NAME_HUMIDITY_AND_TEMP_8:
|
||||
return value;
|
||||
case HeliosEasyControlsBindingConstants.VHZ_TYPE:
|
||||
switch (value) {
|
||||
case "1":
|
||||
return "EH-basis";
|
||||
case "2":
|
||||
return "EH-EWR";
|
||||
case "3":
|
||||
return "SEWT";
|
||||
case "4":
|
||||
return "LEWT";
|
||||
}
|
||||
throw new HeliosException(this.createErrorMessage(value));
|
||||
case HeliosEasyControlsBindingConstants.KWL_FTF_CONFIG_0:
|
||||
case HeliosEasyControlsBindingConstants.KWL_FTF_CONFIG_1:
|
||||
case HeliosEasyControlsBindingConstants.KWL_FTF_CONFIG_2:
|
||||
|
@ -479,15 +462,7 @@ public class HeliosVariable implements Comparable<HeliosVariable> {
|
|||
case HeliosEasyControlsBindingConstants.KWL_FTF_CONFIG_5:
|
||||
case HeliosEasyControlsBindingConstants.KWL_FTF_CONFIG_6:
|
||||
case HeliosEasyControlsBindingConstants.KWL_FTF_CONFIG_7:
|
||||
switch (value) {
|
||||
case "1":
|
||||
return "Relative Humidity";
|
||||
case "2":
|
||||
return "Temperature";
|
||||
case "3":
|
||||
return "Combined";
|
||||
}
|
||||
throw new HeliosException(this.createErrorMessage(value));
|
||||
return this.getText("kwlFtfConfig", value, translationProvider);
|
||||
case HeliosEasyControlsBindingConstants.SENSOR_CONFIG_KWL_FTF_1:
|
||||
case HeliosEasyControlsBindingConstants.SENSOR_CONFIG_KWL_FTF_2:
|
||||
case HeliosEasyControlsBindingConstants.SENSOR_CONFIG_KWL_FTF_3:
|
||||
|
@ -496,28 +471,16 @@ public class HeliosVariable implements Comparable<HeliosVariable> {
|
|||
case HeliosEasyControlsBindingConstants.SENSOR_CONFIG_KWL_FTF_6:
|
||||
case HeliosEasyControlsBindingConstants.SENSOR_CONFIG_KWL_FTF_7:
|
||||
case HeliosEasyControlsBindingConstants.SENSOR_CONFIG_KWL_FTF_8:
|
||||
return value.equals("0") ? "No sensor" : "Sensor installed";
|
||||
return this.getText("sensorConfig", value, translationProvider);
|
||||
case HeliosEasyControlsBindingConstants.HUMIDITY_CONTROL_STATUS:
|
||||
case HeliosEasyControlsBindingConstants.CO2_CONTROL_STATUS:
|
||||
case HeliosEasyControlsBindingConstants.VOC_CONTROL_STATUS:
|
||||
switch (value) {
|
||||
case "0":
|
||||
return "Off";
|
||||
case "1":
|
||||
return "Stepped";
|
||||
case "2":
|
||||
return "Continuous";
|
||||
}
|
||||
throw new HeliosException(this.createErrorMessage(value));
|
||||
return this.getText("controlStatus", value, translationProvider);
|
||||
default:
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
private String createErrorMessage(String value) {
|
||||
return "Illegal value for variable " + this.getName() + ": " + value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(HeliosVariable v) {
|
||||
return getVariable() - v.getVariable();
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
xsi:schemaLocation="https://openhab.org/schemas/binding/v1.0.0 https://openhab.org/schemas/binding-1.0.0.xsd">
|
||||
|
||||
<name>HeliosEasyControls Binding</name>
|
||||
<description>This is the binding for a Helios ventilation system with easyControls using a Modbus TCP implementation.</description>
|
||||
<description>This binding supports the integration of Helios ventilation systems with easyControls using a Modbus TCP
|
||||
implementation.</description>
|
||||
|
||||
</binding:binding>
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
# actions
|
||||
|
||||
action.resetFilterChangeTimer.label = reset filter change timer
|
||||
action.resetFilterChangeTimer.description = Sets the filter change timer back to the configured interval
|
||||
action.resetErrors.label = reset messages
|
||||
action.resetErrors.description = Reset error/warning/info messages
|
||||
action.resetToFactoryDefaults.label = reset to factory defaults
|
||||
action.resetToFactoryDefaults.description = Reset device to factory defaults
|
||||
action.resetSwitchingTimes.label = reset individual switching times
|
||||
action.resetSwitchingTimes.description = Reset individual switching times
|
||||
action.setSysDateTime.label = set system date and time
|
||||
action.setSysDateTime.description = Sets the device's system date and time based on OH's system date and time
|
||||
action.setBypassFrom.label = set the bypass from day and month
|
||||
action.setBypassFrom.description = Sets the day and month from when the bypass should be active
|
||||
action.setBypassFrom.inputParams.day.label = bypass from day
|
||||
action.setBypassFrom.inputParams.day.description = The day from when the bypass should be active
|
||||
action.setBypassFrom.inputParams.month.label = bypass from month
|
||||
action.setBypassFrom.inputParams.month.description = The month from when the bypass should be active
|
||||
action.setBypassTo.label = set the bypass to day and month
|
||||
action.setBypassTo.description = Sets the day and month until when the bypass should be active
|
||||
action.setBypassTo.inputParams.day.label = bypass to day
|
||||
action.setBypassTo.inputParams.day.description = The day until when the bypass should be active
|
||||
action.setBypassTo.inputParams.day.label = bypass to month
|
||||
action.setBypassTo.inputParams.day.description = The month until when the bypass should be active
|
||||
action.getErrorMessages.label = get the list of error messages
|
||||
action.getErrorMessages.description = Returns the list of the device's error messages
|
||||
action.getWarningMessages.label = get the list of warning messages
|
||||
action.getWarningMessages.description = Returns the list of the device's warning messages
|
||||
action.getInfoMessages.label = get the list of info messages
|
||||
action.getInfoMessages.description = Returns the list of the device's info messages
|
||||
action.getStatusMessages.label = get the list of status messages
|
||||
action.getStatusMessages.description = Returns the list of the device's status messages
|
||||
action.getMessages.label = get the list of error, warning, info and status messages
|
||||
action.getMessages.description = Returns the list of the device's error, warning, info and status messages
|
|
@ -0,0 +1,34 @@
|
|||
# actions
|
||||
|
||||
action.resetFilterChangeTimer.label = Restlaufzeit Filter zurücksetzen
|
||||
action.resetFilterChangeTimer.description = Setzt die Restlaufzeit des Filters zurück auf das konfigurierte Intervall
|
||||
action.resetErrors.label = Nachrichten zurücksetzen
|
||||
action.resetErrors.description = Setzt Fehler-/Warnungs- und Info-Nachrichten zurück
|
||||
action.resetToFactoryDefaults.label = Werksreset
|
||||
action.resetToFactoryDefaults.description = Setzt das Gerät auf die Werkseinstellungen zurück
|
||||
action.resetSwitchingTimes.label = Individuelle Schaltzeiten zurücksetzen
|
||||
action.resetSwitchingTimes.description = Setzt individuelle Schaltzeiten zurück
|
||||
action.setSysDateTime.label = Systemdatum und -uhrzeit setzen
|
||||
action.setSysDateTime.description = Setzt das Systemdatum und die -uhrzeit des Geräts besierend auf Systemdatum -und -uhrzeit von OH
|
||||
action.setBypassFrom.label = Bypass von Tag und Monat setzen
|
||||
action.setBypassFrom.description = Setzt den Tag und das Monat ab wann der Bypass aktiv sein soll
|
||||
action.setBypassFrom.inputParams.day.label = Bypass von Tag
|
||||
action.setBypassFrom.inputParams.day.description = Der Tag ab wann der Bypass aktiv sein soll
|
||||
action.setBypassFrom.inputParams.month.label = Bypass von Monat
|
||||
action.setBypassFrom.inputParams.month.description = Das Monat ab wann der Bypass aktiv sein soll
|
||||
action.setBypassTo.label = Bypass bis Tag und Monat setzen
|
||||
action.setBypassTo.description = Setzt den Tag und das Monat bis wann der Bypass aktiv sein soll
|
||||
action.setBypassTo.inputParams.day.label = Bypass bis Tag
|
||||
action.setBypassTo.inputParams.day.description = Der Tag bis wann der Bypass aktiv sein soll
|
||||
action.setBypassTo.inputParams.day.label = Bypass bis Monat
|
||||
action.setBypassTo.inputParams.day.description = Das Monat bis wann der Bypass aktiv sein soll
|
||||
action.getErrorMessages.label = Liste der Fehlermeldungen erhalten
|
||||
action.getErrorMessages.description = Gibt die Liste der Fehlermeldungen des Geräts zurück
|
||||
action.getWarningMessages.label = Liste der Warnmeldungen erhalten
|
||||
action.getWarningMessages.description = Gibt die Liste der Warnmeldungen des Geräts zurück
|
||||
action.getInfoMessages.label = Liste der Infomeldungen erhalten
|
||||
action.getInfoMessages.description = Gibt die Liste der Infomeldungen des Geräts zurück
|
||||
action.getStatusMessages.label = Liste der Statusmeldungen erhalten
|
||||
action.getStatusMessages.description = Gibt die Liste der Statusmeldungen des Geräts zurück
|
||||
action.getMessages.label = Liste der Fehler-, Warn-, Info- und Statusmeldungen erhalten
|
||||
action.getMessages.description = Gibt die Liste der Fehler-, Warn-, Info- und Statusmeldungen des Geräts zurück
|
|
@ -0,0 +1,33 @@
|
|||
# Helios easyControls errors according to bit encoding (the number represents the bit encoding the error)
|
||||
error.0 = Fan speed error supply air (outside air)
|
||||
error.1 = Fan speed error extract air (outgoing air)
|
||||
error.2 = n/a
|
||||
error.3 = SD card error when writing EEPROM data (flash ring buffer full)
|
||||
error.4 = Bus overcurrent
|
||||
error.5 = n/a
|
||||
error.6 = Basis: error VHZ EH (Zero-crossing detection)
|
||||
error.7 = Ext. module (VHZ): error VZH EH (Zero-crossing detection)
|
||||
error.8 = Ext. module (NHZ): error NZH EH (Zero-crossing detection)
|
||||
error.9 = Basis: Internal temp. sensor error (T1) - outside air (missing or cable break)
|
||||
error.10 = Basis: Internal temp. sensor error (T2) - supply air (missing or cable break)
|
||||
error.11 = Basis: Internal temp. sensor error (T3) - extract air (missing or cable break)
|
||||
error.12 = Basis: Internal temp. sensor error (T4) - outgoing air (missing or cable break)
|
||||
error.13 = Basis: Internal temp. sensor error (T1) - outside air (short circuit)
|
||||
error.14 = Basis: Internal temp. sensor error (T2) - supply air (short circuit)
|
||||
error.15 = Basis: Internal temp. sensor error (T3) - extract air (short circuit)
|
||||
error.16 = Basis: Internal temp. sensor error (T4) - outgoing air (short circuit)
|
||||
error.17 = Ext. module configured as VHZ, but missing or malfunctioned
|
||||
error.18 = Ext. module configured as NHZ, but missing or malfunctioned
|
||||
error.19 = Ext. module (VHZ): Duct sensor (T5) - outside air (missing or cable break)
|
||||
error.20 = Ext. module (NHZ): Duct sensor (T6) - supply air (missing or cable break)
|
||||
error.21 = Ext. module (NHZ): Duct sensor (T7) - return WW-Register (missing or cable break)
|
||||
error.22 = Ext. module (VHZ): Duct sensor (T5) - outside air (short circuit)
|
||||
error.23 = Ext. module (NHZ): Duct sensor (T6) - supply air (short circuit)
|
||||
error.24 = Ext. module (NHZ): Duct sensor (T7) - return WW-Register (short circuit)
|
||||
error.25 = Ext. module (VHZ): safety limiter automatic
|
||||
error.26 = Ext. module (VHZ): safety limiter manual
|
||||
error.27 = Ext. module (NHZ): safety limiter automatic
|
||||
error.28 = Ext. module (NHZ): safety limiter manual
|
||||
error.29 = Ext. module (NHZ): Frost protection WW-Reg. measured via WW-return (T7) (switching threshold adjustable per variable list e.g. <7°C)
|
||||
error.30 = Ext. module (NHZ): Frost protection WW-Reg. measured via supply air sensor (T6) (switching threshold adjustable per variable list e.g. <7°C)
|
||||
error.31 = Frost protection external WW Reg.: (fixed <5°C only PHI), measured via supply air duct sensor (ext. module (NHZ) od. basis)
|
|
@ -0,0 +1,33 @@
|
|||
# Helios easyControls errors according to bit encoding (the number represents the bit encoding the error)
|
||||
error.0 = Drehzahlfehler Lüfter Zuluft (Außenluft)
|
||||
error.1 = Drehzahlfehler Lüfter Abluft (Fortluft)
|
||||
error.2 = n/a
|
||||
error.3 = SD-Karten-Fehler beim Schreiben der EEPROM Daten (Flash Ringpuffer voll)
|
||||
error.4 = Bus Überstrom
|
||||
error.5 = n/a
|
||||
error.6 = Basis: Fehler VHZ EH (Null-Durchgangserkennung)
|
||||
error.7 = Erw. Modul (VHZ): Fehler VZH EH (Null-Durchgangserkennung)
|
||||
error.8 = Erw. Modul (NHZ): Fehler NZH EH (Null-Durchgangserkennung)
|
||||
error.9 = Basis: Interner Temp-Sensorfehler (T1) - Außenluft (fehlt oder Kabelbruch)
|
||||
error.10 = Basis: Interner Temp-Sensorfehler (T2) - Zuluft (fehlt oder Kabelbruch)
|
||||
error.11 = Basis: Interner Temp-Sensorfehler (T3) - Abluft (fehlt oder Kabelbruch)
|
||||
error.12 = Basis: Interner Temp-Sensorfehler (T4) - Fortluft (fehlt oder Kabelbruch)
|
||||
error.13 = Basis: Interner Temp-Sensorfehler (T1) - Außenluft (Kurzschluss)
|
||||
error.14 = Basis: Interner Temp-Sensorfehler (T2) - Zuluft (Kurzschluss)
|
||||
error.15 = Basis: Interner Temp-Sensorfehler (T3) - Abluft (Kurzschluss)
|
||||
error.16 = Basis: Interner Temp-Sensorfehler (T4) - Fortluft (Kurzschluss)
|
||||
error.17 = Erw. Modul als VHZ konfiguriert, aber nicht vorh. oder ausgefallen
|
||||
error.18 = Erw. Modul als NHZ konfiguriert, aber nicht vorh. oder ausgefallen
|
||||
error.19 = Erw. Modul (VHZ): Kanalfühler (T5) - Außenluft (fehlt oder Kabelbruch)
|
||||
error.20 = Erw. Modul (NHZ): Kanalfühler (T6) - Zuluft (fehlt oder Kabelbruch)
|
||||
error.21 = Erw. Modul (NHZ): Kanalfühler (T7) - Rücklauf WW-Register (fehlt oder Kabelbruch)
|
||||
error.22 = Erw. Modul (VHZ): Kanalfühler (T5) - Außenluft (Kurzschluss)
|
||||
error.23 = Erw. Modul (NHZ): Kanalfühler (T6) - Zuluft (Kurzschluss)
|
||||
error.24 = Erw. Modul (NHZ): Kanalfühler (T7) - Rücklauf WW-Register (Kurzschluss)
|
||||
error.25 = Erw. Modul (VHZ): Sicherheitsbegrenzer automatisch
|
||||
error.26 = Erw. Modul (VHZ): Sicherheitsbegrenzer manuell
|
||||
error.27 = Erw. Modul (NHZ): Sicherheitsbegrenzer automatisch
|
||||
error.28 = Erw. Modul (NHZ): Sicherheitsbegrenzer manuell
|
||||
error.29 = Erw. Modul (NHZ): Frostschutz WW-Reg. gemessen über WW-Rücklauf (T7) (Schaltschwelle per Variablenliste einstellbar z.B. <7°C)
|
||||
error.30 = Erw. Modul (NHZ): Frostschutz WW-Reg. gemessen über Zuluft-Fühler (T6) (Schaltschwelle per Variablenliste einstellbar z.B. <7°C)
|
||||
error.31 = Frostschutz externes WW Reg.: (fest <5°C nur PHI), gemessen über Zuluftkanal-Fühler (Erw. Modul (NHZ) od. Basis)
|
|
@ -0,0 +1,204 @@
|
|||
# binding
|
||||
binding.modbus.name = HeliosEasyControls Binding
|
||||
binding.modbus.description = Dieses Binding erlaubt die Integration von Helios KWL Geräten mit easyControls via Modbus TCP
|
||||
|
||||
# thing type
|
||||
thing-type.modbus.helios-easycontrols.label = Helios KWL
|
||||
thing-type.modbus.helios-easycontrols.description = Erlaubt die Steuerung von Helios KWL Geräten mit easyControls via Modbus TCP
|
||||
|
||||
# thing type configuration
|
||||
thing-type.config.modbus.helios-easycontrols.refreshInterval.label = Refresh Intervall
|
||||
thing-type.config.modbus.helios-easycontrols.refreshInterval.description = Refresh Intervall
|
||||
|
||||
# channel groups
|
||||
thing-type.modbus.helios-easycontrols.group.general.label = Allgemein
|
||||
thing-type.modbus.helios-easycontrols.group.general.description = Allgemeine Parameter / Statusinformationen
|
||||
thing-type.modbus.helios-easycontrols.group.operation.label = Betrieb
|
||||
thing-type.modbus.helios-easycontrols.group.operation.description = Steuerung der Betriebsarten
|
||||
thing-type.modbus.helios-easycontrols.group.unitConfig.label = Gerätekonfiguration
|
||||
thing-type.modbus.helios-easycontrols.group.unitConfig.description = Konfigurationsparameter der KWL
|
||||
thing-type.modbus.helios-easycontrols.group.profiles.label = Profile
|
||||
thing-type.modbus.helios-easycontrols.group.profiles.description = Profile für den Betrieb des Geräts
|
||||
thing-type.modbus.helios-easycontrols.group.humidityControl.label = Feuchte-Steuerung
|
||||
thing-type.modbus.helios-easycontrols.group.humidityControl.description = Konfiguration der Sensoren für die Feuchte- und/oder Temperatur-Steuerung
|
||||
thing-type.modbus.helios-easycontrols.group.co2Control.label = CO2-Steuerung
|
||||
thing-type.modbus.helios-easycontrols.group.co2Control.description = Konfiguration der Sensoren für die CO2-Steuerung
|
||||
thing-type.modbus.helios-easycontrols.group.vocControl.label = VOC-Steuerung
|
||||
thing-type.modbus.helios-easycontrols.group.vocControl.description = Konfiguration der Sensoren für die VOC-Steuerung
|
||||
|
||||
# channel group types
|
||||
channel-group-type.modbus.general.label = Allgemein
|
||||
channel-group-type.modbus.general.description = Allgemeine Parameter / Statusinformationen
|
||||
channel-group-type.modbus.operation.label = Betrieb
|
||||
channel-group-type.modbus.operation.description = Steuerung der Betriebsarten
|
||||
channel-group-type.modbus.unitConfig.label = Gerätekonfiguration
|
||||
channel-group-type.modbus.unitConfig.description = Konfigurationsparameter der KWL
|
||||
channel-group-type.modbus.profiles.label = Profile
|
||||
channel-group-type.modbus.profiles.description = Profile für den Betrieb des Geräts
|
||||
channel-group-type.modbus.humidityControl.label = Feuchte-Steuerung
|
||||
channel-group-type.modbus.humidityControl.description = Konfiguration der Sensoren für die Feuchte- und/oder Temperatur-Steuerung
|
||||
channel-group-type.modbus.co2Control.label = CO2-Steuerung
|
||||
channel-group-type.modbus.co2Control.description = Konfiguration der Sensoren für die CO2-Steuerung
|
||||
channel-group-type.modbus.vocControl.label = VOC-Steuerung
|
||||
channel-group-type.modbus.vocControl.description = Konfiguration der Sensoren für die VOC-Steuerung
|
||||
|
||||
# channel types
|
||||
channel-type.modbus.sysdate.label = Systemdatum und -uhrzeit
|
||||
channel-type.modbus.sysdate.description = Das Systemdatum bzw. die Systemuhrzeit der KWL
|
||||
channel-type.modbus.summerWinter.label = Sommer-/Winterzeit
|
||||
channel-type.modbus.summerWinter.description = Zeigt an, ob Sommer- oder Winterzeit aktiv ist
|
||||
channel-type.modbus.summerWinter.state.option.0 = Winterzeit
|
||||
channel-type.modbus.summerWinter.state.option.1 = Sommerzeit
|
||||
channel-type.modbus.enableDisable.label = Aktivieren/deaktivieren
|
||||
channel-type.modbus.enableDisable.description = Verwendet für Funktionalität die aktiviert oder deaktiviert sein kann
|
||||
channel-type.modbus.minFanStage.label = Minimale Lüfterstufe
|
||||
channel-type.modbus.minFanStage.description = Minimale Lüfterstufe (0 oder 1)
|
||||
channel-type.modbus.onOff.label = Ein/aus
|
||||
channel-type.modbus.onOff.description = Verwendet für Konfigurationen die ein- oder ausgeschaltet sein können
|
||||
channel-type.modbus.humidityControlSetValue.label = Feuchte-Steuerung Sollwert
|
||||
channel-type.modbus.humidityControlSetValue.description = Feuchte-Steuerung Sollwert (in Prozent)
|
||||
channel-type.modbus.humidityControlSteps.label = Feuchte-Steuerung Stufen
|
||||
channel-type.modbus.humidityControlSteps.description = Feuchte-Steuerung Stufen (in Prozent)
|
||||
channel-type.modbus.humidityStopTime.label = Feuchte-Steuerung Stoppzeit
|
||||
channel-type.modbus.humidityStopTime.description = Feuchte-Steuerung Stoppzeit in Stunden (0-24)
|
||||
channel-type.modbus.ppmControlSetValue.label = Sollwert ppm-Steuerung
|
||||
channel-type.modbus.ppmControlSetValue.description = Sollwert für ppm-basierte Steuerung (in ppm)
|
||||
channel-type.modbus.ppmControlSteps.label = Stufen ppm-Steuerung
|
||||
channel-type.modbus.ppmControlSteps.description = Stufen für ppm-basierte Steuerung (in ppm)
|
||||
channel-type.modbus.comfortTemp.label = Komforttemperatur
|
||||
channel-type.modbus.comfortTemp.description = Komforttemperatur
|
||||
channel-type.modbus.duration.label = Dauer
|
||||
channel-type.modbus.duration.description = Dauer für Betriebsarten (in Minuten)
|
||||
channel-type.modbus.fanStage.label = Lüfterstufe
|
||||
channel-type.modbus.fanStage.description = Lüfterstufe
|
||||
channel-type.modbus.remainingTime.label = Restzeit
|
||||
channel-type.modbus.remainingTime.description = Restzeit für Betriebsarten (in Minuten)
|
||||
channel-type.modbus.operatingMode.label = Betriebsart
|
||||
channel-type.modbus.operatingMode.description = Betriebsart (automatisch/manuell)
|
||||
channel-type.modbus.operatingMode.state.option.0 = automatisch
|
||||
channel-type.modbus.operatingMode.state.option.1 = manuell
|
||||
channel-type.modbus.percentage.label = Prozentwert
|
||||
channel-type.modbus.percentage.description = Prozentwert
|
||||
channel-type.modbus.temperature.label = Temperatur
|
||||
channel-type.modbus.temperature.description = Temperatur
|
||||
channel-type.modbus.sensorValue.label = Sensorwert
|
||||
channel-type.modbus.sensorValue.description = Messwert eines Sensors
|
||||
channel-type.modbus.weekProfileNhz.label = Wochenprofil NHZ
|
||||
channel-type.modbus.weekProfileNhz.description = Wochenprofil NHZ
|
||||
channel-type.modbus.weekProfileNhz.state.option.0 = Standard 1
|
||||
channel-type.modbus.weekProfileNhz.state.option.1 = Standard 2
|
||||
channel-type.modbus.weekProfileNhz.state.option.2 = Festwert
|
||||
channel-type.modbus.weekProfileNhz.state.option.3 = Individuell 1
|
||||
channel-type.modbus.weekProfileNhz.state.option.4 = Individuell 2
|
||||
channel-type.modbus.weekProfileNhz.state.option.5 = NA
|
||||
channel-type.modbus.weekProfileNhz.state.option.6 = aus
|
||||
channel-type.modbus.rpm.label = RPM
|
||||
channel-type.modbus.rpm.description = RPM
|
||||
channel-type.modbus.holidayProgramme.label = Urlaubsprogramm
|
||||
channel-type.modbus.holidayProgramme.description = Urlaubsprogramm
|
||||
channel-type.modbus.holidayProgramme.state.option.0 = aus
|
||||
channel-type.modbus.holidayProgramme.state.option.1 = Intervall
|
||||
channel-type.modbus.holidayProgramme.state.option.2 = konstant
|
||||
channel-type.modbus.date.label = Datum
|
||||
channel-type.modbus.date.description = Datum
|
||||
channel-type.modbus.holidayProgrammeInterval.label = Intervall Urlaubsprogramm
|
||||
channel-type.modbus.holidayProgrammeInterval.description = Intervall Urlaubsprogramm (in Stunden)
|
||||
channel-type.modbus.holidayProgrammeActivationTime.label = Urlaubsprogramm Einschaltzeit
|
||||
channel-type.modbus.holidayProgrammeActivationTime.description = Urlaubsprogramm Einschaltzeit (in Minuten)
|
||||
channel-type.modbus.runOnTimeVhzNhz.label = Nachlaufzeit VHZ/NHZ
|
||||
channel-type.modbus.runOnTimeVhzNhz.description = Nachlaufzeit VHZ/NHZ (in Sekunden)
|
||||
channel-type.modbus.errorOutputFunction.label = Funktion Störausgang
|
||||
channel-type.modbus.errorOutputFunction.description = Funktion Störausgang (Sammelstörung oder nur Fehler)
|
||||
channel-type.modbus.errorOutputFunction.state.option.1 = Sammelstörung
|
||||
channel-type.modbus.errorOutputFunction.state.option.2 = nur Fehler
|
||||
channel-type.modbus.filterChange.label = Filterwechsel
|
||||
channel-type.modbus.filterChange.description = Filterwechsel
|
||||
channel-type.modbus.filterChange.state.option.0 = nein
|
||||
channel-type.modbus.filterChange.state.option.1 = ja
|
||||
channel-type.modbus.filterChangeInterval.label = Intervall Filterwechsel
|
||||
channel-type.modbus.filterChangeInterval.description = Intervall Filterwechsel (in Monaten)
|
||||
channel-type.modbus.filterChangeRemainingTime.label = Filter Restlaufzeit
|
||||
channel-type.modbus.filterChangeRemainingTime.description = Filter Restlaufzeit (in Minuten)
|
||||
channel-type.modbus.bypassRoomTemperature.label = Bypass Raumtemperatur
|
||||
channel-type.modbus.bypassRoomTemperature.description = Bypass Raumtemperatur
|
||||
channel-type.modbus.bypassMinOutsideTemperature.label = Minimale Auߟentemperatur für Bypass
|
||||
channel-type.modbus.bypassMinOutsideTemperature.description = Minimale Auߟentemperatur für Bypass
|
||||
channel-type.modbus.offsetExtractAir.label = Offset Abluft
|
||||
channel-type.modbus.offsetExtractAir.description = Offset Abluft
|
||||
channel-type.modbus.operatingHours.label = Betriebsstunden
|
||||
channel-type.modbus.operatingHours.description = Betriebsstunden (in Minuten)
|
||||
channel-type.modbus.outputPower.label = Leistung
|
||||
channel-type.modbus.outputPower.description = Leistung VHZ/NHZ (in Prozent)
|
||||
channel-type.modbus.errors.label = Fehler
|
||||
channel-type.modbus.errors.description = Fehler codiert als ganzzahliger Wert
|
||||
channel-type.modbus.warnings.label = Warnungen
|
||||
channel-type.modbus.warnings.description = Warnungen codiert als ganzzahliger Wert
|
||||
channel-type.modbus.infos.label = Infos
|
||||
channel-type.modbus.infos.description = Infos codiert als ganzzahliger Wert
|
||||
channel-type.modbus.noOfErrors.label = Anzahl Fehler
|
||||
channel-type.modbus.noOfErrors.description = Anzahl Fehler
|
||||
channel-type.modbus.noOfWarnings.label = Anzahl Warnungen
|
||||
channel-type.modbus.noOfWarnings.description = Anzahl Warnungen
|
||||
channel-type.modbus.noOfInfos.label = Anzahl Infos
|
||||
channel-type.modbus.noOfInfos.description = Anzahl Infos
|
||||
channel-type.modbus.message.label = Fehler / Warnungen / Infos
|
||||
channel-type.modbus.message.description = Fehler / Warnungen / Infos codiert als Zeichenkette
|
||||
channel-type.modbus.sensorConfig.label = Sensor-Konfiguration
|
||||
channel-type.modbus.sensorConfig.description = Sensor-Konfiguration (installiert oder nicht)
|
||||
channel-type.modbus.bypassStatus.label = Status Bypass
|
||||
channel-type.modbus.bypassStatus.description = Status Bypass
|
||||
channel-type.modbus.bypass.label = Bypass aktiv von/bis (Tag und Monat)
|
||||
channel-type.modbus.bypass.description = Bypass wird von diesem Tag und Monat an aktiviert/deaktiviert
|
||||
|
||||
# channels (general)
|
||||
channel-group-type.modbus.general.channel.preHeaterStatus.label = Status Vorheizung
|
||||
channel-group-type.modbus.general.channel.preHeaterStatus.description = Status Vorheizung
|
||||
channel-group-type.modbus.general.channel.nhzDuctSensor.label = NHZ Kanalfühler
|
||||
channel-group-type.modbus.general.channel.nhzReturnSensor.label = NHZ Rücklauffühler
|
||||
channel-group-type.modbus.general.channel.vhzDuctSensor.label = VHZ Kanalfühler
|
||||
channel-group-type.modbus.general.channel.temperatureOutsideAir.label = Temperatur Auߟenluft
|
||||
channel-group-type.modbus.general.channel.temperatureSupplyAir.label = Temperatur Zuluft
|
||||
channel-group-type.modbus.general.channel.temperatureOutgoingAir.label = Temperatur Fortluft
|
||||
channel-group-type.modbus.general.channel.temperatureExtractAir.label = Temperatur Abluft
|
||||
channel-group-type.modbus.general.channel.supplyAirRpm.label = Zuluft RPM
|
||||
channel-group-type.modbus.general.channel.extractAirRpm.label = Abluft RPM
|
||||
channel-group-type.modbus.general.channel.operatingHoursSupplyAirVent.label = Betriebsstunden Zuluft-Ventilator
|
||||
channel-group-type.modbus.general.channel.operatingHoursExtractAirVent.label = Betriebsstunden Abluft-Ventilator
|
||||
channel-group-type.modbus.general.channel.operatingHoursVhz.label = Betriebsstunden VHZ
|
||||
channel-group-type.modbus.general.channel.operatingHoursNhz.label = Betriebsstunden NHZ
|
||||
channel-group-type.modbus.general.channel.outputPowerVhz.label = Leistung VHZ
|
||||
channel-group-type.modbus.general.channel.outputPowerNhz.label = Leistung NHZ
|
||||
channel-group-type.modbus.general.channel.autoSwUpdate.label = Auto SW Update
|
||||
channel-group-type.modbus.general.channel.autoSwUpdate.description = Zeigt an, ob automatische Software-Updates aktiviert sind
|
||||
channel-group-type.modbus.general.channel.accessHeliosPortal.label = Access Helios Portal
|
||||
channel-group-type.modbus.general.channel.accessHeliosPortal.description = Zeigt an, ob Zugriff auf das Helios-Portal aktiviert ist
|
||||
channel-group-type.modbus.operation.channel.partyModeDuration.label = Partybetrieb Dauer
|
||||
channel-group-type.modbus.operation.channel.preHeaterStatus.description = Partybetrieb Dauer (in Minuten)
|
||||
channel-group-type.modbus.operation.channel.partyModeFanStage.label = Partybetrieb Lüfterstufe
|
||||
channel-group-type.modbus.operation.channel.partyModeFanStage.description = Partybetrieb Lüfterstufe
|
||||
channel-group-type.modbus.operation.channel.partyModeRemainingTime.label = Partybetrieb Restzeit
|
||||
channel-group-type.modbus.operation.channel.partyModeRemainingTime.description = Partybetrieb Restzeit
|
||||
channel-group-type.modbus.operation.channel.partyModeStatus.label = Partybetrieb Status
|
||||
channel-group-type.modbus.operation.channel.partyModeStatus.description = Partybetrieb Status
|
||||
channel-group-type.modbus.operation.channel.standbyModeDuration.label = Ruhebetrieb Dauer
|
||||
channel-group-type.modbus.operation.channel.standbyaterStatus.description = Ruhebetrieb Dauer (in Minuten)
|
||||
channel-group-type.modbus.operation.channel.standbyModeFanStage.label = Ruhebetrieb Lüfterstufe
|
||||
channel-group-type.modbus.operation.channel.standbyModeFanStage.description = Ruhebetrieb Lüfterstufe
|
||||
channel-group-type.modbus.operation.channel.standbyModeRemainingTime.label = Ruhebetrieb Restzeit
|
||||
channel-group-type.modbus.operation.channel.standbyModeRemainingTime.description = Ruhebetrieb Restzeit
|
||||
channel-group-type.modbus.operation.channel.standbyModeStatus.label = Ruhebetrieb Status
|
||||
channel-group-type.modbus.operation.channel.standbyModeStatus.description = Ruhebetrieb Status
|
||||
channel-group-type.modbus.operation.channel.holidayProgrammeStart.label = Urlaubsprogramm Start
|
||||
channel-group-type.modbus.operation.channel.holidayProgrammeStart.description = Urlaubsprogramm Start
|
||||
channel-group-type.modbus.operation.channel.holidayProgrammeEnd.label = Urlaubsprogramm Ende
|
||||
channel-group-type.modbus.operation.channel.holidayProgrammeEnd.description = Urlaubsprogramm Ende
|
||||
channel-group-type.modbus.operation.channel.percentageFanStage.label = Prozentuelle Lüfterstufe
|
||||
channel-group-type.modbus.operation.channel.percentageFanStage.description = Prozentuelle Lüfterstufe
|
||||
channel-group-type.modbus.co2Control.channel.co2ControlSetValue.label = Status CO2-Steuerung
|
||||
channel-group-type.modbus.co2Control.channel.co2ControlSetValue.description = Status CO2-Steuerung
|
||||
channel-group-type.modbus.co2Control.channel.co2ControlSteps.label = Stufen CO2-Steuerung
|
||||
channel-group-type.modbus.co2Control.channel.co2ControlSteps.description = Stufen CO2-Steuerung (in ppm)
|
||||
channel-group-type.modbus.vocControl.channel.vocControlSetValue.label = Status VOC-Steuerung
|
||||
channel-group-type.modbus.vocControl.channel.vocControlSetValue.description = Status VOC-Steuerung
|
||||
channel-group-type.modbus.vocControl.channel.vocControlSteps.label = Stufen VOC-Steuerung
|
||||
channel-group-type.modbus.vocControl.channel.vocControlSteps.description = Stufen VOC-Steuerung (in ppm)
|
|
@ -0,0 +1,9 @@
|
|||
# Helios easyControls infos according to bit encoding (the number represents the bit encoding the info)
|
||||
info.0 = Filter change
|
||||
info.1 = Frost protection WT
|
||||
info.2 = SD card error
|
||||
info.3 = Failure of external module (more info in log file)
|
||||
info.4 = n/a
|
||||
info.5 = n/a
|
||||
info.6 = n/a
|
||||
info.7 = n/a
|
|
@ -0,0 +1,9 @@
|
|||
# Helios easyControls infos according to bit encoding (the number represents the bit encoding the info)
|
||||
info.0 = Filterwechsel
|
||||
info.1 = Frostschutz WT
|
||||
info.2 = SD-Karten Fehler
|
||||
info.3 = Ausfall eines externen Moduls (weitere Info im Logfile)
|
||||
info.4 = n/a
|
||||
info.5 = n/a
|
||||
info.6 = n/a
|
||||
info.7 = n/a
|
|
@ -0,0 +1,106 @@
|
|||
# Thing properties
|
||||
property.articleDescription = Article Description
|
||||
property.refNo = Ref No
|
||||
property.macAddress = MAC Address
|
||||
property.language = Language
|
||||
property.voltageFanStage1ExtractAir = Voltage Fan Stage 1 Extract Air
|
||||
property.voltageFanStage2ExtractAir = Voltage Fan Stage 2 Extract Air
|
||||
property.voltageFanStage3ExtractAir = Voltage Fan Stage 3 Extract Air
|
||||
property.voltageFanStage4ExtractAir = Voltage Fan Stage 4 Extract Air
|
||||
property.voltageFanStage1SupplyAir = Voltage Fan Stage 1 Supply Air
|
||||
property.voltageFanStage2SupplyAir = Voltage Fan Stage 2 Supply Air
|
||||
property.voltageFanStage3SupplyAir = Voltage Fan Stage 3 Supply Air
|
||||
property.voltageFanStage4SupplyAir = Voltage Fan Stage 4 Supply Air
|
||||
property.kwlBe = KWL-BE active
|
||||
property.kwlBec = KWL-BEC active
|
||||
property.unitConfig = Unit Config
|
||||
property.unitConfig.1 = DIBt
|
||||
property.unitConfig.2 = PHI
|
||||
property.kwlFtfConfig0 = KWL-FTF Config 0
|
||||
property.kwlFtfConfig1 = KWL-FTF Config 1
|
||||
property.kwlFtfConfig2 = KWL-FTF Config 2
|
||||
property.kwlFtfConfig3 = KWL-FTF Config 3
|
||||
property.kwlFtfConfig4 = KWL-FTF Config 4
|
||||
property.kwlFtfConfig5 = KWL-FTF Config 5
|
||||
property.kwlFtfConfig6 = KWL-FTF Config 6
|
||||
property.kwlFtfConfig7 = KWL-FTF Config 7
|
||||
property.humidityControlStatus = Humidity Control Status
|
||||
property.co2ControlStatus = CO2 Control Status
|
||||
property.vocControlStatus = VOC Control Status
|
||||
property.dateFormat = Date Format
|
||||
property.dateFormat.0 = dd.mm.yyyy
|
||||
property.dateFormat.1 = mm.dd.yyyy
|
||||
property.dateFormat.2 = yyyy.mm.dd
|
||||
property.heatExchangerType = Heat Exchanger Type
|
||||
property.heatExchangerType.1 = Plastic
|
||||
property.heatExchangerType.2 = Aluminium
|
||||
property.heatExchangerType.3 = Enthalpy
|
||||
property.serNo = Serial No
|
||||
property.prodCode = Production Code
|
||||
property.vhzType = Pre Heater Type
|
||||
property.vhzType.1 = EH-Basis
|
||||
property.vhzType.2 = EH-ERW
|
||||
property.vhzType.3 = SEWT
|
||||
property.vhzType.4 = LEWT
|
||||
property.functionTypeKwlEm = Function Type KWL-EM
|
||||
property.externalContact = External Contact
|
||||
property.fanStageStepped0to2v = Fan Stage Stepped 0-2V
|
||||
property.fanStageStepped2to4v = Fan Stage Stepped 2-4V
|
||||
property.fanStageStepped4to6v = Fan Stage Stepped 4-6V
|
||||
property.fanStageStepped6to8v = Fan Stage Stepped 6-8V
|
||||
property.fanStageStepped8to10v = Fan Stage Stepped 8-10V
|
||||
property.offsetExtractAir = Offset Ext Air
|
||||
property.assignmentFanStages = Assignment Fan Stages
|
||||
property.assignmentFanStages.0 = 0..10V
|
||||
property.assignmentFanStages.1 = Stepped
|
||||
property.sensorNameHumidityAndTemp1 = Sensor Name Humidity+Temperature 1
|
||||
property.sensorNameHumidityAndTemp2 = Sensor Name Humidity+Temperature 2
|
||||
property.sensorNameHumidityAndTemp3 = Sensor Name Humidity+Temperature 3
|
||||
property.sensorNameHumidityAndTemp4 = Sensor Name Humidity+Temperature 4
|
||||
property.sensorNameHumidityAndTemp5 = Sensor Name Humidity+Temperature 5
|
||||
property.sensorNameHumidityAndTemp6 = Sensor Name Humidity+Temperature 6
|
||||
property.sensorNameHumidityAndTemp7 = Sensor Name Humidity+Temperature 7
|
||||
property.sensorNameHumidityAndTemp8 = Sensor Name Humidity+Temperature 8
|
||||
property.sensorNameCo21 = Sensor Name CO2 1
|
||||
property.sensorNameCo22 = Sensor Name CO2 2
|
||||
property.sensorNameCo23 = Sensor Name CO2 3
|
||||
property.sensorNameCo24 = Sensor Name CO2 4
|
||||
property.sensorNameCo25 = Sensor Name CO2 5
|
||||
property.sensorNameCo26 = Sensor Name CO2 6
|
||||
property.sensorNameCo27 = Sensor Name CO2 7
|
||||
property.sensorNameCo28 = Sensor Name CO2 8
|
||||
property.sensorNameVoc1 = Sensor Name VOC 1
|
||||
property.sensorNameVoc2 = Sensor Name VOC 2
|
||||
property.sensorNameVoc3 = Sensor Name VOC 3
|
||||
property.sensorNameVoc4 = Sensor Name VOC 4
|
||||
property.sensorNameVoc5 = Sensor Name VOC 5
|
||||
property.sensorNameVoc6 = Sensor Name VOC 6
|
||||
property.sensorNameVoc7 = Sensor Name VOC 7
|
||||
property.sensorNameVoc8 = Sensor Name VOC 8
|
||||
property.softwareVersionBasis = SW Version Basis
|
||||
property.sensorConfigKwlFtf1 = Sensor Config KWL-FTF 1
|
||||
property.sensorConfigKwlFtf2 = Sensor Config KWL-FTF 2
|
||||
property.sensorConfigKwlFtf3 = Sensor Config KWL-FTF 3
|
||||
property.sensorConfigKwlFtf4 = Sensor Config KWL-FTF 4
|
||||
property.sensorConfigKwlFtf5 = Sensor Config KWL-FTF 5
|
||||
property.sensorConfigKwlFtf6 = Sensor Config KWL-FTF 6
|
||||
property.sensorConfigKwlFtf7 = Sensor Config KWL-FTF 7
|
||||
property.sensorConfigKwlFtf8 = Sensor Config KWL-FTF 8
|
||||
|
||||
# general values
|
||||
property.onOff.1 = On
|
||||
property.onOff.0 = Off
|
||||
property.function.1 = Function 1
|
||||
property.function.2 = Function 2
|
||||
property.function.3 = Function 3
|
||||
property.function.4 = Function 4
|
||||
property.function.5 = Function 5
|
||||
property.function.6 = Function 6
|
||||
property.kwlFtfConfig.1 = Relative Humidity
|
||||
property.kwlFtfConfig.2 = Temperature
|
||||
property.kwlFtfConfig.3 = Relative Humidity and Temperature
|
||||
property.sensorConfig.0 = No sensor
|
||||
property.sensorConfig.1 = Sensor installed
|
||||
property.controlStatus.0 = Off
|
||||
property.controlStatus.1 = Stepped
|
||||
property.controlStatus.2 = Continuous
|
|
@ -0,0 +1,106 @@
|
|||
# Thing properties
|
||||
property.articleDescription = Artikelbeschreibung
|
||||
property.refNo = Ref Nr
|
||||
property.macAddress = MAC Adresse
|
||||
property.language = Sprache
|
||||
property.voltageFanStage1ExtractAir = Spannung Lüfterstufe 1 Abluft
|
||||
property.voltageFanStage2ExtractAir = Spannung Lüfterstufe 2 Abluft
|
||||
property.voltageFanStage3ExtractAir = Spannung Lüfterstufe 3 Abluft
|
||||
property.voltageFanStage4ExtractAir = Spannung Lüfterstufe 4 Abluft
|
||||
property.voltageFanStage1SupplyAir = Spannung Lüfterstufe 1 Zuluft
|
||||
property.voltageFanStage2SupplyAir = Spannung Lüfterstufe 2 Zuluft
|
||||
property.voltageFanStage3SupplyAir = Spannung Lüfterstufe 3 Zuluft
|
||||
property.voltageFanStage4SupplyAir = Spannung Lüfterstufe 4 Zuluft
|
||||
property.kwlBe = KWL-BE aktiv
|
||||
property.kwlBec = KWL-BEC aktiv
|
||||
property.unitConfig = Gerätekonfiguration
|
||||
property.unitConfig.1 = DIBt
|
||||
property.unitConfig.2 = PHI
|
||||
property.kwlFtfConfig0 = KWL-FTF Konfiguration 0
|
||||
property.kwlFtfConfig1 = KWL-FTF Konfiguration 1
|
||||
property.kwlFtfConfig2 = KWL-FTF Konfiguration 2
|
||||
property.kwlFtfConfig3 = KWL-FTF Konfiguration 3
|
||||
property.kwlFtfConfig4 = KWL-FTF Konfiguration 4
|
||||
property.kwlFtfConfig5 = KWL-FTF Konfiguration 5
|
||||
property.kwlFtfConfig6 = KWL-FTF Konfiguration 6
|
||||
property.kwlFtfConfig7 = KWL-FTF Konfiguration 7
|
||||
property.humidityControlStatus = Status Feuchte-Steuerung
|
||||
property.co2ControlStatus = Status CO2-Steuerung
|
||||
property.vocControlStatus = Status VOC-Steuerung
|
||||
property.dateFormat = Datumsformat
|
||||
property.dateFormat.0 = dd.mm.yyyy
|
||||
property.dateFormat.1 = mm.dd.yyyy
|
||||
property.dateFormat.2 = yyyy.mm.dd
|
||||
property.heatExchangerType = Wärmetauscher Typ
|
||||
property.heatExchangerType.1 = Kunststoff
|
||||
property.heatExchangerType.2 = Aluminium
|
||||
property.heatExchangerType.3 = Enthalpie
|
||||
property.serNo = Seriennummer
|
||||
property.prodCode = Produktions-Code
|
||||
property.vhzType = VHZ Typ
|
||||
property.vhzType.1 = EH-Basis
|
||||
property.vhzType.2 = EH-ERW
|
||||
property.vhzType.3 = SEWT
|
||||
property.vhzType.4 = LEWT
|
||||
property.functionTypeKwlEm = Funktion KWL-EM
|
||||
property.externalContact = Externer Kontakt
|
||||
property.fanStageStepped0to2v = Lüfterstufe stufig 0-2V
|
||||
property.fanStageStepped2to4v = Lüfterstufe stufig 2-4V
|
||||
property.fanStageStepped4to6v = Lüfterstufe stufig 4-6V
|
||||
property.fanStageStepped6to8v = Lüfterstufe stufig 6-8V
|
||||
property.fanStageStepped8to10v = Lüfterstufe stufig 8-10V
|
||||
property.offsetExtractAir = Offset Abluft
|
||||
property.assignmentFanStages = Zuordnung Lüfterstufen
|
||||
property.assignmentFanStages.0 = 0..10V
|
||||
property.assignmentFanStages.1 = Stufig
|
||||
property.sensorNameHumidityAndTemp1 = Sensorname Feuchte+Temperatur 1
|
||||
property.sensorNameHumidityAndTemp2 = Sensorname Feuchte+Temperatur 2
|
||||
property.sensorNameHumidityAndTemp3 = Sensorname Feuchte+Temperatur 3
|
||||
property.sensorNameHumidityAndTemp4 = Sensorname Feuchte+Temperatur 4
|
||||
property.sensorNameHumidityAndTemp5 = Sensorname Feuchte+Temperatur 5
|
||||
property.sensorNameHumidityAndTemp6 = Sensorname Feuchte+Temperatur 6
|
||||
property.sensorNameHumidityAndTemp7 = Sensorname Feuchte+Temperatur 7
|
||||
property.sensorNameHumidityAndTemp8 = Sensorname Feuchte+Temperatur 8
|
||||
property.sensorNameCo21 = Sensorname CO2 1
|
||||
property.sensorNameCo22 = Sensorname CO2 2
|
||||
property.sensorNameCo23 = Sensorname CO2 3
|
||||
property.sensorNameCo24 = Sensorname CO2 4
|
||||
property.sensorNameCo25 = Sensorname CO2 5
|
||||
property.sensorNameCo26 = Sensorname CO2 6
|
||||
property.sensorNameCo27 = Sensorname CO2 7
|
||||
property.sensorNameCo28 = Sensorname CO2 8
|
||||
property.sensorNameVoc1 = Sensorname VOC 1
|
||||
property.sensorNameVoc2 = Sensorname VOC 2
|
||||
property.sensorNameVoc3 = Sensorname VOC 3
|
||||
property.sensorNameVoc4 = Sensorname VOC 4
|
||||
property.sensorNameVoc5 = Sensorname VOC 5
|
||||
property.sensorNameVoc6 = Sensorname VOC 6
|
||||
property.sensorNameVoc7 = Sensorname VOC 7
|
||||
property.sensorNameVoc8 = Sensorname VOC 8
|
||||
property.softwareVersionBasis = SW Version Basis
|
||||
property.sensorConfigKwlFtf1 = Sensor Konfiguration KWL-FTF 1
|
||||
property.sensorConfigKwlFtf2 = Sensor Konfiguration KWL-FTF 2
|
||||
property.sensorConfigKwlFtf3 = Sensor Konfiguration KWL-FTF 3
|
||||
property.sensorConfigKwlFtf4 = Sensor Konfiguration KWL-FTF 4
|
||||
property.sensorConfigKwlFtf5 = Sensor Konfiguration KWL-FTF 5
|
||||
property.sensorConfigKwlFtf6 = Sensor Konfiguration KWL-FTF 6
|
||||
property.sensorConfigKwlFtf7 = Sensor Konfiguration KWL-FTF 7
|
||||
property.sensorConfigKwlFtf8 = Sensor Konfiguration KWL-FTF 8
|
||||
|
||||
# general values
|
||||
property.onOff.1 = Ein
|
||||
property.onOff.0 = Aus
|
||||
property.function.1 = Funktion 1
|
||||
property.function.2 = Funktion 2
|
||||
property.function.3 = Funktion 3
|
||||
property.function.4 = Funktion 4
|
||||
property.function.5 = Funktion 5
|
||||
property.function.6 = Funktion 6
|
||||
property.kwlFtfConfig.1 = Relative Luftfeuchtigkeit
|
||||
property.kwlFtfConfig.2 = Temperatur
|
||||
property.kwlFtfConfig.3 = Relative Luftfeuchtigkeit und Temperatur
|
||||
property.sensorConfig.0 = Kein sensor
|
||||
property.sensorConfig.1 = Sensor installiert
|
||||
property.controlStatus.0 = Aus
|
||||
property.controlStatus.1 = Stufig
|
||||
property.controlStatus.2 = Stufenlos
|
|
@ -0,0 +1,39 @@
|
|||
# Helios easyControls status flags according to bit encoding (the first number represents the bit encoding the status flag,
|
||||
# the second number indicates the possible bit states)
|
||||
stateflag.0.1 = System pre-initialized (display in BT in the meantime: SYSTEM BOOTING)
|
||||
stateflag.1.1 = System software update active (display in BT in the meantime: SYSTEM LOADING)
|
||||
stateflag.2.1 = Firware update is activated
|
||||
stateflag.3.1 = INBA is active
|
||||
stateflag.4.1 = Party mode
|
||||
stateflag.5.1 = Standby mode
|
||||
stateflag.6.1 = Holiday mode
|
||||
stateflag.7.1 = VHZ is configured on Basis-Module
|
||||
stateflag.8.1 = VHZ is configured on ext. module
|
||||
stateflag.9.1 = Ext. module VHZ active (e.g. BT display: Menu item VHZ overlay)
|
||||
stateflag.10.1 = VHZ configured
|
||||
stateflag.11.0 = VHZ: Heating type electrical
|
||||
stateflag.11.1 = VHZ: Heating type brine (earth or air)
|
||||
stateflag.12.1 = NHZ configured (temperature profile set unequal HEATING OFF)
|
||||
stateflag.13.1 = Ext. module NHZ active (e.g. BT display: Menu item NHZ overlay)
|
||||
stateflag.14.1 = NHZ active (control, error, identical to "Auxiliary heating.On")
|
||||
stateflag.15.0 = NHZ: Heating type electrical
|
||||
stateflag.15.1 = NHZ: Heating type warm water
|
||||
stateflag.16.1 = CO2 control on
|
||||
stateflag.17.1 = Humi control on
|
||||
stateflag.18.1 = VOC control on
|
||||
stateflag.19.1 = n/a
|
||||
stateflag.20.1 = min. an external contact connected (EM or ES)
|
||||
stateflag.21.1 = External contact function active
|
||||
stateflag.22.1 = External access permitted
|
||||
stateflag.23.1 = External access active
|
||||
stateflag.24.1 = Defrost heat exchanger
|
||||
stateflag.25.1 = Defrost warm water register
|
||||
stateflag.26.1 = Filter change due
|
||||
stateflag.27.0 = Config_2 (PHI)
|
||||
stateflag.27.1 = Config_1 (DIBT)
|
||||
stateflag.28.1 = BEC-U1 deactivated via web (pure display function)
|
||||
stateflag.29.1 = Lock control panel
|
||||
stateflag.30.1 = Master Password required (set when incorrect PW has been entered 3 times)
|
||||
stateflag.31.1 = Fan stage display in %
|
||||
|
||||
stateflag.unavailable = Status messages have not yet been read from the device
|
|
@ -0,0 +1,39 @@
|
|||
# Helios easyControls status flags according to bit encoding (the first number represents the bit encoding the status flag,
|
||||
# the second number indicates the possible bit states)
|
||||
stateflag.0.1 = System fertig initialisiert (Anzeige im BT bis dahin: SYSTEM BOOTING)
|
||||
stateflag.1.1 = System Softwareupdate aktiv (Anzeige im BT bis dahin: SYSTEM LOADING)
|
||||
stateflag.2.1 = Firwareupdate wird aktiviert
|
||||
stateflag.3.1 = INBA ist aktiv
|
||||
stateflag.4.1 = Partybetrieb
|
||||
stateflag.5.1 = Ruhebetrieb
|
||||
stateflag.6.1 = Urlaubsbetrieb
|
||||
stateflag.7.1 = VHZ ist auf Basis-Modul konfiguriert
|
||||
stateflag.8.1 = VHZ ist auf ErwModul konfiguriert
|
||||
stateflag.9.1 = ErwModul VHZ aktiv (z.B. BT-Anzeige: Menüpunkt VHZ einblenden)
|
||||
stateflag.10.1 = VHZ konfiguriert
|
||||
stateflag.11.0 = VHZ: Heizungstyp elektrisch
|
||||
stateflag.11.1 = VHZ: Heizungstyp Sole (Erde oder Luft)
|
||||
stateflag.12.1 = NHZ konfiguriert (Temperatur eingestellt ungl. HEIZUNG AUS)
|
||||
stateflag.13.1 = ErwModul NHZ aktiv (z.B. BT-Anzeige: Menüpunkt NHZ einblenden)
|
||||
stateflag.14.1 = NHZ aktiv (Regelung, Fehler, identisch mit "Nachheizung.Ein")
|
||||
stateflag.15.0 = NHZ: Heizungstyp elektrisch
|
||||
stateflag.15.1 = NHZ: Heizungstyp Warmwasser
|
||||
stateflag.16.1 = CO2 Regelung ein
|
||||
stateflag.17.1 = Humi Regelung ein
|
||||
stateflag.18.1 = VOC Regelung ein
|
||||
stateflag.19.1 = n/a
|
||||
stateflag.20.1 = min. ein externer Kontakt angeschlossen (EM oder ES)
|
||||
stateflag.21.1 = Externe Kontaktfunktion aktiv
|
||||
stateflag.22.1 = Externen Zugriff zulassen
|
||||
stateflag.23.1 = Externer Zugriff aktiv
|
||||
stateflag.24.1 = Defrost Wärmetauscher
|
||||
stateflag.25.1 = Defrost Warmwasserregister
|
||||
stateflag.26.1 = Filterwechsel fällig
|
||||
stateflag.27.0 = Konfig_2 (PHI)
|
||||
stateflag.27.1 = Konfig_1 (DIBT)
|
||||
stateflag.28.1 = BEC-U1 über Web deaktiviert (reine Anzeigefunktion)
|
||||
stateflag.29.1 = Bedienteil sperren
|
||||
stateflag.30.1 = Master Password required (Wird gesetzt wenn 3x falsches PW eingegeben wurde)
|
||||
stateflag.31.1 = Anzeige der Lüfterstufe in %
|
||||
|
||||
stateflag.unavailable = Statusmeldungen wurden noch nicht vom Gerät übertragen
|
|
@ -0,0 +1,9 @@
|
|||
# Helios easyControls warnings according to bit encoding (the number represents the bit encoding the warning)
|
||||
warning.0 = Internal humidity sensor provides no value
|
||||
warning.1 = n/a
|
||||
warning.2 = n/a
|
||||
warning.3 = n/a
|
||||
warning.4 = n/a
|
||||
warning.5 = n/a
|
||||
warning.6 = n/a
|
||||
warning.7 = n/a
|
|
@ -0,0 +1,9 @@
|
|||
# Helios easyControls warnings according to bit encoding (the number represents the bit encoding the warning)
|
||||
warning.0 = Interner Feuchtefühler liefert keinen Wert
|
||||
warning.1 = n/a
|
||||
warning.2 = n/a
|
||||
warning.3 = n/a
|
||||
warning.4 = n/a
|
||||
warning.5 = n/a
|
||||
warning.6 = n/a
|
||||
warning.7 = n/a
|
|
@ -279,8 +279,8 @@
|
|||
<description>VOC control status</description>
|
||||
</channel>
|
||||
<channel id="vocControlSteps" typeId="ppmControlSteps">
|
||||
<label>CO2 Control Steps</label>
|
||||
<description>CO2 control steps (in ppm)</description>
|
||||
<label>VOC Control Steps</label>
|
||||
<description>VOC control steps (in ppm)</description>
|
||||
</channel>
|
||||
<!-- External CO2 Sensors -->
|
||||
<channel id="externalSensorKwlVoc1" typeId="sensorValue"/>
|
||||
|
@ -504,7 +504,7 @@
|
|||
<channel-type id="runOnTimeVhzNhz" advanced="true">
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>Stopping Time Preheater/Afterheater</label>
|
||||
<description>Stopping time preheater/afterheater in seconds</description>
|
||||
<description>Stopping time preheater/afterheater</description>
|
||||
<category>Heating</category>
|
||||
<state min="60" max="120" step="1" pattern="%d %unit%" readOnly="false"/>
|
||||
</channel-type>
|
||||
|
@ -590,21 +590,21 @@
|
|||
<channel-type id="errors" advanced="false">
|
||||
<item-type>Number</item-type>
|
||||
<label>Errors</label>
|
||||
<description>Errors as integer value</description>
|
||||
<description>Errors encoded as integer value</description>
|
||||
<state min="0" max="4294967295" step="1" pattern="%d" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="warnings" advanced="false">
|
||||
<item-type>Number</item-type>
|
||||
<label>Warnings</label>
|
||||
<description>Warnings as integer value</description>
|
||||
<description>Warnings encoded as integer value</description>
|
||||
<state min="0" max="255" step="1" pattern="%d" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="infos" advanced="false">
|
||||
<item-type>Number</item-type>
|
||||
<label>Infos</label>
|
||||
<description>Infos as integer value</description>
|
||||
<description>Infos encoded as integer value</description>
|
||||
<state min="0" max="255" step="1" pattern="%d" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
|
|
Loading…
Reference in New Issue