[shelly] TRV+Motion2 support, various fixes & enhancements (#12325)

* TRV support, various fixes & enhancements

Signed-off-by: markus7017 <markus7017@gmail.com>
Signed-off-by: Markus Michels <markus7017@gmail.com>

* #12236 fixed

Signed-off-by: Markus Michels <markus7017@gmail.com> (github: markus7017)
Signed-off-by: markus7017 <markus7017@gmail.com>
Signed-off-by: Markus Michels <markus7017@gmail.com>

* TRV support competed

Signed-off-by: Markus Michels <markus7017@gmail.com> (github: markus7017)
Signed-off-by: markus7017 <markus7017@gmail.com>
Signed-off-by: Markus Michels <markus7017@gmail.com>

* Complete TRV support

Signed-off-by: Markus Michels <markus7017@gmail.com> (github: markus7017)
Signed-off-by: markus7017 <markus7017@gmail.com>
Signed-off-by: Markus Michels <markus7017@gmail.com>

* - TRV polling optimized

Signed-off-by: markus7017 <markus7017@gmail.com>
Signed-off-by: Markus Michels <markus7017@gmail.com>

* # 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 <markus7017@gmail.com> (github: markus7017)
Signed-off-by: markus7017 <markus7017@gmail.com>
Signed-off-by: Markus Michels <markus7017@gmail.com>

* - 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 <markus7017@gmail.com> (github: markus7017)
Signed-off-by: Markus Michels <markus7017@gmail.com>

* log types revised

Signed-off-by: Markus Michels <markus7017@gmail.com> (github: markus7017)
Signed-off-by: Markus Michels <markus7017@gmail.com>
This commit is contained in:
Markus Michels 2022-04-18 19:32:16 +02:00 committed by GitHub
parent 2d1b337987
commit 532a03375a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 2597 additions and 688 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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<ShellySettingsRelay> relays;
public Double voltage; // AC voltage for Shelly 2.5
@ -584,6 +599,8 @@ public class ShellyApiJsonDTO {
public ArrayList<ShellySettingsEMeter> emeters;
public ArrayList<ShellySettingsInput> inputs; // ix3
public ArrayList<ShellyThermnostat> 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<ShellyThermnostat> 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<Object> 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<ShellyADC> adcs;
// Shelly TRV
public Boolean calibrated;
public ArrayList<ShellyThermnostat> thermostats;
}
public static class ShellySettingsSmoke {

View File

@ -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)
}

View File

@ -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));
}

View File

@ -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);
}
}

View File

@ -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
if (s.value == 1) {
// post event
thingHandler.triggerChannel(CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_ALARM, EVENT_TYPE_VIBRATION);
}
break;

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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,20 +636,29 @@ 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;
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());
}
}

View File

@ -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,16 +277,17 @@ 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;
}
}
if ((sdata.tmp != null) && getBool(sdata.tmp.isValid)) {
thingHandler.logger.trace("{}: Updating temperature", thingHandler.thingName);
Double temp = getString(sdata.tmp.units).toUpperCase().equals(SHELLY_TEMP_CELSIUS)
@ -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;
}
}

View File

@ -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);

View File

@ -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<String, Channel> 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);
}

View File

