From 532a03375ae7a4ea025a6dce4674fef7f0b91f96 Mon Sep 17 00:00:00 2001 From: Markus Michels Date: Mon, 18 Apr 2022 19:32:16 +0200 Subject: [PATCH] [shelly] TRV+Motion2 support, various fixes & enhancements (#12325) * TRV support, various fixes & enhancements Signed-off-by: markus7017 Signed-off-by: Markus Michels * #12236 fixed Signed-off-by: Markus Michels (github: markus7017) Signed-off-by: markus7017 Signed-off-by: Markus Michels * TRV support competed Signed-off-by: Markus Michels (github: markus7017) Signed-off-by: markus7017 Signed-off-by: Markus Michels * Complete TRV support Signed-off-by: Markus Michels (github: markus7017) Signed-off-by: markus7017 Signed-off-by: Markus Michels * - TRV polling optimized Signed-off-by: markus7017 Signed-off-by: Markus Michels * # WARNING: head commit changed in the meantime - Shelly Motion 2 support - TRV polling optimized - channel creatiom of ledStatusLed fixed if no ledPowerLed was created - Handling of sensor.status_error fixed when = no error (0/"0") - channel timerActive was missing for Dimmer 1/2 - Motion timestamp channels were 1h off - exception with data format while initializing a bulb fixed - README updated Signed-off-by: Markus Michels (github: markus7017) Signed-off-by: markus7017 Signed-off-by: Markus Michels * - added new TRV value boost minute, polling remnoved on valve position changes (req. latest firmware) - fix: don't create accu channels for roller - fix: fix Id for some status messages Signed-off-by: Markus Michels (github: markus7017) Signed-off-by: Markus Michels * log types revised Signed-off-by: Markus Michels (github: markus7017) Signed-off-by: Markus Michels --- bundles/org.openhab.binding.shelly/README.md | 61 +- .../internal/ShellyBindingConstants.java | 33 +- .../shelly/internal/ShellyHandlerFactory.java | 3 + .../shelly/internal/api/ShellyApiJsonDTO.java | 58 +- .../internal/api/ShellyDeviceProfile.java | 10 +- .../shelly/internal/api/ShellyHttpApi.java | 34 +- .../internal/coap/ShellyCoIoTProtocol.java | 9 +- .../internal/coap/ShellyCoIoTVersion2.java | 79 +- .../internal/coap/ShellyCoapHandler.java | 2 +- .../config/ShellyBindingConfiguration.java | 8 +- .../discovery/ShellyThingCreator.java | 5 + .../internal/handler/ShellyBaseHandler.java | 101 ++- .../internal/handler/ShellyComponents.java | 61 +- .../internal/handler/ShellyLightHandler.java | 2 +- .../provider/ShellyChannelDefinitions.java | 67 +- .../internal/util/ShellyChannelCache.java | 3 - .../shelly/internal/util/ShellyUtils.java | 10 +- .../main/resources/OH-INF/config/config.xml | 70 +- .../resources/OH-INF/i18n/shelly.properties | 739 ++++++++++++++- .../OH-INF/i18n/shelly_de.properties | 849 +++++++++++++++--- .../main/resources/OH-INF/thing/device.xml | 123 ++- .../main/resources/OH-INF/thing/lights.xml | 177 ++-- .../src/main/resources/OH-INF/thing/relay.xml | 409 +++++---- .../main/resources/OH-INF/thing/sensor.xml | 354 +++++--- .../main/resources/OH-INF/thing/unknown.xml | 18 +- 25 files changed, 2597 insertions(+), 688 deletions(-) diff --git a/bundles/org.openhab.binding.shelly/README.md b/bundles/org.openhab.binding.shelly/README.md index aed0dca82..6f6ae7744 100644 --- a/bundles/org.openhab.binding.shelly/README.md +++ b/bundles/org.openhab.binding.shelly/README.md @@ -59,7 +59,9 @@ Also check out the [Shelly Manager](doc/ShellyManager.md), which | shellydw | Shelly Door/Window | SHDW-1 | | shellydw2 | Shelly Door/Window 2 | SHDW-2 | | shellybutton1 | Shelly Button 1 | SHBTN-1 | +| shellybutton2 | Shelly Button 2 | SHBTN-2 | | shellysense | Shelly Motion and IR Controller | SHSEN-1 | +| shellytrv | Shelly TRV | SHTRV-01 | | shellydevice | A password protected Shelly device or an unknown type | | ## Binding Configuration @@ -101,9 +103,16 @@ Battery powered devices need to wake up by pressing the button, they will stay a The binding uses mDNS to discover the Shelly devices. They periodically announce their presence, which is used by the binding to find them on the local network. - Sometimes you need to run the manual discovery multiple times until you see all your devices. +`Important`: +It's recommended to enable CoIoT in the device settings for faster response times (event driven rather than polling). +Open the device's Web UI, section "COIOT settings" and select "Enable COCIOT". +It's recommended to switch the Shelly devices to CoAP Unicast mode if you have only your openHAB system controlling the device. +This allows routing the CoIoT/CoAP messages across multiple IP subnets without special network setup required. +You could use Shelly Manager (doc/ShellyManager.md) to easily do the setup (configuring the openHAB host as CoAP peer address). +Keep Multicast mode if you have multiple hosts, which should receive the CoAP updates. + ### Password Protected Devices The Shelly devices can be configured to require authorization through a user id and password. @@ -150,7 +159,7 @@ The binding sets the following Thing status depending on the device status: | OFFLINE | Communication with the device failed. Check the Thing status in the UI and openHAB's log for an indication of the error. Try restarting OH or deleting and re-discovering the Thing. You could also post to the community thread if the problem persists. | `Battery powered devices:` -If the device is in sleep mode and can't be reached by the binding, the Thing will change into UNKNOWN state. +If the device is in sleep mode and can't be reached by the binding, the Thing will change into CONFIG_PENDING. Once the device wakes up, the Thing will perform initialization and the state will change to ONLINE. The first time a device is discovered and initialized successfully, the binding will be able to perform auto-initialization when OH is restarted. Waking up the device triggers the event URL and/or CoIoT packet, which is processed by the binding and triggers initialization. Once a device is initialized, it is no longer necessary to manually wake it up after an openHAB restart unless you change the battery. In this case press the button and run the discovery again. @@ -216,6 +225,7 @@ Every device has a channel group `device` with the following channels: | |statusLed |Switch |r/w |ON: Status LED is disabled, OFF: LED enabled | | |powerLed |Switch |r/w |ON: Power LED is disabled, OFF: LED enabled | | |charger |Switch |yes |ON: USB charging cable is connected external power supply activated. | +| |calibrated |Switch |yes |ON: Device/sensor is calibrated (if supported by device). | Availability of channels is depending on the device type. The binding detects many of those channels on-the-fly (when Thing changes to ONLINE state) and adjusts the Thing's channel structure. @@ -261,7 +271,7 @@ Enable the autoCoIoT option in the binding configuration or eventsCoIoT in the T ### Button events Various devices signal an event when the physical button is pressed. -This could be a switch connected to the SW input of the relay or the Button 1. +This could be a switch connected to the SW input of the relay or the Button 1 or 2. The following trigger types are sent: @@ -496,8 +506,9 @@ The Thing id is derived from the service name, so that's the reason why the Thin | |totalKWH |Number |yes |Total energy consumption in Watts since the device powered up (reset on restart) | | |lastUpdate |DateTime |yes |Timestamp of the last measurement | -The roller positioning calibration has to be performed using the Shelly App before the position can be set in percent. +`Note: The Roller should be calibrated using the device Web UI or Shelly App, otherwise the position can .` +The roller positioning calibration has to be performed using the Shelly Web UI or App before the position can be set in percent. Refer to [Smartify Roller Shutters with openHAB and Shelly](doc/UseCaseSmartRoller.md) for more information on roller integration. ### Shelly 2.5 - relay mode (thing-type:shelly25-relay) @@ -531,8 +542,7 @@ For this the binding aggregates the power consumption of both relays and include |meter1 | | | |See group meter1 for Shelly 2 | |meter2 | | | |See group meter1 for Shelly 2 | -The roller positioning calibration has to be performed using the Shelly App before the position can be set in percent. - +The roller positioning calibration has to be performed using the Shelly Web UI or App before the position can be set in percent. Refer to [Smartify Roller Shutters with openHAB and Shelly](doc/UseCaseSmartRoller.md) for more information on roller integration. ### Shelly4 Pro (thing-type: shelly4pro) @@ -580,7 +590,7 @@ The Shelly 4Pro provides 4 relays and 4 power meters. | |lastUpdate |DateTime |yes |Timestamp of the last measurement | -`Note: The Dimmer should be calibrated using the Shelly App.` +`Note: The Dimmer should be calibrated using the device Web UI or Shelly App.` Using the Thing configuration option `brightnessAutoOn` you could decide if the light is turned on when a brightness > 0 is set. `true`: Brightness will be set and device output is powered = light turns on with the new brightness @@ -812,10 +822,9 @@ You can define 2 items (1 Switch, 1 Number) mapping to the same channel, see exa ### Shelly Motion (thing-type: shellymotion) -Important: The Shelly Motion does only support CoIoT Unicast, which means you need to set the CoIoT peer address. - -- Use device WebUI, open COIOT settings, make sure CoIoT is enabled and enter the openHAB IP address or -- Use [Shelly Manager](doc/ShellyManager.md, select Action 'Set CoIoT peer' and the Manager will sets the openHAB IP address as peer address +Note: You might need to restart the device to enable the discovery mode for 3 minutes(use the Web UI). +As an alternativ you could press the reset button shortly (refer to the manual to locate the reset button). +While the device is in low power mode (usual operation) it will not respond to discovery requests |Group |Channel |Type |read-only|Description | |----------|---------------|---------|---------|---------------------------------------------------------------------| @@ -836,7 +845,30 @@ You have a Motion controlling your light. You switch off the light and want to leave the room, but the motion sensor immediately switches light back on. Using 'sensorSleepTime' you could suppress motion events while leaving the room, e.g. for 5sec and the light doesn's switch on. -### Shelly Button 1 (thing-type: shellybutton1) +### Shelly TRV (thing-type: shellytrv) + +Note: You might need to reboot the device to enable the discovery mode for 3 minutes(use the Web UI). +As an alternative you could press the reset button shortly (refer to the manual to locate the reset button). +While the device is in low power mode (usual operation) it will not respond to discovery requests + +You should calibrate the valve using the device Web UI or Shelly App before starting to control it using openHAB. + +|Group |Channel |Type |read-only|Description | +|----------|-------------|---------|---------|-----------------------------------------------------------------------| +|sensors |temperature |Number |yes |Current Temperature in °C | +| |state |Contact |yes |Valve status: OPEN or CLOSED (position = 0) | +| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) | +|control |targetTemp |Number |no |Temperature in °C: 4=Low/Min; 5..30=target temperature;31=Hi/Max | +| |position |Dimmer |no |Set valve to manual mode (0..100%) disables auto-temp) | +| |mode |String |no |Switch between manual and automatic mode | +| |profile |Number |no |Select profile: 0=disable, 1-n: profile index from Shelly Web App | +| |boost |Number |no |Enable/disable boost mode (full heating power) | +| |boostTimer |Number |no |Number of minutes to heat at full power while boost mode is enabled | +|battery |batteryLevel |Number |yes |Battery Level in % | +| |batteryAlert |Switch |yes |Low battery alert | +|device |schedule |Switch |yes |ON: Schedule is active | + +### Shelly Button 1 or 2 (thing-type: shellybutton1 / shellybutton2) |Group |Channel |Type |read-only|Description | |----------|-------------|---------|---------|-----------------------------------------------------------------------| @@ -848,8 +880,6 @@ Using 'sensorSleepTime' you could suppress motion events while leaving the room, |battery |batteryLevel |Number |yes |Battery Level in % | | |lowBattery |Switch |yes |Low battery alert (< 20%) | -You should calibrate the sensor using the Shelly App to get information on the tilt status. - ### Shelly Smoke (thing-type: shellysmoke) |Group |Channel |Type |read-only|Description | @@ -861,7 +891,7 @@ You should calibrate the sensor using the Shelly App to get information on the t |battery |batteryLevel |Number |yes |Battery Level in % | | |lowBattery |Switch |yes |Low battery alert (< 20%) | -### Shelly Smoke(thing-type: shellysmoke) +### Shelly Gas (thing-type: shellygas) |Group |Channel |Type |read-only|Description | |----------|-------------|---------|---------|-----------------------------------------------------------------------| @@ -889,6 +919,7 @@ You should calibrate the sensor using the Shelly App to get information on the t |battery |batteryLevel |Number |yes |Battery Level in % | | |batteryAlert |Switch |yes |Low battery alert | + ## Full Example ### shelly.things diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyBindingConstants.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyBindingConstants.java index b6624ccbd..3b57275db 100755 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyBindingConstants.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyBindingConstants.java @@ -67,8 +67,10 @@ public class ShellyBindingConstants { public static final String THING_TYPE_SHELLYDOORWIN2_STR = "shellydw2"; public static final String THING_TYPE_SHELLYEYE_STR = "shellyseye"; public static final String THING_TYPE_SHELLYSENSE_STR = "shellysense"; + public static final String THING_TYPE_SHELLYTRV_STR = "shellytrv"; public static final String THING_TYPE_SHELLYMOTION_STR = "shellymotion"; public static final String THING_TYPE_SHELLYBUTTON1_STR = "shellybutton1"; + public static final String THING_TYPE_SHELLYBUTTON2_STR = "shellybutton2"; public static final String THING_TYPE_SHELLYUNI_STR = "shellyuni"; public static final String THING_TYPE_SHELLYPROTECTED_STR = "shellydevice"; public static final String THING_TYPE_SHELLYUNKNOWN_STR = "shellyunknown"; @@ -90,6 +92,7 @@ public class ShellyBindingConstants { public static final String SHELLYDT_DW2 = "SHDW-2"; public static final String SHELLYDT_SENSE = "SHSEN-1"; public static final String SHELLYDT_MOTION = "SHMOS-01"; + public static final String SHELLYDT_MOTION2 = "SHMOS-02"; public static final String SHELLYDT_GAS = "SHGS-1"; public static final String SHELLYDT_DIMMER = "SHDM-1"; public static final String SHELLYDT_DIMMER2 = "SHDM-2"; @@ -100,7 +103,9 @@ public class ShellyBindingConstants { public static final String SHELLYDT_VINTAGE = "SHVIN-1"; public static final String SHELLYDT_RGBW2 = "SHRGBW2"; public static final String SHELLYDT_BUTTON1 = "SHBTN-1"; + public static final String SHELLYDT_BUTTON2 = "SHBTN-2"; public static final String SHELLYDT_UNI = "SHUNI-1"; + public static final String SHELLYDT_TRV = "SHTRV-01"; // List of all Thing Type UIDs public static final ThingTypeUID THING_TYPE_SHELLY1 = new ThingTypeUID(BINDING_ID, THING_TYPE_SHELLY1_STR); @@ -142,8 +147,11 @@ public class ShellyBindingConstants { THING_TYPE_SHELLYDOORWIN_STR); public static final ThingTypeUID THING_TYPE_SHELLYDOORWIN2 = new ThingTypeUID(BINDING_ID, THING_TYPE_SHELLYDOORWIN2_STR); + public static final ThingTypeUID THING_TYPE_SHELLYTRV = new ThingTypeUID(BINDING_ID, THING_TYPE_SHELLYTRV_STR); public static final ThingTypeUID THING_TYPE_SHELLYBUTTON1 = new ThingTypeUID(BINDING_ID, THING_TYPE_SHELLYBUTTON1_STR); + public static final ThingTypeUID THING_TYPE_SHELLYBUTTON2 = new ThingTypeUID(BINDING_ID, + THING_TYPE_SHELLYBUTTON2_STR); public static final ThingTypeUID THING_TYPE_SHELLYEYE = new ThingTypeUID(BINDING_ID, THING_TYPE_SHELLYEYE_STR); public static final ThingTypeUID THING_TYPE_SHELLMOTION = new ThingTypeUID(BINDING_ID, THING_TYPE_SHELLYMOTION_STR); public static final ThingTypeUID THING_TYPE_SHELLYRGBW2_COLOR = new ThingTypeUID(BINDING_ID, @@ -162,9 +170,10 @@ public class ShellyBindingConstants { THING_TYPE_SHELLYPLUGS, THING_TYPE_SHELLYPLUGU1, THING_TYPE_SHELLYUNI, THING_TYPE_SHELLYDIMMER, THING_TYPE_SHELLYDIMMER2, THING_TYPE_SHELLYIX3, THING_TYPE_SHELLYBULB, THING_TYPE_SHELLYDUO, THING_TYPE_SHELLYVINTAGE, THING_TYPE_SHELLYDUORGBW, THING_TYPE_SHELLYRGBW2_COLOR, - THING_TYPE_SHELLYRGBW2_WHITE, THING_TYPE_SHELLYHT, THING_TYPE_SHELLYSENSE, THING_TYPE_SHELLYEYE, - THING_TYPE_SHELLYSMOKE, THING_TYPE_SHELLYGAS, THING_TYPE_SHELLYFLOOD, THING_TYPE_SHELLYDOORWIN, - THING_TYPE_SHELLYDOORWIN2, THING_TYPE_SHELLYBUTTON1, THING_TYPE_SHELLMOTION, + THING_TYPE_SHELLYRGBW2_WHITE, THING_TYPE_SHELLYHT, THING_TYPE_SHELLYTRV, THING_TYPE_SHELLYSENSE, + THING_TYPE_SHELLYEYE, THING_TYPE_SHELLYSMOKE, THING_TYPE_SHELLYGAS, THING_TYPE_SHELLYFLOOD, + THING_TYPE_SHELLYDOORWIN, THING_TYPE_SHELLYDOORWIN2, THING_TYPE_SHELLYBUTTON1, + THING_TYPE_SHELLYBUTTON2, THING_TYPE_SHELLMOTION, THING_TYPE_SHELLMOTION, THING_TYPE_SHELLYPROTECTED, THING_TYPE_SHELLYUNKNOWN).collect(Collectors.toSet())); // Thing Configuration Properties @@ -242,23 +251,30 @@ public class ShellyBindingConstants { public static final String CHANNEL_SENSOR_TILT = "tilt"; public static final String CHANNEL_SENSOR_FLOOD = "flood"; public static final String CHANNEL_SENSOR_SMOKE = "smoke"; - public static final String CHANNEL_SENSOR_CONTACT = "state"; + public static final String CHANNEL_SENSOR_STATE = "state"; public static final String CHANNEL_SENSOR_VALVE = "valve"; public static final String CHANNEL_SENSOR_SSTATE = "status"; // Shelly Gas - public static final String CHANNEL_SENSOR_ALARM_STATE = "alarmState"; public static final String CHANNEL_SENSOR_MOTION_ACT = "motionActive"; public static final String CHANNEL_SENSOR_MOTION = "motion"; public static final String CHANNEL_SENSOR_MOTION_TS = "motionTimestamp"; public static final String CHANNEL_SENSOR_SLEEPTIME = "sensorSleepTime"; + public static final String CHANNEL_SENSOR_ALARM_STATE = "alarmState"; public static final String CHANNEL_SENSOR_ERROR = "lastError"; + public static final String CHANNEL_CONTROL_SETTEMP = "targetTemp"; // Shelly TRV: target temp + public static final String CHANNEL_CONTROL_POSITION = "position"; // Shelly TRV: Valve position + public static final String CHANNEL_CONTROL_MODE = "mode"; // Shelly TRV + public static final String CHANNEL_CONTROL_PROFILE = "profile"; // Shelly TRV + public static final String CHANNEL_CONTROL_BCONTROL = "boost"; // Shelly TRV + public static final String CHANNEL_CONTROL_BTIMER = "boostTimer"; // Shelly TRV + // External sensors for Shelly1/1PM public static final String CHANNEL_ESENDOR_TEMP1 = CHANNEL_SENSOR_TEMP + "1"; public static final String CHANNEL_ESENDOR_TEMP2 = CHANNEL_SENSOR_TEMP + "2"; public static final String CHANNEL_ESENDOR_TEMP3 = CHANNEL_SENSOR_TEMP + "3"; public static final String CHANNEL_ESENDOR_HUMIDITY = CHANNEL_SENSOR_HUM; - public static final String CHANNEL_GROUP_SENSE_CONTROL = "control"; + public static final String CHANNEL_GROUP_CONTROL = "control"; public static final String CHANNEL_SENSE_KEY = "key"; public static final String CHANNEL_GROUP_BATTERY = "battery"; @@ -302,6 +318,8 @@ public class ShellyBindingConstants { public static final String CHANNEL_DEVST_UPDATE = "updateAvailable"; public static final String CHANNEL_DEVST_SELFTTEST = "selfTest"; public static final String CHANNEL_DEVST_VOLTAGE = "supplyVoltage"; + public static final String CHANNEL_DEVST_CALIBRATED = "calibrated"; + public static final String CHANNEL_DEVST_SCHEDULE = "schedule"; public static final String CHANNEL_LED_STATUS_DISABLE = "statusLed"; public static final String CHANNEL_LED_POWER_DISABLE = "powerLed"; @@ -336,6 +354,7 @@ public class ShellyBindingConstants { public static final String ALARM_TYPE_LOADERR = "LOAD_ERROR"; public static final String ALARM_TYPE_SENSOR_ERROR = "SENSOR_ERROR"; public static final String ALARM_TYPE_LOW_BATTERY = "LOW_BATTERY"; + public static final String ALARM_TYPE_VALVE_ERROR = "VALVE_ERROR"; public static final String EVENT_TYPE_VIBRATION = "VIBRATION"; // Event types @@ -358,7 +377,7 @@ public class ShellyBindingConstants { public static final int DIGITS_LUX = 0; public static final int DIGITS_PERCENT = 1; - public static final int SHELLY_API_TIMEOUT_MS = 5000; + public static final int SHELLY_API_TIMEOUT_MS = 15000; public static final int UPDATE_STATUS_INTERVAL_SECONDS = 3; // check for updates every x sec public static final int UPDATE_SKIP_COUNT = 20; // update every x triggers or when a key was pressed public static final int UPDATE_MIN_DELAY = 15;// update every x triggers or when a key was pressed diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyHandlerFactory.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyHandlerFactory.java index 1ad707a4b..444c53bef 100755 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyHandlerFactory.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyHandlerFactory.java @@ -101,6 +101,9 @@ public class ShellyHandlerFactory extends BaseThingHandlerFactory { logger.debug("Using OH HTTP port {}", httpPort); this.coapServer = new ShellyCoapServer(); + + // Promote Shelly Manager usage + logger.info("{}", messages.get("status.managerstarted", localIP, httpPort)); } @Override diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyApiJsonDTO.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyApiJsonDTO.java index 9ca2d7427..83ea6a763 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyApiJsonDTO.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyApiJsonDTO.java @@ -55,6 +55,13 @@ public class ShellyApiJsonDTO { public static final String SHELLY_URL_SETTINGS_DIMMER = "/settings/light"; + // Wakeup reasons + public static final String SHELLY_WAKEUPT_SENSOR = "SENSOR"; // new sensordata + public static final String SHELLY_WAKEUPT_PERIODIC = "PERIODIC"; // periodic wakeup + public static final String SHELLY_WAKEUPT_BUTTON = "BUTTON"; // button pressed + public static final String SHELLY_WAKEUPT_POWERON = "POWERON"; // device powered up + public static final String SHELLY_WAKEUPT_UNKNOWN = "UNKNOWN"; // other event + // // Action URLs according to the device type // @@ -230,6 +237,13 @@ public class ShellyApiJsonDTO { // Motion public static final int SHELLY_MOTION_SLEEPTIME_OFFSET = 3; // we need to substract and offset + // TRV + public static final int SHELLY_TRV_MIN_TEMP = 5; // < 5: means: lowest (valve fully closed) + public static final int SHELLY_TRV_MAX_TEMP = 30; // > 30: means: highest (valve fully open) + + public static final String SHELLY_TRV_MODE_MANUAL = "manual"; + public static final String SHELLY_TRV_MODE_AUTO = "automatic"; + // CoIoT Multicast setting public static final String SHELLY_COIOT_MCAST = "mcast"; @@ -574,6 +588,7 @@ public class ShellyApiJsonDTO { public String mode; @SerializedName("max_power") public Double maxPower; + public Boolean calibrated; public ArrayList relays; public Double voltage; // AC voltage for Shelly 2.5 @@ -584,6 +599,8 @@ public class ShellyApiJsonDTO { public ArrayList emeters; public ArrayList inputs; // ix3 + public ArrayList thermostats; // TRV + @SerializedName("temperature_units") public String temperatureUnits; // Either'C'or'F' @@ -699,6 +716,10 @@ public class ShellyApiJsonDTO { public Boolean loaderror; public Boolean overload; + // Shelly TRV + public Boolean calibrated; + public ArrayList thermostats; + public ShellySettingsUpdate update; @SerializedName("ram_total") public Long ramTotal; @@ -754,6 +775,9 @@ public class ShellyApiJsonDTO { public Boolean ison; // Whether output channel is on or off public String mode; // color or white - valid only for Bulb and RGBW2 even Dimmer returns it also public Integer brightness; // brightness: 0.100% + + @SerializedName("has_timer") + public Boolean hasTimer; } public static class ShellyStatusRelay { @@ -828,6 +852,34 @@ public class ShellyApiJsonDTO { public String unit; } + // Shelly TRV + public class ShellyThermnostat { + public class ShellyThermTargetTemp { + public Boolean enabled; + public Double value; + public String unit; + } + + public class ShellyThermTemp { + public Double value; + public String units; + @SerializedName("is_valid") + public Boolean isValid; + } + + public Double pos; + @SerializedName("target_t") + public ShellyThermTargetTemp targetTemp; + public Boolean schedule; + @SerializedName("schedule_profile") + public Integer profile; + @SerializedName("schedule_profile_names") + public String[] profileNames; + public ShellyThermTemp tmp; + @SerializedName("boost_minutes") + public Integer boostMinutes; + } + public static class ShellyStatusSensor { // https://shelly-api-docs.shelly.cloud/#h-amp-t-settings public static class ShellySensorTmp { @@ -931,7 +983,7 @@ public class ShellyApiJsonDTO { public Boolean rainSensor; // Shelly Flood: true=in rain mode public Boolean motion; // Shelly Sense: true=motion detected - public Boolean charger; // Shelly Sense: true=charger connected + public Boolean charger; // Shelly Sense, TRV: true=charger connected @SerializedName("act_reasons") public List actReasons; // HT/Smoke/Flood: list of reasons which woke up the device @@ -953,6 +1005,10 @@ public class ShellyApiJsonDTO { // Shelly UNI FW 1.9+ public ArrayList adcs; + + // Shelly TRV + public Boolean calibrated; + public ArrayList thermostats; } public static class ShellySettingsSmoke { diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyDeviceProfile.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyDeviceProfile.java index 978d7e8a9..ad3b34ae5 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyDeviceProfile.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyDeviceProfile.java @@ -93,6 +93,7 @@ public class ShellyDeviceProfile { public boolean isDW = false; // true for Door Window sensor public boolean isButton = false; // true for a Shelly Button 1 public boolean isIX3 = false; // true for a Shelly IX + public boolean isTRV = false; // true for a Shelly TRV public int minTemp = 0; // Bulb/Duo: Min Light Temp public int maxTemp = 0; // Bulb/Duo: Max Light Temp @@ -154,7 +155,7 @@ public class ShellyDeviceProfile { updatePeriod = getString(settings.sleepMode.unit).equalsIgnoreCase("m") ? settings.sleepMode.period * 60 // minutes : settings.sleepMode.period * 3600; // hours updatePeriod += 60; // give 1min extra - } else if ((settings.coiot != null) && (settings.coiot.updatePeriod != null)) { + } else if ((settings.coiot != null) && settings.coiot.updatePeriod != null && !isTRV) { // Derive from CoAP update interval, usually 2*15+10s=40sec -> 70sec updatePeriod = Math.max(UPDATE_SETTINGS_INTERVAL_SECONDS, 2 * getInteger(settings.coiot.updatePeriod)) + 10; } else { @@ -204,9 +205,10 @@ public class ShellyDeviceProfile { isMotion = thingType.startsWith(THING_TYPE_SHELLYMOTION_STR); isSense = thingType.equals(THING_TYPE_SHELLYSENSE_STR); isIX3 = thingType.equals(THING_TYPE_SHELLYIX3_STR); - isButton = thingType.equals(THING_TYPE_SHELLYBUTTON1_STR); - isSensor = isHT || isFlood || isDW || isSmoke || isGas || isButton || isUNI || isMotion || isSense; - hasBattery = isHT || isFlood || isDW || isSmoke || isButton || isMotion; + isButton = thingType.equals(THING_TYPE_SHELLYBUTTON1_STR) || thingType.equals(THING_TYPE_SHELLYBUTTON2_STR); + isSensor = isHT || isFlood || isDW || isSmoke || isGas || isButton || isUNI || isMotion || isSense || isTRV; + hasBattery = isHT || isFlood || isDW || isSmoke || isButton || isMotion || isTRV; + isTRV = thingType.equals(THING_TYPE_SHELLYTRV_STR); alwaysOn = !hasBattery || isMotion || isSense; // true means: device is reachable all the time (no sleep mode) } diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyHttpApi.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyHttpApi.java index 3168a134e..a8906c849 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyHttpApi.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyHttpApi.java @@ -199,8 +199,8 @@ public class ShellyHttpApi { status.tmp.tC = status.tmp.units.equals(SHELLY_TEMP_CELSIUS) ? status.tmp.value : ImperialUnits.FAHRENHEIT.getConverterTo(SIUnits.CELSIUS).convert(getDouble(status.tmp.value)) .doubleValue(); - double f = SIUnits.CELSIUS.getConverterTo(ImperialUnits.FAHRENHEIT).convert(getDouble(status.tmp.value)) - .doubleValue(); + double f = (double) SIUnits.CELSIUS.getConverterTo(ImperialUnits.FAHRENHEIT) + .convert(getDouble(status.tmp.value)); status.tmp.tF = status.tmp.units.equals(SHELLY_TEMP_FAHRENHEIT) ? status.tmp.value : f; } if ((status.charger == null) && (profile.settings.externalPower != null)) { @@ -225,6 +225,36 @@ public class ShellyHttpApi { request(SHELLY_URL_SETTINGS + "?sleep_time=" + value); } + public void setTemperature(int valveId, int value) throws ShellyApiException { + request("/thermostat/" + valveId + "?target_t_enabled=1&target_t=" + value); + } + + public void setValveMode(int valveId, boolean auto) throws ShellyApiException { + String uri = "/settings/thermostat/" + valveId + "?target_t_enabled=" + (auto ? "1" : "0"); + if (auto) { + uri = uri + "&target_t=" + getDouble(profile.settings.thermostats.get(0).targetTemp.value); + } + request(uri); // percentage to open the valve + } + + public void setProfile(int valveId, int value) throws ShellyApiException { + String uri = "/settings/thermostat/" + valveId + "?"; + request(uri + (value == 0 ? "schedule=0" : "schedule=1&schedule_profile=" + value)); + } + + public void setValvePosition(int valveId, double value) throws ShellyApiException { + request("/thermostat/" + valveId + "?pos=" + value); // percentage to open the valve + } + + public void setBoostTime(int valveId, int value) throws ShellyApiException { + request("/settings/thermostat/" + valveId + "?boost_minutes=" + value); + } + + public void startBoost(int valveId, int value) throws ShellyApiException { + int minutes = value != -1 ? value : getInteger(profile.settings.thermostats.get(0).boostMinutes); + request("/thermostat/" + valveId + "?boost_minutes=" + minutes); + } + public void setLedStatus(String ledName, Boolean value) throws ShellyApiException { request(SHELLY_URL_SETTINGS + "?" + ledName + "=" + (value ? SHELLY_API_TRUE : SHELLY_API_FALSE)); } diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTProtocol.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTProtocol.java index 7c90b1d2d..0ffe7faed 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTProtocol.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTProtocol.java @@ -127,6 +127,8 @@ public class ShellyCoIoTProtocol { s.value == 1 ? OnOffType.ON : OnOffType.OFF); break; case "vibration": // DW with FW1.6.5+ + updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_VIBRATION, + s.value == 1 ? OnOffType.ON : OnOffType.OFF); if (s.value == 1) { thingHandler.triggerChannel(CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_ALARM_STATE, EVENT_TYPE_VIBRATION); @@ -166,7 +168,8 @@ public class ShellyCoIoTProtocol { ShellyColorUtils.toPercent((int) s.value, SHELLY_MIN_GAIN, SHELLY_MAX_GAIN)); break; case "sensorerror": - updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_ERROR, getStringType(s.valueStr)); + String sensorError = s.valueStr != null ? getString(s.valueStr) : "" + s.value; + updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_ERROR, getStringType(sensorError)); break; default: // Unknown @@ -280,10 +283,10 @@ public class ShellyCoIoTProtocol { } else if (profile.isSensor) { // Sensor state if (profile.isDW) { // Door Window has item type Contact - updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_CONTACT, + updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_STATE, s.value != 0 ? OpenClosedType.OPEN : OpenClosedType.CLOSED); } else { - updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_CONTACT, + updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_STATE, s.value == 1 ? OnOffType.ON : OnOffType.OFF); } } diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion2.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion2.java index af341cb48..3b7f41069 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion2.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion2.java @@ -36,6 +36,7 @@ import org.openhab.core.library.types.OpenClosedType; import org.openhab.core.library.unit.SIUnits; import org.openhab.core.library.unit.Units; import org.openhab.core.types.State; +import org.openhab.core.types.UnDefType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -86,8 +87,53 @@ public class ShellyCoIoTVersion2 extends ShellyCoIoTProtocol implements ShellyCo boolean processed = true; double value = getDouble(s.value); String reason = ""; + + if (profile.isTRV) { + // Special handling for TRV, because it uses duplicate ID values with different meanings + switch (sen.id) { + case "3101": // current temp + updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_TEMP, + toQuantityType(value, DIGITS_TEMP, SIUnits.CELSIUS)); + break; + case "3103": // target temp in C. 4/31, 999=unknown + updateChannel(updates, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_SETTEMP, + toQuantityType(value, DIGITS_TEMP, SIUnits.CELSIUS)); + break; + case "3116": // S, valveError, 0/1 + if (s.value == 1) { + thingHandler.postEvent(ALARM_TYPE_VALVE_ERROR, false); + } + break; + case "3117": // S, mode, 0-5 (0=disabled) + value = getDouble(s.value).intValue(); + updateChannel(updates, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_PROFILE, getDecimal(value)); + updateChannel(updates, CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_SCHEDULE, getOnOff(value > 0)); + break; + case "3118": // Valve state + updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_STATE, + value != 0 ? OpenClosedType.OPEN : OpenClosedType.CLOSED); + break; + case "3121": // valvePos, Type=S, Range=0/100; + updateChannel(updates, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_POSITION, + s.value != -1 ? toQuantityType(getDouble(s.value), 0, Units.PERCENT) : UnDefType.UNDEF); + break; + case "3122": // boostMinutes + updateChannel(updates, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_BTIMER, + s.value != -1 ? toQuantityType(s.value, DIGITS_NONE, Units.MINUTE) : UnDefType.UNDEF); + break; + default: + processed = false; + } + } else { + processed = false; + } + + if (processed) { + return true; + } + + processed = true; switch (sen.id) { - case "3103": // H, humidity, 0-100 percent, unknown 999 case "3106": // L, luminosity, lux, U32, -1 case "3110": // S, luminosityLevel, dark/twilight/bright, "unknown"=unknown case "3111": // B, battery, 0-100%, unknown -1 @@ -121,7 +167,7 @@ public class ShellyCoIoTVersion2 extends ShellyCoIoTProtocol implements ShellyCo updateChannel(updates, CHANNEL_GROUP_ROL_CONTROL, CHANNEL_ROL_CONTROL_POS, toQuantityType((double) pos, Units.PERCENT)); break; - case "1105": // S, valvle, closed/opened/not_connected/failure/closing/opening/checking or unbknown + case "1105": // Gas: S, valve, closed/opened/not_connected/failure/closing/opening/checking or unknown updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_VALVE, getStringType(s.valueStr)); break; @@ -150,13 +196,20 @@ public class ShellyCoIoTVersion2 extends ShellyCoIoTProtocol implements ShellyCo if (idx >= 0) { // H&T, Fllod, DW only have 1 channel, 1/1PM with Addon have up to to 3 sensors String channel = profile.isSensor ? CHANNEL_SENSOR_TEMP : CHANNEL_SENSOR_TEMP + idx; + // Some devices report values = -999 or 99 during fw update + boolean valid = value > -50 && value < 90; updateChannel(updates, CHANNEL_GROUP_SENSOR, channel, - toQuantityType(value, DIGITS_TEMP, SIUnits.CELSIUS)); + valid ? toQuantityType(value, DIGITS_TEMP, SIUnits.CELSIUS) : UnDefType.UNDEF); } else { logger.debug("{}: Unable to get extSensorId {} from {}/{}", thingName, sen.id, sen.type, sen.desc); } break; case "3104": // T, deviceTemp, Celsius -40/300; 999=unknown + if ("targetTemp".equalsIgnoreCase(sen.desc)) { + + break; // target temp in F-> ignore + } + // sensor_0: T, internalTemp, F, 39/88, unknown 999 updateChannel(updates, CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_ITEMP, toQuantityType(value, DIGITS_NONE, SIUnits.CELSIUS)); break; @@ -172,7 +225,7 @@ public class ShellyCoIoTVersion2 extends ShellyCoIoTProtocol implements ShellyCo break; case "3108": // DW: S, dwIsOpened, 0/1, -1=unknown if (value != -1) { - updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_CONTACT, + updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_STATE, value != 0 ? OpenClosedType.OPEN : OpenClosedType.CLOSED); } else { logger.debug("{}: Sensor error reported, check device, battery and installation", thingName); @@ -302,29 +355,27 @@ public class ShellyCoIoTVersion2 extends ShellyCoIoTProtocol implements ShellyCo updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_MOTION, value == 1 ? OnOffType.ON : OnOffType.OFF); break; - case "3119": // Motion timestamp + case "3119": // Motion timestamp (timestamp os GMT, not adapted to the adapted timezone) // {"I":3119,"T":"S","D":"timestamp","U":"s","R":["U32","-1"],"L":1}, if (s.value != 0) { updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_MOTION_TS, - getTimestamp(getString(profile.settings.timezone), (long) s.value)); + getTimestamp(getString("GMT"), (long) s.value)); } break; - case "3120": // motionActive + case "3120": // motionActive (timestamp os GMT, not adapted to the adapted timezone) // {"I":3120,"T":"S","D":"motionActive","R":["0/1","-1"],"L":1}, updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_MOTION_ACT, - getTimestamp(getString(profile.settings.timezone), (long) s.value)); + getTimestamp("GMT", (long) s.value)); break; case "6108": // A, gas, none/mild/heavy/test or unknown updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_ALARM_STATE, getStringType(s.valueStr)); break; case "6110": // A, vibration, 0/1, -1=unknown - if (profile.isMotion) { - // handle as status - updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_VIBRATION, - s.value == 1 ? OnOffType.ON : OnOffType.OFF); - } else if (s.value == 1) { - // handle as event + updateChannel(updates, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_VIBRATION, + s.value == 1 ? OnOffType.ON : OnOffType.OFF); + if (s.value == 1) { + // post event thingHandler.triggerChannel(CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_ALARM, EVENT_TYPE_VIBRATION); } break; diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoapHandler.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoapHandler.java index 0be28855c..d63d29872 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoapHandler.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoapHandler.java @@ -525,7 +525,7 @@ public class ShellyCoapHandler implements ShellyCoapListener { // Old firmware release are lacking various status values, which are not updated using CoIoT. // In this case we keep a refresh so it gets polled using REST. Beginning with Firmware 1.6 most // of the values are available - if ((!thingHandler.autoCoIoT && (thingHandler.scheduledUpdates <= 1)) + if ((!thingHandler.autoCoIoT && (thingHandler.scheduledUpdates < 1)) || (thingHandler.autoCoIoT && !profile.isLight && !profile.hasBattery)) { thingHandler.requestUpdates(1, false); } diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/config/ShellyBindingConfiguration.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/config/ShellyBindingConfiguration.java index 3ac1f0822..71ef74bd4 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/config/ShellyBindingConfiguration.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/config/ShellyBindingConfiguration.java @@ -53,7 +53,13 @@ public class ShellyBindingConfiguration { localIP = (String) e.getValue(); break; case CONFIG_AUTOCOIOT: - autoCoIoT = (boolean) e.getValue(); + Object value = e.getValue(); + if (value instanceof String) { + // support config through shelly.cfg + autoCoIoT = ((String) value).equalsIgnoreCase("true"); + } else { + autoCoIoT = (boolean) value; + } break; } diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/discovery/ShellyThingCreator.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/discovery/ShellyThingCreator.java index f6a3bc196..f3699c39a 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/discovery/ShellyThingCreator.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/discovery/ShellyThingCreator.java @@ -51,8 +51,11 @@ public class ShellyThingCreator { THING_TYPE_MAPPING.put(SHELLYDT_DIMMER2, THING_TYPE_SHELLYDIMMER2_STR); THING_TYPE_MAPPING.put(SHELLYDT_IX3, THING_TYPE_SHELLYIX3_STR); THING_TYPE_MAPPING.put(SHELLYDT_BUTTON1, THING_TYPE_SHELLYBUTTON1_STR); + THING_TYPE_MAPPING.put(SHELLYDT_BUTTON2, THING_TYPE_SHELLYBUTTON2_STR); THING_TYPE_MAPPING.put(SHELLYDT_UNI, THING_TYPE_SHELLYUNI_STR); THING_TYPE_MAPPING.put(SHELLYDT_HT, THING_TYPE_SHELLYHT_STR); + THING_TYPE_MAPPING.put(SHELLYDT_TRV, THING_TYPE_SHELLYTRV_STR); + THING_TYPE_MAPPING.put(SHELLYDT_MOTION, THING_TYPE_SHELLYMOTION_STR); // mapping by thing type THING_TYPE_MAPPING.put(THING_TYPE_SHELLY1_STR, THING_TYPE_SHELLY1_STR); @@ -73,11 +76,13 @@ public class ShellyThingCreator { THING_TYPE_MAPPING.put(THING_TYPE_SHELLYSMOKE_STR, THING_TYPE_SHELLYSMOKE_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYGAS_STR, THING_TYPE_SHELLYGAS_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYFLOOD_STR, THING_TYPE_SHELLYFLOOD_STR); + THING_TYPE_MAPPING.put(THING_TYPE_SHELLYTRV_STR, THING_TYPE_SHELLYTRV_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYDOORWIN_STR, THING_TYPE_SHELLYDOORWIN_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYDOORWIN2_STR, THING_TYPE_SHELLYDOORWIN2_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYSENSE_STR, THING_TYPE_SHELLYSENSE_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYEYE_STR, THING_TYPE_SHELLYEYE_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYBUTTON1_STR, THING_TYPE_SHELLYBUTTON1_STR); + THING_TYPE_MAPPING.put(THING_TYPE_SHELLYBUTTON2_STR, THING_TYPE_SHELLYBUTTON2_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYUNI_STR, THING_TYPE_SHELLYUNI_STR); THING_TYPE_MAPPING.put(THING_TYPE_SHELLYPROTECTED_STR, THING_TYPE_SHELLYPROTECTED_STR); diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyBaseHandler.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyBaseHandler.java index 6ca609d75..e978914e3 100755 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyBaseHandler.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyBaseHandler.java @@ -270,7 +270,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL api.setCoIoTPeer(ourpeer); logger.info("{}: CoIoT peer updated to {}", thingName, ourpeer); } catch (ShellyApiException e) { - logger.debug("{}: Unable to set CoIoT peer: {}", thingName, e.toString()); + logger.warn("{}: Unable to set CoIoT peer: {}", thingName, e.toString()); } } else if (!devpeer.isEmpty() && !devpeer.equals(ourpeer)) { logger.warn("{}: CoIoT peer in device settings does not point this to this host", thingName); @@ -344,11 +344,40 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL case CHANNEL_SENSOR_SLEEPTIME: logger.debug("{}: Set sensor sleep time to {}", thingName, command); - int value = ((DecimalType) command).intValue(); + int value = (int) getNumber(command); value = value > 0 ? Math.max(SHELLY_MOTION_SLEEPTIME_OFFSET, value - SHELLY_MOTION_SLEEPTIME_OFFSET) : 0; api.setSleepTime(value); break; + case CHANNEL_CONTROL_PROFILE: + logger.debug("{}: Select profile {}", thingName, command); + int profile = (int) getNumber(command); + if (profile < 0 || profile > 5) { + logger.warn("{}: Invalid profile Id {} requested", thingName, profile); + break; + } + api.setProfile(0, profile); + break; + case CHANNEL_CONTROL_MODE: + logger.debug("{}: Set mode to {}", thingName, command); + api.setValveMode(0, SHELLY_TRV_MODE_AUTO.equalsIgnoreCase(command.toString())); + break; + case CHANNEL_CONTROL_SETTEMP: + logger.debug("{}: Set temperature to {}", thingName, command); + api.setTemperature(0, (int) getNumber(command)); + break; + case CHANNEL_CONTROL_POSITION: + logger.debug("{}: Set position to {}", thingName, command); + api.setValvePosition(0, getNumber(command)); + break; + case CHANNEL_CONTROL_BCONTROL: + logger.debug("{}: Set boost mode to {}", thingName, command); + api.startBoost(0, command == OnOffType.ON ? -1 : 0); + break; + case CHANNEL_CONTROL_BTIMER: + logger.debug("{}: Set boost timer to {}", thingName, command); + api.setBoostTime(0, (int) getNumber(command)); + break; default: update = handleDeviceCommand(channelUID, command); @@ -356,7 +385,8 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL } restartWatchdog(); - if (update && !autoCoIoT) { + if (update && !autoCoIoT && !isUpdateScheduled()) { + logger.debug("{}: Command process, request status update", thingName); requestUpdates(1, false); } } catch (ShellyApiException e) { @@ -375,6 +405,19 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL } } + private double getNumber(Command command) { + if (command instanceof QuantityType) { + return ((QuantityType) command).doubleValue(); + } + if (command instanceof DecimalType) { + return ((DecimalType) command).doubleValue(); + } + if (command instanceof Number) { + return ((Number) command).doubleValue(); + } + throw new IllegalArgumentException("Invalid Number type for conversion: " + command); + } + /** * Update device status and channels */ @@ -397,7 +440,8 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL initializeThing(); // may fire an exception if initialization failed } // Get profile, if refreshSettings == true reload settings from device - logger.trace("{}: Updating status (refreshSettings={})", thingName, refreshSettings); + logger.trace("{}: Updating status (scheduledUpdates={}, refreshSettings={})", thingName, + scheduledUpdates, refreshSettings); ShellySettingsStatus status = api.getStatus(); boolean restarted = checkRestarted(status); profile = getProfile(refreshSettings || restarted); @@ -486,6 +530,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL updateStatus(ThingStatus.ONLINE); // request 3 updates in a row (during the first 2+3*3 sec) + logger.debug("{}: Thing went online, request status update", thingName); requestUpdates(profile.alwaysOn ? 3 : 1, !channelsCreated); } restartWatchdog(); @@ -494,7 +539,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL @Override public void setThingOffline(ThingStatusDetail detail, String messageKey) { if (!isThingOffline()) { - logger.info("{}: Thing goes OFFLINE: {}", thingName, messages.get(messageKey)); + logger.debug("{}: Thing goes OFFLINE: {}", thingName, messages.get(messageKey)); updateStatus(ThingStatus.OFFLINE, detail, "@text/" + messageKey); watchdog = 0; channelsCreated = false; // check for new channels after devices gets re-initialized (e.g. new @@ -591,22 +636,31 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL * * @param alarm Alarm Message */ - public void postEvent(String alarm, boolean force) { + public void postEvent(String event, boolean force) { String channelId = mkChannelId(CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_ALARM); State value = cache.getValue(channelId); String lastAlarm = value != UnDefType.NULL ? value.toString() : ""; - if (force || !lastAlarm.equals(alarm) - || (lastAlarm.equals(alarm) && now() > stats.lastAlarmTs + HEALTH_CHECK_INTERVAL_SEC)) { - if (alarm.isEmpty() || alarm.equals(ALARM_TYPE_NONE)) { - cache.updateChannel(channelId, getStringType(alarm)); - } else { - logger.info("{}: {}", thingName, messages.get("event.triggered", alarm)); - triggerChannel(channelId, alarm); - cache.updateChannel(channelId, getStringType(alarm)); - stats.lastAlarm = alarm; - stats.lastAlarmTs = now(); - stats.alarms++; + if (force || !lastAlarm.equals(event) + || (lastAlarm.equals(event) && now() > stats.lastAlarmTs + HEALTH_CHECK_INTERVAL_SEC)) { + switch (event) { + case "0": // DW2 1.8 + case SHELLY_WAKEUPT_SENSOR: + case SHELLY_WAKEUPT_PERIODIC: + case SHELLY_WAKEUPT_BUTTON: + case SHELLY_WAKEUPT_POWERON: + case SHELLY_WAKEUPT_UNKNOWN: + logger.debug("{}: {}", thingName, messages.get("event.filtered", event)); + case "": + case ALARM_TYPE_NONE: + break; + default: + logger.debug("{}: {}", thingName, messages.get("event.triggered", event)); + triggerChannel(channelId, event); + cache.updateChannel(channelId, getStringType(event)); + stats.lastAlarm = event; + stats.lastAlarmTs = now(); + stats.alarms++; } } } @@ -699,7 +753,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL case SHELLY_EVENT_CLOSE: // DW 1.7 case SHELLY_EVENT_OPEN: // DW 1.7 - updateChannel(group, CHANNEL_SENSOR_CONTACT, + updateChannel(group, CHANNEL_SENSOR_STATE, event.equalsIgnoreCase(SHELLY_API_DWSTATE_OPEN) ? OpenClosedType.OPEN : OpenClosedType.CLOSED); break; @@ -755,7 +809,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL config = getConfigAs(ShellyThingConfiguration.class); if (config.deviceIp.isEmpty()) { - logger.info("{}: IP address for the device must not be empty", thingName); // may not set in .things file + logger.warn("{}: IP address for the device must not be empty", thingName); // may not set in .things file return; } try { @@ -813,7 +867,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL if (bindingConfig.autoCoIoT && ((version.compare(prf.fwVersion, SHELLY_API_MIN_FWCOIOT)) >= 0) || (prf.fwVersion.equalsIgnoreCase("production_test"))) { if (!config.eventsCoIoT) { - logger.info("{}: {}", thingName, messages.get("versioncheck.autocoiot")); + logger.debug("{}: {}", thingName, messages.get("versioncheck.autocoiot")); } autoCoIoT = true; } @@ -837,7 +891,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL private boolean isAuthorizationFailed(ShellyApiResult result) { if (result.isHttpAccessUnauthorized()) { // If the device is password protected the API doesn't provide settings to the device settings - logger.info("{}: {}", thingName, messages.get("init.protected")); + logger.warn("{}: {}", thingName, messages.get("init.protected")); setThingOffline(ThingStatusDetail.CONFIGURATION_ERROR, "offline.conf-error-access-denied"); changeThingType(THING_TYPE_SHELLYPROTECTED_STR, ""); return true; @@ -908,6 +962,10 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL return false; } + public boolean isUpdateScheduled() { + return scheduledUpdates > 0; + } + /** * Map input states to channels * @@ -984,6 +1042,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL String id = channelId.contains("$") ? substringBefore(channelId, "$") : channelId; if (!stopping && isLinked(id)) { updateState(id, value); + logger.debug("{}: Channel {} updated with {} (type {}).", thingName, channelId, value, value.getClass()); } } diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyComponents.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyComponents.java index d3705ca27..188b3de23 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyComponents.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyComponents.java @@ -17,12 +17,14 @@ import static org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.*; import static org.openhab.binding.shelly.internal.util.ShellyUtils.*; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.shelly.internal.api.ShellyApiException; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellySettingsEMeter; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellySettingsMeter; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellySettingsStatus; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellyStatusSensor; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellyStatusSensor.ShellyADC; +import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellyThermnostat; import org.openhab.binding.shelly.internal.api.ShellyDeviceProfile; import org.openhab.binding.shelly.internal.provider.ShellyChannelDefinitions; import org.openhab.core.library.types.OnOffType; @@ -69,6 +71,12 @@ public class ShellyComponents { thingHandler.updateChannel(CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_UPDATE, getOnOff(status.hasUpdate)); + ShellyDeviceProfile profile = thingHandler.getProfile(); + if (profile.settings.calibrated != null) { + thingHandler.updateChannel(CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_CALIBRATED, + getOnOff(profile.settings.calibrated)); + } + return false; // device status never triggers update } @@ -269,15 +277,16 @@ public class ShellyComponents { if ((sdata.sensor != null) && sdata.sensor.isValid) { // Shelly DW: “sensor”:{“state”:“open”, “is_valid”:true}, - updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_CONTACT, + updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_STATE, getString(sdata.sensor.state).equalsIgnoreCase(SHELLY_API_DWSTATE_OPEN) ? OpenClosedType.OPEN : OpenClosedType.CLOSED); + String sensorError = sdata.sensorError; boolean changed = thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_ERROR, - getStringType(sdata.sensorError)); - if (changed) { + getStringType(sensorError)); + if (!"0".equals(sensorError) && changed) { thingHandler.postEvent(getString(sdata.sensorError), true); + updated |= changed; } - updated |= changed; } if ((sdata.tmp != null) && getBool(sdata.tmp.isValid)) { thingHandler.logger.trace("{}: Updating temperature", thingHandler.thingName); @@ -288,8 +297,41 @@ public class ShellyComponents { // convert Fahrenheit to Celsius temp = ImperialUnits.FAHRENHEIT.getConverterTo(SIUnits.CELSIUS).convert(temp).doubleValue(); } + temp = convertToC(temp, getString(sdata.tmp.units)); updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_TEMP, toQuantityType(temp.doubleValue(), DIGITS_TEMP, SIUnits.CELSIUS)); + } else if (status.thermostats != null && status.thermostats.size() > 0) { + // Shelly TRV + ShellyThermnostat t = status.thermostats.get(0); + ShellyThermnostat ps = profile.settings.thermostats.get(0); + int bminutes = getInteger(t.boostMinutes) > 0 ? getInteger(t.boostMinutes) + : getInteger(ps.boostMinutes); + updated |= thingHandler.updateChannel(CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_BCONTROL, + getOnOff(getInteger(t.boostMinutes) > 0)); + updated |= thingHandler.updateChannel(CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_BTIMER, + toQuantityType((double) bminutes, DIGITS_NONE, Units.MINUTE)); + updated |= thingHandler.updateChannel(CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_MODE, + getStringType(getBool(t.targetTemp.enabled) ? SHELLY_TRV_MODE_AUTO : SHELLY_TRV_MODE_MANUAL)); + updated |= thingHandler.updateChannel(CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_PROFILE, + getDecimal(getBool(t.schedule) ? t.profile : 0)); + updated |= thingHandler.updateChannel(CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_SCHEDULE, + getOnOff(t.schedule)); + if (t.tmp != null) { + Double temp = convertToC(t.tmp.value, getString(t.tmp.units)); + // Some devices report values = -999 or 99 during fw update + boolean valid = temp.intValue() > -50 && temp.intValue() < 90; + updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_TEMP, + toQuantityType(temp.doubleValue(), DIGITS_TEMP, SIUnits.CELSIUS)); + temp = convertToC(t.targetTemp.value, getString(t.targetTemp.unit)); + updated |= thingHandler.updateChannel(CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_SETTEMP, + toQuantityType(t.targetTemp.value, DIGITS_TEMP, SIUnits.CELSIUS)); + } + if (t.pos != null) { + updated |= thingHandler.updateChannel(CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_POSITION, + t.pos != -1 ? toQuantityType(t.pos, DIGITS_NONE, Units.PERCENT) : UnDefType.UNDEF); + updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_STATE, + getDouble(t.pos) > 0 ? OpenClosedType.OPEN : OpenClosedType.CLOSED); + } } if (sdata.hum != null) { thingHandler.logger.trace("{}: Updating humidity", thingHandler.thingName); @@ -382,4 +424,15 @@ public class ShellyComponents { } return updated; } + + private static Double convertToC(@Nullable Double temp, String unit) { + if (temp == null) { + return 0.0; + } + if (SHELLY_TEMP_FAHRENHEIT.equalsIgnoreCase(unit)) { + // convert Fahrenheit to Celsius + return ImperialUnits.FAHRENHEIT.getConverterTo(SIUnits.CELSIUS).convert(temp).doubleValue(); + } + return temp; + } } diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyLightHandler.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyLightHandler.java index cdbc390f8..c8f77c18a 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyLightHandler.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyLightHandler.java @@ -374,7 +374,7 @@ public class ShellyLightHandler extends ShellyBaseHandler { updated |= updateChannel(colorGroup, CHANNEL_COLOR_BLUE, col.percentBlue); updated |= updateChannel(colorGroup, CHANNEL_COLOR_WHITE, col.percentWhite); updated |= updateChannel(colorGroup, CHANNEL_COLOR_GAIN, col.percentGain); - updated |= updateChannel(colorGroup, CHANNEL_COLOR_EFFECT, new DecimalType(col.effect)); + updated |= updateChannel(colorGroup, CHANNEL_COLOR_EFFECT, getDecimal(col.effect)); setFullColor(colorGroup, col); logger.trace("{}: update {}.color picker", thingName, colorGroup); diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/provider/ShellyChannelDefinitions.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/provider/ShellyChannelDefinitions.java index 50e86a829..c16e9bc90 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/provider/ShellyChannelDefinitions.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/provider/ShellyChannelDefinitions.java @@ -35,6 +35,8 @@ import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellySettingsMe import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellySettingsRelay; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellySettingsRgbwLight; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellySettingsStatus; +import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellyShortLightStatus; +import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellyShortStatusRelay; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellyStatusLightChannel; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellyStatusRelay; import org.openhab.binding.shelly.internal.api.ShellyApiJsonDTO.ShellyStatusSensor; @@ -89,6 +91,7 @@ public class ShellyChannelDefinitions { private static final String CHGR_STATUS = CHANNEL_GROUP_STATUS; private static final String CHGR_METER = CHANNEL_GROUP_METER; private static final String CHGR_SENSOR = CHANNEL_GROUP_SENSOR; + private static final String CHGR_CONTROL = CHANNEL_GROUP_CONTROL; private static final String CHGR_BAT = CHANNEL_GROUP_BATTERY; public static final String PREFIX_GROUP = "group-type." + BINDING_ID + "."; @@ -117,6 +120,8 @@ public class ShellyChannelDefinitions { .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_UPTIME, "uptime", ITEMT_NUMBER)) .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_HEARTBEAT, "heartBeat", ITEMT_DATETIME)) .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_UPDATE, "updateAvailable", ITEMT_SWITCH)) + .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_CALIBRATED, "calibrated", ITEMT_SWITCH)) + .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_SCHEDULE, "deviceSchedule", ITEMT_SWITCH)) // Relay .add(new ShellyChannel(m, CHGR_RELAY, CHANNEL_OUTPUT_NAME, "outputName", ITEMT_STRING)) @@ -174,7 +179,7 @@ public class ShellyChannelDefinitions { .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_LUX, "sensorLux", ITEMT_LUX)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_ILLUM, "sensorIllumination", ITEMT_STRING)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_VOLTAGE, "sensorADC", ITEMT_VOLT)) - .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_CONTACT, "sensorContact", ITEMT_CONTACT)) + .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_STATE, "sensorContact", ITEMT_CONTACT)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_SSTATE, "sensorState", ITEMT_STRING)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_TILT, "sensorTilt", ITEMT_ANGLE)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_MOTION, "sensorMotion", ITEMT_SWITCH)) @@ -187,8 +192,9 @@ public class ShellyChannelDefinitions { .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_VALVE, "sensorValve", ITEMT_STRING)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_ALARM_STATE, "alarmState", ITEMT_STRING)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_ERROR, "sensorError", ITEMT_STRING)) - .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_SLEEPTIME, "sensorSleepTime", ITEMT_NUMBER)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_LAST_UPDATE, "lastUpdate", ITEMT_DATETIME)) + .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_SLEEPTIME, "sensorSleepTime", ITEMT_NUMBER)) + .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSE_KEY, "senseKey", ITEMT_STRING)) // Sense // Button/ix3 .add(new ShellyChannel(m, CHGR_STATUS, CHANNEL_INPUT, "inputState", ITEMT_SWITCH)) @@ -205,7 +211,15 @@ public class ShellyChannelDefinitions { // Battery .add(new ShellyChannel(m, CHGR_BAT, CHANNEL_SENSOR_BAT_LEVEL, "system:battery-level", ITEMT_PERCENT)) - .add(new ShellyChannel(m, CHGR_BAT, CHANNEL_SENSOR_BAT_LOW, "system:low-battery", ITEMT_SWITCH)); + .add(new ShellyChannel(m, CHGR_BAT, CHANNEL_SENSOR_BAT_LOW, "system:low-battery", ITEMT_SWITCH)) + + // TRV + .add(new ShellyChannel(m, CHGR_CONTROL, CHANNEL_CONTROL_POSITION, "sensorPosition", ITEMT_DIMMER)) + .add(new ShellyChannel(m, CHGR_CONTROL, CHANNEL_CONTROL_MODE, "controlMode", ITEMT_STRING)) + .add(new ShellyChannel(m, CHGR_CONTROL, CHANNEL_CONTROL_PROFILE, "controlProfile", ITEMT_NUMBER)) + .add(new ShellyChannel(m, CHGR_CONTROL, CHANNEL_CONTROL_SETTEMP, "targetTemp", ITEMT_TEMP)) + .add(new ShellyChannel(m, CHGR_CONTROL, CHANNEL_CONTROL_BCONTROL, "boostControl", ITEMT_SWITCH)) + .add(new ShellyChannel(m, CHGR_CONTROL, CHANNEL_CONTROL_BTIMER, "boostTimer", ITEMT_TIME)); } public static @Nullable ShellyChannel getDefinition(String channelName) throws IllegalArgumentException { @@ -255,18 +269,22 @@ public class ShellyChannelDefinitions { addChannel(thing, add, profile.settings.sleepTime != null, CHGR_SENSOR, CHANNEL_SENSOR_SLEEPTIME); // If device has more than 1 meter the channel accumulatedWatts receives the accumulated value - boolean accuChannel = (((status.meters != null) && (status.meters.size() > 1) && !profile.isRoller - && !profile.isRGBW2) || ((status.emeters != null && status.emeters.size() > 1))); + boolean accuChannel = !profile.isRoller && !profile.isRGBW2 + && (((status.meters != null) && (status.meters.size() > 1)) + || ((status.emeters != null && status.emeters.size() > 1))); addChannel(thing, add, accuChannel, CHGR_DEVST, CHANNEL_DEVST_ACCUWATTS); addChannel(thing, add, accuChannel, CHGR_DEVST, CHANNEL_DEVST_ACCUTOTAL); addChannel(thing, add, accuChannel && (status.emeters != null), CHGR_DEVST, CHANNEL_DEVST_ACCURETURNED); - addChannel(thing, add, status.voltage != null || profile.settings.supplyVoltage != null, CHGR_DEVST, - CHANNEL_DEVST_VOLTAGE); + addChannel(thing, add, + !profile.isRoller && !profile.isRGBW2 + && (status.voltage != null || profile.settings.supplyVoltage != null), + CHGR_DEVST, CHANNEL_DEVST_VOLTAGE); addChannel(thing, add, true, CHGR_DEVST, CHANNEL_DEVST_UPDATE); addChannel(thing, add, true, CHGR_DEVST, CHANNEL_DEVST_UPTIME); addChannel(thing, add, true, CHGR_DEVST, CHANNEL_DEVST_HEARTBEAT); addChannel(thing, add, profile.settings.ledPowerDisable != null, CHGR_DEVST, CHANNEL_LED_POWER_DISABLE); - addChannel(thing, add, profile.settings.ledPowerDisable != null, CHGR_DEVST, CHANNEL_LED_STATUS_DISABLE); // WiFi + addChannel(thing, add, profile.settings.ledStatusDisable != null, CHGR_DEVST, CHANNEL_LED_STATUS_DISABLE); // WiFi + addChannel(thing, add, profile.settings.calibrated != null, CHGR_DEVST, CHANNEL_DEVST_CALIBRATED); return add; } @@ -282,11 +300,14 @@ public class ShellyChannelDefinitions { String group = profile.getControlGroup(idx); ShellySettingsRelay rs = profile.settings.relays.get(idx); + ShellyShortStatusRelay rstatus = relay.relays.get(idx); + boolean timer = rs.hasTimer != null || (rstatus != null && rstatus.hasTimer != null); // Dimmer 1/2 have + // has_timer under /status addChannel(thing, add, rs.ison != null, group, CHANNEL_OUTPUT); addChannel(thing, add, rs.name != null, group, CHANNEL_OUTPUT_NAME); addChannel(thing, add, rs.autoOn != null, group, CHANNEL_TIMER_AUTOON); addChannel(thing, add, rs.autoOff != null, group, CHANNEL_TIMER_AUTOOFF); - addChannel(thing, add, rs.hasTimer != null, group, CHANNEL_TIMER_ACTIVE); + addChannel(thing, add, timer, group, CHANNEL_TIMER_ACTIVE); // Shelly 1/1PM Addon if (relay.extTemperature != null) { @@ -312,6 +333,9 @@ public class ShellyChannelDefinitions { ShellySettingsDimmer ds = profile.settings.dimmers.get(idx); addChannel(thing, add, ds.autoOn != null, group, CHANNEL_TIMER_AUTOON); addChannel(thing, add, ds.autoOff != null, group, CHANNEL_TIMER_AUTOOFF); + + ShellyShortLightStatus dss = dstatus.dimmers.get(idx); + addChannel(thing, add, dss != null && dss.hasTimer != null, group, CHANNEL_TIMER_ACTIVE); return add; } @@ -406,7 +430,8 @@ public class ShellyChannelDefinitions { Map newChannels = new LinkedHashMap<>(); // Sensor data - addChannel(thing, newChannels, sdata.tmp != null, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_TEMP); + addChannel(thing, newChannels, sdata.tmp != null || sdata.thermostats != null, CHANNEL_GROUP_SENSOR, + CHANNEL_SENSOR_TEMP); addChannel(thing, newChannels, sdata.hum != null, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_HUM); addChannel(thing, newChannels, sdata.lux != null, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_LUX); addChannel(thing, newChannels, sdata.lux != null && sdata.lux.illumination != null, CHANNEL_GROUP_SENSOR, @@ -419,7 +444,7 @@ public class ShellyChannelDefinitions { sdata.motion != null || ((sdata.sensor != null) && (sdata.sensor.motion != null)), CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_MOTION); if (sdata.sensor != null) { // DW, Sense or Motion - addChannel(thing, newChannels, sdata.sensor.state != null, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_CONTACT); // DW/DW2 + addChannel(thing, newChannels, sdata.sensor.state != null, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_STATE); // DW/DW2 addChannel(thing, newChannels, sdata.sensor.motionActive != null, CHANNEL_GROUP_SENSOR, // Motion CHANNEL_SENSOR_MOTION_ACT); addChannel(thing, newChannels, sdata.sensor.motionTimestamp != null, CHANNEL_GROUP_SENSOR, // Motion @@ -443,7 +468,23 @@ public class ShellyChannelDefinitions { CHANNEL_SENSOR_ALARM_STATE); } - addChannel(thing, newChannels, sdata.adcs != null, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_VOLTAGE); // UNI + // Sense + addChannel(thing, newChannels, profile.isSense, CHANNEL_GROUP_SENSOR, CHANNEL_SENSE_KEY); + + // UNI + addChannel(thing, newChannels, sdata.adcs != null, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_VOLTAGE); + + // TRV + if (profile.isTRV) { + addChannel(thing, newChannels, true, CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_SCHEDULE); + addChannel(thing, newChannels, true, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_SETTEMP); + addChannel(thing, newChannels, true, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_BCONTROL); + addChannel(thing, newChannels, true, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_BTIMER); + addChannel(thing, newChannels, true, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_POSITION); + addChannel(thing, newChannels, true, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_MODE); + addChannel(thing, newChannels, true, CHANNEL_GROUP_CONTROL, CHANNEL_CONTROL_PROFILE); + addChannel(thing, newChannels, true, CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_STATE); // TRV + } // Battery if (sdata.bat != null) { @@ -539,7 +580,7 @@ public class ShellyChannelDefinitions { } public boolean getReadyOnly() { - String attr = getChannelAttribute("advanced"); + String attr = getChannelAttribute("readOnly"); return attr.isEmpty() ? false : Boolean.valueOf(attr); } diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/util/ShellyChannelCache.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/util/ShellyChannelCache.java index 9f455238b..67609d9d0 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/util/ShellyChannelCache.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/util/ShellyChannelCache.java @@ -10,7 +10,6 @@ * * SPDX-License-Identifier: EPL-2.0 */ - package org.openhab.binding.shelly.internal.util; import static org.openhab.binding.shelly.internal.util.ShellyUtils.mkChannelId; @@ -88,8 +87,6 @@ public class ShellyChannelCache { } else { channelData.replace(channelId, newValue); } - logger.debug("{}: Channel {} updated with {} (type {}).", thingName, channelId, newValue, - newValue.getClass()); return true; } } catch (IllegalArgumentException e) { diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/util/ShellyUtils.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/util/ShellyUtils.java index 7fd25e855..7c481cc52 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/util/ShellyUtils.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/util/ShellyUtils.java @@ -14,6 +14,7 @@ package org.openhab.binding.shelly.internal.util; import static org.openhab.binding.shelly.internal.ShellyBindingConstants.*; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; @@ -88,7 +89,8 @@ public class ShellyUtils { } return obj; } catch (JsonSyntaxException e) { - throw new ShellyApiException(PRE + className + "from JSON (syntax/format error): " + json, e); + throw new ShellyApiException( + PRE + className + "from JSON (syntax/format error: " + e.getMessage() + "): " + json, e); } catch (RuntimeException e) { throw new ShellyApiException(PRE + className + "from JSON: " + json, e); } @@ -270,7 +272,11 @@ public class ShellyUtils { } public static String urlEncode(String input) { - return URLEncoder.encode(input, StandardCharsets.UTF_8); + try { + return URLEncoder.encode(input, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException e) { + return input; + } } public static Long now() { diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/config/config.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/config/config.xml index 6e28459b3..d61a73177 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/config/config.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/config/config.xml @@ -5,6 +5,11 @@ xsi:schemaLocation="https://openhab.org/schemas/config-description/v1.0.0 https://openhab.org/schemas/config-description-1.0.0.xsd"> + + + IP-Address of the Shelly device. + network-address + User ID for HTTP API access. @@ -14,11 +19,6 @@ Password for HTTP API access. password - - - IP-Address of the Shelly device. - network-address - True if the binding should register to get the Buttons Events. @@ -53,6 +53,11 @@ + + + IP-Address of the Shelly device. + network-address + User ID for HTTP API access. @@ -72,11 +77,6 @@ Which position favorite should be used for DOWN (0=none, favorites are defined in the Shelly App) 0 - - - IP-Address of the Shelly device. - network-address - True if the binding should register to get Roller Events. @@ -98,6 +98,11 @@ + + + IP-Address of the Shelly device. + network-address + User ID for HTTP API access. @@ -107,11 +112,6 @@ Password for HTTP API access. password - - - IP-Address of the Shelly device. - network-address - true: Turn device ON if brightness above 0 is set; false: don't touch power status when brightness is @@ -152,6 +152,11 @@ + + + IP-Address of the Shelly device. + network-address + User ID for HTTP API access. @@ -161,11 +166,6 @@ Password for HTTP API access. password - - - IP-Address of the Shelly device. - network-address - true: Turn device ON if brightness > 0 is set; false: don't touch power status when brightness is set. @@ -193,6 +193,11 @@ + + + IP-Address of the Shelly device. + network-address + User ID for HTTP API access. @@ -202,11 +207,6 @@ Password for HTTP API access. password - - - IP-Address of the Shelly device. - network-address - true: Turn device ON if brightness > 0 is set; false: don't touch power status when brightness is set. @@ -229,6 +229,11 @@ + + + IP-Address of the Shelly device. + network-address + User ID for HTTP API access. @@ -238,11 +243,6 @@ Password for HTTP API access. password - - - IP-Address of the Shelly device. - network-address - Threshold for the battery level, alert will be signed when battery level is below. Default: 20% @@ -271,6 +271,11 @@ + + + IP-Address of the Shelly device. + network-address + User ID for HTTP API access. @@ -280,11 +285,6 @@ Password for HTTP API access. password - - - IP-Address of the Shelly device. - network-address - True: Register event URL for sensor updates. diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly.properties b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly.properties index d199e201b..424709499 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly.properties +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly.properties @@ -1,3 +1,6 @@ +# binding +binding.shelly.name = Shelly Binding +binding.shelly.description = This binding integrates Shelly devices that can be controlled via WiFi. binding.shelly.config.defaultUserId.label = Default UserId binding.shelly.config.defaultUserId.description = This default user id will be used for device access if no one is specified in the thing configuration. binding.shelly.config.defaultPassword.label = Default Password @@ -8,69 +11,747 @@ binding.shelly.config.autoCoIoT.label = Auto-CoIoT binding.shelly.config.autoCoIoT.description = If enabled CoIoT will be automatically used when the devices runs a firmware version 1.6 or newer; false: Use thing configuration to enabled/disable CoIoT events. # Config status messages -config-status.error.missing-device-ip = IP address of the Shelly device is missing. +message.config-status.error.missing-device-ip = IP address of the Shelly device is missing. +message.config-status.error.missing-userid = No user ID in the Thing configuration # Thing status descriptions -offline.conf-error-no-credentials = Device is password protected, but no credentials have been configured. -offline.conf-error-access-denied = Access denied, check user id and password. -offline.conf-error-wrong-mode = Device is no longer in the configured device mode {0}, required {1}. Delete the thing and re-discover the device. -offline.status-error-timeout = Device is not reachable (API timeout). -offline.status-error-unexpected-api-result = An unexpected API response. Please verify the logfile to get more detailed information. -offline.status-error-watchdog = Device is not responding, seems to be unavailable. -offline.status-error-restarted = The device has restarted and will be re-initialized. -offline.status-error-fwupgrade = Firmware upgrade in progress +message.offline.conf-error-no-credentials = Device is password protected, but no credentials have been configured. +message.offline.conf-error-access-denied = Access denied, check user id and password. +message.offline.conf-error-wrong-mode = Device is no longer in the configured device mode {0}, required {1}. Delete the thing and re-discover the device. +message.offline.status-error-timeout = Device is not reachable (API timeout). +message.offline.status-error-unexpected-api-result = An unexpected API response. Please verify the logfile to get more detailed information. +message.offline.status-error-watchdog = Device is not responding, seems to be unavailable. +message.offline.status-error-restarted = The device has restarted and will be re-initialized. +message.offline.status-error-fwupgrade = Firmware upgrade in progress +# General messages message.versioncheck.failed = Unable to check firmware version: {0} message.versioncheck.beta = Device is running a Beta version: {0}/{1}. message.versioncheck.tooold = WARNING: Firmware might be too old, installed: {0}/{1}, required minimal {3}. message.versioncheck.update = INFO: New firmware available: current version: {0}, new version: {1} message.versioncheck.autocoiot = INFO: Firmware is full-filling the minimum version to auto-enable CoIoT -message.roller.calibrating = Device is not calibrated, use Shelly App to perform initial roller calibration. message.init.noipaddress = Unable to detect local IP address. Please make sure that IPv4 is enabled for this interface and check openHAB Network Configuration. message.init.protected = Device is password protected, enter correct credentials in thing configuration. message.command.failed = ERROR: Unable to process command {0} for channel {1} message.command.init = Thing not yet initialized, command {0} triggers initialization message.status.unknown.initializing = Initializing or device in sleep mode. message.statusupdate.failed = Unable to update status +message.status.managerstarted = Shelly Manager started at http(s)://{0}:{1}/shelly/manager" message.event.triggered = Event triggered: {0} +message.event.filtered = Event filtered: {0} message.coap.init.failed = Unable to start CoIoT: {0} message.discovery.disabled = Device is marked as non-discoverable, will be skipped message.discovery.protected = Device {0} reported 'Access defined' (missing userid/password or incorrect). message.discovery.failed = Device discovery of device with IP address {0} failed: {1} +message.roller.calibrating = Device is not calibrated, use Shelly App to perform initial roller calibration. message.roller.favmissing = Roller position favorites are not supported by installed firmware or not configured in the Shelly App -# Device -channel-type.shelly.deviceName.label = Device Name -channel-type.shelly.deviceName.description = Symbolic Device Name as configured in the Shelly App. -channel-type.shelly.sensorSleepTime.label = Sensor Sleep Time -channel-type.shelly.sensorSleepTime.description = The sensor will not send notifications and will not perform actions until the specified time expires. (0=disable) +# thing types - descriptions only +thing-type.shelly.shellydevice.description = A password protected or unknown device +thing-type.shelly.shellyunknown.description = This device is currently not supported +thing-type.shelly.shelly1.description = Shelly 1 (Single Relay Switch) +thing-type.shelly.shelly1l.description = Shelly 1L (Single Relay Switch, no Neutral required) +thing-type.shelly.shelly1pm.description = Shelly 1PM (Single Relay Switch with integrated Power Meter) +thing-type.shelly.shellyem.description = Shelly EM (with integrated Power Meter) +thing-type.shelly.shellyem3.description = Shelly 3EM (with 3 integrated Power Meters and a relay) +thing-type.shelly.shelly2-relay.description = Shelly 2 in Relay Mode (Double Relay Switch) +thing-type.shelly.shelly2-roller.description = Shelly 2 in Roller Mode (Single Roller Shutter) +thing-type.shelly.shelly25-relay.description = Shelly 2.5 in Relay Mode (Double Relay Switch with integrated Power Meter) +thing-type.shelly.shelly25-roller.description = Shelly 2.5 in Roller Mode (Single Roller Shutter with integrated Power Meter) +thing-type.shelly.shelly4pro.description = Shelly 4 Pro (4x Relay Switch with integrated Power Meters) +thing-type.shelly.shellyplug.description = Shelly Plug (Plug with integrated Power Meter) +thing-type.shelly.shellyplugu1.description = Shelly Plug-US (Plug (US) with integrated Power Meter (110V)) +thing-type.shelly.shellyplugs.description = Shelly Plug-S (Plug with integrated Power Meter) +thing-type.shelly.shellyuni.description = Shelly UNI (Universal Module) +thing-type.shelly.shellydimmer.description = Shelly Dimmer (Dimmer Functionality) +thing-type.shelly.shellydimmer2.description = Shelly Dimmer 2 (Dimmer Functionality, 2nd Generation) +thing-type.shelly.shellybutton1.description = Shelly Button 1 (battery powered) +thing-type.shelly.shellybutton2.description = Shelly Button 2 (battery powered) +thing-type.shelly.shellyht.description = Shelly H&T (Humidity & Temperature Sensor) +thing-type.shelly.shellydw.description = Shelly Door/Window (Door and Window Sensor with Lux Measurement (battery powered)) +thing-type.shelly.shellydw2.description = Shelly Door/Window 2 (Door and Window Sensor with Lux Measurement (battery powered), 2nd Generation) +thing-type.shelly.shellysmoke.description = Shelly Smoke Sensor (battery powered) +thing-type.shelly.shellyflood.description = Shelly Flood Sensor (battery powered) +thing-type.shelly.shellysense.description = Shelly Sense (Motion Sensor and Remote IR Controller) +thing-type.shelly.shellybulb.description = Shelly Bulb (Dimmable RGB+W Bulb) +thing-type.shelly.shellybulbduo.description = Shelly Duo (Dimmable WW/CW Bulb) +thing-type.shelly.shellycolorbulb.description = Shelly Color Bulb (Dimmable RGB+W Bulb) +thing-type.shelly.shellyvintage.description = Shelly Vintage (Dimmable Vintage Bulb) +thing-type.shelly.shellyrgbw2-color.description = Shelly RGBW2 (LED Controller in Color Mode) +thing-type.shelly.shellyrgbw2-white.description = Shelly RGBW2 (LED Controller in White Mode, 4 strips) +thing-type.shelly.shellymotion.description = Shelly Motion (Motion Detection (battery powered)) +thing-type.shelly.shellygas.description = Shelly Gas (Gas Sensor - Gas Leak Detection) +thing-type.shelly.shellytrv.description = Shelly TRV (Radiator value, battery powered) +thing-type.shelly.shellyix3.description = Shelly ix3 (Activation Device with 3 inputs) -# Relay, external sensors +# thing config - shellydevice +thing-type.config.shellydevice.userId.label = User ID +thing-type.config.shellydevice.userId.description = User ID for API access +thing-type.config.shellydevice.password.label = Password +thing-type.config.shellydevice.password.description = Password for API access +thing-type.config.shellydevice.deviceIp.label = IP Address +thing-type.config.shellydevice.deviceIp.description = IP Address of the Shelly device + +# thing config - relay +thing-type.config.shelly.relay.userId.label = User ID +thing-type.config.shelly.relay.userId.description = User ID for API access +thing-type.config.shelly.relay.password.label = Password +thing-type.config.shelly.relay.password.description = Password for API access +thing-type.config.shelly.relay.deviceIp.label = IP Address +thing-type.config.shelly.relay.deviceIp.description = IP Address of the Shelly device +thing-type.config.shelly.relay.eventsButton.label = Button Events +thing-type.config.shelly.relay.eventsButton.description = Activates the Button Action URLS +thing-type.config.shelly.relay.eventsPush.label = Push Events +thing-type.config.shelly.relay.eventsPush.description = Activates the Push Button Action URLS +thing-type.config.shelly.relay.eventsSwitch.label = Output Events +thing-type.config.shelly.relay.eventsSwitch.description = Activates the Output Action URLS +thing-type.config.shelly.relay.eventsCoIoT.label = Activate CoIoT +thing-type.config.shelly.relay.eventsCoIoT.description = Activates the CoIoT-Protocol (CoAP based) +thing-type.config.shelly.relay.updateInterval.label = Status Interval +thing-type.config.shelly.relay.updateInterval.description = Interval for the device status update + +# thing config - roller +thing-type.config.shelly.roller.userId.label = User ID +thing-type.config.shelly.roller.userId.description = User ID for API access +thing-type.config.shelly.roller.password.label = Password +thing-type.config.shelly.roller.password.description = Password for API access +thing-type.config.shelly.roller.favoriteUP.label = Favorite ID for UP +thing-type.config.shelly.roller.favoriteUP.description = Specifies the favorite ID that is used during the command UP on the roller#control channel (use the Shelly App to configure favorites) +thing-type.config.shelly.roller.favoriteDOWN.label = Favorite ID for DOWN +thing-type.config.shelly.roller.favoriteDOWN.description = Specifies the favorite ID that is used during the command DOWN on the roller#control channel (use the Shelly App to configure favorites) +thing-type.config.shelly.roller.deviceIp.label = IP Address +thing-type.config.shelly.roller.deviceIp.description = IP Address of the Shelly device +thing-type.config.shelly.roller.eventsRoller.label = Roller Events +thing-type.config.shelly.roller.eventsRoller.description = Activates the Roller Action URLS +thing-type.config.shelly.roller.eventsCoIoT.label = Activate CoIoT +thing-type.config.shelly.roller.eventsCoIoT.description = Activates the CoIoT-Protocol (CoAP based) +thing-type.config.shelly.roller.updateInterval.label = Status Interval +thing-type.config.shelly.roller.updateInterval.description = Interval for the device status update + +# thing config - dimmer +thing-type.config.shelly.dimmer.userId.label = User ID +thing-type.config.shelly.dimmer.userId.description = User ID for API access +thing-type.config.shelly.dimmer.password.label = Password +thing-type.config.shelly.dimmer.password.description = Password for API access +thing-type.config.shelly.dimmer.deviceIp.label = IP Address +thing-type.config.shelly.dimmer.deviceIp.description = IP Address of the Shelly device +thing-type.config.shelly.dimmer.brightnessAutoOn.label = Brightness Auto-ON +thing-type.config.shelly.dimmer.brightnessAutoOn.description = ON: Light is switched on when a brightness value greater than 0 is set; OFF: Brightness is set, but the device is not switched on +thing-type.config.shelly.dimmer.eventsButton.label = Button Events +thing-type.config.shelly.dimmer.eventsButton.description = Activates the Button Action URLS +thing-type.config.shelly.dimmer.eventsPush.label = Push Events +thing-type.config.shelly.dimmer.eventsPush.description = Activates the Push Button Action URLS +thing-type.config.shelly.dimmer.eventsSwitch.label = Output Events +thing-type.config.shelly.dimmer.eventsSwitch.description = Activates the Output Action URLS +thing-type.config.shelly.dimmer.eventsCoIoT.label = Activate CoIoT +thing-type.config.shelly.dimmer.eventsCoIoT.description = Activates the CoIoT-Protocol (CoAP based) +thing-type.config.shelly.dimmer.updateInterval.label = Status Interval +thing-type.config.shelly.dimmer.updateInterval.description = Interval for the device status update + +# thing config - light +thing-type.config.shelly.light.userId.label = User ID +thing-type.config.shelly.light.userId.description = User ID for API access +thing-type.config.shelly.light.password.label = Password +thing-type.config.shelly.light.password.description = Password for API access +thing-type.config.shelly.light.deviceIp.label = IP Address +thing-type.config.shelly.light.deviceIp.description = IP Address of the Shelly device +thing-type.config.shelly.light.brightnessAutoOn.label = Brightness Auto-ON +thing-type.config.shelly.light.brightnessAutoOn.description = ON: Light is switched on when a brightness value greater than 0 is set; OFF: Brightness is set, but the device is not switched on +thing-type.config.shelly.light.eventsButton.label = Button Events +thing-type.config.shelly.light.eventsButton.description = Activates the Button Action URLS +thing-type.config.shelly.light.eventsPush.label = Push Events +thing-type.config.shelly.light.eventsPush.description = Activates the Push Button Action URLS +thing-type.config.shelly.light.eventsSwitch.label = Output Events +thing-type.config.shelly.light.eventsSwitch.description = Activates the Output Action URLS +thing-type.config.shelly.light.eventsCoIoT.label = Activate CoIoT +thing-type.config.shelly.light.eventsCoIoT.description = Activates the CoIoT-Protocol (CoAP based) +thing-type.config.shelly.light.updateInterval.label = Status Interval +thing-type.config.shelly.light.updateInterval.description = Interval for the device status update + +# thing config - RGBW2 +thing-type.config.shelly.rgbw2.userId.label = User ID +thing-type.config.shelly.rgbw2.userId.description = User ID for API access +thing-type.config.shelly.rgbw2.password.label = Password +thing-type.config.shelly.rgbw2.password.description = Password for API access +thing-type.config.shelly.rgbw2.deviceIp.label = IP Address +thing-type.config.shelly.rgbw2.deviceIp.description = IP Address of the Shelly device +thing-type.config.shelly.rgbw2.brightnessAutoOn.label = Brightness Auto-ON +thing-type.config.shelly.rgbw2.brightnessAutoOn.description = ON: Light is switched on when a brightness value greater than 0 is set; OFF: Brightness is set, but the device is not switched on +thing-type.config.shelly.rgbw2.eventsCoIoT.label = Activate CoIoT +thing-type.config.shelly.rgbw2.eventsCoIoT.description = Activates the CoIoT-Protocol (CoAP based) +thing-type.config.shelly.rgbw2.updateInterval.label = Status Interval +thing-type.config.shelly.rgbw2.updateInterval.description = Interval for the device status update + +# thing config - battery +thing-type.config.shelly.battery.userId.label = User ID +thing-type.config.shelly.battery.userId.description = User ID for API access +thing-type.config.shelly.battery.password.label = Password +thing-type.config.shelly.battery.password.description = Password for API access +thing-type.config.shelly.battery.deviceIp.label = IP Address +thing-type.config.shelly.battery.deviceIp.description = IP Address of the Shelly device +thing-type.config.shelly.battery.eventsSensorReport.label = Sensor Events +thing-type.config.shelly.battery.eventsSensorReport.description = Activates the Sensor Action URLS +thing-type.config.shelly.battery.eventsCoIoT.label = Activate CoIoT +thing-type.config.shelly.battery.eventsCoIoT.description = Activates the CoIoT-Protocol (CoAP based) +thing-type.config.shelly.battery.lowBattery.label = Low Battery Treshold (%) +thing-type.config.shelly.battery.lowBattery.description = An alarm is triggered when the device reports a battery charge lower than this threshold. Default: 20% +thing-type.config.shelly.battery.updateInterval.label = Status Interval +thing-type.config.shelly.battery.updateInterval.description = Interval for the device status update + +# channel-groups +thing-type.shelly.shelly1.group.relay.label = Relay +thing-type.shelly.shelly1.group.relay.description = Relay input/output and status +thing-type.shelly.shelly1.group.sensors.label = External Sensors +thing-type.shelly.shelly1.group.sensors.description = Values from external sensors connected to the optional Addon +thing-type.shelly.shelly1.group.device.label = Device Status +thing-type.shelly.shelly1.group.device.description = Device Status Information +thing-type.shelly.shelly1pm.group.relay.label = Relay +thing-type.shelly.shelly1pm.group.relay.description = Relay input/output and status +thing-type.shelly.shelly1pm.group.meter.label = Power Consumption +thing-type.shelly.shelly1pm.group.meter.description = Consumption values and other information +thing-type.shelly.shelly1pm.group.sensors.label = External Sensors +thing-type.shelly.shelly1pm.group.sensors.description = Values from external sensors connected to the optional Addon +thing-type.shelly.shelly1pm.group.device.label = Device Status +thing-type.shelly.shelly1pm.group.device.description = Device Status Information +thing-type.shelly.shelly1l.group.relay.label = Relay +thing-type.shelly.shelly1l.group.relay.description = Relay input/output and status +thing-type.shelly.shelly1l.group.meter.label = Power Consumption +thing-type.shelly.shelly1l.group.meter.description = Consumption values and other information +thing-type.shelly.shelly1l.group.sensors.label = External Sensors +thing-type.shelly.shelly1l.group.sensors.description = Values from external sensors connected to the optional Addon +thing-type.shelly.shelly1l.group.device.label = Device Status +thing-type.shelly.shelly1l.group.device.description = Device Status Information +thing-type.shelly.shellyem.group.relay.label = Relay +thing-type.shelly.shellyem.group.relay.description = Relay input/output and status +thing-type.shelly.shellyem.group.meter1.label = Power Consumption 1 +thing-type.shelly.shellyem.group.meter1.description = Consumption values and other information +thing-type.shelly.shellyem.group.meter2.label = Power Consumption 2 +thing-type.shelly.shellyem.group.meter2.description = Consumption values and other information +thing-type.shelly.shellyem.group.device.label = Device Status +thing-type.shelly.shellyem.group.device.description = Device Status Information +thing-type.shelly.shellyem3.group.relay.label = Relay +thing-type.shelly.shellyem3.group.relay.description = Relay input/output and status +thing-type.shelly.shellyem3.group.meter1.label = Power Consumption 1 +thing-type.shelly.shellyem3.group.meter1.description = Consumption values and other information +thing-type.shelly.shellyem3.group.meter2.label = Power Consumption 2 +thing-type.shelly.shellyem3.group.meter2.description = Consumption values and other information +thing-type.shelly.shellyem3.group.meter3.label = Power Consumption 3 +thing-type.shelly.shellyem3.group.meter3.description = Consumption values and other information +thing-type.shelly.shellyem3.group.device.label = Device Status +thing-type.shelly.shellyem3.group.device.description = Device Status Information +thing-type.shelly.shelly2-relay.group.relay1.label = Relay 1 +thing-type.shelly.shelly2-relay.group.relay1.description = Relay input/output and status +thing-type.shelly.shelly2-relay.group.relay2.label = Relay 2 +thing-type.shelly.shelly2-relay.group.relay2.description = Relay input/output and status +thing-type.shelly.shelly2-relay.group.meter.label = Power Consumption +thing-type.shelly.shelly2-relay.group.meter.description = Consumption values and other information +thing-type.shelly.shelly2-relay.group.device.label = Device Status +thing-type.shelly.shelly2-relay.group.device.description = Device Status Information +thing-type.shelly.shelly2-roller.group.roller.label = Roller shutter +thing-type.shelly.shelly2-roller.group.roller.description = Roller shutter control and status +thing-type.shelly.shelly2-roller.group.meter.label = Power Consumption +thing-type.shelly.shelly2-roller.group.meter.description = Consumption values and other information +thing-type.shelly.shelly2-roller.group.device.label = Device Status +thing-type.shelly.shelly2-roller.group.device.description = Device Status Information +thing-type.shelly.shelly25-relay.group.relay1.label = Relay 1 +thing-type.shelly.shelly25-relay.group.relay1.description = Relay 1 input/output and status +thing-type.shelly.shelly25-relay.group.relay2.label = Relay 2 +thing-type.shelly.shelly25-relay.group.relay2.description = Relay 2 input/output and status +thing-type.shelly.shelly25-relay.group.meter1.label = Power Consumption 1 +thing-type.shelly.shelly25-relay.group.meter1.description = Consumption values and other information +thing-type.shelly.shelly25-relay.group.meter2.label = Power Consumption 2 +thing-type.shelly.shelly25-relay.group.meter2.description = Consumption values and other information +thing-type.shelly.shelly25-relay.group.device.label = Device Status +thing-type.shelly.shelly25-relay.group.device.description = Device Status Information +thing-type.shelly.shelly25-roller.group.roller.label = Roller shutter +thing-type.shelly.shelly25-roller.group.roller.description = Roller shutter control and status +thing-type.shelly.shelly25-roller.group.meter.label = Power Consumption +thing-type.shelly.shelly25-roller.group.meter.description = Consumption values and other information +thing-type.shelly.shelly25-roller.group.device.label = Device Status +thing-type.shelly.shelly25-roller.group.device.description = Device Status Information +thing-type.shelly.shelly4pro.group.relay1.label = Relay 1 +thing-type.shelly.shelly4pro.group.relay1.description = Relay input/output and status +thing-type.shelly.shelly4pro.group.relay2.label = Relay 2 +thing-type.shelly.shelly4pro.group.relay2.description = Relay input/output and status +thing-type.shelly.shelly4pro.group.relay3.label = Relay 3 +thing-type.shelly.shelly4pro.group.relay3.description = Relay input/output and status +thing-type.shelly.shelly4pro.group.relay4.label = Relay 4 +thing-type.shelly.shelly4pro.group.relay4.description = Relay input/output and status +thing-type.shelly.shelly4pro.group.meter1.label = Power Consumption 1 +thing-type.shelly.shelly4pro.group.meter1.description = Consumption values and other information +thing-type.shelly.shelly4pro.group.meter2.label = Power Consumption 2 +thing-type.shelly.shelly4pro.group.meter2.description = Consumption values and other information +thing-type.shelly.shelly4pro.group.meter3.label = Power Consumption 3 +thing-type.shelly.shelly4pro.group.meter3.description = Consumption values and other information +thing-type.shelly.shelly4pro.group.meter4.label = Power Consumption 4 +thing-type.shelly.shelly4pro.group.meter4.description = Consumption values and other information +thing-type.shelly.shelly4pro.group.device.label = Device Status +thing-type.shelly.shelly4pro.group.device.description = Device Status Information +thing-type.shelly.shellyplug.group.relay.label = Relay +thing-type.shelly.shellyplug.group.relay.description = Relay input/output and status +thing-type.shelly.shellyplug.group.meter.label = Power Consumption +thing-type.shelly.shellyplug.group.meter.description = Consumption values and other information +thing-type.shelly.shellyplug.group.device.label = Device Status +thing-type.shelly.shellyplug.group.device.description = Device Status Information +thing-type.shelly.shellyplugs.group.relay.label = Relay +thing-type.shelly.shellyplugs.group.relay.description = Relay input/output and status +thing-type.shelly.shellyplugs.group.meter.label = Power Consumption +thing-type.shelly.shellyplugs.group.meter.description = Consumption values and other information +thing-type.shelly.shellyplugs.group.device.label = Device Status +thing-type.shelly.shellyplugs.group.device.description = Device Status Information +thing-type.shelly.shellyplugu1.group.relay.label = Relay +thing-type.shelly.shellyplugu1.group.relay.description = Relay input/output and status +thing-type.shelly.shellyplugu1.group.meter.label = Power Consumption +thing-type.shelly.shellyplugu1.group.meter.description = Consumption values and other information +thing-type.shelly.shellyplugu1.group.device.label = Device Status +thing-type.shelly.shellyplugu1.group.device.description = Device Status Information +thing-type.shelly.shellyuni.group.relay1.label = Relay 1 +thing-type.shelly.shellyuni.group.relay1.description = Relay input/output and status +thing-type.shelly.shellyuni.group.relay2.label = Relay 2 +thing-type.shelly.shellyuni.group.relay2.description = Relay input/output and status +thing-type.shelly.shellyuni.group.sensors.label = Sensor data +thing-type.shelly.shellyuni.group.sensors.description = Data of the connected sensors +thing-type.shelly.shellyuni.group.device.label = Device Status +thing-type.shelly.shellyuni.group.device.description = Device Status Information +thing-type.shelly.shellydimmer.group.relay.label = Relay +thing-type.shelly.shellydimmer.group.relay.description = Relay input/output and status +thing-type.shelly.shellydimmer.group.meter.label = Power Consumption +thing-type.shelly.shellydimmer.group.meter.description = Consumption values and other information +thing-type.shelly.shellydimmer.group.device.label = Device Status +thing-type.shelly.shellydimmer.group.device.description = Device Status Information +thing-type.shelly.shellydimmer2.group.relay.label = Relay +thing-type.shelly.shellydimmer2.group.relay.description = Relay input/output and status +thing-type.shelly.shellydimmer2.group.meter.label = Power Consumption +thing-type.shelly.shellydimmer2.group.meter.description = Consumption values and other information +thing-type.shelly.shellydimmer2.group.device.label = Device Status +thing-type.shelly.shellydimmer2.group.device.description = Device Status Information +thing-type.shelly.shellyix3.group.status1.label = Input 1 +thing-type.shelly.shellyix3.group.status1.description = Input 1 status +thing-type.shelly.shellyix3.group.status2.label = Input 2 +thing-type.shelly.shellyix3.group.status2.description = Input 2 status +thing-type.shelly.shellyix3.group.status3.label = Input 3 +thing-type.shelly.shellyix3.group.status3.description = Input 3 status +thing-type.shelly.shellyix3.group.device.label = Device Status +thing-type.shelly.shellyix3.group.device.description = Device Status Information +thing-type.shelly.shellybutton1.group.status.label = Button status +thing-type.shelly.shellybutton1.group.status.description = Device Status Information +thing-type.shelly.shellybutton1.group.battery.label = Battery status +thing-type.shelly.shellybutton1.group.battery.description = Battery Information +thing-type.shelly.shellybutton1.group.device.label = Device Status +thing-type.shelly.shellybutton1.group.device.description = Device Status Information +thing-type.shelly.shellybulb.group.control.label = Control +thing-type.shelly.shellybulb.group.control.description = Control the Light +thing-type.shelly.shellybulb.group.color.label = Color Mode +thing-type.shelly.shellybulb.group.color.description = Settings for the Color Mode +thing-type.shelly.shellybulb.group.white.label = White Mode +thing-type.shelly.shellybulb.group.white.description = Settings for the White Mode +thing-type.shelly.shellybulb.group.device.label = Device Status +thing-type.shelly.shellybulb.group.device.description = Device Status Information +thing-type.shelly.shellybulbduo.group.control.label = Control +thing-type.shelly.shellybulbduo.group.control.description = Control the Light +thing-type.shelly.shellybulbduo.group.white.label = White Mode +thing-type.shelly.shellybulbduo.group.white.description = Settings for the White Mode +thing-type.shelly.shellybulbduo.group.meter.label = Power Consumption +thing-type.shelly.shellybulbduo.group.meter.description = Power Consumption Values +thing-type.shelly.shellybulbduo.group.device.label = Device Status +thing-type.shelly.shellybulbduo.group.device.description = Device Status Information +thing-type.shelly.shellycolorbulb.group.control.label = Control +thing-type.shelly.shellycolorbulb.group.control.description = Control the Light +thing-type.shelly.shellycolorbulb.group.white.label = White Mode +thing-type.shelly.shellycolorbulb.group.white.description = Settings for the White Mode +thing-type.shelly.shellycolorbulb.group.meter.label = Power Consumption +thing-type.shelly.shellycolorbulb.group.meter.description = Power Consumption Values +thing-type.shelly.shellycolorbulb.group.device.label = Device Status +thing-type.shelly.shellycolorbulb.group.device.description = Device Status Information +thing-type.shelly.shellyvintage.group.control.label = Control +thing-type.shelly.shellyvintage.group.control.description = Control the Light +thing-type.shelly.shellyvintage.group.white.label = Control +thing-type.shelly.shellyvintage.group.white.description = Device settings +thing-type.shelly.shellyvintage.group.meter.label = Power Consumption +thing-type.shelly.shellyvintage.group.meter.description = Power Consumption Values +thing-type.shelly.shellyvintage.group.device.label = Device Status +thing-type.shelly.shellyvintage.group.device.description = Device Status Information +thing-type.shelly.shellyrgbw2-color.group.control.label = Control +thing-type.shelly.shellyrgbw2-color.group.control.description = Controller operation +thing-type.shelly.shellyrgbw2-color.group.color.label = Colors +thing-type.shelly.shellyrgbw2-color.group.color.description = Color values and profiles +thing-type.shelly.shellyrgbw2-color.group.meter.label = Power Consumption +thing-type.shelly.shellyrgbw2-color.group.meter.description = Consumption values and other information +thing-type.shelly.shellyrgbw2-color.group.device.label = Device Status +thing-type.shelly.shellyrgbw2-color.group.device.description = Device Status Information +thing-type.shelly.shellyrgbw2-white.group.control.label = Control +thing-type.shelly.shellyrgbw2-white.group.control.description = Control the Light +thing-type.shelly.shellyrgbw2-white.group.channel1.label = Channel 1 +thing-type.shelly.shellyrgbw2-white.group.channel1.description = Control for channel 1 +thing-type.shelly.shellyrgbw2-white.group.channel2.label = Channel 2 +thing-type.shelly.shellyrgbw2-white.group.channel2.description = Control for channel 2 +thing-type.shelly.shellyrgbw2-white.group.channel3.label = Channel 3 +thing-type.shelly.shellyrgbw2-white.group.channel3.description = Control for channel 3 +thing-type.shelly.shellyrgbw2-white.group.channel4.label = Channel 4 +thing-type.shelly.shellyrgbw2-white.group.channel4.description = Control for channel 4 +thing-type.shelly.shellyrgbw2-white.group.meter.label = Power Consumption +thing-type.shelly.shellyrgbw2-white.group.meter.description = Consumption values and other information +thing-type.shelly.shellyrgbw2-white.group.device.label = Device Status +thing-type.shelly.shellyrgbw2-white.group.device.description = Device Status Information +thing-type.shelly.shellyht.group.sensors.label = Sensor data +thing-type.shelly.shellyht.group.sensors.description = Measured values and status of the sensor +thing-type.shelly.shellyht.group.battery.label = Battery Status +thing-type.shelly.shellyht.group.battery.description = Battery Information +thing-type.shelly.shellyht.group.device.label = Device Status +thing-type.shelly.shellyht.group.device.description = Device Status Information +thing-type.shelly.shellyflood.group.sensors.label = Sensor data +thing-type.shelly.shellyflood.group.sensors.description = Measured values and status of the sensor +thing-type.shelly.shellyflood.group.battery.label = Battery Status +thing-type.shelly.shellyflood.group.battery.description = Battery Information +thing-type.shelly.shellyflood.group.device.label = Device Status +thing-type.shelly.shellyflood.group.device.description = Device Status Information +thing-type.shelly.shellydw.group.sensors.label = Sensor data +thing-type.shelly.shellydw.group.sensors.description = Measured values and status of the sensor +thing-type.shelly.shellydw.group.battery.label = Battery Status +thing-type.shelly.shellydw.group.battery.description = Battery Information +thing-type.shelly.shellydw.group.device.label = Device Status +thing-type.shelly.shellydw.group.device.description = Device Status Information +thing-type.shelly.shellydw2.group.sensors.label = Sensor data +thing-type.shelly.shellydw2.group.sensors.description = Measured values and status of the sensor +thing-type.shelly.shellydw2.group.battery.label = Battery Status +thing-type.shelly.shellydw2.group.battery.description = Battery Information +thing-type.shelly.shellydw2.group.device.label = Device Status +thing-type.shelly.shellydw2.group.device.description = Device Status Information +thing-type.shelly.shellysmoke.sensors.device.label = Sensor data +thing-type.shelly.shellysmoke.sensors.device.description = Measured values and status of the sensor +thing-type.shelly.shellysmoke.group.battery.label = Battery Status +thing-type.shelly.shellysmoke.group.battery.description = Battery Information +thing-type.shelly.shellysmoke.group.device.label = Device Status +thing-type.shelly.shellysmoke.group.device.description = Device Status Information +thing-type.shelly.shellysense.sensors.device.label = Sensor data +thing-type.shelly.shellysense.sensors.device.description = Measured values and status of the sensor +thing-type.shelly.shellysense.group.device.label = Device Status +thing-type.shelly.shellysense.group.device.description = Device Status Information +thing-type.shelly.shellygas.group.sensors.label = Sensor data +thing-type.shelly.shellygas.group.sensors.description = Measured values and status of the sensor +thing-type.shelly.shellygas.group.device.label = Device Status +thing-type.shelly.shellygas.group.device.description = Device Status Information +thing-type.shelly.shellymotion.group.sensors.label = Sensor data +thing-type.shelly.shellymotion.group.sensors.description = Measured values and status of the sensor +thing-type.shelly.shellymotion.group.battery.label = Battery Status +thing-type.shelly.shellymotion.group.battery.description = Battery Information +thing-type.shelly.shellymotion.group.device.label = Device Status +thing-type.shelly.shellymotion.group.device.description = Device Status Information + +# channel groups +channel-group-type.shelly.sensorData.label = Sensor Data +channel-group-type.shelly.sensorData.description = Data from the various sensors +channel-group-type.shelly.batteryStatus.label = Battery Status +channel-group-type.shelly.batteryStatus.description = Battery Information +channel-group-type.shelly.control.label = Control +channel-group-type.shelly.control.description = Control the device +channel-group-type.shelly.buttonState.label = Button State +channel-group-type.shelly.buttonState.description = Status of the Button +channel-group-type.shelly.deviceStatus.label = Device Status +channel-group-type.shelly.deviceStatus.description = Information about the device status +channel-group-type.shelly.bulbControl.label = Light Control +channel-group-type.shelly.bulbControl.description = Control your light +channel-group-type.shelly.duoControl.label = Light Control +channel-group-type.shelly.duoControl.description = Control your light +channel-group-type.shelly.rgbw2ColorControl.label = LED Strip Control (RGBW) +channel-group-type.shelly.rgbw2ColorControl.description = Control your LED stripes in color mode +channel-group-type.shelly.rgbw2WhiteControl.label = LED Strip Control (White) +channel-group-type.shelly.rgbw2WhiteControl.description = Control your LED stripes in white mode +channel-group-type.shelly.colorSettingsBulb.label = Colors +channel-group-type.shelly.colorSettingsBulb.description = Light colors +channel-group-type.shelly.colorSettingsRGBW2.label = Colors +channel-group-type.shelly.colorSettingsRGBW2.description = Light colors +channel-group-type.shelly.whiteSettings.label = White settings +channel-group-type.shelly.whiteSettings.description = Adjust colors when device is in white mode +channel-group-type.shelly.whiteSettingsSimple.label = White settings +channel-group-type.shelly.whiteSettingsSimple.description = Adjust colors when device is in white mode +channel-group-type.shelly.rgbw2Channel.label = Control +channel-group-type.shelly.rgbw2Channel.description = Switch channel and adjust settings +channel-group-type.shelly.relayChannel.label = Relay +channel-group-type.shelly.relayChannel.description = A Shelly relay channel +channel-group-type.shelly.relayChannelPlug.label = Relay +channel-group-type.shelly.relayChannelPlug.description = A Shelly relay channel +channel-group-type.shelly.dimmerChannel.label = Dimmer +channel-group-type.shelly.dimmerChannel.description = A Shelly Dimmer channel +channel-group-type.shelly.ix3Channel.label = Input +channel-group-type.shelly.ix3Channel.description = Input Status +channel-group-type.shelly.rollerControl.label = Roller Control +channel-group-type.shelly.rollerControl.description = Controlling the roller mode +channel-group-type.shelly.meter.label = Power Meter +channel-group-type.shelly.meter.description = Power consumption for the relay +channel-group-type.shelly.externalSensors.label = External Sensors +channel-group-type.shelly.externalSensors.description = Temperatures from external sensors connected to the optional Addon + +# channels channel-type.shelly.outputName.label = Output Name -channel-type.shelly.outputName.description = Output/Channel Name as configured in the Shelly App. +channel-type.shelly.outputName.description = Output/Channel Name as configured in the Shelly App +channel-type.shelly.timerAutoOn.label = Auto-ON Timer +channel-type.shelly.timerAutoOn.description = When the relay is switched off, it will be switched on automatically after n seconds +channel-type.shelly.timerAutoOff.label = Auto-OFF Timer +channel-type.shelly.timerAutoOff.description = When the relay is switched on, it will be switched off automatically after n seconds +channel-type.shelly.timerActive.label = Auto ON/OFF timer active +channel-type.shelly.timerActive.description = ON: A timer is active, OFF: no timer active +channel-type.shelly.temperature.label = Temperature +channel-type.shelly.temperature.description = Temperature reported by the sensor channel-type.shelly.temperature1.label = Temperature 1 channel-type.shelly.temperature1.description = Temperature of external Sensor #1 channel-type.shelly.temperature2.label = Temperature 2 channel-type.shelly.temperature2.description = Temperature of external Sensor #2 channel-type.shelly.temperature3.label = Temperature 3 channel-type.shelly.temperature3.description = Temperature of external Sensor #3 +channel-type.shelly.targetTemp.label = Target Temperature +channel-type.shelly.targetTemp.description = Target Temperature in C to be reached in auto-temperature mode channel-type.shelly.humidity.label = Humidity channel-type.shelly.humidity.description = Relative humidity (0..100%) +channel-type.shelly.rollerShutter.label = Roller Control (0=open, 100=closed) +channel-type.shelly.rollerShutter.description = Control the Roller Shutter: UP, DOWN, STOP, Position (0=open, 100=closed) +channel-type.shelly.rollerPosition.label = Roller Position (100=open, 0=closed) +channel-type.shelly.rollerPosition.description = Position the Roller Shutter (100-0 in percent, where 100%=open, 0%=closed) +channel-type.shelly.rollerFavorite.label = Position Favorite +channel-type.shelly.rollerFavorite.description = Set roller position by selecting favorite 1-4 (needs to be defined in the Shelly App, 0=n/a) +channel-type.shelly.rollerState.label = Roller State +channel-type.shelly.rollerState.description = State of the roller (open/close/stop) +channel-type.shelly.rollerState.state.option.open = opening +channel-type.shelly.rollerState.state.option.close = closing +channel-type.shelly.rollerState.state.option.stop = stopped +channel-type.shelly.rollerStop.label = Roller stop reason +channel-type.shelly.rollerStop.description = Last reason for stopping the Roller Shutter (normal, safety switch, obstacle detected) +channel-type.shelly.rollerStop.state.option.normal = normal +channel-type.shelly.rollerStop.state.option.safety_switch = safety switch +channel-type.shelly.rollerStop.state.option.obstacle = obstacle detected +channel-type.shelly.rollerDirection.label = Last Roller Direction +channel-type.shelly.rollerDirection.description = Last direction: open/close/stopped +channel-type.shelly.rollerDirection.state.option.open = open +channel-type.shelly.rollerDirection.state.option.close = close +channel-type.shelly.rollerDirection.state.option.stop = stopped +channel-type.shelly.rollerSafety.label = Safety Switch +channel-type.shelly.rollerSafety.description = Status of the safety switch +channel-type.shelly.inputState.label = Input +channel-type.shelly.inputState.description = Input/Button state +channel-type.shelly.inputState1.label = Input #1 +channel-type.shelly.inputState1.description = Input/Button state #1 +channel-type.shelly.inputState2.label = Input #2 +channel-type.shelly.inputState2.description = Input/Button state #2 +channel-type.shelly.inputState3.label = Input #3 +channel-type.shelly.inputState3.description = Input/Button state #3 +channel-type.shelly.dimmerBrightness.label = Brightness +channel-type.shelly.dimmerBrightness.description = Light Brightness in percent (0-100%, 0=OFF) +channel-type.shelly.whiteBrightness.label = Brightness +channel-type.shelly.whiteBrightness.description = Brightness (0-100%, 0=OFF) +channel-type.shelly.meterWatts.label = Power Consumption +channel-type.shelly.meterWatts.description = Current Power Consumption in Watts +channel-type.shelly.meterAccuWatts.label = Accumulated Power Consumption +channel-type.shelly.meterAccuWatts.description = Accumulated Power Consumption in Watts of the device (including all meters) +channel-type.shelly.meterAccuTotal.label = Accumulated Total Power +channel-type.shelly.meterAccuTotal.description = Accumulated Total Power in kW/h of the device (including all meters) +channel-type.shelly.meterAccuReturned.label = Accumulated Returned Power +channel-type.shelly.meterAccuReturned.description = Accumulated Returned Power in kW/h of the device (including all meters) +channel-type.shelly.meterReactive.label = Reactive Energy +channel-type.shelly.meterReactive.description = Instantaneous reactive power in Watts (W) +channel-type.shelly.lastPower1.label = Last Power #1 +channel-type.shelly.lastPower1.description = Last power consumption #1 - one rounded minute +channel-type.shelly.meterTotal.label = Total Energy Consumption +channel-type.shelly.meterTotal.description = Total energy consumption in kW/h since the device powered up (resets on restart) +channel-type.shelly.meterReturned.label = Total Returned Energy +channel-type.shelly.meterReturned.description = Total returned energy in kW/h +channel-type.shelly.meterVoltage.label = Voltage +channel-type.shelly.meterVoltage.description = RMS voltage in Volt +channel-type.shelly.meterCurrent.label = Current +channel-type.shelly.meterCurrent.description = Current in A +channel-type.shelly.meterPowerFactor.label = Power Factor +channel-type.shelly.meterPowerFactor.description = Power Factor in percent for photovoltaic +channel-type.shelly.timestamp.label = Last Update +channel-type.shelly.timestamp.description = Timestamp of last measurement +channel-type.shelly.ledStatusDisable.label = Disable Status LED +channel-type.shelly.ledStatusDisable.description = Disable LED indication for network status +channel-type.shelly.ledPowerDisable.label = Disable Power LED +channel-type.shelly.ledPowerDisable.description = Disable LED indication for output status +channel-type.shelly.colorMode.label = Mode (ON=color, OFF=white) +channel-type.shelly.colorMode.description = ON: Device is in color mode, OFF: Device is in White Mode +channel-type.shelly.colorFull.label = Full Color +channel-type.shelly.colorFull.description = Setting this channel sets the selected color to 255, all others to 0 +channel-type.shelly.colorFull.state.option.red = Red +channel-type.shelly.colorFull.state.option.green = Green +channel-type.shelly.colorFull.state.option.blue = Blue +channel-type.shelly.colorFull.state.option.yellow = Yellow +channel-type.shelly.colorFull.state.option.white = White +channel-type.shelly.colorRed.label = Red +channel-type.shelly.colorRed.description = Red (0-255), applies only in Color Mode +channel-type.shelly.colorGreen.label = Green +channel-type.shelly.colorGreen.description = Green (0-255), applies only in Color Mode +channel-type.shelly.colorBlue.label = Blue +channel-type.shelly.colorBlue.description = Blue (0-255), applies only in Color Mode +channel-type.shelly.colorWhite.label = White +channel-type.shelly.colorWhite.description = White (0-255), applies only in Color Mode +channel-type.shelly.colorGain.label = Gain +channel-type.shelly.colorGain.description = Gain for all channels (0-100%), applies only in Color Mode +channel-type.shelly.whiteTemp.label = Light Temperature +channel-type.shelly.whiteTemp.description = Light Temperature (Bulb/RGBW2: 3000K-6500K; Duo: 2700K-6500K) +channel-type.shelly.colorEffectBulb.label = Effect +channel-type.shelly.colorEffectBulb.description = Currently applied effect, description: 0: Off, 1: Meteor Shower, 2: Gradual Change, 3: Breath, 4: Flash, 5: On/Off Gradual, 6: Red/Green Change +channel-type.shelly.colorEffectBulb.option.0 = Off +channel-type.shelly.colorEffectBulb.option.1 = Meteor Shower +channel-type.shelly.colorEffectBulb.option.2 = Gradual Change +channel-type.shelly.colorEffectBulb.option.3 = Breath +channel-type.shelly.colorEffectBulb.option.4 = Flash +channel-type.shelly.colorEffectBulb.option.5 = On/Off Gradual +channel-type.shelly.colorEffectBulb.option.6 = Red/Green Change +channel-type.shelly.colorEffectRGBW2.label = Effect +channel-type.shelly.colorEffectRGBW2.description = Currently applied effect, description: 0: Off, 1: Meteor Shower, 2: Gradual Change, 3: Flash +channel-type.shelly.colorEffectRGBW2.option.0 = Off +channel-type.shelly.colorEffectRGBW2.option.1 = Meteor Shower +channel-type.shelly.colorEffectRGBW2.option.2 = Gradual Change +channel-type.shelly.colorEffectRGBW2.option.3 = Flash +channel-type.shelly.sensorTemp.label = Temperature +channel-type.shelly.sensorTemp.description = Temperature from the sensor +channel-type.shelly.sensorExtTemp.label = Temperature +channel-type.shelly.sensorExtTemp.description = Temperature from the external sensor +channel-type.shelly.sensorExtHum.label = Humidity +channel-type.shelly.sensorExtHum.description = Relative humidity in percent (0..100%) from external sensor +channel-type.shelly.sensorHumidity.label = Humidity +channel-type.shelly.sensorHumidity.description = Relative humidity in percent (0..100%) +channel-type.shelly.sensorFlood.label = Flood Alarm +channel-type.shelly.sensorFlood.description = Indicates flood / water detection when toggled ON +channel-type.shelly.sensorSmoke.label = Smoke Alarm +channel-type.shelly.sensorSmoke.description = Indicates smoke detection when toggled ON +channel-type.shelly.sensorLux.label = Lux +channel-type.shelly.sensorLux.description = Brightness from the sensor (Lux) +channel-type.shelly.sensorIllumination.label = Illumination +channel-type.shelly.sensorIllumination.description = Current illumination (Dark/Twilight/Bright/Unknown) +channel-type.shelly.sensorIllumination.state.option.dark = Dark +channel-type.shelly.sensorIllumination.state.option.twilight = Twilight +channel-type.shelly.sensorIllumination.state.option.bright = Bright +channel-type.shelly.sensorIllumination.state.option.unknown = Unknown +channel-type.shelly.sensorPPM.label = Gas Concentration +channel-type.shelly.sensorPPM.description = Gas concentration in ppm +channel-type.shelly.sensorPosition.label = Position +channel-type.shelly.sensorPosition.description = Position of the valve +channel-type.shelly.sensorADC.label = Voltage (ADC) +channel-type.shelly.sensorADC.description = ADC voltage in V +channel-type.shelly.sensorTilt.label = Tilt +channel-type.shelly.sensorTilt.description = Tilt in degrees (requires calibration) +channel-type.shelly.sensorVibration.label = Vibration +channel-type.shelly.sensorVibration.description = Vibration detected when toggled ON +channel-type.shelly.sensorMotion.label = Motion +channel-type.shelly.sensorMotion.description = Motion detected when toggled ON channel-type.shelly.motionActive.label = Motion Active channel-type.shelly.motionActive.description = Indicates if motion sensor is active or within sleep time channel-type.shelly.motionTimestamp.label = Last Motion -channel-type.shelly.motionTimestamp.description = Timestamp when last motion was detected. - -# Roller -channel-type.shelly.rollerState.label = State -channel-type.shelly.rollerState.description = State of the roller (open/closed/stopped). - - -# LED disable -channel-type.shelly.ledPowerDisable.label = Disable Power LED -channel-type.shelly.ledPowerDisable.description = ON: The power status LED will be deactivated -channel-type.shelly.ledStatusDisable.label = Disable Status LED -channel-type.shelly.ledStatusDisable.description = ON: The WiFi status LED will be deactivated +channel-type.shelly.motionTimestamp.description = Timestamp when last motion was detected +channel-type.shelly.sensorValve.label = Valve +channel-type.shelly.sensorValve.description = Current valve status (Closed/Opened/Not connected/Failure/Closing/Opening/Checking) +channel-type.shelly.sensorValve.state.option.closed = Closed +channel-type.shelly.sensorValve.state.option.opened = Opened +channel-type.shelly.sensorValve.state.option.not_connected = Not connected +channel-type.shelly.sensorValve.state.option.failure = Failure +channel-type.shelly.sensorValve.state.option.closing = Closing +channel-type.shelly.sensorValve.state.option.opening = Opening +channel-type.shelly.sensorValve.state.option.checking = Checking +channel-type.shelly.sensorValve.state.option.UNKNOWN = Unknown +channel-type.shelly.sensorCharger.label = Charger Connected +channel-type.shelly.sensorCharger.description = ON: External charger is connected +channel-type.shelly.sensorContact.label = State +channel-type.shelly.sensorContact.description = State of the contact (open/closed) +channel-type.shelly.sensorContact.state.option.OPEN = Open +channel-type.shelly.sensorContact.state.option.CLOSED = Closed +channel-type.shelly.sensorState.label = Sensor State +channel-type.shelly.sensorState.description = Sensor State (Warm-Up/Normal/Fault/Unknown) +channel-type.shelly.sensorState.state.option.warmup = Warm-Up +channel-type.shelly.sensorState.state.option.normal = Normal +channel-type.shelly.sensorState.state.option.fault = Fault +channel-type.shelly.sensorState.state.option.unknown = Unknown +channel-type.shelly.sensorWakeup.label = Wakeup Reason +channel-type.shelly.sensorWakeup.description = Last reason which woke up the device (button/battery/perodic/powerdown/sensor/alarm/ext_power) +channel-type.shelly.sensorWakeup.state.option.button = Button +channel-type.shelly.sensorWakeup.state.option.battery = Battery +channel-type.shelly.sensorWakeup.state.option.periodic = Periodic +channel-type.shelly.sensorWakeup.state.option.poweron = Power-On +channel-type.shelly.sensorWakeup.state.option.sensor = Sensor +channel-type.shelly.sensorWakeup.state.option.alarm = Alarm +channel-type.shelly.sensorWakeup.state.option.ext_power = Charger connected +channel-type.shelly.controlMode.label = Mode +channel-type.shelly.controlMode.description = Sensor/Control Mode +channel-type.shelly.controlMode.state.option.manual = Manual +channel-type.shelly.controlMode.state.option.automatic = Automatic +channel-type.shelly.controlProfile.label = Profile +channel-type.shelly.controlProfile.description = Selected Profile +channel-type.shelly.boostControl.label = Boost Mode +channel-type.shelly.boostControl.description = ON: Boost mode is activated (overwrites automatic temperature mode) +channel-type.shelly.boostTimer.label = Boost Timer +channel-type.shelly.boostTimer.description = Number of minutes to boost maximum power +channel-type.shelly.batVoltage.label = Battery Voltage +channel-type.shelly.batVoltage.description = Battery voltage (V) +channel-type.shelly.charger.label = Charger Connected +channel-type.shelly.charger.description = ON: External power is connected +channel-type.shelly.calibrated.label = Calibrated +channel-type.shelly.calibrated.description = ON: The device/sensor is calibrated +channel-type.shelly.externalPower.label = External Power +channel-type.shelly.externalPower.description = ON: Device is charging, OFF: No charger connected +channel-type.shelly.senseKey.label = IR Key to Send +channel-type.shelly.senseKey.description = Send a defined key code +channel-type.shelly.deviceName.label = Device Name +channel-type.shelly.deviceName.description = Symbolic Device Name as configured in the Shelly App +channel-type.shelly.uptime.label = Uptime +channel-type.shelly.uptime.description = Number of seconds since the device was powered up +channel-type.shelly.heartBeat.label = Last Heartbeat +channel-type.shelly.heartBeat.description = Last time we received a signal from the device (API result or sensor report), This indicates that device communication works on the network layer (WiFi + IP) +channel-type.shelly.updateAvailable.label = Update available +channel-type.shelly.updateAvailable.description = ON: A firmware update is available (use the Shelly App to perform update) +channel-type.shelly.deviceTemp.label = Internal Temperature +channel-type.shelly.deviceTemp.description = Internal device temperature, helps to detect overheating due to installation issues +channel-type.shelly.supplyVoltage.label = Supply Voltage +channel-type.shelly.supplyVoltage.description = External voltage supplied to the device +channel-type.shelly.lastUpdate.label = Last Update +channel-type.shelly.lastUpdate.description = Timestamp of last status update +channel-type.shelly.lastEvent.label = Event +channel-type.shelly.lastEvent.description = Event Type (S=Short push, SS=Double-Short push, SSS=Triple-Short push, L=Long push, SL=Short-Long push, LS=Long-Short push) +channel-type.shelly.lastEvent.state.option.S = Short push +channel-type.shelly.lastEvent.state.option.SS = Double-Short push +channel-type.shelly.lastEvent.state.option.SSS = Triple-Short push +channel-type.shelly.lastEvent.state.option.L = Long push +channel-type.shelly.lastEvent.state.option.SL = Short-Long push +channel-type.shelly.lastEvent.state.option.LS = Long-Short push +channel-type.shelly.eventCount.label = Event Count +channel-type.shelly.eventCount.description = Event Count +channel-type.shelly.eventTrigger.label = Event +channel-type.shelly.eventTrigger.description = Event Trigger (ROLLER_OPEN/ROLLER_CLOSE/ROLLER_STOP) +channel-type.shelly.eventTrigger.option.ROLLER_OPEN = Roller is open +channel-type.shelly.eventTrigger.option.ROLLER_CLOSE = Roller is closed +channel-type.shelly.eventTrigger.option.ROLLER_STOP = Roller has stopped +channel-type.shelly.alarmTrigger.label = Alarm +channel-type.shelly.alarmTrigger.description = Alarm Trigger, e.g. weak WiFi Signal detected or over heating +channel-type.shelly.alarmTrigger.option.NONE = None +channel-type.shelly.alarmTrigger.option.WEAK_SIGNAL = Weak WiFi +channel-type.shelly.alarmTrigger.option.RESTARTED = Device restarted +channel-type.shelly.alarmTrigger.option.OVERTEMP = Device is overheating +channel-type.shelly.alarmTrigger.option.OVERLOAD = Device is overloaded +channel-type.shelly.alarmTrigger.option.OVERPOWER = Device is over max power +channel-type.shelly.alarmTrigger.option.LOAD_ERROR = Load error +channel-type.shelly.alarmTrigger.option.LOW_BATTERY = Low battery +channel-type.shelly.alarmTrigger.option.BATTERY = Wakeup by battery +channel-type.shelly.alarmTrigger.option.POWERON = Device was powered on +channel-type.shelly.alarmTrigger.option.BUTTON = Button was pressed +channel-type.shelly.alarmTrigger.option.SENSOR = Sensor data updated +channel-type.shelly.alarmState.label = Alarm State +channel-type.shelly.alarmState.description = Alarm State (Unknown/None/Mild/Heavy/Test) +channel-type.shelly.alarmState.state.option.unknown = Unknown +channel-type.shelly.alarmState.state.option.none = None +channel-type.shelly.alarmState.state.option.mild = Mild +channel-type.shelly.alarmState.state.option.heavy = Heavy +channel-type.shelly.alarmState.state.option.test = Test +channel-type.shelly.selfTest.label = Self Test +channel-type.shelly.selfTest.description = Self Test Status/Result +channel-type.shelly.selfTest.state.option.not_completed = Not completed +channel-type.shelly.selfTest.state.option.completed = Completed +channel-type.shelly.selfTest.state.option.running = Running +channel-type.shelly.selfTest.state.option.pending = Pending +channel-type.shelly.selfTest.state.option.unknown = Unknown +channel-type.shelly.sensorError.label = Last Error +channel-type.shelly.sensorError.description = Only valid in case of error +channel-type.shelly.sensorSleepTime.label = Sensor Sleep Time +channel-type.shelly.sensorSleepTime.description = The sensor will not send notifications and will not perform actions until the specified time expires (0=disable) +channel-type.shelly.deviceSchedule.label = Schedule active +channel-type.shelly.deviceSchedule.description = ON: A scheduled program is active # Shelly Manager message.manager.invalid-url = Invalid URL or syntax diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly_de.properties b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly_de.properties index 31e46b42c..c0290227a 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly_de.properties +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly_de.properties @@ -1,53 +1,505 @@ +# binding +binding.shelly.name = Shelly Binding +binding.shelly.description = Dieses Binding integriert Shelly-Komponenten, die ber WiFi gesteuert werden knnen. binding.shelly.config.defaultUserId.label = Standardbenutzerkennung -binding.shelly.config.defaultUserId.description = Sofern konfiguriert, wird diese für den Zugriff auf das Gerät verwendet, wenn in der Thing-Konfiguration keine angegeben ist. -binding.shelly.config.defaultPassword.label = Passwort -binding.shelly.config.defaultPassword.description = Dieses Passwort wird für den Gerätezugriff verwendet, wenn in der Thing-Konfiguration keines gesetzt ist. -binding.shelly.config.localIP.label = IP-Adresse -binding.shelly.config.localIP.description = Lokale IP-Adresse der Netzwerk-Schnittstelle, welche für Verbindungen genutzt wird (CoIoT Listen und http-Callback). Default\: Voreingestelltes Interface aus der openHAB Netzwerkkonfiguration. +binding.shelly.config.defaultUserId.description = Sofern konfiguriert, wird diese fr den Zugriff auf das Gert verwendet, wenn in der Thing-Konfiguration keine angegeben ist. +binding.shelly.config.defaultPassword.label = Standardpasswort +binding.shelly.config.defaultPassword.description = Dieses Passwort wird fr den Gertezugriff verwendet, wenn in der Thing-Konfiguration keines gesetzt ist. +binding.shelly.config.localIP.label = Host Interface IP +binding.shelly.config.localIP.description = Lokale IP-Adresse der Netzwerk-Schnittstelle, welche fr Verbindungen genutzt wird (CoIoT Listen und http-Callback). Default: Voreingestelltes Interface aus der openHAB Netzwerkkonfiguration. binding.shelly.config.autoCoIoT.label = Auto-CoIoT -binding.shelly.config.autoCoIoT.description = Bei aktiviertem Auto-CoIoT wird das Protokoll aktiviert, sobald das Gerät eine Firmwareversion 1.6 oder neuer verwendet. Andernfalls wird dies über die Thing-Konfiguration gesteuert. +binding.shelly.config.autoCoIoT.description = Bei aktiviertem Auto-CoIoT wird das Protokoll aktiviert, sobald das Gert eine Firmwareversion 1.6 oder neuer verwendet. Andernfalls wird dies ber die Thing-Konfiguration gesteuert. # Config status messages -config-status.error.missing-device-ip = Die IP-Adresse des Shelly Gerätes ist nicht konfiguriert. +message.config-status.error.missing-device-ip = Die IP-Adresse des Shelly Gertes ist nicht konfiguriert. +message.config-status.error.missing-userid = Keine Benutzerkennung in der Thing Konfiguration # Thing status descriptions -offline.conf-error-no-credentials = Gerät ist passwortgeschützt, aber es sind keine Anmeldedaten konfiguriert. -offline.conf-error-access-denied = Der Zugriff wurde verweigert. überprüfen Sie die konfigurierten Zugangsdaten, oder setzen diese entsprechend (analog zur Shelly App). -offline.conf-error-wrong-mode = Das Gerät befindet sich nicht mehr in der konfigurierten Betriebsart {0}, erwartet {1}. Löschen Sie das Gerät und führen Sie eine erneute Geräteerkennung durch. -offline.status-error-timeout = Das Gerät ist nicht erreichbar (API Timeout). -offline.status-error-unexpected-api-result = Es trat ein unerwartetes Problem beim API-Zugriff auf. Überprüfen Sie die Logdatei für genauere Informationen. -offline.status-error-watchdog = Das Gerät antwortet nicht und ist vermutlich nicht mehr verfügbar. -offline.status-error-restarted = Das Gerät wurde neu gestartet und wird erneut initialisiert. -offline.status-error-fwupgrade = Firmware-Update läuft +message.offline.conf-error-no-credentials = Gert ist passwortgeschtzt, aber es sind keine Anmeldedaten konfiguriert. +message.offline.conf-error-access-denied = Der Zugriff wurde verweigert. berprfen Sie die konfigurierten Zugangsdaten, oder setzen diese entsprechend (analog zur Shelly App). +message.offline.conf-error-wrong-mode = Das Gert befindet sich nicht mehr in der erwarteten Betriebsart. Lschen Sie das Gert und fhren Sie eine erneute Gerteerkennung durch. +message.offline.status-error-timeout = Das Gert ist nicht erreichbar (API Timeout). +message.offline.status-error-unexpected-api-result = Es trat ein unerwartetes Problem beim API-Zugriff auf. berprfen Sie die Logdatei fr genauere Informationen. +message.offline.status-error-watchdog = Das Gert antwortet nicht und ist vermutlich nicht mehr verfgbar. +message.offline.status-error-restarted = Das Gert wurde neu gestartet und wird erneut initialisiert. +message.offline.status-error-fwupgrade = Gertesoftware wird aktualisiert -message.versioncheck.failed = Firmware-Version kann nicht überprüft werden\: {0} -message.versioncheck.beta = Gerät verwendet eine Beta-Version\: {0}/{1}. -message.versioncheck.tooold = WARNUNG\: Firmware könnte zu alt sein, installiert\: {0}/{1}, Minimum {3} erforderlich. -message.versioncheck.update = INFO\: Neue Firmware verfügbar\: aktuelle Version\: {0}, neue Version\: {1} -message.versioncheck.autocoiot = INFO\: Die Firmware unterstützt die Anforderung, Auto-CoIoT wurde aktiviert. -message.roller.calibrating = Das Gerät ist nicht kalibriert. Es ist eine Kalibrierung mit der Shelly App erforderlich. -message.init.noipaddress = Es konnte keine lokale IP-Adresse ermittelt werden. Bitte sicherstellen, dass IPv4 aktiviert ist und das richtige Interface in der openHAB Netzwerk-Konfiguration ausgewählt ist. -message.init.protected = Das Gerät ist passwortgeschützt, die Zugangsdaten müssen in der Thing Konfiguration hinterlegt werden. -message.command.failed = FEHLER\: Der Befehl {0} für Kanal {1} kann nicht verarbeitet werden -message.command.init = Thing aktuell nicht initialisiert, der Befehl {0} führt zur Initialisierung -message.status.unknown.initializing = Initialisierung oder Gerät im Schlafmodus. +# General messages +message.versioncheck.failed = Firmware-Version konnte nicht geprft werden: {0} +message.versioncheck.beta = Es wurde eine Betaversion erkannt: {0}/{1}. +message.versioncheck.tooold = ACHTUNG: Eine alte Firmware wurde erkannt: {0}/{1}, minimal erforderlich {2}. +message.versioncheck.update = INFO: Eine neue Firmwareversion ist verfgbar, aktuell: {0}, neu: {1} +message.versioncheck.autocoiot = INFO: Die Firmware untersttzt die Anforderung, Auto-CoIoT wurde aktiviert. +message.init.noipaddress = Es konnte keine lokale IP-Adresse ermittelt werden. Bitte sicherstellen, dass IPv4 aktiviert ist und das richtige Interface in der openHAB Netzwerk-Konfiguration ausgewhlt ist. +message.init.protected = Das Gert ist passwortgeschtzt, die Zugangsdaten mssen in der Thing Konfiguration hinterlegt werden. +message.command.failed = FEHLER: Der Befehl {0} fr Kanal {1} kann nicht verarbeitet werden +message.command.init = Thing aktuell nicht initialisiert, der Befehl {0} fhrt zur Initialisierung +message.status.unknown.initializing = Initialisierung oder Gert im Schlafmodus. message.statusupdate.failed = Status konnte nicht aktualisiert werden -message.event.triggered = Event erzeugt\: {0} -message.coap.init.failed = CoAP/CoIoT konnte nicht gestartet werden\: {0} -message.discovery.disabled = Das Gerät ist als "nicht erkennen" markiert und wird nicht übernommen. -message.discovery.protected = Das Gerät mit der IP-Adresse {0} ist zugriffsgeschützt und keine Zugangsdaten konfiguriert. -message.discovery.failed = Erkennung des Gerätes mit der IP-Adresse {0} ist fehlgeschlagen\: {1} -message.roller.favmissing = Positions-Favoriten werden von der installierten Firmwareversion nicht unterstützt (ab 1.9.2), oder sind nicht in der Shelly App konfiguriert. +message.status.managerstarted = Shelly Manager wurde gestartet, Aufruf mit http(s)://{0}:{1}/shelly/manager" +message.event.triggered = Event erzeugt: {0} +message.event.triggered = Event gefiltert: {0} +message.coap.init.failed = CoAP/CoIoT konnte nicht gestartet werden: {0} +message.discovery.disabled = Das Gert ist als "nicht erkennen" markiert und wird nicht bernommen. +message.discovery.protected = Das Gert mit der IP-Adresse {0} ist zugriffsgeschtzt und keine Zugangsdaten konfiguriert. +message.discovery.failed = Erkennung des Gertes mit der IP-Adresse {0} ist fehlgeschlagen +message.roller.calibrating = Das Gert ist nicht kalibriert. Es ist eine Kalibrierung mit der Shelly App erforderlich. +message.roller.favmissing = Positions-Favoriten werden von der installierten Firmwareversion nicht untersttzt (ab 1.9.2), oder sind nicht in der Shelly App konfiguriert. -# Device -channel-type.shelly.deviceName.label = Gerätename -channel-type.shelly.deviceName.description = Symbolischer Name des Gerätes (Konfiguration über Shelly App) -channel-type.shelly.sensorSleepTime.label = Sensor Standby Timer -channel-type.shelly.sensorSleepTime.description = Das Gerät sendet kein Ereignis solange die Zeitspanne nicht abgelaufen ist. +# thing types - descriptions only +thing-type.shelly.shellydevice.description = Ein passwortgeschtztes oder unbekanntes Gert +thing-type.shelly.shellyunknown.description = Das Gert wird aktuell nicht untersttzt +thing-type.shelly.shelly1.description = Shelly 1 (1x Relais) +thing-type.shelly.shelly1l.description = Shelly 1L (1x Relais, kein Neutral notwendig) +thing-type.shelly.shelly1pm.description = Shelly 1PM (1x Relais und Strommesser) +thing-type.shelly.shellyem.description = Shelly EM zur Energiemessung +thing-type.shelly.shellyem3.description = Shelly 3EM zur Energiemessung +thing-type.shelly.shelly2-relay.description = Shelly2 im Relais-Modus (2x Relais, Strommesser) +thing-type.shelly.shelly2-roller.description = Shelly2 im Rollladen-Modus (1x Rollladen, Strommesser) +thing-type.shelly.shelly25-relay.description = Shelly2.5 im Relais-Modus (2x Relais, 2x Strommesser) +thing-type.shelly.shelly25-roller.description = Shelly2.5 im Rollladen-Modus (1x Rollladen, Strommesser) +thing-type.shelly.shelly4pro.description = Shelly 4 Pro mit 4 Relais und Strommessern +thing-type.shelly.shellyplug.description = Shelly Plug als schaltbare Steckdose +thing-type.shelly.shellyplugu1.description = Shelly Plug-US als schaltbare Steckdose (110V) +thing-type.shelly.shellyplugs.description = Shelly Plug-S als schaltbare Steckdose +thing-type.shelly.shellyuni.description = Shelly UNI +thing-type.shelly.shellydimmer.description = Shelly mit Dimmer-Funktion +thing-type.shelly.shellydimmer2.description = Shelly mit Dimmer-Funktion, 2. Generation +thing-type.shelly.shellybutton1.description = Shelly Button 1 (batteriebetrieben) +thing-type.shelly.shellybutton2.description = Shelly Button 2 (batteriebetrieben) +thing-type.shelly.shellyht.description = Shelly H&T (Luftfeuchtigkeit- und Temperatursensor) +thing-type.shelly.shellydw.description = Shelly Tr/Fenstersensor (batteriebetrieben) +thing-type.shelly.shellydw2.description = Shelly Tr/Fenstersensor (batteriebetrieben) +thing-type.shelly.shellysmoke.description = Shelly Rauchmelder (batteriebetrieben) +thing-type.shelly.shellyflood.description = Shelly Wassermelder (batteriebetrieben) +thing-type.shelly.shellysense.description = Shelly Bewegungsmelder und IR Sender +thing-type.shelly.shellybulb.description = Shelly dimmbare Glhbirne (Farb- und Weimodus) +thing-type.shelly.shellybulbduo.description = Shelly Duo dimmbare Glhbirne (Kalt- und Warmwei) +thing-type.shelly.shellycolorbulb.description = Shelly dimmbare Glhbirne (Farb- und Weimodus) +thing-type.shelly.shellyvintage.description = Shelly dimmbare Vintage Glhbirne +thing-type.shelly.shellyrgbw2-color.description = Shelly RGBW-Controller im Farbmodus +thing-type.shelly.shellyrgbw2-white.description = Shelly RGBW-Controller im Wei-Modus, 4 Streifen +thing-type.shelly.shellymotion.description = Shelly Motion (Bewegungssensor, batteriebetrieben) +thing-type.shelly.shellymtrv.description = Shelly TRV (Heizkrperventiel, batteriebetrieben) +thing-type.shelly.shellygas.description = Shelly Gas (Gassensor - Gasleck Erkennung) +thing-type.shelly.shellytrv.description = Shelly TRV (Heizungsventil, batteriebetrieben) +thing-type.shelly.shellyix3.description = Shelly i3 (3x Eingang, Steuert andere Shelly-Gerte im Netzwerk) -# Relay, external sensors +# thing config - shellydevice +thing-type.config.shellydevice.userId.label = Benutzer +thing-type.config.shellydevice.userId.description = Benutzerkennung fr API-Zugriff +thing-type.config.shellydevice.password.label = Passwort +thing-type.config.shellydevice.password.description = Passwort fr API-Zugriff +thing-type.config.shellydevice.deviceIp.label = IP Adresse +thing-type.config.shellydevice.deviceIp.description = IP Adresse der Shelly-Komponente + +# thing config - relay +thing-type.config.shelly.relay.userId.label = Benutzer +thing-type.config.shelly.relay.userId.description = Benutzerkennung fr API-Zugriff +thing-type.config.shelly.relay.password.label = Passwort +thing-type.config.shelly.relay.password.description = Passwort fr API-Zugriff +thing-type.config.shelly.relay.deviceIp.label = IP Adresse +thing-type.config.shelly.relay.deviceIp.description = IP Adresse der Shelly-Komponente +thing-type.config.shelly.relay.eventsButton.label = Button Events +thing-type.config.shelly.relay.eventsButton.description = Aktiviert die Button Action URLS +thing-type.config.shelly.relay.eventsPush.label = Push Events +thing-type.config.shelly.relay.eventsPush.description = Aktiviert die Push Button Action URLS +thing-type.config.shelly.relay.eventsSwitch.label = Output Events +thing-type.config.shelly.relay.eventsSwitch.description = Aktiviert die Output Action URLS +thing-type.config.shelly.relay.eventsCoIoT.label = CoIoT aktivieren +thing-type.config.shelly.relay.eventsCoIoT.description = Aktiviert CoIoT-Protokoll (CoAP-basiert) +thing-type.config.shelly.relay.updateInterval.label = Status-Intervall +thing-type.config.shelly.relay.updateInterval.description = Intervall fr die Hintergundaktualisierung + +# thing config - roller +thing-type.config.shelly.roller.userId.label = Benutzer +thing-type.config.shelly.roller.userId.description = Benutzerkennung fr API-Zugriff +thing-type.config.shelly.roller.password.label = Passwort +thing-type.config.shelly.roller.password.description = Passwort fr API-Zugriff +thing-type.config.shelly.roller.favoriteUP.label = Favoriten ID fr UP +thing-type.config.shelly.roller.favoriteUP.description = Gibt die Favoriten ID an, die beim Command UP auf den roller#control channel verwendet wird (Konfiguration in der Shelly App) +thing-type.config.shelly.roller.favoriteDOWN.label = Favoriten ID fr DOWN +thing-type.config.shelly.roller.favoriteDOWN.description = Gibt die Favoriten ID an, die beim Command DOWN auf den roller#control channel verwendet wird (Konfiguration in der Shelly App) +thing-type.config.shelly.roller.deviceIp.label = IP Adresse +thing-type.config.shelly.roller.deviceIp.description = IP Adresse der Shelly-Komponente +thing-type.config.shelly.roller.eventsRoller.label = Rollladen-Events +thing-type.config.shelly.roller.eventsRoller.description = Aktiviert die Roller Action URLS +thing-type.config.shelly.roller.eventsCoIoT.label = CoIoT aktivieren +thing-type.config.shelly.roller.eventsCoIoT.description = Aktiviert CoIoT-Protokoll (CoAP-basiert) +thing-type.config.shelly.roller.updateInterval.label = Status-Intervall +thing-type.config.shelly.roller.updateInterval.description = Intervall fr die Hintergundaktualisierung + +# thing config - dimmer +thing-type.config.shelly.dimmer.userId.label = Benutzer +thing-type.config.shelly.dimmer.userId.description = Benutzerkennung fr API-Zugriff +thing-type.config.shelly.dimmer.password.label = Passwort +thing-type.config.shelly.dimmer.password.description = Passwort fr API-Zugriff +thing-type.config.shelly.dimmer.deviceIp.label = IP Adresse +thing-type.config.shelly.dimmer.deviceIp.description = IP Adresse der Shelly-Komponente +thing-type.config.shelly.dimmer.brightnessAutoOn.label = Helligkeit Auto-EIN +thing-type.config.shelly.dimmer.brightnessAutoOn.description = an: Licht wird eingeschaltet, wenn ein Helligkeitswert grer 0 gesetzt wird; aus: Helligkeit wird gesetzt, aber das Gert nicht eingeschaltet +thing-type.config.shelly.dimmer.eventsButton.label = Button Events +thing-type.config.shelly.dimmer.eventsButton.description = Aktiviert die Button Action URLS +thing-type.config.shelly.dimmer.eventsPush.label = Push Events +thing-type.config.shelly.dimmer.eventsPush.description = Aktiviert die Push Button Action URLS +thing-type.config.shelly.dimmer.eventsSwitch.label = Output Events +thing-type.config.shelly.dimmer.eventsSwitch.description = Aktiviert die Output Action URLS +thing-type.config.shelly.dimmer.eventsCoIoT.label = CoIoT aktivieren +thing-type.config.shelly.dimmer.eventsCoIoT.description = Aktiviert CoIoT-Protokoll (CoAP-basiert) +thing-type.config.shelly.dimmer.updateInterval.label = Status-Intervall +thing-type.config.shelly.dimmer.updateInterval.description = Intervall fr die Hintergundaktualisierung + +# thing config - light +thing-type.config.shelly.light.userId.label = Benutzer +thing-type.config.shelly.light.userId.description = Benutzerkennung fr API-Zugriff +thing-type.config.shelly.light.password.label = Passwort +thing-type.config.shelly.light.password.description = Passwort fr API-Zugriff +thing-type.config.shelly.light.deviceIp.label = IP Adresse +thing-type.config.shelly.light.deviceIp.description = IP Adresse der Shelly-Komponente +thing-type.config.shelly.light.brightnessAutoOn.label = Helligkeit Auto-EIN +thing-type.config.shelly.light.brightnessAutoOn.description = AN: Setzen einer Helligkeit > 0 schaltet das Gert automatisch ein; AUS: Gertestatus wird nicht gendert +thing-type.config.shelly.light.eventsButton.label = Button Events +thing-type.config.shelly.light.eventsButton.description = Aktiviert die Button Action URLS +thing-type.config.shelly.light.eventsPush.label = Push Events +thing-type.config.shelly.light.eventsPush.description = Aktiviert die Push Button Action URLS +thing-type.config.shelly.light.eventsSwitch.label = Output Events +thing-type.config.shelly.light.eventsSwitch.description = Aktiviert die Output Action URLS +thing-type.config.shelly.light.eventsCoIoT.label = CoIoT aktivieren +thing-type.config.shelly.light.eventsCoIoT.description = Aktiviert CoIoT-Protokoll (CoAP-basiert) +thing-type.config.shelly.light.updateInterval.label = Status-Intervall +thing-type.config.shelly.light.updateInterval.description = Intervall fr die Hintergrundaktualisierung + +# thing config - RGBW2 +thing-type.config.shelly.rgbw2.userId.label = Benutzer +thing-type.config.shelly.rgbw2.userId.description = Benutzerkennung fr API-Zugriff +thing-type.config.shelly.rgbw2.password.label = Passwort +thing-type.config.shelly.rgbw2.password.description = Passwort fr API-Zugriff +thing-type.config.shelly.rgbw2.deviceIp.label = IP Adresse +thing-type.config.shelly.rgbw2.deviceIp.description = IP Adresse der Shelly-Komponente +thing-type.config.shelly.rgbw2.brightnessAutoOn.label = Helligkeit Auto-EIN +thing-type.config.shelly.rgbw2.brightnessAutoOn.description = AN: Setzen einer Helligkeit > 0 schaltet das Gert automatisch ein; AUS: Gertestatus wird nicht gendert +thing-type.config.shelly.rgbw2.eventsCoIoT.label = CoIoT aktivieren +thing-type.config.shelly.rgbw2.eventsCoIoT.description = Aktiviert CoIoT-Protokoll (CoAP-basiert) +thing-type.config.shelly.rgbw2.updateInterval.label = Status-Intervall +thing-type.config.shelly.rgbw2.updateInterval.description = Intervall fr die Hintergrundaktualisierung + +# thing config - battery +thing-type.config.shelly.battery.userId.label = Benutzer +thing-type.config.shelly.battery.userId.description = Benutzerkennung fr API-Zugriff +thing-type.config.shelly.battery.password.label = Passwort +thing-type.config.shelly.battery.password.description = Passwort fr API-Zugriff +thing-type.config.shelly.battery.deviceIp.label = IP Adresse +thing-type.config.shelly.battery.deviceIp.description = IP Adresse der Shelly-Komponente +thing-type.config.shelly.battery.eventsSensorReport.label = Sensor Events +thing-type.config.shelly.battery.eventsSensorReport.description = Aktiviert die Sensor Action URLS +thing-type.config.shelly.battery.eventsCoIoT.label = CoIoT aktivieren +thing-type.config.shelly.battery.eventsCoIoT.description = Aktiviert CoIoT-Protokoll (CoAP-basiert) +thing-type.config.shelly.battery.lowBattery.label = Batterieladung niedrig (%) +thing-type.config.shelly.battery.lowBattery.description = Ein Alarm wird ausgelst, wenn das Gert eine Batterieladung kleiner diesem Schwellwert meldet. Default: 20% +thing-type.config.shelly.battery.updateInterval.label = Status-Intervall +thing-type.config.shelly.battery.updateInterval.description = Intervall fr die Hintergundaktualisierung + +# channel-groups +thing-type.shelly.shelly1.group.relay.label = Relais +thing-type.shelly.shelly1.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly1.group.sensors.label = Externe Sensoren +thing-type.shelly.shelly1.group.sensors.description = Temperaturwerte der externen Sensoren (nur wenn angeschlossen) +thing-type.shelly.shelly1.group.device.label = Gertestatus +thing-type.shelly.shelly1.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shelly1pm.group.relay.label = Relais +thing-type.shelly.shelly1pm.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly1pm.group.meter.label = Verbrauch +thing-type.shelly.shelly1pm.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly1pm.group.sensors.label = Externe Sensoren +thing-type.shelly.shelly1pm.group.sensors.description = Werte der externen Sensoren (nur wenn angeschlossen) +thing-type.shelly.shelly1pm.group.device.label = Gertestatus +thing-type.shelly.shelly1pm.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shelly1l.group.relay.label = Relais +thing-type.shelly.shelly1l.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly1l.group.meter.label = Verbrauch +thing-type.shelly.shelly1l.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly1l.group.sensors.label = Externe Sensoren +thing-type.shelly.shelly1l.group.sensors.description = Temperaturwerte der externen Sensoren (nur wenn angeschlossen) +thing-type.shelly.shelly1l.group.device.label = Gertestatus +thing-type.shelly.shelly1l.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyem.group.relay.label = Relais +thing-type.shelly.shellyem.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellyem.group.meter1.label = Verbrauch 1 +thing-type.shelly.shellyem.group.meter1.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyem.group.meter2.label = Verbrauch 2 +thing-type.shelly.shellyem.group.meter2.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyem.group.device.label = Gertestatus +thing-type.shelly.shellyem.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyem3.group.relay.label = Relais +thing-type.shelly.shellyem3.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellyem3.group.meter1.label = Verbrauch 1 +thing-type.shelly.shellyem3.group.meter1.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyem3.group.meter2.label = Verbrauch 2 +thing-type.shelly.shellyem3.group.meter2.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyem3.group.meter3.label = Verbrauch 3 +thing-type.shelly.shellyem3.group.meter3.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyem3.group.device.label = Gertestatus +thing-type.shelly.shellyem3.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shelly2-relay.group.relay1.label = Relais 1 +thing-type.shelly.shelly2-relay.group.relay1.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly2-relay.group.relay2.label = Relais 2 +thing-type.shelly.shelly2-relay.group.relay2.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly2-relay.group.meter.label = Verbrauch +thing-type.shelly.shelly2-relay.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly2-relay.group.device.label = Gertestatus +thing-type.shelly.shelly2-relay.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shelly2-roller.group.roller.label = Rollladen +thing-type.shelly.shelly2-roller.group.roller.description = Rollladensteuerung und Status +thing-type.shelly.shelly2-roller.group.meter.label = Verbrauch +thing-type.shelly.shelly2-roller.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly2-roller.group.device.label = Gertestatus +thing-type.shelly.shelly2-roller.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shelly25-relay.group.relay1.label = Relais 1 +thing-type.shelly.shelly25-relay.group.relay1.description = Relais Ein-/Ausgnge und -Funktionen +thing-type.shelly.shelly25-relay.group.relay2.label = Relais 2 +thing-type.shelly.shelly25-relay.group.relay2.description = Relais Ein-/Ausgnge und -Funktionen +thing-type.shelly.shelly25-relay.group.meter1.label = Verbrauch 1 +thing-type.shelly.shelly25-relay.group.meter1.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly25-relay.group.meter2.label = Verbrauch 2 +thing-type.shelly.shelly25-relay.group.meter2.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly25-relay.group.device.label = Gertestatus +thing-type.shelly.shelly25-relay.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shelly25-roller.group.roller.label = Rollladen +thing-type.shelly.shelly25-roller.group.roller.description = Rollladensteuerung und Status +thing-type.shelly.shelly25-roller.group.meter.label = Verbrauch +thing-type.shelly.shelly25-roller.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly25-roller.group.device.label = Gertestatus +thing-type.shelly.shelly25-roller.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shelly4pro.group.relay1.label = Relais 1 +thing-type.shelly.shelly4pro.group.relay1.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly4pro.group.relay2.label = Relais 2 +thing-type.shelly.shelly4pro.group.relay2.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly4pro.group.relay3.label = Relais 3 +thing-type.shelly.shelly4pro.group.relay3.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly4pro.group.relay4.label = Relais 4 +thing-type.shelly.shelly4pro.group.relay4.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shelly4pro.group.meter1.label = Verbrauch 1 +thing-type.shelly.shelly4pro.group.meter1.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly4pro.group.meter2.label = Verbrauch 2 +thing-type.shelly.shelly4pro.group.meter2.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly4pro.group.meter3.label = Verbrauch 3 +thing-type.shelly.shelly4pro.group.meter3.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly4pro.group.meter4.label = Verbrauch 4 +thing-type.shelly.shelly4pro.group.meter4.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shelly4pro.group.device.label = Gertestatus +thing-type.shelly.shelly4pro.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyplug.group.relay.label = Relais +thing-type.shelly.shellyplug.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellyplug.group.meter.label = Verbrauch +thing-type.shelly.shellyplug.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyplug.group.device.label = Gertestatus +thing-type.shelly.shellyplug.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyplugs.group.relay.label = Relais +thing-type.shelly.shellyplugs.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellyplugs.group.meter.label = Verbrauch +thing-type.shelly.shellyplugs.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyplugs.group.device.label = Gertestatus +thing-type.shelly.shellyplugs.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyplugu1.group.relay.label = Relais +thing-type.shelly.shellyplugu1.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellyplugu1.group.meter.label = Verbrauch +thing-type.shelly.shellyplugu1.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyplugu1.group.device.label = Gertestatus +thing-type.shelly.shellyplugu1.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyuni.group.relay1.label = Relais 1 +thing-type.shelly.shellyuni.group.relay1.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellyuni.group.relay2.label = Relais 2 +thing-type.shelly.shellyuni.group.relay2.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellyuni.group.sensors.label = Sensordaten +thing-type.shelly.shellyuni.group.sensors.description = Daten der angeschlossenen Sensoren +thing-type.shelly.shellyuni.group.device.label = Gertestatus +thing-type.shelly.shellyuni.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellydimmer.group.relay.label = Relais +thing-type.shelly.shellydimmer.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellydimmer.group.meter.label = Verbrauch +thing-type.shelly.shellydimmer.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellydimmer.group.device.label = Gertestatus +thing-type.shelly.shellydimmer.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellydimmer2.group.relay.label = Relais +thing-type.shelly.shellydimmer2.group.relay.description = Relais Ein-/Ausgnge und Status +thing-type.shelly.shellydimmer2.group.meter.label = Verbrauch +thing-type.shelly.shellydimmer2.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellydimmer2.group.device.label = Gertestatus +thing-type.shelly.shellydimmer2.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyix3.group.status1.label = Eingang 1 +thing-type.shelly.shellyix3.group.status1.description = Status Informationen zum Eingang 1 +thing-type.shelly.shellyix3.group.status2.label = Eingang 2 +thing-type.shelly.shellyix3.group.status2.description = Status Informationen zum Eingang 2 +thing-type.shelly.shellyix3.group.status3.label = Eingang 3 +thing-type.shelly.shellyix3.group.status3.description = Status Informationen zum Eingang 3 +thing-type.shelly.shellyix3.group.device.label = Gertestatus +thing-type.shelly.shellyix3.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellybutton1.group.status.label = Taster-Status +thing-type.shelly.shellybutton1.group.status.description = Informationen zum Gertestatus +thing-type.shelly.shellybutton1.group.battery.label = Batteriestatus +thing-type.shelly.shellybutton1.group.battery.description = Informationen zum Akku +thing-type.shelly.shellybutton1.group.device.label = Gertestatus +thing-type.shelly.shellybutton1.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellybutton2.group.status.label = Taster-Status +thing-type.shelly.shellybutton2.group.status.description = Informationen zum Gertestatus +thing-type.shelly.shellybutton2.group.battery.label = Batteriestatus +thing-type.shelly.shellybutton2.group.battery.description = Informationen zum Akku +thing-type.shelly.shellybutton2.group.device.label = Gertestatus +thing-type.shelly.shellybutton2.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellybulb.group.control.label = Steuerung +thing-type.shelly.shellybulb.group.control.description = Steuerung des Lichts +thing-type.shelly.shellybulb.group.color.label = Farbmodus +thing-type.shelly.shellybulb.group.color.description = Einstellungen fr den Farbmodus +thing-type.shelly.shellybulb.group.white.label = Weiwerte +thing-type.shelly.shellybulb.group.white.description = Einstellungen fr den Wei-Modus +thing-type.shelly.shellybulb.group.device.label = Gertestatus +thing-type.shelly.shellybulb.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellybulbduo.group.control.label = Steuerung +thing-type.shelly.shellybulbduo.group.control.description = Steuerung des Lichts +thing-type.shelly.shellybulbduo.group.white.label = Weiwerte +thing-type.shelly.shellybulbduo.group.white.description = Einstellungen fr den Wei-Modus +thing-type.shelly.shellybulbduo.group.meter.label = Verbrauch +thing-type.shelly.shellybulbduo.group.meter.description = Verbrauchswerte +thing-type.shelly.shellybulbduo.group.device.label = Gertestatus +thing-type.shelly.shellybulbduo.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellycolorbulb.group.control.label = Steuerung +thing-type.shelly.shellycolorbulb.group.control.description = Steuerung des Lichts +thing-type.shelly.shellycolorbulb.group.white.label = Weiwerte +thing-type.shelly.shellycolorbulb.group.white.description = Einstellungen fr den Wei-Modus +thing-type.shelly.shellycolorbulb.group.meter.label = Verbrauch +thing-type.shelly.shellycolorbulb.group.meter.description = Verbrauchswerte +thing-type.shelly.shellycolorbulb.group.device.label = Gertestatus +thing-type.shelly.shellycolorbulb.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyvintage.group.control.label = Steuerung +thing-type.shelly.shellyvintage.group.control.description = Steuerung des Lichts +thing-type.shelly.shellyvintage.group.white.label = Steuerung +thing-type.shelly.shellyvintage.group.white.description = Gerteeinstellungen +thing-type.shelly.shellyvintage.group.meter.label = Verbrauch +thing-type.shelly.shellyvintage.group.meter.description = Verbrauchswerte +thing-type.shelly.shellyvintage.group.device.label = Gertestatus +thing-type.shelly.shellyvintage.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyrgbw2-color.group.control.label = Steuerung +thing-type.shelly.shellyrgbw2-color.group.control.description = Steuerung des Controllers +thing-type.shelly.shellyrgbw2-color.group.color.label = Farben +thing-type.shelly.shellyrgbw2-color.group.color.description = Farbwerte und Profile +thing-type.shelly.shellyrgbw2-color.group.meter.label = Verbrauch +thing-type.shelly.shellyrgbw2-color.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyrgbw2-color.group.device.label = Gertestatus +thing-type.shelly.shellyrgbw2-color.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyrgbw2-white.group.control.label = Steuerung +thing-type.shelly.shellyrgbw2-white.group.control.description = Lichtsteuerung +thing-type.shelly.shellyrgbw2-white.group.channel1.label = Kanal 1 +thing-type.shelly.shellyrgbw2-white.group.channel1.description = Steuerung fr Kanal 1 +thing-type.shelly.shellyrgbw2-white.group.channel2.label = Kanal 2 +thing-type.shelly.shellyrgbw2-white.group.channel2.description = Steuerung fr Kanal 2 +thing-type.shelly.shellyrgbw2-white.group.channel3.label = Kanal 3 +thing-type.shelly.shellyrgbw2-white.group.channel3.description = Steuerung fr Kanal 3 +thing-type.shelly.shellyrgbw2-white.group.channel4.label = Kanal 4 +thing-type.shelly.shellyrgbw2-white.group.channel4.description = Steuerung fr Kanal 4 +thing-type.shelly.shellyrgbw2-white.group.meter.label = Verbrauch +thing-type.shelly.shellyrgbw2-white.group.meter.description = Verbrauchswerte und andere Informationen +thing-type.shelly.shellyrgbw2-white.group.device.label = Gertestatus +thing-type.shelly.shellyrgbw2-white.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyht.group.sensors.label = Sensorwerte +thing-type.shelly.shellyht.group.sensors.description = Messwerte und Status des Sensors +thing-type.shelly.shellyht.group.battery.label = Batterie-Status +thing-type.shelly.shellyht.group.battery.description = Informationen zum Akku +thing-type.shelly.shellyht.group.device.label = Gertestatus +thing-type.shelly.shellyht.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellyflood.group.sensors.label = Sensorwerte +thing-type.shelly.shellyflood.group.sensors.description = Messwerte und Status des Sensors +thing-type.shelly.shellyflood.group.battery.label = Batterie-Status +thing-type.shelly.shellyflood.group.battery.description = Informationen zum Akku +thing-type.shelly.shellyflood.group.device.label = Gertestatus +thing-type.shelly.shellyflood.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellydw.group.sensors.label = Sensordaten +thing-type.shelly.shellydw.group.sensors.description = Messwerte und Status des Sensors +thing-type.shelly.shellydw.group.battery.label = Batterie-Status +thing-type.shelly.shellydw.group.battery.description = Informationen zum Akku +thing-type.shelly.shellydw.group.device.label = Gertestatus +thing-type.shelly.shellydw.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellydw2.group.sensors.label = Sensordaten +thing-type.shelly.shellydw2.group.sensors.description = Messwerte und Status des Sensors +thing-type.shelly.shellydw2.group.battery.label = Batterie-Status +thing-type.shelly.shellydw2.group.battery.description = Informationen zum Akku +thing-type.shelly.shellydw2.group.device.label = Gertestatus +thing-type.shelly.shellydw2.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellysmoke.sensors.device.label = Sensordaten +thing-type.shelly.shellysmoke.sensors.device.description = Messwerte und Status des Sensors +thing-type.shelly.shellysmoke.group.battery.label = Batterie-Status +thing-type.shelly.shellysmoke.group.battery.description = Informationen zum Akku +thing-type.shelly.shellysmoke.group.device.label = Gertestatus +thing-type.shelly.shellysmoke.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellysense.sensors.device.label = Sensordaten +thing-type.shelly.shellysense.sensors.device.description = Messwerte und Status des Sensors +thing-type.shelly.shellysense.group.device.label = Gertestatus +thing-type.shelly.shellysense.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellygas.group.sensors.label = Sensordaten +thing-type.shelly.shellygas.group.sensors.description = Messwerte und Status des Sensors +thing-type.shelly.shellygas.group.device.label = Gertestatus +thing-type.shelly.shellygas.group.device.description = Informationen zum Gertestatus +thing-type.shelly.shellymotion.group.sensors.label = Sensordaten +thing-type.shelly.shellymotion.group.sensors.description = Messwerte und Status des Sensors +thing-type.shelly.shellymotion.group.battery.label = Batteriestatus +thing-type.shelly.shellymotion.group.battery.description = Informationen zum Akku +thing-type.shelly.shellymotion.group.device.label = Gertestatus +thing-type.shelly.shellymotion.group.device.description = Informationen zum Gertestatus + +# channel groups +channel-group-type.shelly.sensorData.label = Sensordaten +channel-group-type.shelly.sensorData.description = Messwerte der Sensoren +channel-group-type.shelly.batteryStatus.label = Batterie-Status +channel-group-type.shelly.batteryStatus.description = Informationen zum Akku +channel-group-type.shelly.control.label = Steuerung +channel-group-type.shelly.control.description = Steuerung des Gertes +channel-group-type.shelly.buttonState.label = Taster-Status +channel-group-type.shelly.buttonState.description = Status des Tasters +channel-group-type.shelly.deviceStatus.label = Gertestatus +channel-group-type.shelly.deviceStatus.description = Informationen zum Gertestatus +channel-group-type.shelly.bulbControl.label = Lichtsteuerung +channel-group-type.shelly.bulbControl.description = Lichtsteuerung +channel-group-type.shelly.duoControl.label = Lichtsteuerung +channel-group-type.shelly.duoControl.description = Lichtsteuerung +channel-group-type.shelly.rgbw2ColorControl.label = LED-Streifen Steuerung (RGBW) +channel-group-type.shelly.rgbw2ColorControl.description = Steuerung der LED-Streifen (Farbmodus) +channel-group-type.shelly.rgbw2WhiteControl.label = LED-Streifen Steuerung (Wei) +channel-group-type.shelly.rgbw2WhiteControl.description = Steuerung der LED-Streifen (Weimodus) +channel-group-type.shelly.colorSettingsBulb.label = Farben +channel-group-type.shelly.colorSettingsBulb.description = Lichtfarben +channel-group-type.shelly.colorSettingsRGBW2.label = Farben +channel-group-type.shelly.colorSettingsRGBW2.description = Lichtfarben +channel-group-type.shelly.whiteSettings.label = Einstellungen fr den Weimodus +channel-group-type.shelly.whiteSettings.description = Anpassung des Lichtfarben wenn das Gert im Weimodus betrieben wird +channel-group-type.shelly.whiteSettingsSimple.label = Einstellungen fr den Weimodus +channel-group-type.shelly.whiteSettingsSimple.description = Anpassung des Lichtfarben wenn das Gert im Weimodus betrieben wird +channel-group-type.shelly.rgbw2Channel.label = Steuerung +channel-group-type.shelly.rgbw2Channel.description = Steuerung der Kanle und Einstellungen +channel-group-type.shelly.relayChannel.label = Relais +channel-group-type.shelly.relayChannel.description = Shelly Relais Kanal +channel-group-type.shelly.relayChannelPlug.label = Relais +channel-group-type.shelly.relayChannelPlug.description = Shelly Relais Kanal +channel-group-type.shelly.dimmerChannel.label = Dimmer +channel-group-type.shelly.dimmerChannel.description = Shelly Dimmer Kanal +channel-group-type.shelly.ix3Channel.label = Eingang +channel-group-type.shelly.ix3Channel.description = Status des Eingangs +channel-group-type.shelly.rollerControl.label = Rollladensteuerung +channel-group-type.shelly.rollerControl.description = Steuerung der Rollladen +channel-group-type.shelly.meter.label = Verbrauch +channel-group-type.shelly.meter.description = Verbrauchswerte +channel-group-type.shelly.externalSensors.label = Externe Sensoren +channel-group-type.shelly.externalSensors.description = Werte der externen Sensoren (nur wenn angeschlossen) + +# channels channel-type.shelly.outputName.label = Ausgangsname channel-type.shelly.outputName.description = Name des Relais-Ausgangs/Kanals (Konfiguration innerhalb der Shelly App) +channel-type.shelly.timerAutoOn.label = Auto-EIN Timer +channel-type.shelly.timerAutoOn.description = Wenn das Relais ausgeschaltet wird, wird dieses automatisch wieder nach n Sekunden eingeschaltet +channel-type.shelly.timerAutoOff.label = Auto-AUS Timer +channel-type.shelly.timerAutoOff.description = Wenn das Relais eingeschaltet wird, wird dieses automatisch wieder nach n Sekunden ausgeschaltet +channel-type.shelly.timerActive.label = Timer aktiv +channel-type.shelly.timerActive.description = ON: Auto-On/Off Timer ist aktiv +channel-type.shelly.temperature.label = Temperatur +channel-type.shelly.temperature.description = Vom Sensor gemessene Temperatur channel-type.shelly.temperature1.label = Temperatur 1 channel-type.shelly.temperature1.description = Temperatur des externen Sensors 1 channel-type.shelly.temperature2.label = Temperatur 2 @@ -56,79 +508,254 @@ channel-type.shelly.temperature3.label = Temperatur 3 channel-type.shelly.temperature3.description = Temperatur des externen Sensors 3 channel-type.shelly.humidity.label = Luftfeuchtigkeit channel-type.shelly.humidity.description = Relative Luftfeuchtigkeit (0..100%) +channel-type.shelly.targetTemp.label = Zieltemperatur +channel-type.shelly.targetTemp.description = Zieltemperatur in C, die erreicht werden soll im Auto-Temperatur Modus +channel-type.shelly.controlMode.label = Modus +channel-type.shelly.controlMode.description = Sensor/Steuerungsmodus +channel-type.shelly.controlMode.state.option.manual = Manuell +channel-type.shelly.controlMode.state.option.automatic = Automatisch +channel-type.shelly.controlProfile.label = Profil +channel-type.shelly.controlProfile.description = Ausgewhltes Profil +channel-type.shelly.boostControl.label = Boost-Modus +channel-type.shelly.boostControl.description = ON: Boost-Modus aktiviert (berschreibt Temperaturautomatik) +channel-type.shelly.boostTimer.label = Boost-Timer +channel-type.shelly.boostTimer.description = Anzahl Minuten, in dem die maximale Leistung erzeugt wird. +channel-type.shelly.rollerShutter.label = Rollladensteuerung (0=offen, 100=geschlossen) +channel-type.shelly.rollerShutter.description = Steuerung fr den Rollladen: UP=rauf, DOWN=runter, STOP, Position (0=offen, 100=geschlossen) +channel-type.shelly.rollerPosition.label = Rollladenposition (100=offen, 0=zu) +channel-type.shelly.rollerPosition.description = Position des Rollladen (100-0%, 100%=offen, 0%=zu) +channel-type.shelly.rollerFavorite.label = Positionsfavorit +channel-type.shelly.rollerFavorite.description = Whlt den Positionsfavoriten 1-4, Positionen werden in der Shelly App konfiguriert; 0=undefiniert (kein Favorit gewhlt) +channel-type.shelly.rollerState.label = Rollladenstatus +channel-type.shelly.rollerState.description = Zustand des Rollladen (open/closed/stopped fr geffnet/geschlossen/gestoppt). +channel-type.shelly.rollerState.state.option.open = ffnet +channel-type.shelly.rollerState.state.option.close = schliet +channel-type.shelly.rollerState.state.option.stop = gestoppt +channel-type.shelly.rollerStop.label = Stoppgrund +channel-type.shelly.rollerStop.description = Letzter Grund fr das Stoppen des Rollladens (normal=normaler Stopp, safety_switch=Sicherheits-Stopp, obstacle=Rollladen verhakt (Widerstand erkannt) +channel-type.shelly.rollerStop.state.option.normal = Normaler Stopp +channel-type.shelly.rollerStop.state.option.safety_switch = Sicherheits-Stopp +channel-type.shelly.rollerStop.state.option.obstacle = Widerstand erkannt +channel-type.shelly.rollerDirection.label = Letzte Rollladenrichtung +channel-type.shelly.rollerDirection.description = Letzte Rollladenrichtung: ffnet/schliet/gestoppt +channel-type.shelly.rollerDirection.state.option.open = ffnet +channel-type.shelly.rollerDirection.state.option.close = schliet +channel-type.shelly.rollerDirection.state.option.stop = gestoppt +channel-type.shelly.rollerSafety.label = Sicherheitsschalter +channel-type.shelly.rollerSafety.description = Status des Sicherheitsschalters +channel-type.shelly.inputState.label = Eingang +channel-type.shelly.inputState.description = Status des Relais-Eingangs +channel-type.shelly.inputState1.label = Eingang 1 +channel-type.shelly.inputState1.description = Status des Relais-Eingangs 1 +channel-type.shelly.inputState2.label = Eingang 2 +channel-type.shelly.inputState2.description = Status des Relais-Eingangs 2 +channel-type.shelly.inputState3.label = Eingang 3 +channel-type.shelly.inputState3.description = Status des Relais-Eingangs 3 +channel-type.shelly.dimmerBrightness.label = Helligkeit +channel-type.shelly.dimmerBrightness.description = Helligkeit (0-100%, 0=aus) +channel-type.shelly.whiteBrightness.label = Helligkeit +channel-type.shelly.whiteBrightness.description = Helligkeit (0-100%, 0=aus) +channel-type.shelly.meterWatts.label = Leistung +channel-type.shelly.meterWatts.description = Aktueller Stromverbrauch in Watt +channel-type.shelly.meterAccuWatts.label = Kumulierter Verbrauch +channel-type.shelly.meterAccuWatts.description = Kumulierter Verbrauch in Watt +channel-type.shelly.meterAccuTotal.label = Kumulierter Gesamtverbrauch +channel-type.shelly.meterAccuTotal.description = Kumulierter Gesamtverbrauch in kW/h +channel-type.shelly.meterAccuReturned.label = Kumulierte Einspeisung +channel-type.shelly.meterAccuReturned.description = Kumulierte Einspeisung in kW/h +channel-type.shelly.meterReactive.label = Rckstrom +channel-type.shelly.meterReactive.description = Aktueller Stromverbrauch (Watt) des Rckstroms +channel-type.shelly.lastPower1.label = Schnitt letzte Min +channel-type.shelly.lastPower1.description = Durchschnittsverbrauch der letzten Minute, 60s in Watt/Min +channel-type.shelly.meterTotal.label = Gesamtverbrauch +channel-type.shelly.meterTotal.description = Gesamtverbrauch seit Neustart in kW/h +channel-type.shelly.meterReturned.label = Einspeisung +channel-type.shelly.meterReturned.description = Einspeisung in kW/h +channel-type.shelly.meterVoltage.label = Spannung +channel-type.shelly.meterVoltage.description = Spannung in Volt +channel-type.shelly.meterCurrent.label = Stromstrke +channel-type.shelly.meterCurrent.description = Aktuelle gemessene Stromstrke +channel-type.shelly.meterPowerFactor.label = Stromfaktor +channel-type.shelly.meterPowerFactor.description = Faktor fr Strom bei Photovoltaik +channel-type.shelly.timestamp.label = Letzte Aktualisierung +channel-type.shelly.timestamp.description = Zeitstempel der letzten Aktualisierung (lokale Zeitzone) +channel-type.shelly.ledStatusDisable.label = Status-LED aus +channel-type.shelly.ledStatusDisable.description = ON: Die Status-LED am Gert ist deaktiviert +channel-type.shelly.ledPowerDisable.label = Betriebs-LED aus +channel-type.shelly.ledPowerDisable.description = ON: Die Betriebsanzeige (LED) am Gert ist deaktiviert +channel-type.shelly.colorMode.label = Farbmodus (ON=Farbe, OFF=Wei) +channel-type.shelly.colorMode.description = Betriebsart: ON: Farbe, OFF: Wei +channel-type.shelly.colorFull.label = Voll-Farbe +channel-type.shelly.colorFull.description = Ausgewhlte Farbe (rot/grn/blau/gelb/wei) wird auf volle Intensitt gesetzt (255) +channel-type.shelly.colorFull.state.option.red = Rot +channel-type.shelly.colorFull.state.option.green = Grn +channel-type.shelly.colorFull.state.option.blue = Blau +channel-type.shelly.colorFull.state.option.yellow = Gelb +channel-type.shelly.colorFull.state.option.white = Wei +channel-type.shelly.colorRed.label = Rot +channel-type.shelly.colorRed.description = Rot-Anteil des RGB-Wertes (0-255) +channel-type.shelly.colorGreen.label = Grn +channel-type.shelly.colorGreen.description = Grn-Anteil des RGB-Wertes (0-255) +channel-type.shelly.colorBlue.label = Blau +channel-type.shelly.colorBlue.description = Blau-Anteil des RGB-Wertes (0-255) +channel-type.shelly.colorWhite.label = Wei +channel-type.shelly.colorWhite.description = Wei-Anteil des RGBW-Wertes (0-255) +channel-type.shelly.colorGain.label = Verstrkung +channel-type.shelly.colorGain.description = Verstrkung des Farbwertes (0-100%) +channel-type.shelly.whiteTemp.label = Lichttemperatur +channel-type.shelly.whiteTemp.description = Temperatur des Weilichtes (Bulb/RGBW2: 3000K-6500K; Duo: 2700K-6500K) +channel-type.shelly.colorEffectBulb.label = Lichteffekt +channel-type.shelly.colorEffectBulb.description = Lichteffekt: 0: keiner, 1: Meteoritenregen, 2: Verlauf, 3: Atmen, 4: Blitzen, 5: bergang ein/aus, 6: Rot/Grn-Wechsel +channel-type.shelly.colorEffectBulb.option.0 = Aus +channel-type.shelly.colorEffectBulb.option.1 = Meteoritenregen +channel-type.shelly.colorEffectBulb.option.2 = Verlauf +channel-type.shelly.colorEffectBulb.option.3 = Atmen +channel-type.shelly.colorEffectBulb.option.4 = Blitzen +channel-type.shelly.colorEffectBulb.option.5 = bergang ein/aus +channel-type.shelly.colorEffectBulb.option.6 = Rot/Grn-Wechsel +channel-type.shelly.colorEffectRGBW2.label = Farbeffekt +channel-type.shelly.colorEffectRGBW2.description = Lichteffekt: 0: keiner, 1: Meteoritenregen, 2: Farbverlauf, 3: Blitzen +channel-type.shelly.colorEffectRGBW2.option.0 = Aus +channel-type.shelly.colorEffectRGBW2.option.1 = Meteoritenregen +channel-type.shelly.colorEffectRGBW2.option.2 = Farbverlauf +channel-type.shelly.colorEffectRGBW2.option.3 = Blitzen +channel-type.shelly.sensorTemp.label = Temperatur +channel-type.shelly.sensorTemp.description = Aktuelle Temperatur des Sensors in C +channel-type.shelly.sensorExtTemp.label = Temperatur +channel-type.shelly.sensorExtTemp.description = Aktuelle Temperatur des externen Sensors in C +channel-type.shelly.sensorExtHum.label = Luftfeuchtigkeit +channel-type.shelly.sensorExtHum.description = Relative Luftfeuchtigkeit in % +channel-type.shelly.sensorHumidity.label = Luftfeuchtigkeit +channel-type.shelly.sensorHumidity.description = Relative Luftfeuchtigkeit in % +channel-type.shelly.sensorFlood.label = Wasseralarm +channel-type.shelly.sensorFlood.description = Alarm: Es wurde Wasser erkannt +channel-type.shelly.sensorSmoke.label = Rauchalarm +channel-type.shelly.sensorSmoke.description = Alarm: Es wurde Rauch erkannt +channel-type.shelly.sensorLux.label = Helligkeit +channel-type.shelly.sensorLux.description = Helligkeit in Lux +channel-type.shelly.sensorIllumination.label = Tageslicht +channel-type.shelly.sensorIllumination.description = Erkanntes Tageslicht (bright=taghell, twilight=Dmmerung, dark=Abend/Nacht) +channel-type.shelly.sensorIllumination.state.option.dark = Dunkel +channel-type.shelly.sensorIllumination.state.option.twilight = Dmmerung +channel-type.shelly.sensorIllumination.state.option.bright = Hell +channel-type.shelly.sensorIllumination.state.option.unknown = Unbekannt +channel-type.shelly.sensorPPM.label = Gas-Konzentration +channel-type.shelly.sensorPPM.description = Gemessene Konzentration in PPM +channel-type.shelly.sensorPosition.label = Position +channel-type.shelly.sensorPosition.description = Position des Ventils +channel-type.shelly.sensorADC.label = Voltage (ADC) +channel-type.shelly.sensorADC.description = Gemessene Spannung +channel-type.shelly.sensorTilt.label = ffnungswinkel +channel-type.shelly.sensorTilt.description = ffnungswinkel in Grad (erfordert Kalibrierung in der App) +channel-type.shelly.sensorVibration.label = Vibration +channel-type.shelly.sensorVibration.description = ON: Sensor hat eine Vibration erkannt +channel-type.shelly.sensorMotion.label = Bewegung +channel-type.shelly.sensorMotion.description = ON: Es wurde eine Bewegung erkannt channel-type.shelly.motionActive.label = Bewegungssensor aktiv channel-type.shelly.motionActive.description = Zeigt an, ob die Bewegungserkennung aktiv oder pausiert ist channel-type.shelly.motionTimestamp.label = Letzte Bewegung -channel-type.shelly.motionTimestamp.description = Datum/Uhrzeit, wann die letzte Bewegung erkannt wurde. - -# Roller -channel-type.shelly.rollerState.label = Status -channel-type.shelly.rollerState.description = Zustand des Rollladen (open/closed/stopped). - - -# LED disable -channel-type.shelly.ledPowerDisable.label = Betriebs-LED aus -channel-type.shelly.ledPowerDisable.description = ON\: Die Betriebsanzeige (LED) am Gerät ist deaktiviert -channel-type.shelly.ledStatusDisable.label = Status-LED aus -channel-type.shelly.ledStatusDisable.description = ON\: Die Status-LED am Gerät ist deaktiviert - -# Shelly Manager -message.manager.invalid-url = Ungültige URL oder Syntax - -message.manager.buttons.ok = OK -message.manager.buttons.abort = Abbrechen - -message.manager.action.unknown = Aktion {0} ist unbekannt -message.manager.action.reset-stats = Statistik zurücksetzen -message.manager.action.restart = Gerät neustarten -message.manager.action.restart.info = Das Gerät wird neu gestartet und verbindet sich mit WiFi. Es wird einen Moment dauern, bis der Gerätestatus in openHAB aktualisiert wird. -message.manager.action.restart.confirm = Das Gerät wird neu gestartet und verbindet sich mit WiFi. -message.manager.action.resstats.confirm = Die Gerätestatistik und der Alarm wurden zurückgesetzt. -message.manager.action.setcloud.config = Cloud-Funktion ist jetzt {0}. -message.manager.action.protect = Gerät schützen -message.manager.action.protect.id-missing = Die Anmeldeinformationen für den Gerätezugriff sind nicht konfiguriert. Gehen Sie zu den Shelly-Bindungseinstellungen und geben Sie eine Benutzerkennung und ein Kennwort ein.
Sie können die Aktion "Schützen" verwenden, um diese Konfiguration auf das Gerät anzuwenden. -message.manager.action.protect.status = Der Geräteschutz ist derzeit {0}. Für den Zugriff auf das Gerät ist die Benutzerkennung {1} erforderlich. -message.manager.action.protect.new = Geräteanmeldung wird auf Benutzer {0} mit Passwort {1} gesetzt. -message.manager.action.protect.confirm = Geräteanmeldung wurde auf Benutzer {0} mit Passwort {1} aktualisiert. -message.manager.action.could-enable = Cloud aktivieren -message.manager.action.could-disable = Cloud deaktivieren -message.manager.action.coiot-mcast = CoIoT Multicast setzen -message.manager.action.coiot-peer = CoIoT Peer setzen -message.manager.action.timezone = Zeitzone wählen -message.manager.action.reset = Auf Werkseinstellungen zurücksetzen -message.manager.action.reset.warning = Achtung\: Mit dieser Aktion wird das Gerät auf die Werkseinstellungen zurückgesetzt.
Alle Konfigurationsdaten inkl. WiFi-Einstellungen gehen verloren und das Gerät wird in den Access Point-Modus zurückkehren (WiFi {0}) -message.manager.action.reset.confirm = Gerät wurde auf Werkseinstellungen zurückgesetzt. Verbinden Sie sich mit dem WiFi-Netzwerk {0} und öffnen Sie http\://192.168.33.1, um die Gerätekonfiguration neu zu starten. -message.manager.action.checkupd.new = Firmware-Update verfügbar\: {0} -message.manager.action.checkupd.ok = Überprüfung der Firmware abgeschlossen. Überprüfen Sie die Geräteübersicht auf eine neue Version. -message.manager.action.checkupd.runnuing = Firmware-Prüfung wurde eingeleitet. -message.manager.action.checkupd.failed = Suche nach Firmware-Aktualisierung nicht möglich\: {0} -message.manager.action.setwifirec-enable = Das Gerät führt einen automatischen Neustart durch, wenn der WiFi-Wiederherstellungsmodus aktiviert ist und das Gerät Probleme mit der WLAN-Verbindung hat. -message.manager.action.setwifirec-disable = WiFi-Wiederherstellungsmodus wird deaktiviert. -message.manager.action.setwifirec-confirm = WiFi-Wiederherstellungsmodus wurde {0}. -message.manager.action.setwifirec-failed = Einstellung für den WiFi-Wiederherstellungsmodus kann nicht aktualisiert werden\: {0} -message.manager.action.aproaming-enable = WiFi Access Point Roaming wird aktiviert. Überprüfen Sie die Produktdokumentation für Details. -message.manager.action.aproaming-disable = WiFi Access Point Roaming wird deaktiviert. -message.manager.action.aproaming-confirm = Einstellung WiFi Access Point Roaming kann nicht aktualisiert werden\: {0} -message.manager.action.aproaming-failed = Einstellung für den WiFi-Wiederherstellungsmodus kann nicht aktualisiert werden\: {0} -message.manager.action.resetsta-info = Der WiFi STA/AP Cache wird geleert und das Gerät verbindet sich erneut mit dem stärksten Access Point. -message.manager.action.resetsta-confirm = Das Gerät verbindet sich mit dem stärksten WiFi-Zugangspunkt. -message.manager.action.resetsta-failed = STA/AP-Liste konnte nicht gelöscht und erneut mit WLAN verbunden werden\: {0} -message.manager.action.debug-enable = Gerätedebugging wird aktiviert. Benutzen Sie diese Funktion nur, wenn dies vom Allterco-Support verlangt wird. -message.manager.action.debug-disable = Gerätedebugging wird deaktiviert. -message.manager.action.debug-confirm = Gerät Debugging war {0}. -message.manager.action.getdebug-failed = Debug-Log konnte nicht abgerufen werden\: {0} - -message.manager.coiot.multicast-not-supported = Das Gerät unterstützt keine CoIoT Multicast Updates.
Stelle sicher, dass du openHAB als CoIoT Peer Adresse einrichtest ({0}). -message.manager.coiot.mode-not-suppored = Gerät unterstützt den CoIoT-Modus ({0}) nicht, überprüfen Sie die Produktdokumentation. -message.manager.coiot.current-peer = CoIoT Peer Adresse ist derzeit auf {0} gesetzt. -message.manager.coiot.new-peer = CoIoT-Modus/Adresse wird auf {0} gesetzt. -message.manager.coiot.mode-mcast = Das Gerät beginnt CoIoT Updates mit IP Multicast zu senden.
Bitte stellen Sie sicher, dass Ihr Netzwerk-Setup Multicast Routing unterstützt, wenn sich Geräte in verschiedenen IP-Subnetzen befinden. -message.manager.coiot.mode-peer = Das Gerät sendet keine IP Multicast CoIoT Updates mehr an das Netzwerk, nur an den openHAB Host. - -message.manager.fwupdate.initiated = Firmware-Update gestartet, das Gerät hat den Status {0} zurückgegeben -message.manager.fwupdate.confirm = Gerät während der Aktualisierung der Firmware nicht ausschalten oder neu starten\! -message.manager.fwupdate.info = Firmware aktualisieren (deviceType\={0}, version\={1}, URL\={2}) -message.manager.fwupdate.failed = Aktualisierung der Firmware fehlgeschlagen\: {0} -message.manager.fwupdate.notfound = Firmware für Gerätetyp {0}, version\={1} (URL\={2}) wurde nicht gefunden -message.manager.fwupdate.nofile = Keine Firmware-Dateien für Gerätetyp {0} gefunden -message.manager.fwupdate.success = Firmware erfolgreich geladen - size\={0}, ETag\={1}, zuletzt geändert\={2} +channel-type.shelly.motionTimestamp.description = Datum/Uhrzeit, wann die letzte Bewegung erkannt wurde +channel-type.shelly.sensorValve.label = Ventil +channel-type.shelly.sensorValve.description = Gibt den Status des Ventils an +channel-type.shelly.sensorValve.state.option.closed = geschlossen +channel-type.shelly.sensorValve.state.option.opened = geffnet +channel-type.shelly.sensorValve.state.option.not_connected = nicht angeschlossen +channel-type.shelly.sensorValve.state.option.failure = Strung +channel-type.shelly.sensorValve.state.option.closing = schliet +channel-type.shelly.sensorValve.state.option.opening = ffnet +channel-type.shelly.sensorValve.state.option.checking = Test luft +channel-type.shelly.sensorValve.state.option.UNKNOWN = unbekannt +channel-type.shelly.sensorCharger.label = Ladestatus +channel-type.shelly.sensorCharger.description = ON: Ein Ladegert ist angeschlossen +channel-type.shelly.sensorContact.label = Status +channel-type.shelly.sensorContact.description = ffnungs-Status (OPEN=offen, CLOSED=geschlossen) +channel-type.shelly.sensorContact.state.option.OPEN = geffnet +channel-type.shelly.sensorContact.state.option.CLOSED = geschlossen +channel-type.shelly.sensorState.label = Gertestatus +channel-type.shelly.sensorState.description = Status der Betriebsbereitschaft (warmup/normal/fault) +channel-type.shelly.sensorState.state.option.warmup= Initialisierung +channel-type.shelly.sensorState.state.option.normal= Normal +channel-type.shelly.sensorState.state.option.fault= Fehler +channel-type.shelly.sensorState.state.option.unknown= Unbekannt +channel-type.shelly.sensorWakeup.label = Aufwachgrund +channel-type.shelly.sensorWakeup.description = Grund des letzten Aufweckens (button/battery/perodice/powerdown/sensor/alarm/ext_power) +channel-type.shelly.sensorWakeup.state.option.button = Taste +channel-type.shelly.sensorWakeup.state.option.battery = Batterie +channel-type.shelly.sensorWakeup.state.option.periodic = Intervall +channel-type.shelly.sensorWakeup.state.option.poweron = Betrieb +channel-type.shelly.sensorWakeup.state.option.sensor = Statusnderung +channel-type.shelly.sensorWakeup.state.option.alarm = Alarm +channel-type.shelly.sensorWakeup.state.option.ext_power = Ladegert verbunden +channel-type.shelly.batVoltage.label = Batteriespannung +channel-type.shelly.batVoltage.description = Batteriespannung in Volt (V) +channel-type.shelly.charger.label = Ladegert +channel-type.shelly.charger.description = ON: Ein Ladegert ist angeschlossen +channel-type.shelly.calibrated.label = Kalibriert +channel-type.shelly.calibrated.description = ON: Das Gert/der Sensor is kalibriert +channel-type.shelly.externalPower.label = Externe Stromquelle +channel-type.shelly.externalPower.description = ON: Externe Stromquelle ist angeschlossen +channel-type.shelly.senseKey.label = IR-Code +channel-type.shelly.senseKey.description = IR Code senden im Pronto- oder HEX64-Format +channel-type.shelly.deviceName.label = Gertename +channel-type.shelly.deviceName.description = Symbolischer Name des Gertes (Konfiguration ber Shelly App) +channel-type.shelly.uptime.label = Laufzeit +channel-type.shelly.uptime.description = Anzahl Sekunden seit dem das Gert mit Strom versorgt wurde +channel-type.shelly.heartBeat.label = Letzte Aktivitt +channel-type.shelly.heartBeat.description = Zeitpunkt der letzten Aktivitt. Hierbei kann es sich um einen erfolgreichen API-Aufruf, oder Sensor-Aktualisierung handeln. Dies schliet eine erfolgreiche Netzwerk-Kommunikation ein (WiFi + IP) +channel-type.shelly.updateAvailable.label = Firmwareaktualisierung vorhanden +channel-type.shelly.updateAvailable.description = ON: Es ist eine neuere Firmwareversion verfgbar (Update kann mit der Shelly App durchgefhrt werden) +channel-type.shelly.deviceTemp.label = Gertetemperatur +channel-type.shelly.deviceTemp.description = Interne Gertetemperatur. Hohe Temperaturen deuten ggf. auch ein Hitzestau/Installationsproblem hin. +channel-type.shelly.supplyVoltage.label = Versorgungsspannung +channel-type.shelly.supplyVoltage.description = Externe Versorgungsspannung +channel-type.shelly.lastUpdate.label = Letzte Aktualisierung +channel-type.shelly.lastUpdate.description = Zeitstempel der letzten Aktualisierung (lokale Zeitzone) +channel-type.shelly.lastEvent.label = Letztes Ereignis +channel-type.shelly.lastEvent.description = Typ des letzten Ereignisses (S=kurz, SS=2xkurz, SSS=3xkurz, L=lang) +channel-type.shelly.lastEvent.state.option.S = 1x kurz +channel-type.shelly.lastEvent.state.option.SS = 2x kurz +channel-type.shelly.lastEvent.state.option.SSS = 3x kurz +channel-type.shelly.lastEvent.state.option.L = lang +channel-type.shelly.lastEvent.state.option.SL = kurz-lang +channel-type.shelly.lastEvent.state.option.LS = lang-kurz +channel-type.shelly.eventCount.label = Ereigniszhler +channel-type.shelly.eventCount.description = Anzahl der empfangenen Ereignisse. +channel-type.shelly.eventTrigger.label = Ereignis +channel-type.shelly.eventTrigger.description = Signalisiert Ereignisse (Trigger): ROLLER_OPEN=Rollladen geffnet, ROLLER_CLOSE=Rollladen geschlossen, ROLLER_STOP=Rollladen angehalten +channel-type.shelly.eventTrigger.option.ROLLER_OPEN = Rollladen geffnet +channel-type.shelly.eventTrigger.option.ROLLER_CLOSE = Rollladen geschlossen +channel-type.shelly.eventTrigger.option.ROLLER_STOP = Rollladen gestoppt +channel-type.shelly.alarmTrigger.label = Alarm +channel-type.shelly.alarmTrigger.description = Signalisiert Alarme (Trigger): NONE=kein Alarm, WEAK_SIGNAL=Schlechte WiFi-Verbindung, RESTARTED=Gert neu gestartet, OVERTEMP=berhitzung, OVERLOAD=berlast, OVERPOWER=Maximale Last berschritten, LOAD_ERROR=Lastfehler, LOW_BATTERY=Batterie schwach +channel-type.shelly.alarmTrigger.option.NONE = kein Alarm +channel-type.shelly.alarmTrigger.option.WEAK_SIGNAL = Schlechte WiFi-Verbindung +channel-type.shelly.alarmTrigger.option.RESTARTED = Gert neu gestartet +channel-type.shelly.alarmTrigger.option.OVERTEMP = berhitzung +channel-type.shelly.alarmTrigger.option.OVERLOAD = berlast +channel-type.shelly.alarmTrigger.option.OVERPOWER = Maximale Last berschritten +channel-type.shelly.alarmTrigger.option.LOAD_ERROR = Lastfehler +channel-type.shelly.alarmTrigger.option.LOW_BATTERY = Batterieladung schwach +channel-type.shelly.alarmTrigger.option.BATTERY = Aufwecken durch Batterie +channel-type.shelly.alarmTrigger.option.POWERON = Gert wurde eingeschaltet +channel-type.shelly.alarmTrigger.option.BUTTON = Taste wurde gedrckt +channel-type.shelly.alarmTrigger.option.SENSOR = Sensordaten wurden aktualisiert +channel-type.shelly.alarmState.label = Alarmstatus +channel-type.shelly.alarmState.description = Typ des Alarms (unknown/none/mild/heavy/test) +channel-type.shelly.alarmState.state.option.unknown = Unbekannt +channel-type.shelly.alarmState.state.option.none = Kein Alarm +channel-type.shelly.alarmState.state.option.mild = Leichte Konzentration +channel-type.shelly.alarmState.state.option.heavy = Hohe Konzentration +channel-type.shelly.alarmState.state.option.test = Testknopf gedrckt +channel-type.shelly.selfTest.label = Selbsttest +channel-type.shelly.selfTest.description = Status des Selbsttests +channel-type.shelly.selfTest.state.option.not_completed = Nicht abgeschlossen +channel-type.shelly.selfTest.state.option.completed = Abgeschlossen +channel-type.shelly.selfTest.state.option.running = Test luft +channel-type.shelly.selfTest.state.option.pending = Ausstehend +channel-type.shelly.selfTest.state.option.unknown = Unbekannt +channel-type.shelly.sensorError.label = Sensor-Fehler +channel-type.shelly.sensorError.description = Sensor-Fehler +channel-type.shelly.sensorSleepTime.label = Sensor Standby Timer +channel-type.shelly.sensorSleepTime.description = Das Gert sendet kein Ereignis solange die Zeitspanne nicht abgelaufen ist +channel-type.shelly.deviceSchedule.label = Zeitplan aktiv +channel-type.shelly.deviceSchedule.description = ON: Ein zeitgesteuertes Programm ist aktiv diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/device.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/device.xml index 771997e6d..24956f05e 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/device.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/device.xml @@ -5,8 +5,8 @@ xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd"> - - Information about the device status + + @text/channel-group-type.shelly.deviceStatus.description @@ -16,88 +16,103 @@ trigger - - Alarm Trigger, e.g. weak WiFi Signal detected or over heating. + + @text/channel-type.shelly.alarmTrigger.description + Alarm - - - - - - - - - - - - + + + + + + + + + + + + String - - Last reason, which woke up the device + + @text/channel-type.shelly.sensorWakeup.description - - - - - - - + + + + + + + - + String @text/channel-type.shelly.deviceName.description + + Switch + + @text/channel-type.shelly.calibrated.description + + + Switch - - ON: Device is charging, OFF: No charger connected + + @text/channel-type.shelly.charger.description + Battery Switch - - ON: External power is connected + + @text/channel-type.shelly.externalPower.description + Status Number:Time - - Number of seconds since the device was powered up + + @text/channel-type.shelly.uptime.description + Time DateTime - - Last time we received a signal from the device (API result or sensor report), This indicates that device - communication works on the network layer (WiFi + IP). + + @text/channel-type.shelly.heartBeat.description + Time + + Timestamp + Switch - - ON: A firmware update is available (use Shelly App to perform update) + + @text/channel-type.shelly.updateAvailable.description + Status Number:Temperature - - Internal device temperature, helps to detect overheating due to installation issues + + @text/channel-type.shelly.deviceTemp.description Temperature Measurement @@ -106,18 +121,36 @@ + + Number:ElectricPotentia + + @text/channel-type.shelly.supplyVoltage.description + Energy + + Measurement + Voltage + + String - - Self Test Status/Result + + @text/channel-type.shelly.selfTest.description - - - - + + + + + + + Switch + + @text/channel-type.shelly.deviceSchedule.description + + + diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/lights.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/lights.xml index 3ce0f70fb..14cbcabac 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/lights.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/lights.xml @@ -5,8 +5,9 @@ xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd"> - - Shelly Bulb + + @text/thing-type.shelly.shellybulb.description + Lightbulb @@ -14,13 +15,14 @@ - deviceName + serviceName - Shelly Duo + @text/thing-type.shelly.shellybulbduo.description + Lightbulb @@ -28,13 +30,14 @@ - deviceName + serviceName - - Shelly Duo Color Bulb in Color or White Mode + + @text/thing-type.shelly.shellycolorbulb.description + ColorLight @@ -43,13 +46,14 @@ - deviceName + serviceName - Shelly Vintage Light Bulb + @text/thing-type.shelly.shellyvintage.description + Lightbulb @@ -57,14 +61,14 @@ - deviceName + serviceName - Shelly RGBW2 Controller - Color Mode - Lightbulb + @text/thing-type.shelly.shellyrgbw2-color.description + ColorLight @@ -72,38 +76,40 @@ - deviceName + serviceName - Shelly RGBW2 Controller - White Mode + @text/thing-type.shelly.shellyrgbw2-white.description + Lightbulb - + - + - + - + - deviceName + serviceName + - - Control your light + + @text/channel-group-type.shelly.bulbControl.description @@ -112,25 +118,30 @@ + - - Control your light + + @text/channel-group-type.shelly.duoControl.description + - - Control your light channels + + @text/channel-group-type.shelly.rgbw2ColorControl.description + - + + @text/channel-group-type.shelly.rgbw2WhiteControl.description + - - Light colors + + @text/channel-group-type.shelly.colorSettingsBulb.description @@ -142,9 +153,10 @@ + - - Light colors + + @text/channel-group-type.shelly.colorSettingsRGBW2.description @@ -156,24 +168,27 @@ + - - Adjust colors when device is in white mode + + @text/channel-group-type.shelly.whiteSettings.description + - - Adjust colors when device is in white mode + + @text/channel-group-type.shelly.whiteSettingsSimple.description + - - Switch channel and adjust settings + + @text/channel-group-type.shelly.rgbw2Channel.description @@ -185,92 +200,102 @@ Switch - - ON: Device is in color mode, OFF: Device is in White Mode + + @text/channel-type.shelly.colorMode.description + String - - Setting this channel sets the selected color to 255, all others to 0 + + @text/channel-type.shelly.colorFull.description - - - - - + + + + + + Dimmer - - red, 0..255, only in Color Mode + + @text/channel-type.shelly.colorRed.description + Dimmer - - green, 0..255, applies Color Mode + + @text/channel-type.shelly.colorGreen.description + Dimmer - - blue, 0..255, only in Color Mode + + @text/channel-type.shelly.colorBlue.description + Dimmer - - white, 0..255, applies in Color Mode + + @text/channel-type.shelly.colorWhite.description + Dimmer - - gain for all channels, 0..100, applies in Color Mode + + @text/channel-type.shelly.colorGain.description + Dimmer - - Light Temperature 2700/3000..6500K (0-100%) + + @text/channel-type.shelly.whiteTemp.description + + Dimmer - - Brightness: 0..100% - Light + + @text/channel-type.shelly.whiteBrightness.description + DimmableLight + Number - - Currently applied effect, description: 0: Off, 1: Meteor Shower, 2: Gradual Change, 3: Breath, 4: Flash, - 5: On/Off Gradual, 6: Red/Green Change + + @text/channel-type.shelly.colorEffectBulb.description - - - - - - - + + + + + + + + Number - - Currently applied effect, description: 0: Off, 1: Meteor Shower, 2: Gradual Change, 3: Flash + + @text/channel-type.shelly.colorEffectRGBW2.description - - - - + + + + diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/relay.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/relay.xml index 6f3e069c3..f0d6e3e39 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/relay.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/relay.xml @@ -5,21 +5,21 @@ xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd"> - - Shelly1 device with a single relay + + @text/thing-type.shelly.shelly1.description - deviceName + serviceName - Shelly 1L device with a single relay + @text/thing-type.shelly.shelly1l.description @@ -27,13 +27,13 @@ - deviceName + serviceName - - Shelly1PM device with single relay and power meter + + @text/thing-type.shelly.shelly1pm.description @@ -41,245 +41,248 @@ - deviceName + serviceName - - Shelly EM device with single relay and power meter + + @text/thing-type.shelly.shellyem.description - + - + - deviceName + serviceName - Shelly 3EM device with 3 power meters and a relay (thing name is shellyem3, see README) + @text/thing-type.shelly.shellyem3.description - + - + - + - deviceName + serviceName - - Shelly2 device with two relays + + @text/thing-type.shelly.shelly2-relay.description - + - + - deviceName + serviceName - - Shelly2 in Roller Mode - + + @text/thing-type.shelly.shelly2-roller.description + Rollershutter - deviceName + serviceName - - Shelly2.5 device with two relays, 2 meters + + @text/thing-type.shelly.shelly25-relay.description - + - + - + - + - deviceName + serviceName - - Shelly2 in Roller Mode - + + @text/thing-type.shelly.shelly25-roller.description + Rollershutter - deviceName + serviceName - - Shelly4Pro device with 4 relays + + @text/thing-type.shelly.shelly4pro.description - + - + - + - + - + - + - + - + - deviceName + serviceName - - Shelly Plug device with relay and power meter + + @text/thing-type.shelly.shellyplug.description + PowerOutlet - deviceName + serviceName - Shelly Plug-S with relay, meter and LED control - + @text/thing-type.shelly.shellyplugs.description + PowerOutlet - deviceName + serviceName - Shelly Plug US with relay and meter - + @text/thing-type.shelly.shellyplugu1.description + PowerOutlet - deviceName + serviceName - - Embedded Shelly device + + @text/thing-type.shelly.shellyuni.description - + - + - deviceName + serviceName - Shelly Dimmer + @text/thing-type.shelly.shellydimmer.description + DimmableLight - deviceName + serviceName - Shelly Dimmer 2 + @text/thing-type.shelly.shellydimmer2.description + DimmableLight - deviceName + serviceName - Shelly i3 Device with 3 inputs + @text/thing-type.shelly.shellyix3.description @@ -287,50 +290,43 @@ - deviceName - - - - - - Shelly UNI device - - - - - - - deviceName + serviceName - - A Shelly relay channel + + @text/channel-group-type.shelly.relayChannel.description + - - A Shelly relay channel + + @text/channel-group-type.shelly.relayChannelPlug.description + - - A Shelly Dimmer channel + + @text/channel-group-type.shelly.dimmerChannel.description + - - Input Status + + @text/channel-group-type.shelly.ix3Channel.description + - - Controlling the roller mode + + @text/channel-group-type.shelly.rollerControl.description + - - Power consumption for the relay + + @text/channel-group-type.shelly.meter.description + - - Temperatures from external sensors connected to the optional Addon + + @text/channel-group-type.shelly.externalSensors.description @@ -340,229 +336,290 @@ + Number:Time - - ON: After the output was turned off it turns on automatically after xx seconds; 0 disables the timer + + @text/channel-type.shelly.timerAutoOn.description + Time + Number:Time - - ON: After the output was turned on it turns off automatically after xx seconds; 0 disables the timer + + @text/channel-type.shelly.timerAutoOff.description + Time + Switch - - ON: A timer is active, OFF: no timer active + + @text/channel-type.shelly.timerActive.description + Status + Rollershutter - - Controls the roller + + @text/channel-type.shelly.rollerShutter.description Blinds + Dimmer - - Position the roller (100..0 in %, where 100%=open, 0%=closed) + + @text/channel-type.shelly.rollerPosition.description + Blinds + + Measurement + Level + + Number - - Set roller position by selecting favorite 1-4 (needs to be defined in the Shelly App, 0=n/a) + + @text/channel-type.shelly.rollerFavorite.description + String - - State of the roller (open/close/stop) + + @text/channel-type.shelly.rollerState.description + Status - - - + + + + String - - Last cause for stopping: normal, safety switch, obstacle + + @text/channel-type.shelly.rollerStop.description - - - + + + + String - - Last direction: open or close + + @text/channel-type.shelly.rollerDirection.description - - - + + + + Switch - - Status of the safety switch + + @text/channel-type.shelly.rollerSafety.description + Switch - - Input/Button state + + @text/channel-type.shelly.inputState.description + Switch - - Input/Button state #1 + + @text/channel-type.shelly.inputState1.description + Switch - - Input/Button state #2 + + @text/channel-type.shelly.inputState2.description + Dimmer - - Light brightness in % - Light + + @text/channel-type.shelly.dimmerBrightness.description + DimmableLight + Number:Power - - Current power consumption in Watt - - - - - Number:ElectricPotential - - Supply voltage of the device in Volt + + @text/channel-type.shelly.meterWatts.description + Energy + + Measurement + Current + + Number:Power - - Accumulated current power consumption in Watt from all meters + + @text/channel-type.shelly.meterAccuWatts.description + Energy + Number:Power - - Accumulated total power consumption from all meters + + @text/channel-type.shelly.meterAccuTotal.description + Energy + Number:Power - - Accumulated returned power consumption from all meters + + @text/channel-type.shelly.meterAccuReturned.description + Energy + Number:Power - - Instantaneous reactive power in Watts (W) + + @text/channel-type.shelly.meterReactive.description + Number:Energy - - Last power consumption #1 - one rounded minute + + @text/channel-type.shelly.lastPower1.description + Energy + Number:Energy - - Total power consumption + + @text/channel-type.shelly.meterTotal.description + Energy + Number:Energy - - Total returned energy + + @text/channel-type.shelly.meterReturned.description + Energy + Number:ElectricPotential - - RMS voltage, Volts + + @text/channel-type.shelly.meterVoltage.description + + Measurement + Voltage + + Number:ElectricPotential - - Current in A + + @text/channel-type.shelly.meterCurrent.description + Energy + + Measurement + Power + + Number - - + + @text/channel-type.shelly.meterPowerFactor.description + + DateTime - - Timestamp of last measurement + + @text/channel-type.shelly.timestamp.description + Time + + Timestamp + + Switch - - Disable LED indication for network status + + @text/channel-type.shelly.ledStatusDisable.description + Switch - - Disable LED indication for output status + + @text/channel-type.shelly.ledPowerDisable.description + DateTime - - Timestamp of last status update + + @text/channel-type.shelly.lastUpdate.description + Time + + Timestamp + + trigger - - Event Trigger, e.g. button on/off, Output on/off + + @text/channel-type.shelly.eventTrigger.description - - - + + + diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/sensor.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/sensor.xml index a57155161..06bb86dae 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/sensor.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/sensor.xml @@ -6,215 +6,293 @@ - Shelly H&T Sensor - + @text/thing-type.shelly.shellyht.description + Sensor - deviceName + serviceName - Shelly Smoke Sensor (battery powered) - + @text/thing-type.shelly.shellysmoke.description + SmokeDetector - deviceName + serviceName - Shelly Gas Sensor - + @text/thing-type.shelly.shellygas.description + Sensor - deviceName + serviceName - Shelly Flood Sensor (battery powered) + @text/thing-type.shelly.shellyflood.description + Sensor - deviceName + serviceName - Shelly Door/Window Sensor (battery powered) - + @text/thing-type.shelly.shellydw.description + Sensor - deviceName + serviceName - Shelly Door/Window 2 Sensor (battery powered) - + @text/thing-type.shelly.shellydw2.description + Sensor - deviceName + serviceName - Shelly Sense Remote IR Controller + @text/thing-type.shelly.shellysense.description - + - deviceName + serviceName - Shelly Button 1 (battery powered) - + @text/thing-type.shelly.shellybutton1.description + WallSwitch - deviceName + serviceName + + + + + + @text/thing-type.shelly.shellybutton2.description + WallSwitch + + + + + + + serviceName - - Shelly Motion Sensor (battery powered) - + + @text/thing-type.shelly.shellymotion.description + MotionDetector - deviceName + serviceName + + + @text/thing-type.shelly.shellytrv.description + RadiatorControl + + + + + + + + serviceName + + + + + String + + @text/channel-type.shelly.controlMode.description + + + + + + + + + + Number + + @text/channel-type.shelly.controlProfile.description + + + + + Number:Temperature + + @text/channel-type.shelly.targetTemp.description + Heating + + Setpoint + Temperature + + + + + + Switch + + @text/channel-type.shelly.boostControl.description + + + Number:Time + + @text/channel-type.shelly.boostTimer.description + Time + + + + - - Data from the various sensors + + @text/channel-group-type.shelly.sensorData.description - - - - - Sense Settings - - - - - - - Status of the Button + + @text/channel-group-type.shelly.batteryStatus.description + BatteryLevel + + + @text/channel-group-type.shelly.control.description + + + + + @text/channel-group-type.shelly.buttonState.description + Contact - - State of the contact: open/close - Contact + + @text/channel-type.shelly.sensorContact.description - - + + + String - - Sensor State: normal + + @text/channel-type.shelly.sensorState.description - - - - + + + + + String - - Alarm State: normal + + @text/channel-type.shelly.alarmState.description - - - - - + + + + + + String - - Event Type + + @text/channel-type.shelly.lastEvent.description - - - - - - + + + + + + + Number - - Event Count + + @text/channel-type.shelly.eventCount.description Number:Temperature - - Temperature from the sensor + + @text/channel-type.shelly.sensorTemp.description Temperature Measurement @@ -223,10 +301,11 @@ + Number:Temperature - - Temperature from the external sensor + + @text/channel-type.shelly.sensorExtTemp.label Temperature Measurement @@ -235,10 +314,11 @@ + Number:Dimensionless - - Relative humidity in % (0..100%) from external sensor + + @text/channel-type.shelly.sensorExtHum.description Humidity Measurement @@ -247,10 +327,11 @@ + Number:Dimensionless - - Relative humidity in % (0..100%) + + @text/channel-type.shelly.sensorHumidity.description Humidity Measurement @@ -258,112 +339,155 @@ + Switch - - ON: Indicates flood condition / water detected + + @text/channel-type.shelly.sensorFlood.description + Water + Switch - - ON: Indicates smoke detection + + @text/channel-type.shelly.sensorSmoke.description + Smoke + Number:Illuminance - - Brightness from the sensor (Lux) + + @text/channel-type.shelly.sensorLux.description + String - - Current illumination: dark/twilight/bright + + @text/channel-type.shelly.sensorIllumination.description - - - + + + + + DateTime - - Timestamp of last detected motion + + @text/channel-type.shelly.motionTimestamp.description + Time + + Timestamp + + Switch channel-type.shelly.motionActive.description + Contact + Switch - - ON: Motion detected + + @text/channel-type.shelly.sensorMotion.description + Motion + + Status + Presence + + Switch - - ON: Vibration detected + + @text/channel-type.shelly.sensorVibration.description + Flow + Number:Angle - - Tilt in degrees (requires calibration) + + @text/channel-type.shelly.sensorTilt.description + Tilt + Number:Density - - Gas concentration in ppm + + @text/channel-type.shelly.sensorPPM.description + Gas + + Measurement + Gas + + Number:ElectricPotential - - ADC voltage in V - + + @text/channel-type.shelly.sensorADC.description + + + + Dimmer + + @text/channel-type.shelly.sensorPosition.description + RadiatorControl + + + String - - Current valve status: closed/opened/not_connected/failure/closing/opening/checking + + @text/channel-type.shelly.sensorValve.description + Pressure - - - - - - - - + + + + + + + + + String - - Only valid in case of error + + @text/channel-type.shelly.sensorError.description + Number:Time @@ -373,8 +497,8 @@ String - - Send a defined key code + + @text/channel-type.shelly.senseKey.description diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/unknown.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/unknown.xml index 7555e75ec..fb865d136 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/unknown.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/unknown.xml @@ -6,22 +6,22 @@ - A password protected or unknown device. + @text/thing-type.shelly.shellydevice.description - deviceName + serviceName - - User ID for API access. + + @text/thing-type.config.shellydevice.userId.description - - Password for API access. + + @text/thing-type.config.shellydevice.password.description password - - IP Address of the Shelly device. + + @text/thing-type.config.shellydevice.deviceIp.description network-address @@ -30,7 +30,7 @@ - This device is currently not supported + @text/thing-type.shelly.shellyunknown.description deviceName