@ -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) {

View File

@ -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() {

View File

@ -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">
<config-description uri="thing-type:shelly:relay">
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="userId" type="text" required="false">
<label>User</label>
<description>User ID for HTTP API access.</description>
@ -14,11 +19,6 @@
<description>Password for HTTP API access.</description>
<context>password</context>
</parameter>
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="eventsButton" type="boolean" required="false">
<label>Enable Button Events</label>
<description>True if the binding should register to get the Buttons Events.</description>
@ -53,6 +53,11 @@
</config-description>
<config-description uri="thing-type:shelly:roller">
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="userId" type="text" required="false">
<label>User</label>
<description>User ID for HTTP API access.</description>
@ -72,11 +77,6 @@
<description>Which position favorite should be used for DOWN (0=none, favorites are defined in the Shelly App)</description>
<default>0</default>
</parameter>
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="eventsRoller" type="boolean" required="false">
<label>Enable Roller Events (Roller only)</label>
<description>True if the binding should register to get Roller Events.</description>
@ -98,6 +98,11 @@
</parameter>
</config-description>
<config-description uri="thing-type:shelly:dimmer">
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="userId" type="text" required="false">
<label>User</label>
<description>User ID for HTTP API access.</description>
@ -107,11 +112,6 @@
<description>Password for HTTP API access.</description>
<context>password</context>
</parameter>
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="brightnessAutoOn" type="boolean" required="false">
<label>Brightness Auto-ON</label>
<description>true: Turn device ON if brightness above 0 is set; false: don't touch power status when brightness is
@ -152,6 +152,11 @@
</config-description>
<config-description uri="thing-type:shelly:light">
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="userId" type="text" required="false">
<label>User</label>
<description>User ID for HTTP API access.</description>
@ -161,11 +166,6 @@
<description>Password for HTTP API access.</description>
<context>password</context>
</parameter>
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="brightnessAutoOn" type="boolean" required="false">
<label>Brightness Auto-ON</label>
<description>true: Turn device ON if brightness > 0 is set; false: don't touch power status when brightness is set.</description>
@ -193,6 +193,11 @@
</config-description>
<config-description uri="thing-type:shelly:rgbw2">
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="userId" type="text" required="false">
<label>User</label>
<description>User ID for HTTP API access.</description>
@ -202,11 +207,6 @@
<description>Password for HTTP API access.</description>
<context>password</context>
</parameter>
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="brightnessAutoOn" type="boolean" required="false">
<label>Brightness Auto-ON</label>
<description>true: Turn device ON if brightness > 0 is set; false: don't touch power status when brightness is set.</description>
@ -229,6 +229,11 @@
<config-description uri="thing-type:shelly:battery">
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="userId" type="text" required="false">
<label>User ID</label>
<description>User ID for HTTP API access.</description>
@ -238,11 +243,6 @@
<description>Password for HTTP API access.</description>
<context>password</context>
</parameter>
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="lowBattery" type="integer" required="false">
<label>Low Battery Threshold</label>
<description>Threshold for the battery level, alert will be signed when battery level is below. Default: 20%</description>
@ -271,6 +271,11 @@
</config-description>
<config-description uri="thing-type:shelly:basic">
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="userId" type="text" required="false">
<label>User ID</label>
<description>User ID for HTTP API access.</description>
@ -280,11 +285,6 @@
<description>Password for HTTP API access.</description>
<context>password</context>
</parameter>
<parameter name="deviceIp" type="text" required="true">
<label>Device IP Address</label>
<description>IP-Address of the Shelly device.</description>
<context>network-address</context>
</parameter>
<parameter name="eventsSensorReport" type="boolean" required="false">
<label>Enable Sensor Events</label>
<description>True: Register event URL for sensor updates.</description>

View File

@ -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&amp;T (Humidity &amp; 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

View File

@ -1,53 +1,505 @@
# binding
binding.shelly.name = Shelly Binding
binding.shelly.description = Dieses Binding integriert Shelly-Komponenten, die über WiFi gesteuert werden können.
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 für den Zugriff auf das Gerät verwendet, wenn in der Thing-Konfiguration keine angegeben ist.
binding.shelly.config.defaultPassword.label = Standardpasswort
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 = Host Interface IP
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.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 Gerät 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 Gerätes 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 = Gerät ist passwortgeschützt, aber es sind keine Anmeldedaten konfiguriert.
message.offline.conf-error-access-denied = Der Zugriff wurde verweigert. überprüfen Sie die konfigurierten Zugangsdaten, oder setzen diese entsprechend (analog zur Shelly App).
message.offline.conf-error-wrong-mode = Das Gerät befindet sich nicht mehr in der erwarteten Betriebsart. Löschen Sie das Gerät und führen Sie eine erneute Geräteerkennung durch.
message.offline.status-error-timeout = Das Gerät ist nicht erreichbar (API Timeout).
message.offline.status-error-unexpected-api-result = Es trat ein unerwartetes Problem beim API-Zugriff auf. Überprüfen Sie die Logdatei für genauere Informationen.
message.offline.status-error-watchdog = Das Gerät antwortet nicht und ist vermutlich nicht mehr verfügbar.
message.offline.status-error-restarted = Das Gerät wurde neu gestartet und wird erneut initialisiert.
message.offline.status-error-fwupgrade = Gerätesoftware 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 geprüft 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 verfügbar, aktuell: {0}, neu: {1}
message.versioncheck.autocoiot = INFO: Die Firmware unterstützt 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 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.
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 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
message.roller.calibrating = Das Gerät ist nicht kalibriert. Es ist eine Kalibrierung mit der Shelly App erforderlich.
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.
# 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 passwortgeschütztes oder unbekanntes Gerät
thing-type.shelly.shellyunknown.description = Das Gerät wird aktuell nicht unterstützt
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 Tür/Fenstersensor (batteriebetrieben)
thing-type.shelly.shellydw2.description = Shelly Tür/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 Glühbirne (Farb- und Weißmodus)
thing-type.shelly.shellybulbduo.description = Shelly Duo dimmbare Glühbirne (Kalt- und Warmweiß)
thing-type.shelly.shellycolorbulb.description = Shelly dimmbare Glühbirne (Farb- und Weißmodus)
thing-type.shelly.shellyvintage.description = Shelly dimmbare Vintage Glühbirne
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 (Heizkörperventiel, 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-Geräte im Netzwerk)
# Relay, external sensors
# thing config - shellydevice
thing-type.config.shellydevice.userId.label = Benutzer
thing-type.config.shellydevice.userId.description = Benutzerkennung für API-Zugriff
thing-type.config.shellydevice.password.label = Passwort
thing-type.config.shellydevice.password.description = Passwort für 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 für API-Zugriff
thing-type.config.shelly.relay.password.label = Passwort
thing-type.config.shelly.relay.password.description = Passwort für 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 für die Hintergundaktualisierung
# thing config - roller
thing-type.config.shelly.roller.userId.label = Benutzer
thing-type.config.shelly.roller.userId.description = Benutzerkennung für API-Zugriff
thing-type.config.shelly.roller.password.label = Passwort
thing-type.config.shelly.roller.password.description = Passwort für API-Zugriff
thing-type.config.shelly.roller.favoriteUP.label = Favoriten ID für 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 für 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 für die Hintergundaktualisierung
# thing config - dimmer
thing-type.config.shelly.dimmer.userId.label = Benutzer
thing-type.config.shelly.dimmer.userId.description = Benutzerkennung für API-Zugriff
thing-type.config.shelly.dimmer.password.label = Passwort
thing-type.config.shelly.dimmer.password.description = Passwort für 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 größer 0 gesetzt wird; aus: Helligkeit wird gesetzt, aber das Gerät 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 für die Hintergundaktualisierung
# thing config - light
thing-type.config.shelly.light.userId.label = Benutzer
thing-type.config.shelly.light.userId.description = Benutzerkennung für API-Zugriff
thing-type.config.shelly.light.password.label = Passwort
thing-type.config.shelly.light.password.description = Passwort für 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 Gerät automatisch ein; AUS: Gerätestatus wird nicht geändert
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 für die Hintergrundaktualisierung
# thing config - RGBW2
thing-type.config.shelly.rgbw2.userId.label = Benutzer
thing-type.config.shelly.rgbw2.userId.description = Benutzerkennung für API-Zugriff
thing-type.config.shelly.rgbw2.password.label = Passwort
thing-type.config.shelly.rgbw2.password.description = Passwort für 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 Gerät automatisch ein; AUS: Gerätestatus wird nicht geändert
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 für die Hintergrundaktualisierung
# thing config - battery
thing-type.config.shelly.battery.userId.label = Benutzer
thing-type.config.shelly.battery.userId.description = Benutzerkennung für API-Zugriff
thing-type.config.shelly.battery.password.label = Passwort
thing-type.config.shelly.battery.password.description = Passwort für 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 ausgelöst, wenn das Gerät 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 für die Hintergundaktualisierung
# channel-groups
thing-type.shelly.shelly1.group.relay.label = Relais
thing-type.shelly.shelly1.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shelly1.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shelly1pm.group.relay.label = Relais
thing-type.shelly.shelly1pm.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shelly1pm.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shelly1l.group.relay.label = Relais
thing-type.shelly.shelly1l.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shelly1l.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellyem.group.relay.label = Relais
thing-type.shelly.shellyem.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shellyem.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellyem3.group.relay.label = Relais
thing-type.shelly.shellyem3.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shellyem3.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shelly2-relay.group.relay1.label = Relais 1
thing-type.shelly.shelly2-relay.group.relay1.description = Relais Ein-/Ausgänge und Status
thing-type.shelly.shelly2-relay.group.relay2.label = Relais 2
thing-type.shelly.shelly2-relay.group.relay2.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shelly2-relay.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shelly2-roller.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shelly25-relay.group.relay1.label = Relais 1
thing-type.shelly.shelly25-relay.group.relay1.description = Relais Ein-/Ausgänge und -Funktionen
thing-type.shelly.shelly25-relay.group.relay2.label = Relais 2
thing-type.shelly.shelly25-relay.group.relay2.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shelly25-relay.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shelly25-roller.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shelly4pro.group.relay1.label = Relais 1
thing-type.shelly.shelly4pro.group.relay1.description = Relais Ein-/Ausgänge und Status
thing-type.shelly.shelly4pro.group.relay2.label = Relais 2
thing-type.shelly.shelly4pro.group.relay2.description = Relais Ein-/Ausgänge und Status
thing-type.shelly.shelly4pro.group.relay3.label = Relais 3
thing-type.shelly.shelly4pro.group.relay3.description = Relais Ein-/Ausgänge und Status
thing-type.shelly.shelly4pro.group.relay4.label = Relais 4
thing-type.shelly.shelly4pro.group.relay4.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shelly4pro.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellyplug.group.relay.label = Relais
thing-type.shelly.shellyplug.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shellyplug.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellyplugs.group.relay.label = Relais
thing-type.shelly.shellyplugs.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shellyplugs.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellyplugu1.group.relay.label = Relais
thing-type.shelly.shellyplugu1.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shellyplugu1.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellyuni.group.relay1.label = Relais 1
thing-type.shelly.shellyuni.group.relay1.description = Relais Ein-/Ausgänge und Status
thing-type.shelly.shellyuni.group.relay2.label = Relais 2
thing-type.shelly.shellyuni.group.relay2.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shellyuni.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellydimmer.group.relay.label = Relais
thing-type.shelly.shellydimmer.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shellydimmer.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellydimmer2.group.relay.label = Relais
thing-type.shelly.shellydimmer2.group.relay.description = Relais Ein-/Ausgänge 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 = Gerätestatus
thing-type.shelly.shellydimmer2.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellyix3.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellybutton1.group.status.label = Taster-Status
thing-type.shelly.shellybutton1.group.status.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellybutton1.group.device.description = Informationen zum Gerätestatus
thing-type.shelly.shellybutton2.group.status.label = Taster-Status
thing-type.shelly.shellybutton2.group.status.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellybutton2.group.device.description = Informationen zum Gerätestatus
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 für den Farbmodus
thing-type.shelly.shellybulb.group.white.label = Weißwerte
thing-type.shelly.shellybulb.group.white.description = Einstellungen für den Weiß-Modus
thing-type.shelly.shellybulb.group.device.label = Gerätestatus
thing-type.shelly.shellybulb.group.device.description = Informationen zum Gerätestatus
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 = Weißwerte
thing-type.shelly.shellybulbduo.group.white.description = Einstellungen für 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 = Gerätestatus
thing-type.shelly.shellybulbduo.group.device.description = Informationen zum Gerätestatus
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 = Weißwerte
thing-type.shelly.shellycolorbulb.group.white.description = Einstellungen für 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 = Gerätestatus
thing-type.shelly.shellycolorbulb.group.device.description = Informationen zum Gerätestatus
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 = Geräteeinstellungen
thing-type.shelly.shellyvintage.group.meter.label = Verbrauch
thing-type.shelly.shellyvintage.group.meter.description = Verbrauchswerte
thing-type.shelly.shellyvintage.group.device.label = Gerätestatus
thing-type.shelly.shellyvintage.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellyrgbw2-color.group.device.description = Informationen zum Gerätestatus
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 für Kanal 1
thing-type.shelly.shellyrgbw2-white.group.channel2.label = Kanal 2
thing-type.shelly.shellyrgbw2-white.group.channel2.description = Steuerung für Kanal 2
thing-type.shelly.shellyrgbw2-white.group.channel3.label = Kanal 3
thing-type.shelly.shellyrgbw2-white.group.channel3.description = Steuerung für Kanal 3
thing-type.shelly.shellyrgbw2-white.group.channel4.label = Kanal 4
thing-type.shelly.shellyrgbw2-white.group.channel4.description = Steuerung für 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 = Gerätestatus
thing-type.shelly.shellyrgbw2-white.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellyht.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellyflood.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellydw.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellydw2.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellysmoke.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellysense.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellygas.group.device.description = Informationen zum Gerätestatus
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 = Gerätestatus
thing-type.shelly.shellymotion.group.device.description = Informationen zum Gerätestatus
# 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 Gerätes
channel-group-type.shelly.buttonState.label = Taster-Status
channel-group-type.shelly.buttonState.description = Status des Tasters
channel-group-type.shelly.deviceStatus.label = Gerätestatus
channel-group-type.shelly.deviceStatus.description = Informationen zum Gerätestatus
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 (Weißmodus)
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 für den Weißmodus
channel-group-type.shelly.whiteSettings.description = Anpassung des Lichtfarben wenn das Gerät im Weißmodus betrieben wird
channel-group-type.shelly.whiteSettingsSimple.label = Einstellungen für den Weißmodus
channel-group-type.shelly.whiteSettingsSimple.description = Anpassung des Lichtfarben wenn das Gerät im Weißmodus betrieben wird
channel-group-type.shelly.rgbw2Channel.label = Steuerung
channel-group-type.shelly.rgbw2Channel.description = Steuerung der Kanäle 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 = Ausgewähltes 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 für 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 = Wählt den Positionsfavoriten 1-4, Positionen werden in der Shelly App konfiguriert; 0=undefiniert (kein Favorit gewählt)
channel-type.shelly.rollerState.label = Rollladenstatus
channel-type.shelly.rollerState.description = Zustand des Rollladen (open/closed/stopped für geöffnet/geschlossen/gestoppt).
channel-type.shelly.rollerState.state.option.open = öffnet
channel-type.shelly.rollerState.state.option.close = schließt
channel-type.shelly.rollerState.state.option.stop = gestoppt
channel-type.shelly.rollerStop.label = Stoppgrund
channel-type.shelly.rollerStop.description = Letzter Grund für 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/schließt/gestoppt
channel-type.shelly.rollerDirection.state.option.open = öffnet
channel-type.shelly.rollerDirection.state.option.close = schließt
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 = Rückstrom
channel-type.shelly.meterReactive.description = Aktueller Stromverbrauch (Watt) des Rückstroms
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 = Stromstärke
channel-type.shelly.meterCurrent.description = Aktuelle gemessene Stromstärke
channel-type.shelly.meterPowerFactor.label = Stromfaktor
channel-type.shelly.meterPowerFactor.description = Faktor für 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 Gerät ist deaktiviert
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.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 = Ausgewählte Farbe (rot/grün/blau/gelb/weiß) wird auf volle Intensität gesetzt (255)
channel-type.shelly.colorFull.state.option.red = Rot
channel-type.shelly.colorFull.state.option.green = Grün
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 = Grün
channel-type.shelly.colorGreen.description = Grün-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 = Verstärkung
channel-type.shelly.colorGain.description = Verstärkung des Farbwertes (0-100%)
channel-type.shelly.whiteTemp.label = Lichttemperatur
channel-type.shelly.whiteTemp.description = Temperatur des Weißlichtes (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/Grün-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/Grün-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=Dämmerung, dark=Abend/Nacht)
channel-type.shelly.sensorIllumination.state.option.dark = Dunkel
channel-type.shelly.sensorIllumination.state.option.twilight = Dämmerung
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.<br/>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.<br/>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.<br/>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.<br/>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 = geöffnet
channel-type.shelly.sensorValve.state.option.not_connected = nicht angeschlossen
channel-type.shelly.sensorValve.state.option.failure = Störung
channel-type.shelly.sensorValve.state.option.closing = schließt
channel-type.shelly.sensorValve.state.option.opening = öffnet
channel-type.shelly.sensorValve.state.option.checking = Test läuft
channel-type.shelly.sensorValve.state.option.UNKNOWN = unbekannt
channel-type.shelly.sensorCharger.label = Ladestatus
channel-type.shelly.sensorCharger.description = ON: Ein Ladegerät 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 = geöffnet
channel-type.shelly.sensorContact.state.option.CLOSED = geschlossen
channel-type.shelly.sensorState.label = Gerätestatus
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 = Statusänderung
channel-type.shelly.sensorWakeup.state.option.alarm = Alarm
channel-type.shelly.sensorWakeup.state.option.ext_power = Ladegerät verbunden
channel-type.shelly.batVoltage.label = Batteriespannung
channel-type.shelly.batVoltage.description = Batteriespannung in Volt (V)
channel-type.shelly.charger.label = Ladegerät
channel-type.shelly.charger.description = ON: Ein Ladegerät ist angeschlossen
channel-type.shelly.calibrated.label = Kalibriert
channel-type.shelly.calibrated.description = ON: Das Gerät/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 = Gerätename
channel-type.shelly.deviceName.description = Symbolischer Name des Gerätes (Konfiguration über Shelly App)
channel-type.shelly.uptime.label = Laufzeit
channel-type.shelly.uptime.description = Anzahl Sekunden seit dem das Gerät mit Strom versorgt wurde
channel-type.shelly.heartBeat.label = Letzte Aktivität
channel-type.shelly.heartBeat.description = Zeitpunkt der letzten Aktivität. Hierbei kann es sich um einen erfolgreichen API-Aufruf, oder Sensor-Aktualisierung handeln. Dies schließt 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 verfügbar (Update kann mit der Shelly App durchgeführt werden)
channel-type.shelly.deviceTemp.label = Gerätetemperatur
channel-type.shelly.deviceTemp.description = Interne Gerätetemperatur. 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 = Ereigniszähler
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 geöffnet, ROLLER_CLOSE=Rollladen geschlossen, ROLLER_STOP=Rollladen angehalten
channel-type.shelly.eventTrigger.option.ROLLER_OPEN = Rollladen geöffnet
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=Gerät 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 = Gerät 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 = Gerät wurde eingeschaltet
channel-type.shelly.alarmTrigger.option.BUTTON = Taste wurde gedrückt
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 gedrückt
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 läuft
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 Gerät 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

View File

@ -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">
<channel-group-type id="deviceStatus">
<label>Device Status</label>
<description>Information about the device status</description>
<label>@text/channel-group-type.shelly.deviceStatus.label</label>
<description>@text/channel-group-type.shelly.deviceStatus.description</description>
<channels>
<channel id="alarm" typeId="alarmTrigger"/>
<channel id="wifiSignal" typeId="system.signal-strength"/>
@ -16,88 +16,103 @@
<channel-type id="alarmTrigger">
<kind>trigger</kind>
<label>Alarm</label>
<description>Alarm Trigger, e.g. weak WiFi Signal detected or over heating.</description>
<label>@text/channel-type.shelly.alarmTrigger.label</label>
<description>@text/channel-type.shelly.alarmTrigger.description</description>
<category>Alarm</category>
<event>
<options>
<option value="NONE">None</option>
<option value="WEAK_SIGNAL">Weak WiFi</option>
<option value="RESTARTED">Device restarted</option>
<option value="OVERTEMP">Device is overheating</option>
<option value="OVERLOAD">Device is overloaded</option>
<option value="OVERPOWER">Device is over max power</option>
<option value="LOAD_ERROR">Load error</option>
<option value="LOW_BATTERY">Low battery</option>
<option value="BATTERY">Wakeup by battery</option>
<option value="POWERON">Device was powered on</option>
<option value="BUTTON">Button was pressed</option>
<option value="SENSOR">Sensor data updated</option>
<option value="NONE">@text/channel-type.shelly.alarmTrigger.option.NONE</option>
<option value="WEAK_SIGNAL">@text/channel-type.shelly.alarmTrigger.option.WEAK_SIGNAL</option>
<option value="RESTARTED">@text/channel-type.shelly.alarmTrigger.option.RESTARTED</option>
<option value="OVERTEMP">@text/channel-type.shelly.alarmTrigger.option.OVERTEMP</option>
<option value="OVERLOAD">@text/channel-type.shelly.alarmTrigger.option.OVERLOAD</option>
<option value="OVERPOWER">@text/channel-type.shelly.alarmTrigger.option.OVERPOWER</option>
<option value="LOAD_ERROR">@text/channel-type.shelly.alarmTrigger.option.LOAD_ERROR</option>
<option value="LOW_BATTERY">@text/channel-type.shelly.alarmTrigger.option.LOW_BATTERY</option>
<option value="BATTERY">@text/channel-type.shelly.alarmTrigger.option.BATTERY</option>
<option value="POWERON">@text/channel-type.shelly.alarmTrigger.option.POWERON</option>
<option value="BUTTON">@text/channel-type.shelly.alarmTrigger.option.BUTTON</option>
<option value="SENSOR">@text/channel-type.shelly.alarmTrigger.option.SENSOR</option>
</options>
</event>
</channel-type>
<channel-type id="sensorWakeup" advanced="true">
<item-type>String</item-type>
<label>Wakeup Reason</label>
<description>Last reason, which woke up the device</description>
<label>@text/channel-type.shelly.sensorWakeup.label</label>
<description>@text/channel-type.shelly.sensorWakeup.description</description>
<state pattern="%s" readOnly="true">
<options>
<option value="button">Button</option>
<option value="battery">Battery</option>
<option value="periodic">Periodic</option>
<option value="poweron">Power-On</option>
<option value="sensor">Sensor</option>
<option value="alarm">Alarm</option>
<option value="ext_power">Charger connected</option>
<option value="button">@text/channel-type.shelly.sensorWakeup.state.option.button</option>
<option value="battery">@text/channel-type.shelly.sensorWakeup.state.option.battery</option>
<option value="periodic">@text/channel-type.shelly.sensorWakeup.state.option.periodic</option>
<option value="poweron">@text/channel-type.shelly.sensorWakeup.state.option.poweron</option>
<option value="sensor">@text/channel-type.shelly.sensorWakeup.state.option.sensor</option>
<option value="alarm">@text/channel-type.shelly.sensorWakeup.state.option.alarm</option>
<option value="ext_power">@text/channel-type.shelly.sensorWakeup.state.option.ext_power</option>
</options>
</state>
</channel-type>
<channel-type id="deviceName">
<channel-type id="deviceName" advanced="true">
<item-type>String</item-type>
<label>@text/channel-type.shelly.deviceName.label</label>
<description>@text/channel-type.shelly.deviceName.description</description>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="calibrated" advanced="true">
<item-type>Switch</item-type>
<label>@text/channel-type.shelly.calibrated.label</label>
<description>@text/channel-type.shelly.calibrated.description</description>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="charger" advanced="true">
<item-type>Switch</item-type>
<label>Charger Connected</label>
<description>ON: Device is charging, OFF: No charger connected</description>
<label>@text/channel-type.shelly.charger.label</label>
<description>@text/channel-type.shelly.charger.description</description>
<category>Battery</category>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="externalPower" advanced="true">
<item-type>Switch</item-type>
<label>External Power</label>
<description>ON: External power is connected</description>
<label>@text/channel-type.shelly.externalPower.label</label>
<description>@text/channel-type.shelly.externalPower.description</description>
<category>Status</category>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="uptime" advanced="true">
<item-type>Number:Time</item-type>
<label>Uptime</label>
<description>Number of seconds since the device was powered up</description>
<label>@text/channel-type.shelly.uptime.label</label>
<description>@text/channel-type.shelly.uptime.description</description>
<category>Time</category>
<state readOnly="true" pattern="%.0f %unit%">
</state>
</channel-type>
<channel-type id="heartBeat" advanced="true">
<item-type>DateTime</item-type>
<label>Last Heartbeat</label>
<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).</description>
<label>@text/channel-type.shelly.heartBeat.label</label>
<description>@text/channel-type.shelly.heartBeat.description</description>
<category>Time</category>
<tags>
<tag>Timestamp</tag>
</tags>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="updateAvailable" advanced="true">
<item-type>Switch</item-type>
<label>Update available</label>
<description>ON: A firmware update is available (use Shelly App to perform update)</description>
<label>@text/channel-type.shelly.updateAvailable.label</label>
<description>@text/channel-type.shelly.updateAvailable.description</description>
<category>Status</category>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="deviceTemp" advanced="true">
<item-type>Number:Temperature</item-type>
<label>Internal Temperature</label>
<description>Internal device temperature, helps to detect overheating due to installation issues</description>
<label>@text/channel-type.shelly.deviceTemp.label</label>
<description>@text/channel-type.shelly.deviceTemp.description</description>
<category>Temperature</category>
<tags>
<tag>Measurement</tag>
@ -106,18 +121,36 @@
<state readOnly="true" pattern="%.0f %unit%">
</state>
</channel-type>
<channel-type id="supplyVoltage" advanced="true">
<item-type>Number:ElectricPotentia</item-type>
<label>@text/channel-type.shelly.supplyVoltage.label</label>
<description>@text/channel-type.shelly.supplyVoltage.description</description>
<category>Energy</category>
<tags>
<tag>Measurement</tag>
<tag>Voltage</tag>
</tags>
</channel-type>
<channel-type id="selfTest">
<item-type>String</item-type>
<label>Self Test</label>
<description>Self Test Status/Result</description>
<label>@text/channel-type.shelly.selfTest.label</label>
<description>@text/channel-type.shelly.selfTest.description</description>
<state pattern="%s" readOnly="true">
<options>
<option value="not_completed">Not completed</option>
<option value="completed">Completed</option>
<option value="running">Running</option>
<option value="pending">Pending</option>
<option value="not_completed">@text/channel-type.shelly.selfTest.state.option.not_completed</option>
<option value="completed">@text/channel-type.shelly.selfTest.state.option.completed</option>
<option value="running">@text/channel-type.shelly.selfTest.state.option.running</option>
<option value="pending">@text/channel-type.shelly.selfTest.state.option.pending</option>
<option value="unknown">@text/channel-type.shelly.selfTest.state.option.unknown</option>
</options>
</state>
</channel-type>
<channel-type id="deviceSchedule" advanced="true">
<item-type>Switch</item-type>
<label>@text/channel-type.shelly.deviceSchedule.label</label>
<description>@text/channel-type.shelly.deviceSchedule.description</description>
<state readOnly="true">
</state>
</channel-type>
</thing:thing-descriptions>

View File

@ -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">
<thing-type id="shellybulb">
<label>Shelly Bulb (SHBULB)</label>
<description>Shelly Bulb</description>
<label>Shelly Bulb (SHBLB-1)</label>
<description>@text/thing-type.shelly.shellybulb.description</description>
<category>Lightbulb</category>
<channel-groups>
<channel-group id="control" typeId="bulbControl"/>
<channel-group id="color" typeId="colorSettingsBulb"/>
@ -14,13 +15,14 @@
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:light"/>
</thing-type>
<thing-type id="shellybulbduo">
<label>Shelly Duo (SHBDUO-1)</label>
<description>Shelly Duo</description>
<description>@text/thing-type.shelly.shellybulbduo.description</description>
<category>Lightbulb</category>
<channel-groups>
<channel-group id="control" typeId="duoControl"/>
<channel-group id="white" typeId="whiteSettings"/>
@ -28,13 +30,14 @@
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:light"/>
</thing-type>
<thing-type id="shellycolorbulb">
<label>Shelly Duo Color Bulb (SHSCB-1)</label>
<description>Shelly Duo Color Bulb in Color or White Mode</description>
<label>Shelly Color Bulb (SHCB-1)</label>
<description>@text/thing-type.shelly.shellycolorbulb.description</description>
<category>ColorLight</category>
<channel-groups>
<channel-group id="control" typeId="duoControl"/>
<channel-group id="color" typeId="colorSettingsBulb"/>
@ -43,13 +46,14 @@
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:light"/>
</thing-type>
<thing-type id="shellyvintage">
<label>Shelly Vintage (SHVIN-1)</label>
<description>Shelly Vintage Light Bulb</description>
<description>@text/thing-type.shelly.shellyvintage.description</description>
<category>Lightbulb</category>
<channel-groups>
<channel-group id="control" typeId="duoControl"/>
<channel-group id="white" typeId="whiteSettingsSimple"/>
@ -57,14 +61,14 @@
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:light"/>
</thing-type>
<thing-type id="shellyrgbw2-color">
<label>Shelly RGBW2 Color Mode (SHRGBW2)</label>
<description>Shelly RGBW2 Controller - Color Mode</description>
<category>Lightbulb</category>
<description>@text/thing-type.shelly.shellyrgbw2-color.description</description>
<category>ColorLight</category>
<channel-groups>
<channel-group id="control" typeId="rgbw2ColorControl"/>
<channel-group id="color" typeId="colorSettingsRGBW2"/>
@ -72,38 +76,40 @@
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:rgbw2"/>
</thing-type>
<thing-type id="shellyrgbw2-white">
<label>Shelly RGBW2 White Mode (SHRGBW2)</label>
<description>Shelly RGBW2 Controller - White Mode</description>
<description>@text/thing-type.shelly.shellyrgbw2-white.description</description>
<category>Lightbulb</category>
<channel-groups>
<channel-group id="control" typeId="rgbw2WhiteControl"/>
<channel-group id="channel1" typeId="rgbw2Channel">
<label>Channel 1</label>
<label>@text/thing-type.shelly.shellyrgbw2-white.group.channel1.label</label>
</channel-group>
<channel-group id="channel2" typeId="rgbw2Channel">
<label>Channel 2</label>
<label>@text/thing-type.shelly.shellyrgbw2-white.group.channel2.label</label>
</channel-group>
<channel-group id="channel3" typeId="rgbw2Channel">
<label>Channel 3</label>
<label>@text/thing-type.shelly.shellyrgbw2-white.group.channel3.label</label>
</channel-group>
<channel-group id="channel4" typeId="rgbw2Channel">
<label>Channel 4</label>
<label>@text/thing-type.shelly.shellyrgbw2-white.group.channel4.label</label>
</channel-group>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:rgbw2"/>
</thing-type>
<channel-group-type id="bulbControl">
<label>Light Control</label>
<description>Control your light</description>
<label>@text/channel-group-type.shelly.bulbControl.label</label>
<description>@text/channel-group-type.shelly.bulbControl.description</description>
<channels>
<channel id="power" typeId="system.power"/>
<channel id="mode" typeId="colorMode"/>
@ -112,25 +118,30 @@
<channel id="timerActive" typeId="timerActive"/>
</channels>
</channel-group-type>
<channel-group-type id="duoControl">
<label>Light Control</label>
<description>Control your light</description>
<label>@text/channel-group-type.shelly.duoControl.label</label>
<description>@text/channel-group-type.shelly.duoControl.description</description>
<channels>
<channel id="autoOn" typeId="timerAutoOn"/>
<channel id="autoOff" typeId="timerAutoOff"/>
<channel id="timerActive" typeId="timerActive"/>
</channels>
</channel-group-type>
<channel-group-type id="rgbw2ColorControl">
<label>Light Control</label>
<description>Control your light channels</description>
<label>@text/channel-group-type.shelly.rgbw2ColorControl.label</label>
<description>@text/channel-group-type.shelly.rgbw2ColorControl.description</description>
</channel-group-type>
<channel-group-type id="rgbw2WhiteControl">
<label>White Control</label>
<label>@text/channel-group-type.shelly.rgbw2WhiteControl.label</label>
<description>@text/channel-group-type.shelly.rgbw2WhiteControl.description</description>
</channel-group-type>
<channel-group-type id="colorSettingsBulb">
<label>Colors</label>
<description>Light colors</description>
<label>@text/channel-group-type.shelly.colorSettingsBulb.label</label>
<description>@text/channel-group-type.shelly.colorSettingsBulb.description</description>
<channels>
<channel id="hsb" typeId="system.color"/>
<channel id="full" typeId="colorFull"/>
@ -142,9 +153,10 @@
<channel id="effect" typeId="colorEffectBulb"/>
</channels>
</channel-group-type>
<channel-group-type id="colorSettingsRGBW2">
<label>Colors</label>
<description>Light colors</description>
<label>@text/channel-group-type.shelly.colorSettingsRGBW2.label</label>
<description>@text/channel-group-type.shelly.colorSettingsRGBW2.description</description>
<channels>
<channel id="hsb" typeId="system.color"/>
<channel id="full" typeId="colorFull"/>
@ -156,24 +168,27 @@
<channel id="effect" typeId="colorEffectRGBW2"/>
</channels>
</channel-group-type>
<channel-group-type id="whiteSettings">
<label>White settings</label>
<description>Adjust colors when device is in white mode</description>
<label>@text/channel-group-type.shelly.whiteSettings.label</label>
<description>@text/channel-group-type.shelly.whiteSettings.description</description>
<channels>
<channel id="brightness" typeId="whiteBrightness"/>
<channel id="temperature" typeId="whiteTemp"/>
</channels>
</channel-group-type>
<channel-group-type id="whiteSettingsSimple">
<label>White settings</label>
<description>Adjust colors when device is in white mode</description>
<label>@text/channel-group-type.shelly.whiteSettingsSimple.label</label>
<description>@text/channel-group-type.shelly.whiteSettingsSimple.description</description>
<channels>
<channel id="brightness" typeId="whiteBrightness"/>
</channels>
</channel-group-type>
<channel-group-type id="rgbw2Channel">
<label>Control</label>
<description>Switch channel and adjust settings</description>
<label>@text/channel-group-type.shelly.rgbw2Channel.label</label>
<description>@text/channel-group-type.shelly.rgbw2Channel.description</description>
<channels>
<channel id="autoOn" typeId="timerAutoOn"/>
<channel id="autoOff" typeId="timerAutoOff"/>
@ -185,92 +200,102 @@
<channel-type id="colorMode">
<item-type>Switch</item-type>
<label>Mode (ON=color, OFF=white)</label>
<description>ON: Device is in color mode, OFF: Device is in White Mode</description>
<label>@text/channel-type.shelly.colorMode.label</label>
<description>@text/channel-type.shelly.colorMode.description</description>
</channel-type>
<channel-type id="colorFull">
<item-type>String</item-type>
<label>Full Color</label>
<description>Setting this channel sets the selected color to 255, all others to 0</description>
<label>@text/channel-type.shelly.colorFull.label</label>
<description>@text/channel-type.shelly.colorFull.description</description>
<state>
<options>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
<option value="yellow">Yellow</option>
<option value="white">White</option>
<option value="red">@text/channel-type.shelly.colorFull.state.option.red</option>
<option value="green">@text/channel-type.shelly.colorFull.state.option.green</option>
<option value="blue">@text/channel-type.shelly.colorFull.state.option.blue</option>
<option value="yellow">@text/channel-type.shelly.colorFull.state.option.yellow</option>
<option value="white">@text/channel-type.shelly.colorFull.state.option.white</option>
</options>
</state>
</channel-type>
<channel-type id="colorRed" advanced="true">
<item-type>Dimmer</item-type>
<label>Red</label>
<description>red, 0..255, only in Color Mode</description>
<label>@text/channel-type.shelly.colorRed.label</label>
<description>@text/channel-type.shelly.colorRed.description</description>
<state min="0" max="255" step="1" readOnly="false"></state>
</channel-type>
<channel-type id="colorGreen" advanced="true">
<item-type>Dimmer</item-type>
<label>Green</label>
<description>green, 0..255, applies Color Mode</description>
<label>@text/channel-type.shelly.colorGreen.label</label>
<description>@text/channel-type.shelly.colorGreen.description</description>
<state min="0" max="255" step="1" readOnly="false"></state>
</channel-type>
<channel-type id="colorBlue" advanced="true">
<item-type>Dimmer</item-type>
<label>Blue</label>
<description>blue, 0..255, only in Color Mode</description>
<label>@text/channel-type.shelly.colorBlue.label</label>
<description>@text/channel-type.shelly.colorBlue.description</description>
<state min="0" max="255" step="1" readOnly="false"></state>
</channel-type>
<channel-type id="colorWhite">
<item-type>Dimmer</item-type>
<label>White</label>
<description>white, 0..255, applies in Color Mode</description>
<label>@text/channel-type.shelly.colorWhite.label</label>
<description>@text/channel-type.shelly.colorWhite.description</description>
<state min="0" max="255" step="1" readOnly="false"></state>
</channel-type>
<channel-type id="colorGain">
<item-type>Dimmer</item-type>
<label>Gain</label>
<description>gain for all channels, 0..100, applies in Color Mode</description>
<label>@text/channel-type.shelly.colorGain.label</label>
<description>@text/channel-type.shelly.colorGain.description</description>
<state min="0" max="100" step="1" readOnly="false"></state>
</channel-type>
<channel-type id="whiteTemp">
<item-type>Dimmer</item-type>
<label>Light Temperature</label>
<description>Light Temperature 2700/3000..6500K (0-100%)</description>
<label>@text/channel-type.shelly.whiteTemp.label</label>
<description>@text/channel-type.shelly.whiteTemp.description</description>
<state min="3000" max="6500" step="10" readOnly="false"></state>
</channel-type>
<channel-type id="whiteBrightness">
<item-type>Dimmer</item-type>
<label>Brightness</label>
<description>Brightness: 0..100%</description>
<category>Light</category>
<label>@text/channel-type.shelly.whiteBrightness.label</label>
<description>@text/channel-type.shelly.whiteBrightness.description</description>
<category>DimmableLight</category>
<state min="0" max="100" step="1" readOnly="false"></state>
</channel-type>
<channel-type id="colorEffectBulb">
<item-type>Number</item-type>
<label>Effect</label>
<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</description>
<label>@text/channel-type.shelly.colorEffectBulb.label</label>
<description>@text/channel-type.shelly.colorEffectBulb.description</description>
<state>
<options>
<option value="0">Off</option>
<option value="1">Meteor Shower</option>
<option value="2">Gradual Change</option>
<option value="3">Breath</option>
<option value="4">Flash</option>
<option value="5">On/Off Gradual</option>
<option value="6">Red/Green Change</option>
<option value="0">@text/channel-type.shelly.colorEffectBulb.option.0</option>
<option value="1">@text/channel-type.shelly.colorEffectBulb.option.1</option>
<option value="2">@text/channel-type.shelly.colorEffectBulb.option.2</option>
<option value="3">@text/channel-type.shelly.colorEffectBulb.option.3</option>
<option value="4">@text/channel-type.shelly.colorEffectBulb.option.4</option>
<option value="5">@text/channel-type.shelly.colorEffectBulb.option.5</option>
<option value="6">@text/channel-type.shelly.colorEffectBulb.option.6</option>
</options>
</state>
</channel-type>
<channel-type id="colorEffectRGBW2">
<item-type>Number</item-type>
<label>Effect</label>
<description>Currently applied effect, description: 0: Off, 1: Meteor Shower, 2: Gradual Change, 3: Flash</description>
<label>@text/channel-type.shelly.colorEffectRGBW2.label</label>
<description>@text/channel-type.shelly.colorEffectRGBW2.description</description>
<state>
<options>
<option value="0">Off</option>
<option value="1">Meteor Shower</option>
<option value="2">Gradual Change</option>
<option value="3">Flash</option>
<option value="0">@text/channel-type.shelly.colorEffectRGBW2.option.0</option>
<option value="1">@text/channel-type.shelly.colorEffectRGBW2.option.1</option>
<option value="2">@text/channel-type.shelly.colorEffectRGBW2.option.2</option>
<option value="3">@text/channel-type.shelly.colorEffectRGBW2.option.3</option>
</options>
</state>
</channel-type>

View File

@ -6,20 +6,20 @@
<thing-type id="shelly1">
<label>Shelly 1 (SHSW-1)</label>
<description>Shelly1 device with a single relay</description>
<description>@text/thing-type.shelly.shelly1.description</description>
<channel-groups>
<channel-group id="relay" typeId="relayChannel"/>
<channel-group id="sensors" typeId="externalSensors"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shelly1l">
<label>Shelly 1L (SHSW-L)</label>
<description>Shelly 1L device with a single relay</description>
<description>@text/thing-type.shelly.shelly1l.description</description>
<channel-groups>
<channel-group id="relay" typeId="relayChannel"/>
<channel-group id="meter" typeId="meter"/>
@ -27,13 +27,13 @@
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shelly1pm">
<label>Shelly 1PM (SHSW-PM)</label>
<description>Shelly1PM device with single relay and power meter</description>
<description>@text/thing-type.shelly.shelly1pm.description</description>
<channel-groups>
<channel-group id="relay" typeId="relayChannel"/>
<channel-group id="meter" typeId="meter"/>
@ -41,245 +41,248 @@
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shellyem">
<label>Shelly EM (SHEM)</label>
<description>Shelly EM device with single relay and power meter</description>
<description>@text/thing-type.shelly.shellyem.description</description>
<channel-groups>
<channel-group id="meter1" typeId="meter">
<label>Power Meter 1</label>
<label>@text/thing-type.shelly.shellyem.group.meter1.label</label>
</channel-group>
<channel-group id="meter2" typeId="meter">
<label>Power Meter 2</label>
<label>@text/thing-type.shelly.shellyem.group.meter2.label</label>
</channel-group>
<channel-group id="relay" typeId="relayChannel"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<!-- Shelly 3EM - device reports wrong service name: shellyem3, see README -->
<thing-type id="shellyem3">
<label>Shelly 3EM (SHEM-3)</label>
<description>Shelly 3EM device with 3 power meters and a relay (thing name is shellyem3, see README)</description>
<description>@text/thing-type.shelly.shellyem3.description</description>
<channel-groups>
<channel-group id="meter1" typeId="meter">
<label>Power Meter 1</label>
<label>@text/thing-type.shelly.shellyem3.group.meter1.label</label>
</channel-group>
<channel-group id="meter2" typeId="meter">
<label>Power Meter 2</label>
<label>@text/thing-type.shelly.shellyem3.group.meter2.label</label>
</channel-group>
<channel-group id="meter3" typeId="meter">
<label>Power Meter 3</label>
<label>@text/thing-type.shelly.shellyem3.group.meter3.label</label>
</channel-group>
<channel-group id="relay" typeId="relayChannel"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shelly2-relay">
<label>Shelly 2 Relay (SHSW-21)</label>
<description>Shelly2 device with two relays</description>
<description>@text/thing-type.shelly.shelly2-relay.description</description>
<channel-groups>
<channel-group id="relay1" typeId="relayChannel">
<label>Relay 1</label>
<label>@text/thing-type.shelly.shelly2-relay.group.relay1.label</label>
</channel-group>
<channel-group id="relay2" typeId="relayChannel">
<label>Relay 2</label>
<label>@text/thing-type.shelly.shelly2-relay.group.relay2.label</label>
</channel-group>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shelly2-roller">
<label>Shelly 2 Roller (SHSW-21)</label>
<description>Shelly2 in Roller Mode</description>
<description>@text/thing-type.shelly.shelly2-roller.description</description>
<category>Rollershutter</category>
<channel-groups>
<channel-group id="roller" typeId="rollerControl"/>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:roller"/>
</thing-type>
<thing-type id="shelly25-relay">
<label>Shelly 2.5 Relay (SHSW-25)</label>
<description>Shelly2.5 device with two relays, 2 meters</description>
<description>@text/thing-type.shelly.shelly25-relay.description</description>
<channel-groups>
<channel-group id="relay1" typeId="relayChannel">
<label>Relay 1</label>
<label>@text/thing-type.shelly.shelly25-relay.group.relay1.label</label>
</channel-group>
<channel-group id="meter1" typeId="meter">
<label>Power Meter 1</label>
<label>@text/thing-type.shelly.shelly25-relay.group.meter1.label</label>
</channel-group>
<channel-group id="relay2" typeId="relayChannel">
<label>Relay 2</label>
<label>@text/thing-type.shelly.shelly25-relay.group.relay2.label</label>
</channel-group>
<channel-group id="meter2" typeId="meter">
<label>Power Meter 2</label>
<label>@text/thing-type.shelly.shelly25-relay.group.meter2.label</label>
</channel-group>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shelly25-roller">
<label>Shelly 2.5 Roller (SHSW-25)</label>
<description>Shelly2 in Roller Mode</description>
<description>@text/thing-type.shelly.shelly25-roller.description</description>
<category>Rollershutter</category>
<channel-groups>
<channel-group id="roller" typeId="rollerControl"/>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:roller"/>
</thing-type>
<thing-type id="shelly4pro">
<label>Shelly 4 Pro Relay (SHSW-44)</label>
<description>Shelly4Pro device with 4 relays</description>
<description>@text/thing-type.shelly.shelly4pro.description</description>
<channel-groups>
<channel-group id="relay1" typeId="relayChannel">
<label>Relay 1</label>
<label>@text/thing-type.shelly.shelly4pro.group.relay1.label</label>
</channel-group>
<channel-group id="meter1" typeId="meter">
<label>Power Meter 1</label>
<label>@text/thing-type.shelly.shelly4pro.group.meter1.label</label>
</channel-group>
<channel-group id="relay2" typeId="relayChannel">
<label>Relay 2</label>
<label>@text/thing-type.shelly.shelly4pro.group.relay2.label</label>
</channel-group>
<channel-group id="meter2" typeId="meter">
<label>Power Meter 2</label>
<label>@text/thing-type.shelly.shelly4pro.group.meter2.label</label>
</channel-group>
<channel-group id="relay3" typeId="relayChannel">
<label>Relay 3</label>
<label>@text/thing-type.shelly.shelly4pro.group.relay3.label</label>
</channel-group>
<channel-group id="meter3" typeId="meter">
<label>Power Meter 3</label>
<label>@text/thing-type.shelly.shelly4pro.group.meter3.label</label>
</channel-group>
<channel-group id="relay4" typeId="relayChannel">
<label>Relay 4</label>
<label>@text/thing-type.shelly.shelly4pro.group.relay4.label</label>
</channel-group>
<channel-group id="meter4" typeId="meter">
<label>Power Meter 4</label>
<label>@text/thing-type.shelly.shelly4pro.group.meter4.label</label>
</channel-group>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shellyplug">
<label>Shelly Plug</label>
<description>Shelly Plug device with relay and power meter</description>
<label>Shelly Plug (SHPLG-1)</label>
<description>@text/thing-type.shelly.shellyplug.description</description>
<category>PowerOutlet</category>
<channel-groups>
<channel-group id="relay" typeId="relayChannelPlug"/>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shellyplugs">
<label>Shelly Plug-S (SHPLG-S)</label>
<description>Shelly Plug-S with relay, meter and LED control</description>
<description>@text/thing-type.shelly.shellyplugs.description</description>
<category>PowerOutlet</category>
<channel-groups>
<channel-group id="relay" typeId="relayChannelPlug"/>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shellyplugu1">
<label>Shelly Plug US (SHPLG-U1)</label>
<description>Shelly Plug US with relay and meter</description>
<description>@text/thing-type.shelly.shellyplugu1.description</description>
<category>PowerOutlet</category>
<channel-groups>
<channel-group id="relay" typeId="relayChannelPlug"/>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shellyuni">
<label>Shelly UNI (SHUNI-2)</label>
<description>Embedded Shelly device</description>
<label>Shelly UNI (SHUNI-1)</label>
<description>@text/thing-type.shelly.shellyuni.description</description>
<channel-groups>
<channel-group id="relay1" typeId="relayChannel">
<label>Relay 1</label>
<label>@text/thing-type.shelly.shellyuni.group.relay1.label</label>
</channel-group>
<channel-group id="relay2" typeId="relayChannel">
<label>Relay 2</label>
<label>@text/thing-type.shelly.shellyuni.group.relay2.label</label>
</channel-group>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shellydimmer">
<label>Shelly Dimmer (SHDM-1)</label>
<description>Shelly Dimmer</description>
<description>@text/thing-type.shelly.shellydimmer.description</description>
<category>DimmableLight</category>
<channel-groups>
<channel-group id="relay" typeId="dimmerChannel"/>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:dimmer"/>
</thing-type>
<thing-type id="shellydimmer2">
<label>Shelly Dimmer 2 (SHDM-2)</label>
<description>Shelly Dimmer 2</description>
<description>@text/thing-type.shelly.shellydimmer2.description</description>
<category>DimmableLight</category>
<channel-groups>
<channel-group id="relay" typeId="dimmerChannel"/>
<channel-group id="meter" typeId="meter"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:dimmer"/>
</thing-type>
<thing-type id="shellyix3">
<label>Shelly ix3 (SHIX3-1)</label>
<description>Shelly i3 Device with 3 inputs</description>
<description>@text/thing-type.shelly.shellyix3.description</description>
<channel-groups>
<channel-group id="status1" typeId="ix3Channel"/>
<channel-group id="status2" typeId="ix3Channel"/>
@ -287,50 +290,43 @@
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<thing-type id="shellyuni">
<label>Shelly UNI (SHUNI-1)</label>
<description>Shelly UNI device</description>
<channel-groups>
<channel-group id="relay1" typeId="relayChannel"/>
<channel-group id="relay2" typeId="relayChannel"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:relay"/>
</thing-type>
<channel-group-type id="relayChannel">
<label>Relay</label>
<description>A Shelly relay channel</description>
<label>@text/channel-group-type.shelly.relayChannel.label</label>
<description>@text/channel-group-type.shelly.relayChannel.description</description>
</channel-group-type>
<channel-group-type id="relayChannelPlug">
<label>Relay</label>
<description>A Shelly relay channel</description>
<label>@text/channel-group-type.shelly.relayChannelPlug.label</label>
<description>@text/channel-group-type.shelly.relayChannelPlug.description</description>
</channel-group-type>
<channel-group-type id="dimmerChannel">
<label>Dimmer</label>
<description>A Shelly Dimmer channel</description>
<label>@text/channel-group-type.shelly.dimmerChannel.label</label>
<description>@text/channel-group-type.shelly.dimmerChannel.description</description>
</channel-group-type>
<channel-group-type id="ix3Channel">
<label>Input</label>
<description>Input Status</description>
<label>@text/channel-group-type.shelly.ix3Channel.label</label>
<description>@text/channel-group-type.shelly.ix3Channel.description</description>
</channel-group-type>
<channel-group-type id="rollerControl">
<label>Roller Control</label>
<description>Controlling the roller mode</description>
<label>@text/channel-group-type.shelly.rollerControl.label</label>
<description>@text/channel-group-type.shelly.rollerControl.description</description>
</channel-group-type>
<channel-group-type id="meter">
<label>Power Meter</label>
<description>Power consumption for the relay</description>
<label>@text/channel-group-type.shelly.meter.label</label>
<description>@text/channel-group-type.shelly.meter.description</description>
</channel-group-type>
<channel-group-type id="externalSensors">
<label>External Sensors</label>
<description>Temperatures from external sensors connected to the optional Addon</description>
<label>@text/channel-group-type.shelly.externalSensors.label</label>
<description>@text/channel-group-type.shelly.externalSensors.description</description>
</channel-group-type>
<channel-type id="outputName">
@ -340,229 +336,290 @@
<state readOnly="true">
</state>
</channel-type>
<channel-type id="timerAutoOn" advanced="true">
<item-type>Number:Time</item-type>
<label>Auto-ON Timer</label>
<description>ON: After the output was turned off it turns on automatically after xx seconds; 0 disables the timer</description>
<label>@text/channel-type.shelly.timerAutoOn.label</label>
<description>@text/channel-type.shelly.timerAutoOn.description</description>
<category>Time</category>
<state min="0" step="1" pattern="%.0f %unit%" readOnly="false"></state>
</channel-type>
<channel-type id="timerAutoOff" advanced="true">
<item-type>Number:Time</item-type>
<label>Auto-OFF Timer</label>
<description>ON: After the output was turned on it turns off automatically after xx seconds; 0 disables the timer</description>
<label>@text/channel-type.shelly.timerAutoOff.label</label>
<description>@text/channel-type.shelly.timerAutoOff.description</description>
<category>Time</category>
<state min="0" step="1" pattern="%.0f %unit%" readOnly="false"></state>
</channel-type>
<channel-type id="timerActive" advanced="true">
<item-type>Switch</item-type>
<label>Auto ON/OFF timer active</label>
<description>ON: A timer is active, OFF: no timer active</description>
<label>@text/channel-type.shelly.timerActive.label</label>
<description>@text/channel-type.shelly.timerActive.description</description>
<category>Status</category>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="rollerShutter">
<item-type>Rollershutter</item-type>
<label>Roller Control (0=open, 100=closed))</label>
<description>Controls the roller</description>
<label>@text/channel-type.shelly.rollerShutter.label</label>
<description>@text/channel-type.shelly.rollerShutter.description</description>
<category>Blinds</category>
</channel-type>
<channel-type id="rollerPosition" advanced="true">
<item-type>Dimmer</item-type>
<label>Roller Position (100=open, 0=closed)</label>
<description>Position the roller (100..0 in %, where 100%=open, 0%=closed)</description>
<label>@text/channel-type.shelly.rollerPosition.label</label>
<description>@text/channel-type.shelly.rollerPosition.description</description>
<category>Blinds</category>
<tags>
<tag>Measurement</tag>
<tag>Level</tag>
</tags>
<state readOnly="false" min="0" max="100" pattern="%.0f %%"/>
</channel-type>
<channel-type id="rollerFavorite">
<item-type>Number</item-type>
<label>Position Favorite</label>
<description>Set roller position by selecting favorite 1-4 (needs to be defined in the Shelly App, 0=n/a)</description>
<label>@text/channel-type.shelly.rollerFavorite.label</label>
<description>@text/channel-type.shelly.rollerFavorite.description</description>
<state readOnly="false" min="0" max="4"/>
</channel-type>
<channel-type id="rollerState">
<item-type>String</item-type>
<label>State</label>
<description>State of the roller (open/close/stop)</description>
<label>@text/channel-type.shelly.rollerState.label</label>
<description>@text/channel-type.shelly.rollerState.description</description>
<category>Status</category>
<state readOnly="true">
<options>
<option value="open">opening</option>
<option value="close">closing</option>
<option value="stop">stopped</option>
<option value="open">@text/channel-type.shelly.rollerState.state.option.open</option>
<option value="close">@text/channel-type.shelly.rollerState.state.option.close</option>
<option value="stop">@text/channel-type.shelly.rollerState.state.option.stop</option>
</options>
</state>
</channel-type>
<channel-type id="rollerStop">
<item-type>String</item-type>
<label>Roller stop reason</label>
<description>Last cause for stopping: normal, safety switch, obstacle</description>
<label>@text/channel-type.shelly.rollerStop.label</label>
<description>@text/channel-type.shelly.rollerStop.description</description>
<state readOnly="true">
<options>
<option value="normal">normal</option>
<option value="safety_switch">safety switch</option>
<option value="obstacle">obstacle detected</option>
<option value="normal">@text/channel-type.shelly.rollerStop.state.option.normal</option>
<option value="safety_switch">@text/channel-type.shelly.rollerStop.state.option.safety_switch</option>
<option value="obstacle">@text/channel-type.shelly.rollerStop.state.option.obstacle</option>
</options>
</state>
</channel-type>
<channel-type id="rollerDirection">
<item-type>String</item-type>
<label>Last Roller Direction</label>
<description>Last direction: open or close</description>
<label>@text/channel-type.shelly.rollerDirection.label</label>
<description>@text/channel-type.shelly.rollerDirection.description</description>
<state readOnly="true">
<options>
<option value="open">open</option>
<option value="close">close</option>
<option value="stop">stopped</option>
<option value="open">@text/channel-type.shelly.rollerDirection.state.option.open</option>
<option value="close">@text/channel-type.shelly.rollerDirection.state.option.close</option>
<option value="stop">@text/channel-type.shelly.rollerDirection.state.option.stop</option>
</options>
</state>
</channel-type>
<channel-type id="rollerSafety" advanced="true">
<item-type>Switch</item-type>
<label>Safety Switch</label>
<description>Status of the safety switch</description>
<label>@text/channel-type.shelly.rollerSafety.label</label>
<description>@text/channel-type.shelly.rollerSafety.description</description>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="inputState">
<item-type>Switch</item-type>
<label>Input</label>
<description>Input/Button state</description>
<label>@text/channel-type.shelly.inputState.label</label>
<description>@text/channel-type.shelly.inputState.description</description>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="inputState1" advanced="true">
<item-type>Switch</item-type>
<label>Input #1</label>
<description>Input/Button state #1</description>
<label>@text/channel-type.shelly.inputState1.label</label>
<description>@text/channel-type.shelly.inputState1.description</description>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="inputState2" advanced="true">
<item-type>Switch</item-type>
<label>Input #2</label>
<description>Input/Button state #2</description>
<label>@text/channel-type.shelly.inputState2.label</label>
<description>@text/channel-type.shelly.inputState2.description </description>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="dimmerBrightness">
<item-type>Dimmer</item-type>
<label>Brightness</label>
<description>Light brightness in %</description>
<category>Light</category>
<label>@text/channel-type.shelly.dimmerBrightness.label</label>
<description>@text/channel-type.shelly.dimmerBrightness.description</description>
<category>DimmableLight</category>
</channel-type>
<channel-type id="meterWatts">
<item-type>Number:Power</item-type>
<label>Watt</label>
<description>Current power consumption in Watt</description>
<state readOnly="true" pattern="%.2f %unit%">
</state>
</channel-type>
<channel-type id="supplyVoltage" advanced="true">
<item-type>Number:ElectricPotential</item-type>
<label>Supply Voltage</label>
<description>Supply voltage of the device in Volt</description>
<label>@text/channel-type.shelly.meterWatts.label</label>
<description>@text/channel-type.shelly.meterWatts.description</description>
<category>Energy</category>
<tags>
<tag>Measurement</tag>
<tag>Current</tag>
</tags>
<state readOnly="true" pattern="%.2f %unit%">
</state>
</channel-type>
<channel-type id="meterAccuWatts" advanced="true">
<item-type>Number:Power</item-type>
<label>Accumulated Watt</label>
<description>Accumulated current power consumption in Watt from all meters</description>
<label>@text/channel-type.shelly.meterAccuWatts.label</label>
<description>@text/channel-type.shelly.meterAccuWatts.description</description>
<category>Energy</category>
<state readOnly="true" pattern="%.2f %unit%">
</state>
</channel-type>
<channel-type id="meterAccuTotal" advanced="true">
<item-type>Number:Power</item-type>
<label>Accumulated Total</label>
<description>Accumulated total power consumption from all meters</description>
<label>@text/channel-type.shelly.meterAccuTotal.label</label>
<description>@text/channel-type.shelly.meterAccuTotal.description</description>
<category>Energy</category>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="meterAccuReturned" advanced="true">
<item-type>Number:Power</item-type>
<label>Accumulated Returned</label>
<description>Accumulated returned power consumption from all meters</description>
<label>@text/channel-type.shelly.meterAccuReturned.label</label>
<description>@text/channel-type.shelly.meterAccuReturned.description</description>
<category>Energy</category>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="meterReactive">
<item-type>Number:Power</item-type>
<label>Reactive Watt</label>
<description>Instantaneous reactive power in Watts (W)</description>
<label>@text/channel-type.shelly.meterReactive.label</label>
<description>@text/channel-type.shelly.meterReactive.description</description>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="lastPower1" advanced="true">
<item-type>Number:Energy</item-type>
<label>Last Power #1</label>
<description>Last power consumption #1 - one rounded minute</description>
<label>@text/channel-type.shelly.lastPower1.label</label>
<description>@text/channel-type.shelly.lastPower1.description</description>
<category>Energy</category>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="meterTotal">
<item-type>Number:Energy</item-type>
<label>Total Energy</label>
<description>Total power consumption</description>
<label>@text/channel-type.shelly.meterTotal.label</label>
<description>@text/channel-type.shelly.meterTotal.description</description>
<category>Energy</category>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="meterReturned">
<item-type>Number:Energy</item-type>
<label>Total Returned Energy</label>
<description>Total returned energy</description>
<label>@text/channel-type.shelly.meterReturned.label</label>
<description>@text/channel-type.shelly.meterReturned.description</description>
<category>Energy</category>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="meterVoltage">
<item-type>Number:ElectricPotential</item-type>
<label>Voltage</label>
<description>RMS voltage, Volts </description>
<label>@text/channel-type.shelly.meterVoltage.label</label>
<description>@text/channel-type.shelly.meterVoltage.description</description>
<tags>
<tag>Measurement</tag>
<tag>Voltage</tag>
</tags>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="meterCurrent">
<item-type>Number:ElectricPotential</item-type>
<label>Current</label>
<description>Current in A </description>
<label>@text/channel-type.shelly.meterCurrent.label</label>
<description>@text/channel-type.shelly.meterCurrent.description</description>
<category>Energy</category>
<tags>
<tag>Measurement</tag>
<tag>Power</tag>
</tags>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="meterPowerFactor">
<item-type>Number</item-type>
<label>Power Factor</label>
<state readOnly="true" pattern="%.2f %unit%">
<label>@text/channel-type.shelly.meterPowerFactor.label</label>
<description>@text/channel-type.shelly.meterPowerFactor.description</description>
<state readOnly="true" pattern="%.3f %unit%">
</state>
</channel-type>
<channel-type id="timestamp">
<item-type>DateTime</item-type>
<label>Last Update</label>
<description>Timestamp of last measurement</description>
<label>@text/channel-type.shelly.timestamp.label</label>
<description>@text/channel-type.shelly.timestamp.description</description>
<category>Time</category>
<tags>
<tag>Timestamp</tag>
</tags>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="ledStatusDisable">
<item-type>Switch</item-type>
<label>Disable Status LED</label>
<description>Disable LED indication for network status</description>
<label>@text/channel-type.shelly.ledStatusDisable.label</label>
<description>@text/channel-type.shelly.ledStatusDisable.description</description>
</channel-type>
<channel-type id="ledPowerDisable">
<item-type>Switch</item-type>
<label>Disable Power LED</label>
<description>Disable LED indication for output status</description>
<label>@text/channel-type.shelly.ledPowerDisable.label</label>
<description>@text/channel-type.shelly.ledPowerDisable.description</description>
</channel-type>
<channel-type id="lastUpdate" advanced="true">
<item-type>DateTime</item-type>
<label>Last Update</label>
<description>Timestamp of last status update</description>
<label>@text/channel-type.shelly.lastUpdate.label</label>
<description>@text/channel-type.shelly.lastUpdate.description</description>
<category>Time</category>
<tags>
<tag>Timestamp</tag>
</tags>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="eventTrigger">
<kind>trigger</kind>
<label>Event</label>
<description>Event Trigger, e.g. button on/off, Output on/off</description>
<label>@text/channel-type.shelly.eventTrigger.label</label>
<description>@text/channel-type.shelly.eventTrigger.description</description>
<event>
<options>
<option value="ROLLER_OPEN">Roller is open</option>
<option value="ROLLER_CLOSE">Roller is closed</option>
<option value="ROLLER_STOP">Roller has stopped</option>
<option value="ROLLER_OPEN">@text/channel-type.shelly.eventTrigger.option.ROLLER_OPEN</option>
<option value="ROLLER_CLOSE">@text/channel-type.shelly.eventTrigger.option.ROLLER_CLOSE</option>
<option value="ROLLER_STOP">@text/channel-type.shelly.eventTrigger.option.ROLLER_STOP</option>
</options>
</event>
</channel-type>

View File

@ -6,215 +6,293 @@
<thing-type id="shellyht">
<label>Shelly H&amp;T (SHHT-1)</label>
<description>Shelly H&amp;T Sensor</description>
<description>@text/thing-type.shelly.shellyht.description</description>
<category>Sensor</category>
<channel-groups>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellysmoke">
<label>Shelly Smoke</label>
<description>Shelly Smoke Sensor (battery powered)</description>
<description>@text/thing-type.shelly.shellysmoke.description</description>
<category>SmokeDetector</category>
<channel-groups>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellygas">
<label>Shelly GAS (SHGS-1)</label>
<description>Shelly Gas Sensor</description>
<description>@text/thing-type.shelly.shellygas.description</description>
<category>Sensor</category>
<channel-groups>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:basic"/>
</thing-type>
<thing-type id="shellyflood">
<label>Shelly Flood (SHWT-1)</label>
<description>Shelly Flood Sensor (battery powered)</description>
<description>@text/thing-type.shelly.shellyflood.description</description>
<category>Sensor</category>
<channel-groups>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellydw">
<label>Shelly Door/Window (SHDW-1)</label>
<description>Shelly Door/Window Sensor (battery powered)</description>
<description>@text/thing-type.shelly.shellydw.description</description>
<category>Sensor</category>
<channel-groups>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellydw2">
<label>Shelly Door/Window (SHDW-2)</label>
<description>Shelly Door/Window 2 Sensor (battery powered)</description>
<description>@text/thing-type.shelly.shellydw2.description</description>
<category>Sensor</category>
<channel-groups>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellysense">
<label>Shelly Sense (SHSEN-1)</label>
<description>Shelly Sense Remote IR Controller</description>
<description>@text/thing-type.shelly.shellysense.description</description>
<channel-groups>
<channel-group id="control" typeId="senseControl"/>
<channel-group id="control" typeId="control"/>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellybutton1">
<label>Shelly Button 1 (SHBTN-1)</label>
<description>Shelly Button 1 (battery powered)</description>
<description>@text/thing-type.shelly.shellybutton1.description</description>
<category>WallSwitch</category>
<channel-groups>
<channel-group id="status" typeId="buttonState"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellybutton2">
<label>Shelly Button 2 (SHBTN-2)</label>
<description>@text/thing-type.shelly.shellybutton2.description</description>
<category>WallSwitch</category>
<channel-groups>
<channel-group id="status" typeId="buttonState"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellymotion">
<label>Shelly Motion (SHMOS-1)</label>
<description>Shelly Motion Sensor (battery powered)</description>
<label>Shelly Motion (SHMOS-01/SHMOS-02)</label>
<description>@text/thing-type.shelly.shellymotion.description</description>
<category>MotionDetector</category>
<channel-groups>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<thing-type id="shellytrv">
<label>Shelly TRV (SHTRV-01)</label>
<description>@text/thing-type.shelly.shellytrv.description</description>
<category>RadiatorControl</category>
<channel-groups>
<channel-group id="sensors" typeId="sensorData"/>
<channel-group id="control" typeId="control"/>
<channel-group id="battery" typeId="batteryStatus"/>
<channel-group id="device" typeId="deviceStatus"/>
</channel-groups>
<representation-property>serviceName</representation-property>
<config-description-ref uri="thing-type:shelly:battery"/>
</thing-type>
<channel-type id="controlMode">
<item-type>String</item-type>
<label>@text/channel-type.shelly.controlMode.label</label>
<description>@text/channel-type.shelly.controlMode.description</description>
<state>
<options>
<option value="manual">@text/channel-type.shelly.controlMode.state.option.manual</option>
<option value="automatic">@text/channel-type.shelly.controlMode.state.option.automatic</option>
</options>
</state>
</channel-type>
<channel-type id="controlProfile">
<item-type>Number</item-type>
<label>@text/channel-type.shelly.controlProfile.label</label>
<description>@text/channel-type.shelly.controlProfile.description</description>
<state min="0" max="5" step="1" readOnly="false"></state>
</channel-type>
<channel-type id="targetTemp">
<item-type>Number:Temperature</item-type>
<label>@text/channel-type.shelly.targetTemp.label</label>
<description>@text/channel-type.shelly.targetTemp.description</description>
<category>Heating</category>
<tags>
<tag>Setpoint</tag>
<tag>Temperature</tag>
</tags>
<state min="4" max="31" step="0.5" pattern="%.1f %unit%" readOnly="false"></state>
</channel-type>
<channel-type id="boostControl">
<item-type>Switch</item-type>
<label>@text/channel-type.shelly.boostControl.label</label>
<description>@text/channel-type.shelly.boostControl.description</description>
</channel-type>
<channel-type id="boostTimer">
<item-type>Number:Time</item-type>
<label>@text/channel-type.shelly.boostTimer.label</label>
<description>@text/channel-type.shelly.boostTimer.description</description>
<category>Time</category>
<state min="0" step="1" pattern="%.0f %unit%" readOnly="false"></state>
</channel-type>
<channel-group-type id="sensorData">
<label>Sensor Data</label>
<description>Data from the various sensors</description>
<label>@text/channel-group-type.shelly.sensorData.label</label>
<description>@text/channel-group-type.shelly.sensorData.description</description>
</channel-group-type>
<channel-group-type id="batteryStatus">
<label>Battery Status</label>
</channel-group-type>
<channel-group-type id="senseControl">
<label>Sense Control</label>
<description>Sense Settings</description>
<channels>
<channel id="key" typeId="senseKey"/>
</channels>
</channel-group-type>
<channel-group-type id="buttonState">
<label>Button State</label>
<description>Status of the Button</description>
<label>@text/channel-group-type.shelly.batteryStatus.label</label>
<description>@text/channel-group-type.shelly.batteryStatus.description</description>
<category>BatteryLevel</category>
</channel-group-type>
<channel-group-type id="control">
<label>@text/channel-group-type.shelly.control.label</label>
<description>@text/channel-group-type.shelly.control.description</description>
</channel-group-type>
<channel-group-type id="buttonState">
<label>@text/channel-group-type.shelly.buttonState.label</label>
<description>@text/channel-group-type.shelly.buttonState.description</description>
</channel-group-type>
<channel-type id="sensorContact">
<item-type>Contact</item-type>
<label>Contact</label>
<description>State of the contact: open/close</description>
<category>Contact</category>
<label>@text/channel-type.shelly.sensorContact.label</label>
<description>@text/channel-type.shelly.sensorContact.description</description>
<state pattern="%s" readOnly="true">
<options>
<option value="OPEN">Open</option>
<option value="CLOSED">Closed</option>
<option value="OPEN">@text/channel-type.shelly.sensorContact.state.option.OPEN</option>
<option value="CLOSED">@text/channel-type.shelly.sensorContact.state.option.CLOSED</option>
</options>
</state>
</channel-type>
<channel-type id="sensorState">
<item-type>String</item-type>
<label>Sensor State</label>
<description>Sensor State: normal</description>
<label>@text/channel-type.shelly.sensorState.label</label>
<description>@text/channel-type.shelly.sensorState.description</description>
<state pattern="%s" readOnly="true">
<options>
<option value="warmup">Warm-Up</option>
<option value="normal">Normal</option>
<option value="fault">Fault</option>
<option value="unknown">unknown</option>
<option value="warmup">@text/channel-type.shelly.sensorState.state.option.warmup</option>
<option value="normal">@text/channel-type.shelly.sensorState.state.option.normal</option>
<option value="fault">@text/channel-type.shelly.sensorState.state.option.fault</option>
<option value="unknown">@text/channel-type.shelly.sensorState.state.option.unknown</option>
</options>
</state>
</channel-type>
<channel-type id="alarmState">
<item-type>String</item-type>
<label>Alarm State</label>
<description>Alarm State: normal</description>
<label>@text/channel-type.shelly.alarmState.label</label>
<description>@text/channel-type.shelly.alarmState.description</description>
<state pattern="%s" readOnly="true">
<options>
<option value="unknown">Unknown</option>
<option value="none">None</option>
<option value="mild">Mild</option>
<option value="heavy">Heavy</option>
<option value="test">Test</option>
<option value="unknown">@text/channel-type.shelly.alarmState.state.option.unknown</option>
<option value="none">@text/channel-type.shelly.alarmState.state.option.none</option>
<option value="mild">@text/channel-type.shelly.alarmState.state.option.mild</option>
<option value="heavy">@text/channel-type.shelly.alarmState.state.option.heavy</option>
<option value="test">@text/channel-type.shelly.alarmState.state.option.test</option>
</options>
</state>
</channel-type>
<channel-type id="lastEvent">
<item-type>String</item-type>
<label>Event</label>
<description>Event Type</description>
<label>@text/channel-type.shelly.lastEvent.label</label>
<description>@text/channel-type.shelly.lastEvent.description</description>
<state pattern="%s" readOnly="true">
<options>
<option value="S">Short push</option>
<option value="SS">Double-Short push</option>
<option value="SSS">Triple-Short push</option>
<option value="L">Long push</option>
<option value="SL">Short-Long push</option>
<option value="LS">Long-Short push</option>
<option value="S">@text/channel-type.shelly.lastEvent.state.option.S</option>
<option value="SS">@text/channel-type.shelly.lastEvent.state.option.SS</option>
<option value="SSS">@text/channel-type.shelly.lastEvent.state.option.SSS</option>
<option value="L">@text/channel-type.shelly.lastEvent.state.option.L</option>
<option value="SL">@text/channel-type.shelly.lastEvent.state.option.SL</option>
<option value="LS">@text/channel-type.shelly.lastEvent.state.option.LS</option>
</options>
</state>
</channel-type>
<channel-type id="eventCount">
<item-type>Number</item-type>
<label>Event Count</label>
<description>Event Count</description>
<label>@text/channel-type.shelly.eventCount.label</label>
<description>@text/channel-type.shelly.eventCount.description</description>
<state pattern="%.0f" readOnly="true">
</state>
</channel-type>
<channel-type id="sensorTemp">
<item-type>Number:Temperature</item-type>
<label>Temperature</label>
<description>Temperature from the sensor</description>
<label>@text/channel-type.shelly.sensorTemp.label</label>
<description>@text/channel-type.shelly.sensorTemp.description</description>
<category>Temperature</category>
<tags>
<tag>Measurement</tag>
@ -223,10 +301,11 @@
<state readOnly="true" pattern="%.1f %unit%">
</state>
</channel-type>
<channel-type id="sensorExtTemp">
<item-type>Number:Temperature</item-type>
<label>Temperature</label>
<description>Temperature from the external sensor</description>
<label>@text/channel-type.shelly.sensorExtTemp.label</label>
<description>@text/channel-type.shelly.sensorExtTemp.label</description>
<category>Temperature</category>
<tags>
<tag>Measurement</tag>
@ -235,10 +314,11 @@
<state readOnly="true" pattern="%.1f %unit%">
</state>
</channel-type>
<channel-type id="sensorExtHum">
<item-type>Number:Dimensionless</item-type>
<label>Humidity</label>
<description>Relative humidity in % (0..100%) from external sensor</description>
<label>@text/channel-type.shelly.sensorExtHum.label</label>
<description>@text/channel-type.shelly.sensorExtHum.description</description>
<category>Humidity</category>
<tags>
<tag>Measurement</tag>
@ -247,10 +327,11 @@
<state readOnly="true" pattern="%.1f %unit%">
</state>
</channel-type>
<channel-type id="sensorHumidity">
<item-type>Number:Dimensionless</item-type>
<label>Humidity</label>
<description>Relative humidity in % (0..100%)</description>
<label>@text/channel-type.shelly.sensorHumidity.label</label>
<description>@text/channel-type.shelly.sensorHumidity.description</description>
<category>Humidity</category>
<tags>
<tag>Measurement</tag>
@ -258,112 +339,155 @@
</tags>
<state readOnly="true" pattern="%.1f %unit%"/>
</channel-type>
<channel-type id="sensorFlood">
<item-type>Switch</item-type>
<label>Flood Alarm</label>
<description>ON: Indicates flood condition / water detected</description>
<label>@text/channel-type.shelly.sensorFlood.label</label>
<description>@text/channel-type.shelly.sensorFlood.description</description>
<category>Water</category>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="sensorSmoke">
<item-type>Switch</item-type>
<label>Smoke Alarm</label>
<description>ON: Indicates smoke detection</description>
<label>@text/channel-type.shelly.sensorSmoke.label</label>
<description>@text/channel-type.shelly.sensorSmoke.description</description>
<category>Smoke</category>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="sensorLux">
<item-type>Number:Illuminance</item-type>
<label>Lux</label>
<description>Brightness from the sensor (Lux)</description>
<label>@text/channel-type.shelly.sensorLux.label</label>
<description>@text/channel-type.shelly.sensorLux.description</description>
<state readOnly="true" pattern="%.0f %unit%">
</state>
</channel-type>
<channel-type id="sensorIllumination">
<item-type>String</item-type>
<label>Illumination</label>
<description>Current illumination: dark/twilight/bright</description>
<label>@text/channel-type.shelly.sensorIllumination.label</label>
<description>@text/channel-type.shelly.sensorIllumination.description</description>
<state readOnly="true">
<options>
<option value="dark">Dark</option>
<option value="twilight">Twilight</option>
<option value="bright">Bright</option>
<option value="dark">@text/channel-type.shelly.sensorIllumination.state.option.dark</option>
<option value="twilight">@text/channel-type.shelly.sensorIllumination.state.option.twilight</option>
<option value="bright">@text/channel-type.shelly.sensorIllumination.state.option.bright</option>
<option value="unknown">@text/channel-type.shelly.sensorIllumination.state.option.unknown</option>
</options>
</state>
</channel-type>
<channel-type id="motionTimestamp">
<item-type>DateTime</item-type>
<label>Last motion</label>
<description>Timestamp of last detected motion</description>
<label>@text/channel-type.shelly.motionTimestamp.label</label>
<description>@text/channel-type.shelly.motionTimestamp.description</description>
<category>Time</category>
<tags>
<tag>Timestamp</tag>
</tags>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="motionActive" advanced="true">
<item-type>Switch</item-type>
<label>@text/channel-type.shelly.motionActive.label</label>
<description>channel-type.shelly.motionActive.description</description>
<category>Contact</category>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="sensorMotion">
<item-type>Switch</item-type>
<label>Motion</label>
<description>ON: Motion detected</description>
<label>@text/channel-type.shelly.sensorMotion.label</label>
<description>@text/channel-type.shelly.sensorMotion.description</description>
<category>Motion</category>
<tags>
<tag>Status</tag>
<tag>Presence</tag>
</tags>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="sensorVibration">
<item-type>Switch</item-type>
<label>Vibration</label>
<description>ON: Vibration detected</description>
<label>@text/channel-type.shelly.sensorVibration.label</label>
<description>@text/channel-type.shelly.sensorVibration.description</description>
<category>Flow</category>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="sensorTilt">
<item-type>Number:Angle</item-type>
<label>Tilt</label>
<description>Tilt in degrees (requires calibration)</description>
<label>@text/channel-type.shelly.sensorTilt.label</label>
<description>@text/channel-type.shelly.sensorTilt.description</description>
<category>Tilt</category>
<state readOnly="true" pattern="%.0f %unit%">
</state>
</channel-type>
<channel-type id="sensorPPM">
<item-type>Number:Density</item-type>
<label>Concentration</label>
<description>Gas concentration in ppm</description>
<label>@text/channel-type.shelly.sensorPPM.label</label>
<description>@text/channel-type.shelly.sensorPPM.description</description>
<category>Gas</category>
<tags>
<tag>Measurement</tag>
<tag>Gas</tag>
</tags>
<state readOnly="true" pattern="%.0f %unit%">
</state>
</channel-type>
<channel-type id="sensorADC">
<item-type>Number:ElectricPotential</item-type>
<label>Voltage (ADC)</label>
<description>ADC voltage in V</description>
<state readOnly="true" pattern="%.2f %unit%">
<label>@text/channel-type.shelly.sensorADC.label</label>
<description>@text/channel-type.shelly.sensorADC.description</description>
<state readOnly="true" pattern="%.0f %unit%">
</state>
</channel-type>
<channel-type id="sensorPosition">
<item-type>Dimmer</item-type>
<label>@text/channel-type.shelly.sensorPosition.label</label>
<description>@text/channel-type.shelly.sensorPosition.description</description>
<category>RadiatorControl</category>
<state min="0" max="100" step="1" readOnly="false" pattern="%.0f %unit%"></state>
</channel-type>
<channel-type id="sensorValve">
<item-type>String</item-type>
<label>Valve</label>
<description>Current valve status: closed/opened/not_connected/failure/closing/opening/checking</description>
<label>@text/channel-type.shelly.sensorValve.label</label>
<description>@text/channel-type.shelly.sensorValve.description</description>
<category>Pressure</category>
<state readOnly="true">
<options>
<option value="closed">closed</option>
<option value="opened">opened</option>
<option value="not_connected">not connected</option>
<option value="failure">failure</option>
<option value="closing">closing</option>
<option value="opening">opening</option>
<option value="checking">checking</option>
<option value="unknown">UNKNOWN</option>
<option value="closed">@text/channel-type.shelly.sensorValve.state.option.closed</option>
<option value="opened">@text/channel-type.shelly.sensorValve.state.option.opened</option>
<option value="not_connected">@text/channel-type.shelly.sensorValve.state.option.not_connected</option>
<option value="failure">@text/channel-type.shelly.sensorValve.state.option.failure</option>
<option value="closing">@text/channel-type.shelly.sensorValve.state.option.closing</option>
<option value="opening">@text/channel-type.shelly.sensorValve.state.option.opening</option>
<option value="checking">@text/channel-type.shelly.sensorValve.state.option.checking</option>
<option value="unknown">@text/channel-type.shelly.sensorValve.state.option.UNKNOWN</option>
</options>
</state>
</channel-type>
<channel-type id="sensorError">
<item-type>String</item-type>
<label>Last Error</label>
<description>Only valid in case of error</description>
<label>@text/channel-type.shelly.sensorError.label</label>
<description>@text/channel-type.shelly.sensorError.description</description>
<state readOnly="true">
</state>
</channel-type>
<channel-type id="sensorSleepTime" advanced="true">
<item-type>Number:Time</item-type>
<label>@text/channel-type.shelly.sensorSleepTime.label</label>
@ -373,8 +497,8 @@
<channel-type id="senseKey">
<item-type>String</item-type>
<label>IR Key to Send</label>
<description>Send a defined key code</description>
<label>@text/channel-type.shelly.senseKey.label</label>
<description>@text/channel-type.shelly.senseKey.description</description>
</channel-type>
</thing:thing-descriptions>

View File

@ -6,22 +6,22 @@
<thing-type id="shellydevice">
<label>Shelly Device</label>
<description>A password protected or unknown device.</description>
<description>@text/thing-type.shelly.shellydevice.description</description>
<representation-property>deviceName</representation-property>
<representation-property>serviceName</representation-property>
<config-description>
<parameter name="userId" type="text" required="true">
<label>UserID</label>
<description>User ID for API access.</description>
<label>@text/thing-type.config.shellydevice.userId.label</label>
<description>@text/thing-type.config.shellydevice.userId.description</description>
</parameter>
<parameter name="password" type="text" required="true">
<label>Password</label>
<description>Password for API access.</description>
<label>@text/thing-type.config.shellydevice.password.label</label>
<description>@text/thing-type.config.shellydevice.password.description</description>
<context>password</context>
</parameter>
<parameter name="deviceIp" type="text" required="true">
<label>IP Address</label>
<description>IP Address of the Shelly device.</description>
<label>@text/thing-type.config.shellydevice.deviceIp.label</label>
<description>@text/thing-type.config.shellydevice.deviceIp.description</description>
<context>network-address</context>
</parameter>
</config-description>
@ -30,7 +30,7 @@
<thing-type id="shellyunknown">
<label>Unknown Shelly Device</label>
<description>This device is currently not supported</description>
<description>@text/thing-type.shelly.shellyunknown.description</description>
<representation-property>deviceName</representation-property>
</thing-type>