Shelly: Add support for Plug/PlugS, RGBW2, Dimmer, 2.5, 1PM

master
Michael Zanetti 2020-01-29 20:26:20 +01:00
parent 8a23a4dc59
commit 3c990964c0
6 changed files with 2198 additions and 109 deletions

View File

@ -2,7 +2,13 @@
The Shelly plugin adds support for Shelly devices (https://shelly.cloud).
Currently the Shelly1 and Shelly1PM are supported.
The currently supported devices are:
* Shelly 1
* Shelly 1PM
* Shelly 2.5
* Shelly Plug / PlugS
* Shelly RGBW2
* Shelly Dimmer
## Requirements
Shelly devices communicate with via MQTT. This means, in order to add Shelly devices to nymea, the nymea instance is required
@ -14,16 +20,17 @@ network where the nymea system is located. No other options need to be set as th
## Setting up devices
Once the Shelly is connected to the WiFi, a device discovery in nymea can be performed and will list the Shelly device.
During setup, the connected device can be configured. If the Shelly is connected to e.g. a light bulb, choose "Light" here.
Optionally, a username and password can be set. If the Shelly device is already configured to require authentication,
the username and password here must match the ones set on the Shelly. NOTE: If the Shelly is not configured to require a
login yet, but credentials are entered during setup, the Shelly device will be configured to require authentication from
now on.
For some Shelly devices, the connected device can be configured during setup. If the Shelly is connected to e.g. a light bulb,
choose "Light" here. Optionally, a username and password can be set. If the Shelly device is already configured to require
authentication, the username and password here must match the ones set on the Shelly. NOTE: If the Shelly is not configured
to require a login yet, but credentials are entered during setup, the Shelly device will be configured to require authentication
from now on and this login will be required also for the web interface of the Shelly device.
## Plugin properties
When adding a Shelly device it will add a new Gateway type device representing the Shelly device itself. It will allow
basic monitoring (such as the connected state) and interaction (e.g. reboot the Shelly device). In addition to that, a
power switch device will appear which will reflect presses on the Shelly's SW input. This power switch device also
offers the possiblity to configure the used switch (e.g. toggle, momentary, edge or detached from the Shelly's output).
If a connected device has been selected during setup, an additional device, e.g. the light will appear in the system and
can be used to control the power output of the Shelly, e.g. turning on or off the connected light.
When adding a Shelly device that is meant to be installed in walls and has connectors to switches, a new Gateway type device
representing the Shelly device itself will be added. The gateway device allow basic monitoring (such as the connected state)
and interaction (e.g. reboot the Shelly device). In addition to that, a power switch device will appear which will reflect
presses on the Shelly's SW input. This power switch device also offers the possiblity to configure the used switch (e.g.
toggle, momentary, edge or detached from the Shelly's output). If a connected device has been selected during setup, an
additional device, e.g. the light will appear in the system and can be used to control the power output of the Shelly,
e.g. turning on or off the connected light.

View File

@ -35,6 +35,7 @@
#include <QNetworkReply>
#include <QHostAddress>
#include <QJsonDocument>
#include <QColor>
#include "hardwaremanager.h"
#include "network/networkaccessmanager.h"
@ -46,18 +47,134 @@
DevicePluginShelly::DevicePluginShelly()
{
// Device param types
m_idParamTypeMap[shelly1DeviceClassId] = shelly1DeviceIdParamTypeId;
m_idParamTypeMap[shelly1pmDeviceClassId] = shelly1pmDeviceIdParamTypeId;
m_idParamTypeMap[shellyPlugDeviceClassId] = shellyPlugDeviceIdParamTypeId;
m_idParamTypeMap[shellyRgbw2DeviceClassId] = shellyRgbw2DeviceIdParamTypeId;
m_idParamTypeMap[shellyDimmerDeviceClassId] = shellyDimmerDeviceIdParamTypeId;
m_idParamTypeMap[shelly25DeviceClassId] = shelly25DeviceIdParamTypeId;
m_usernameParamTypeMap[shelly1DeviceClassId] = shelly1DeviceUsernameParamTypeId;
m_usernameParamTypeMap[shelly1pmDeviceClassId] = shelly1pmDeviceUsernameParamTypeId;
m_usernameParamTypeMap[shellyPlugDeviceClassId] = shellyPlugDeviceUsernameParamTypeId;
m_usernameParamTypeMap[shellyRgbw2DeviceClassId] = shellyRgbw2DeviceUsernameParamTypeId;
m_usernameParamTypeMap[shellyDimmerDeviceClassId] = shellyDimmerDeviceUsernameParamTypeId;
m_usernameParamTypeMap[shelly25DeviceClassId] = shelly25DeviceUsernameParamTypeId;
m_passwordParamTypeMap[shelly1DeviceClassId] = shelly1DevicePasswordParamTypeId;
m_passwordParamTypeMap[shelly1pmDeviceClassId] = shelly1pmDevicePasswordParamTypeId;
m_passwordParamTypeMap[shellyPlugDeviceClassId] = shellyPlugDevicePasswordParamTypeId;
m_passwordParamTypeMap[shellyRgbw2DeviceClassId] = shellyRgbw2DevicePasswordParamTypeId;
m_passwordParamTypeMap[shellyDimmerDeviceClassId] = shellyDimmerDevicePasswordParamTypeId;
m_passwordParamTypeMap[shelly25DeviceClassId] = shelly25DevicePasswordParamTypeId;
m_connectedDeviceParamTypeMap[shelly1DeviceClassId] = shelly1DeviceConnectedDeviceParamTypeId;
m_connectedDeviceParamTypeMap[shelly1pmDeviceClassId] = shelly1pmDeviceConnectedDeviceParamTypeId;
m_connectedDeviceParamTypeMap[shellyPlugDeviceClassId] = shellyPlugDeviceConnectedDeviceParamTypeId;
m_connectedDeviceParamTypeMap[shelly25DeviceClassId] = shelly25DeviceConnectedDevice1ParamTypeId;
m_connectedDevice2ParamTypeMap[shelly25DeviceClassId] = shelly25DeviceConnectedDevice2ParamTypeId;
m_channelParamTypeMap[shellyGenericDeviceClassId] = shellyGenericDeviceChannelParamTypeId;
m_channelParamTypeMap[shellyLightDeviceClassId] = shellyLightDeviceChannelParamTypeId;
m_channelParamTypeMap[shellySocketDeviceClassId] = shellySocketDeviceChannelParamTypeId;
m_channelParamTypeMap[shellyGenericPMDeviceClassId] = shellyGenericPMDeviceChannelParamTypeId;
m_channelParamTypeMap[shellyLightPMDeviceClassId] = shellyLightPMDeviceChannelParamTypeId;
m_channelParamTypeMap[shellySocketPMDeviceClassId] = shellySocketPMDeviceChannelParamTypeId;
m_channelParamTypeMap[shellyRollerDeviceClassId] = shellyRollerDeviceChannelParamTypeId;
// States
m_connectedStateTypesMap[shelly1DeviceClassId] = shelly1ConnectedStateTypeId;
m_connectedStateTypesMap[shelly1pmDeviceClassId] = shelly1pmConnectedStateTypeId;
m_connectedStateTypesMap[shelly25DeviceClassId] = shelly25ConnectedStateTypeId;
m_connectedStateTypesMap[shellyPlugDeviceClassId] = shellyPlugConnectedStateTypeId;
m_connectedStateTypesMap[shellyRgbw2DeviceClassId] = shellyRgbw2ConnectedStateTypeId;
m_connectedStateTypesMap[shellyDimmerDeviceClassId] = shellyDimmerConnectedStateTypeId;
m_connectedStateTypesMap[shellySwitchDeviceClassId] = shellySwitchConnectedStateTypeId;
m_connectedStateTypesMap[shellyGenericDeviceClassId] = shellyGenericConnectedStateTypeId;
m_connectedStateTypesMap[shellyLightDeviceClassId] = shellyLightConnectedStateTypeId;
m_connectedStateTypesMap[shellySocketDeviceClassId] = shellySocketConnectedStateTypeId;
m_connectedStateTypesMap[shellyGenericPMDeviceClassId] = shellyGenericPMConnectedStateTypeId;
m_connectedStateTypesMap[shellyLightPMDeviceClassId] = shellyLightPMConnectedStateTypeId;
m_connectedStateTypesMap[shellySocketPMDeviceClassId] = shellySocketPMConnectedStateTypeId;
m_connectedStateTypesMap[shellyRollerDeviceClassId] = shellyRollerConnectedStateTypeId;
m_powerActionTypesMap[shellyGenericPowerActionTypeId] = shellyGenericDeviceClassId;
m_powerActionTypesMap[shellyLightPowerActionTypeId] = shellyLightDeviceClassId;
m_powerActionParamTypesMap[shellyGenericPowerActionTypeId] = shellyGenericPowerActionPowerParamTypeId;
m_powerActionParamTypesMap[shellyLightPowerActionTypeId] = shellyLightPowerActionPowerParamTypeId;
m_powerStateTypeMap[shellyPlugDeviceClassId] = shellyPlugPowerStateTypeId;
m_powerStateTypeMap[shellyRgbw2DeviceClassId] = shellyRgbw2PowerStateTypeId;
m_powerStateTypeMap[shellyDimmerDeviceClassId] = shellyDimmerPowerStateTypeId;
m_powerStateTypeMap[shellyGenericDeviceClassId] = shellyGenericPowerStateTypeId;
m_powerStateTypeMap[shellyLightDeviceClassId] = shellyLightPowerStateTypeId;
m_powerStateTypeMap[shellySocketDeviceClassId] = shellySocketPowerStateTypeId;
m_powerStateTypeMap[shellyGenericPMDeviceClassId] = shellyGenericPMPowerStateTypeId;
m_powerStateTypeMap[shellyLightPMDeviceClassId] = shellyLightPMPowerStateTypeId;
m_powerStateTypeMap[shellySocketPMDeviceClassId] = shellySocketPMPowerStateTypeId;
m_currentPowerStateTypeMap[shellyPlugDeviceClassId] = shellyPlugCurrentPowerStateTypeId;
m_currentPowerStateTypeMap[shellyRgbw2DeviceClassId] = shellyRgbw2CurrentPowerStateTypeId;
m_currentPowerStateTypeMap[shellyDimmerDeviceClassId] = shellyDimmerCurrentPowerStateTypeId;
m_currentPowerStateTypeMap[shellyGenericPMDeviceClassId] = shellyGenericPMCurrentPowerStateTypeId;
m_currentPowerStateTypeMap[shellyLightPMDeviceClassId] = shellyLightPMCurrentPowerStateTypeId;
m_currentPowerStateTypeMap[shellySocketPMDeviceClassId] = shellySocketPMCurrentPowerStateTypeId;
m_currentPowerStateTypeMap[shellyRollerDeviceClassId] = shellyRollerCurrentPowerStateTypeId;
m_totalEnergyConsumedStateTypeMap[shellyPlugDeviceClassId] = shellyPlugTotalEnergyConsumedStateTypeId;
m_totalEnergyConsumedStateTypeMap[shellyGenericPMDeviceClassId] = shellyGenericPMTotalEnergyConsumedStateTypeId;
m_totalEnergyConsumedStateTypeMap[shellyLightPMDeviceClassId] = shellyLightPMTotalEnergyConsumedStateTypeId;
m_totalEnergyConsumedStateTypeMap[shellySocketPMDeviceClassId] = shellySocketPMTotalEnergyConsumedStateTypeId;
m_totalEnergyConsumedStateTypeMap[shellyRollerDeviceClassId] = shellyRollerTotalEnergyConsumedStateTypeId;
m_colorStateTypeMap[shellyRgbw2DeviceClassId] = shellyRgbw2ColorStateTypeId;
m_colorTemperatureStateTypeMap[shellyRgbw2DeviceClassId] = shellyRgbw2ColorTemperatureStateTypeId;
m_brightnessStateTypeMap[shellyRgbw2DeviceClassId] = shellyRgbw2BrightnessStateTypeId;
m_brightnessStateTypeMap[shellyDimmerDeviceClassId] = shellyDimmerBrightnessStateTypeId;
// Actions and their params
m_rebootActionTypeMap[shelly1RebootActionTypeId] = shelly1DeviceClassId;
m_rebootActionTypeMap[shelly1pmRebootActionTypeId] = shelly1pmDeviceClassId;
m_rebootActionTypeMap[shellyPlugRebootActionTypeId] = shellyPlugDeviceClassId;
m_rebootActionTypeMap[shellyRgbw2RebootActionTypeId] = shellyRgbw2DeviceClassId;
m_rebootActionTypeMap[shellyDimmerRebootActionTypeId] = shellyDimmerDeviceClassId;
m_rebootActionTypeMap[shelly25RebootActionTypeId] = shelly25DeviceClassId;
m_powerActionTypesMap[shellyPlugPowerActionTypeId] = shellyPlugDeviceClassId;
m_powerActionTypesMap[shellyGenericPowerActionTypeId] = shellyGenericDeviceClassId;
m_powerActionTypesMap[shellyLightPowerActionTypeId] = shellyLightDeviceClassId;
m_powerActionTypesMap[shellySocketPowerActionTypeId] = shellySocketDeviceClassId;
m_powerActionTypesMap[shellyGenericPMPowerActionTypeId] = shellyGenericPMDeviceClassId;
m_powerActionTypesMap[shellyLightPMPowerActionTypeId] = shellyLightPMDeviceClassId;
m_powerActionTypesMap[shellySocketPMPowerActionTypeId] = shellySocketPMDeviceClassId;
m_powerActionParamTypesMap[shellyPlugPowerActionTypeId] = shellyPlugPowerActionPowerParamTypeId;
m_powerActionParamTypesMap[shellyGenericPowerActionTypeId] = shellyGenericPowerActionPowerParamTypeId;
m_powerActionParamTypesMap[shellyLightPowerActionTypeId] = shellyLightPowerActionPowerParamTypeId;
m_powerActionParamTypesMap[shellySocketPowerActionTypeId] = shellySocketPowerActionPowerParamTypeId;
m_powerActionParamTypesMap[shellyGenericPMPowerActionTypeId] = shellyGenericPMPowerActionPowerParamTypeId;
m_powerActionParamTypesMap[shellyLightPMPowerActionTypeId] = shellyLightPMPowerActionPowerParamTypeId;
m_powerActionParamTypesMap[shellySocketPMPowerActionTypeId] = shellySocketPMPowerActionPowerParamTypeId;
m_colorPowerActionTypesMap[shellyRgbw2PowerActionTypeId] = shellyRgbw2DeviceClassId;
m_colorPowerActionParamTypesMap[shellyRgbw2PowerActionPowerParamTypeId] = shellyRgbw2PowerActionTypeId;
m_colorActionTypesMap[shellyRgbw2ColorActionTypeId] = shellyRgbw2DeviceClassId;
m_colorActionParamTypesMap[shellyRgbw2ColorActionTypeId] = shellyRgbw2ColorActionTypeId;
m_colorBrightnessActionTypesMap[shellyRgbw2BrightnessActionTypeId] = shellyRgbw2DeviceClassId;
m_colorBrightnessActionParamTypesMap[shellyRgbw2BrightnessActionBrightnessParamTypeId] = shellyRgbw2BrightnessActionTypeId;
m_colorTemperatureActionTypesMap[shellyRgbw2ColorTemperatureActionTypeId] = shellyRgbw2DeviceClassId;
m_colorTemperatureActionParamTypesMap[shellyRgbw2ColorTemperatureActionTypeId] = shellyRgbw2ColorTemperatureActionColorTemperatureParamTypeId;
m_dimmablePowerActionTypesMap[shellyDimmerPowerActionTypeId] = shellyDimmerDeviceClassId;
m_dimmablePowerActionParamTypesMap[shellyDimmerPowerActionTypeId] = shellyDimmerPowerActionPowerParamTypeId;
m_dimmableBrightnessActionTypesMap[shellyDimmerBrightnessActionTypeId] = shellyDimmerDeviceClassId;
m_dimmableBrightnessActionParamTypesMap[shellyDimmerBrightnessActionTypeId] = shellyDimmerBrightnessActionBrightnessParamTypeId;
m_rollerOpenActionTypeMap[shellyRollerOpenActionTypeId] = shellyRollerDeviceClassId;
m_rollerCloseActionTypeMap[shellyRollerCloseActionTypeId] = shellyRollerDeviceClassId;
m_rollerStopActionTypeMap[shellyRollerStopActionTypeId] = shellyRollerDeviceClassId;
}
DevicePluginShelly::~DevicePluginShelly()
@ -75,15 +192,25 @@ void DevicePluginShelly::discoverDevices(DeviceDiscoveryInfo *info)
// qCDebug(dcShelly()) << "Have entry" << entry;
QRegExp namePattern;
if (info->deviceClassId() == shelly1DeviceClassId) {
namePattern = QRegExp("^shelly(1|1pm)-[0-9A-Z]+$");
namePattern = QRegExp("^shelly1-[0-9A-Z]+$");
} else if (info->deviceClassId() == shelly1pmDeviceClassId) {
namePattern = QRegExp("^shelly1pm-[0-9A-Z]+$");
} else if (info->deviceClassId() == shellyPlugDeviceClassId) {
namePattern = QRegExp("^shellyplug(-s)?-[0-9A-Z]+$");
} else if (info->deviceClassId() == shellyRgbw2DeviceClassId) {
namePattern = QRegExp("^shellyrgbw2-[0-9A-Z]+$");
} else if (info->deviceClassId() == shellyDimmerDeviceClassId) {
namePattern = QRegExp("^shellydimmer-[0-9A-Z]+$");
} else if (info->deviceClassId() == shelly25DeviceClassId) {
namePattern = QRegExp("^shellyswitch25-[0-9A-Z]+$");
}
if (!entry.name().contains(namePattern)) {
continue;
}
DeviceDescriptor descriptor(shelly1DeviceClassId, entry.name(), entry.hostAddress().toString());
DeviceDescriptor descriptor(info->deviceClassId(), entry.name(), entry.hostAddress().toString());
ParamList params;
params << Param(shelly1DeviceIdParamTypeId, entry.name());
params << Param(m_idParamTypeMap.value(info->deviceClassId()), entry.name());
descriptor.setParams(params);
Device *existingDevice = myDevices().findByParams(params);
@ -103,7 +230,12 @@ void DevicePluginShelly::setupDevice(DeviceSetupInfo *info)
{
Device *device = info->device();
if (device->deviceClassId() == shelly1DeviceClassId) {
if (device->deviceClassId() == shelly1DeviceClassId
|| device->deviceClassId() == shelly1pmDeviceClassId
|| device->deviceClassId() == shellyPlugDeviceClassId
|| device->deviceClassId() == shellyRgbw2DeviceClassId
|| device->deviceClassId() == shellyDimmerDeviceClassId
|| device->deviceClassId() == shelly25DeviceClassId) {
setupShellyGateway(info);
return;
}
@ -124,13 +256,13 @@ void DevicePluginShelly::executeAction(DeviceActionInfo *info)
Device *device = info->device();
Action action = info->action();
if (action.actionTypeId() == shelly1RebootActionTypeId) {
if (m_rebootActionTypeMap.contains(action.actionTypeId())) {
QUrl url;
url.setScheme("http");
url.setHost(getIP(info->device()));
url.setPath("/reboot");
url.setUserName(device->paramValue(shelly1DeviceUsernameParamTypeId).toString());
url.setPassword(device->paramValue(shelly1DevicePasswordParamTypeId).toString());
url.setUserName(device->paramValue(m_usernameParamTypeMap.value(device->deviceClassId())).toString());
url.setPassword(device->paramValue(m_passwordParamTypeMap.value(device->deviceClassId())).toString());
QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(url));
connect(reply, &QNetworkReply::finished, &QNetworkReply::deleteLater);
connect(reply, &QNetworkReply::finished, info, [info, reply](){
@ -140,12 +272,136 @@ void DevicePluginShelly::executeAction(DeviceActionInfo *info)
}
if (m_powerActionTypesMap.contains(action.actionTypeId())) {
Device *parentDevice = myDevices().findById(device->parentId());
// If the main shelly has a power action (e.g. Shelly Plug, there is no parentId)
Device *parentDevice = device->parentId().isNull() ? device : myDevices().findById(device->parentId());
MqttChannel *channel = m_mqttChannels.value(parentDevice);
QString shellyId = parentDevice->paramValue(shelly1DeviceIdParamTypeId).toString();
QString shellyId = parentDevice->paramValue(m_idParamTypeMap.value(parentDevice->deviceClassId())).toString();
int relay = 1;
if (m_channelParamTypeMap.contains(device->deviceClassId())) {
relay = device->paramValue(m_channelParamTypeMap.value(device->deviceClassId())).toInt();
}
ParamTypeId powerParamTypeId = m_powerActionParamTypesMap.value(action.actionTypeId());
bool on = action.param(powerParamTypeId).value().toBool();
channel->publish("shellies/" + shellyId + "/relay/0/command", on ? "on" : "off");
channel->publish(QString("shellies/%1/relay/%2/command").arg(shellyId).arg(relay - 1), on ? "on" : "off");
info->finish(Device::DeviceErrorNoError);
return;
}
if (m_colorPowerActionTypesMap.contains(action.actionTypeId())) {
MqttChannel *channel = m_mqttChannels.value(device);
QString shellyId = info->device()->paramValue(m_idParamTypeMap.value(info->device()->deviceClassId())).toString();
ParamTypeId colorPowerParamTypeId = m_colorPowerActionParamTypesMap.value(action.actionTypeId());
bool on = action.param(colorPowerParamTypeId).value().toBool();
channel->publish("shellies/" + shellyId + "/color/0/command", on ? "on" : "off");
info->finish(Device::DeviceErrorNoError);
return;
}
if (m_colorActionTypesMap.contains(action.actionTypeId())) {
MqttChannel *channel = m_mqttChannels.value(device);
QString shellyId = info->device()->paramValue(m_idParamTypeMap.value(info->device()->deviceClassId())).toString();
ParamTypeId colorParamTypeId = m_colorActionParamTypesMap.value(action.actionTypeId());
QColor color = action.param(colorParamTypeId).value().value<QColor>();
QVariantMap data;
data.insert("turn", "on"); // Should we really?
data.insert("red", color.red());
data.insert("green", color.green());
data.insert("blue", color.blue());
data.insert("white", 0);
QJsonDocument jsonDoc = QJsonDocument::fromVariant(data);
channel->publish("shellies/" + shellyId + "/color/0/set", jsonDoc.toJson());
info->finish(Device::DeviceErrorNoError);
return;
}
if (m_colorTemperatureStateTypeMap.contains(action.actionTypeId())) {
MqttChannel *channel = m_mqttChannels.value(device);
QString shellyId = info->device()->paramValue(m_idParamTypeMap.value(info->device()->deviceClassId())).toString();
ParamTypeId colorTemperatureParamTypeId = m_colorTemperatureActionParamTypesMap.value(action.actionTypeId());
int ct = action.param(colorTemperatureParamTypeId).value().toInt();
QVariantMap data;
data.insert("turn", "on"); // Should we really?
data.insert("red", qMin(255, ct * 255 / 50));
data.insert("green", 0);
data.insert("blue", qMax(0, ct - 50) * 255 / 50);
data.insert("white", 255);
QJsonDocument jsonDoc = QJsonDocument::fromVariant(data);
channel->publish("shellies/" + shellyId + "/color/0/set", jsonDoc.toJson());
info->finish(Device::DeviceErrorNoError);
return;
}
if (m_colorBrightnessActionTypesMap.contains(action.actionTypeId())) {
MqttChannel *channel = m_mqttChannels.value(device);
QString shellyId = info->device()->paramValue(m_idParamTypeMap.value(info->device()->deviceClassId())).toString();
ParamTypeId brightnessParamTypeId = m_colorBrightnessActionParamTypesMap.value(action.actionTypeId());
int brightness = action.param(brightnessParamTypeId).value().toInt();
QVariantMap data;
data.insert("turn", "on"); // Should we really?
data.insert("gain", brightness);
QJsonDocument jsonDoc = QJsonDocument::fromVariant(data);
channel->publish("shellies/" + shellyId + "/color/0/set", jsonDoc.toJson());
info->finish(Device::DeviceErrorNoError);
return;
}
qCDebug(dcShelly()) << "Power action";
if (m_dimmablePowerActionTypesMap.contains(action.actionTypeId())) {
MqttChannel *channel = m_mqttChannels.value(device);
QString shellyId = info->device()->paramValue(m_idParamTypeMap.value(info->device()->deviceClassId())).toString();
ParamTypeId powerParamTypeId = m_dimmablePowerActionParamTypesMap.value(action.actionTypeId());
bool on = action.param(powerParamTypeId).value().toBool();
channel->publish("shellies/" + shellyId + "/light/0/command", on ? "on" : "off");
info->finish(Device::DeviceErrorNoError);
return;
}
if (m_dimmableBrightnessActionTypesMap.contains(action.actionTypeId())) {
MqttChannel *channel = m_mqttChannels.value(device);
QString shellyId = info->device()->paramValue(m_idParamTypeMap.value(info->device()->deviceClassId())).toString();
ParamTypeId brightnessParamTypeId = m_dimmableBrightnessActionParamTypesMap.value(action.actionTypeId());
int brightness = action.param(brightnessParamTypeId).value().toInt();
QVariantMap data;
data.insert("turn", "on"); // Should we really?
data.insert("brightness", brightness);
QJsonDocument jsonDoc = QJsonDocument::fromVariant(data);
channel->publish("shellies/" + shellyId + "/light/0/set", jsonDoc.toJson());
info->finish(Device::DeviceErrorNoError);
return;
}
if (m_rollerOpenActionTypeMap.contains(action.actionTypeId())) {
Device *parentDevice = myDevices().findById(device->parentId());
MqttChannel *channel = m_mqttChannels.value(parentDevice);
QString shellyId = parentDevice->paramValue(m_idParamTypeMap.value(parentDevice->deviceClassId())).toString();
channel->publish("shellies/" + shellyId + "/roller/0/command", "open");
info->finish(Device::DeviceErrorNoError);
return;
}
if (m_rollerCloseActionTypeMap.contains(action.actionTypeId())) {
Device *parentDevice = myDevices().findById(device->parentId());
MqttChannel *channel = m_mqttChannels.value(parentDevice);
QString shellyId = parentDevice->paramValue(m_idParamTypeMap.value(parentDevice->deviceClassId())).toString();
channel->publish("shellies/" + shellyId + "/roller/0/command", "close");
info->finish(Device::DeviceErrorNoError);
return;
}
if (m_rollerStopActionTypeMap.contains(action.actionTypeId())) {
Device *parentDevice = myDevices().findById(device->parentId());
MqttChannel *channel = m_mqttChannels.value(parentDevice);
QString shellyId = parentDevice->paramValue(m_idParamTypeMap.value(parentDevice->deviceClassId())).toString();
channel->publish("shellies/" + shellyId + "/roller/0/command", "stop");
info->finish(Device::DeviceErrorNoError);
return;
}
if (action.actionTypeId() == shellyRollerCalibrateActionTypeId) {
Device *parentDevice = myDevices().findById(device->parentId());
MqttChannel *channel = m_mqttChannels.value(parentDevice);
QString shellyId = parentDevice->paramValue(m_idParamTypeMap.value(parentDevice->deviceClassId())).toString();
channel->publish("shellies/" + shellyId + "/roller/0/command", "rc");
info->finish(Device::DeviceErrorNoError);
return;
}
@ -160,7 +416,7 @@ void DevicePluginShelly::onClientConnected(MqttChannel *channel)
qCWarning(dcShelly()) << "Received a client connect for a device we don't know!";
return;
}
device->setStateValue(shelly1ConnectedStateTypeId, true);
device->setStateValue(m_connectedStateTypesMap.value(device->deviceClassId()), true);
foreach (Device *child, myDevices().filterByParentDeviceId(device->id())) {
child->setStateValue(m_connectedStateTypesMap[child->deviceClassId()], true);
@ -174,7 +430,7 @@ void DevicePluginShelly::onClientDisconnected(MqttChannel *channel)
qCWarning(dcShelly()) << "Received a client disconnect for a device we don't know!";
return;
}
device->setStateValue(shelly1ConnectedStateTypeId, false);
device->setStateValue(m_connectedStateTypesMap.value(device->deviceClassId()), false);
foreach (Device *child, myDevices().filterByParentDeviceId(device->id())) {
child->setStateValue(m_connectedStateTypesMap[child->deviceClassId()], false);
@ -189,13 +445,16 @@ void DevicePluginShelly::onPublishReceived(MqttChannel *channel, const QString &
return;
}
QString shellyId = device->paramValue(shelly1DeviceIdParamTypeId).toString();
if (topic == "shellies/" + shellyId + "/input/0") {
qCDebug(dcShelly()) << "Publish received from" << device->name() << topic << payload;
QString shellyId = device->paramValue(m_idParamTypeMap.value(device->deviceClassId())).toString();
if (topic.startsWith("shellies/" + shellyId + "/input/")) {
int channel = topic.split("/").last().toInt();
// "1" or "0"
// Emit event button pressed
bool on = payload == "1";
foreach (Device *child, myDevices().filterByParentDeviceId(device->id())) {
if (child->deviceClassId() == shellySwitchDeviceClassId) {
if (child->deviceClassId() == shellySwitchDeviceClassId && child->paramValue(shellySwitchDeviceChannelParamTypeId).toInt() == channel + 1) {
if (child->stateValue(shellySwitchPowerStateTypeId).toBool() != on) {
child->setStateValue(shellySwitchPowerStateTypeId, on);
emit emitEvent(Event(shellySwitchPressedEventTypeId, child->id()));
@ -204,21 +463,141 @@ void DevicePluginShelly::onPublishReceived(MqttChannel *channel, const QString &
}
}
if (topic == "shellies/" + shellyId + "/relay/0") {
QRegExp topicMatcher = QRegExp("shellies/" + shellyId + "/relay/[0-1]");
if (topicMatcher.exactMatch(topic)) {
QStringList parts = topic.split("/");
int channel = parts.at(3).toInt();
bool on = payload == "on";
// If the shelly main device has a power state (e.g. Shelly Plug)
if (m_powerStateTypeMap.contains(device->deviceClassId())) {
device->setStateValue(m_powerStateTypeMap.value(device->deviceClassId()), on);
}
// And switch all childs of this shelly too
foreach (Device *child, myDevices().filterByParentDeviceId(device->id())) {
if (m_powerStateTypeMap.contains(child->deviceClassId())) {
child->setStateValue(m_powerStateTypeMap.value(child->deviceClassId()), on);
ParamTypeId channelParamTypeId = m_channelParamTypeMap.value(child->deviceClassId());
if (child->paramValue(channelParamTypeId).toInt() == channel + 1) {
child->setStateValue(m_powerStateTypeMap.value(child->deviceClassId()), on);
}
}
}
}
qCDebug(dcShelly()) << "Publish received from" << device->name() << topic << payload;
topicMatcher = QRegExp("shellies/" + shellyId + "/(relay|roller)/[0-1]/power");
if (topicMatcher.exactMatch(topic)) {
QStringList parts = topic.split("/");
int channel = parts.at(3).toInt();
double power = payload.toDouble();
// If this gateway device supports power measuring (e.g. Shelly Plug S) set it directly here
if (m_currentPowerStateTypeMap.contains(device->deviceClassId())) {
device->setStateValue(m_currentPowerStateTypeMap.value(device->deviceClassId()), power);
}
// For multi-channel devices, power measurements are per-channel, so, find the child device
foreach (Device *child, myDevices().filterByParentDeviceId(device->id()).filterByInterface("extendedsmartmeterconsumer")) {
ParamTypeId channelParamTypeId = m_channelParamTypeMap.value(child->deviceClassId());
if (child->paramValue(channelParamTypeId).toInt() == channel + 1) {
child->setStateValue(m_currentPowerStateTypeMap.value(child->deviceClassId()), power);
}
}
}
topicMatcher = QRegExp("shellies/" + shellyId + "/(relay|roller)/[0-1]/energy");
if (topicMatcher.exactMatch(topic)) {
QStringList parts = topic.split("/");
int channel = parts.at(3).toInt();
// W/min => kW/h
double energy = payload.toDouble() / 1000 / 60;
// If this gateway device supports energy measuring (e.g. Shelly Plug S) set it directly here
if (m_totalEnergyConsumedStateTypeMap.contains(device->deviceClassId())) {
device->setStateValue(m_totalEnergyConsumedStateTypeMap.value(device->deviceClassId()), energy);
}
// For multi-channel devices, power measurements are per-channel, so, find the child device
foreach (Device *child, myDevices().filterByParentDeviceId(device->id()).filterByInterface("extendedsmartmeterconsumer")) {
ParamTypeId channelParamTypeId = m_channelParamTypeMap.value(child->deviceClassId());
if (child->paramValue(channelParamTypeId).toInt() == channel + 1) {
child->setStateValue(m_totalEnergyConsumedStateTypeMap.value(child->deviceClassId()), energy);
}
}
}
if (topic == "shellies/" + shellyId + "/color/0") {
bool on = payload == "on";
if (m_powerStateTypeMap.contains(device->deviceClassId())) {
device->setStateValue(m_powerStateTypeMap.value(device->deviceClassId()), on);
}
}
if (topic == "shellies/" + shellyId + "/color/0/status") {
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &error);
if (error.error != QJsonParseError::NoError) {
qCWarning(dcShelly()) << "Error parsing JSON from Shelly:" << error.error << error.errorString() << payload;
return;
}
QVariantMap statusMap = jsonDoc.toVariant().toMap();
if (m_colorStateTypeMap.contains(device->deviceClassId())) {
QColor color = QColor(statusMap.value("red").toInt(), statusMap.value("green").toInt(), statusMap.value("blue").toInt());
device->setStateValue(m_colorStateTypeMap.value(device->deviceClassId()), color);
}
if (m_brightnessStateTypeMap.contains(device->deviceClassId())) {
int brightness = statusMap.value("gain").toInt();
device->setStateValue(m_brightnessStateTypeMap.value(device->deviceClassId()), brightness);
}
if (m_currentPowerStateTypeMap.contains(device->deviceClassId())) {
double power = statusMap.value("power").toDouble();
device->setStateValue(m_currentPowerStateTypeMap.value(device->deviceClassId()), power);
}
}
if (topic == "shellies/" + shellyId + "/light/0") {
bool on = payload == "on";
if (m_powerStateTypeMap.contains(device->deviceClassId())) {
device->setStateValue(m_powerStateTypeMap.value(device->deviceClassId()), on);
}
}
if (topic == "shellies/" + shellyId + "/light/0/status") {
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &error);
if (error.error != QJsonParseError::NoError) {
qCWarning(dcShelly()) << "Error parsing JSON from Shelly:" << error.error << error.errorString() << payload;
return;
}
QVariantMap statusMap = jsonDoc.toVariant().toMap();
if (m_brightnessStateTypeMap.contains(device->deviceClassId())) {
int brightness = statusMap.value("brightness").toInt();
device->setStateValue(m_brightnessStateTypeMap.value(device->deviceClassId()), brightness);
}
}
if (topic == "shellies/" + shellyId + "/light/0/power") {
if (m_currentPowerStateTypeMap.contains(device->deviceClassId())) {
double power = payload.toDouble();
device->setStateValue(m_currentPowerStateTypeMap.value(device->deviceClassId()), power);
}
}
if (topic == "shellies/" + shellyId + "/roller/0") {
// Roller shutters are always child devices...
foreach (Device *child, myDevices().filterByParentDeviceId(device->id()).filterByInterface("extendedshutter")) {
child->setStateValue(shellyRollerMovingStateTypeId, payload != "stop");
}
}
if (topic == "shellies/" + shellyId + "/roller/0/pos") {
// Roller shutters are always child devices...
int pos = payload.toInt();
foreach (Device *child, myDevices().filterByParentDeviceId(device->id()).filterByInterface("extendedshutter")) {
child->setStateValue(shellyRollerPercentageStateTypeId, 100 - pos);
}
}
}
void DevicePluginShelly::setupShellyGateway(DeviceSetupInfo *info)
{
QString shellyId = info->device()->paramValue(shelly1DeviceIdParamTypeId).toString();
Device *device = info->device();
QString shellyId = info->device()->paramValue(m_idParamTypeMap.value(info->device()->deviceClassId())).toString();
ZeroConfServiceEntry zeroConfEntry;
foreach (const ZeroConfServiceEntry &entry, m_zeroconfBrowser->serviceEntries()) {
if (entry.name() == shellyId) {
@ -242,19 +621,47 @@ void DevicePluginShelly::setupShellyGateway(DeviceSetupInfo *info)
return;
}
// Validate params
bool rollerMode = false;
if (info->device()->deviceClassId() == shelly25DeviceClassId) {
QString connectedDevice1 = info->device()->paramValue(shelly25DeviceConnectedDevice1ParamTypeId).toString();
QString connectedDevice2 = info->device()->paramValue(shelly25DeviceConnectedDevice2ParamTypeId).toString();
if (connectedDevice1.startsWith("Roller Shutter") && !connectedDevice2.startsWith("Roller Shutter")) {
qCWarning(dcShelly()) << "Cannot mix roller and relay mode. This won't work..";
info->finish(Device::DeviceErrorInvalidParameter, QT_TR_NOOP("Roller shutter mode can't be mixed with relay mode. Please configure both connected devices to control a shutter or relays."));
return;
}
if (connectedDevice1 == "Roller Shutter Up" && connectedDevice2 != "Roller Shutter Down") {
qCWarning(dcShelly()) << "Connected device 1 is shutter up but connected device 2 is not shutter down. This won't work..";
info->finish(Device::DeviceErrorInvalidParameter, QT_TR_NOOP("For using a roller shutter, one channel must be set to up, the other to down."));
return;
}
if (connectedDevice1 == "Roller Shutter Down" && connectedDevice2 != "Roller Shutter Up") {
qCWarning(dcShelly()) << "Connected device 1 is shutter down but connected device 2 is not shutter up. This won't work..";
info->finish(Device::DeviceErrorInvalidParameter, QT_TR_NOOP("For using a roller shutter, one channel must be set to up, the other to down."));
return;
}
if (connectedDevice1.startsWith("Roller Shutter") && connectedDevice2.startsWith("Roller Shutter")) {
rollerMode = true;
}
}
MqttChannel *channel = hardwareManager()->mqttProvider()->createChannel(shellyId, QHostAddress(address), {"shellies"});
if (!channel) {
qCWarning(dcShelly()) << "Failed to create MQTT channel.";
return info->finish(Device::DeviceErrorHardwareFailure, QT_TR_NOOP("Error creating MQTT channel. Please check MQTT server settings."));
}
connect(channel, &MqttChannel::clientConnected, this, &DevicePluginShelly::onClientConnected);
connect(channel, &MqttChannel::clientDisconnected, this, &DevicePluginShelly::onClientDisconnected);
connect(channel, &MqttChannel::publishReceived, this, &DevicePluginShelly::onPublishReceived);
QUrl url;
url.setScheme("http");
url.setHost(address.toString());
url.setPort(80);
url.setPath("/settings");
url.setUserName(info->device()->paramValue(shelly1DeviceUsernameParamTypeId).toString());
url.setPassword(info->device()->paramValue(shelly1DevicePasswordParamTypeId).toString());
url.setUserName(info->device()->paramValue(m_usernameParamTypeMap.value(info->device()->deviceClassId())).toString());
url.setPassword(info->device()->paramValue(m_passwordParamTypeMap.value(info->device()->deviceClassId())).toString());
QUrlQuery query;
query.addQueryItem("mqtt_server", channel->serverAddress().toString() + ":" + QString::number(channel->serverPort()));
@ -262,6 +669,11 @@ void DevicePluginShelly::setupShellyGateway(DeviceSetupInfo *info)
query.addQueryItem("mqtt_pass", channel->password());
query.addQueryItem("mqtt_enable", "true");
// Make sure the shelly 2.5 is in the mode we expect it to be (roller or relay)
if (info->device()->deviceClassId() == shelly25DeviceClassId) {
query.addQueryItem("mode", rollerMode ? "roller" : "relay");
}
url.setQuery(query);
QNetworkRequest request(url);
@ -294,29 +706,90 @@ void DevicePluginShelly::setupShellyGateway(DeviceSetupInfo *info)
qCDebug(dcShelly()) << "Settings data" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
m_mqttChannels.insert(info->device(), channel);
connect(channel, &MqttChannel::clientConnected, this, &DevicePluginShelly::onClientConnected);
connect(channel, &MqttChannel::clientDisconnected, this, &DevicePluginShelly::onClientDisconnected);
connect(channel, &MqttChannel::publishReceived, this, &DevicePluginShelly::onPublishReceived);
DeviceDescriptors autoChilds;
// Always create the switch device if we don't have one yet
if (myDevices().filterByParentDeviceId(info->device()->id()).filterByDeviceClassId(shellySwitchDeviceClassId).isEmpty()) {
DeviceDescriptor switchChild(shellySwitchDeviceClassId, "Shelly switch", QString(), info->device()->id());
autoChilds.append(switchChild);
}
// Add connected devices as configured in params
if (info->device()->paramValue(shelly1DeviceConnectedDeviceParamTypeId).toString() == "Generic") {
if (myDevices().filterByParentDeviceId(info->device()->id()).filterByDeviceClassId(shellyGenericDeviceClassId).isEmpty()) {
DeviceDescriptor genericChild(shellyGenericDeviceClassId, "Shelly connected device", QString(), info->device()->id());
autoChilds.append(genericChild);
// Autogenerate some childs if this device has no childs yet
if (myDevices().filterByParentDeviceId(info->device()->id()).isEmpty()) {
// Always create the switch device if we don't have one yet for shellies with input (1, 1pm etc)
if (info->device()->deviceClassId() == shelly1DeviceClassId
|| info->device()->deviceClassId() == shelly1pmDeviceClassId) {
DeviceDescriptor switchChild(shellySwitchDeviceClassId, info->device()->name() + " switch", QString(), info->device()->id());
autoChilds.append(switchChild);
}
}
if (info->device()->paramValue(shelly1DeviceConnectedDeviceParamTypeId).toString() == "Light") {
if (myDevices().filterByParentDeviceId(info->device()->id()).filterByDeviceClassId(shellyLightDeviceClassId).isEmpty()) {
DeviceDescriptor genericChild(shellyLightDeviceClassId, "Shelly connected light", QString(), info->device()->id());
autoChilds.append(genericChild);
// Create 2 switches for shelly 2.5
if (info->device()->deviceClassId() == shelly25DeviceClassId) {
DeviceDescriptor switchChild(shellySwitchDeviceClassId, info->device()->name() + " switch 1", QString(), info->device()->id());
switchChild.setParams(ParamList() << Param(shellySwitchDeviceChannelParamTypeId, 1));
autoChilds.append(switchChild);
DeviceDescriptor switch2Child(shellySwitchDeviceClassId, info->device()->name() + " switch 2", QString(), info->device()->id());
switch2Child.setParams(ParamList() << Param(shellySwitchDeviceChannelParamTypeId, 2));
autoChilds.append(switch2Child);
}
// Add connected devices as configured in params
// No PM devices for shelly 1
if (info->device()->deviceClassId() == shelly1DeviceClassId) {
if (info->device()->paramValue(m_connectedDeviceParamTypeMap.value(info->device()->deviceClassId())).toString() == "Generic") {
DeviceDescriptor genericChild(shellyGenericDeviceClassId, info->device()->name() + " connected device", QString(), info->device()->id());
genericChild.setParams(ParamList() << Param(shellyGenericDeviceChannelParamTypeId, 1));
autoChilds.append(genericChild);
}
if (info->device()->paramValue(m_connectedDeviceParamTypeMap.value(info->device()->deviceClassId())).toString() == "Light") {
DeviceDescriptor lightChild(shellyLightDeviceClassId, info->device()->name() + " connected light", QString(), info->device()->id());
lightChild.setParams(ParamList() << Param(shellyLightDeviceChannelParamTypeId, 1));
autoChilds.append(lightChild);
}
if (info->device()->paramValue(m_connectedDeviceParamTypeMap.value(info->device()->deviceClassId())).toString() == "Socket") {
DeviceDescriptor socketChild(shellySocketDeviceClassId, info->device()->name() + " connected socket", QString(), info->device()->id());
socketChild.setParams(ParamList() << Param(shellySocketDeviceChannelParamTypeId, 1));
autoChilds.append(socketChild);
}
// PM devices for shelly 1 pm and 2.5
} else if (info->device()->deviceClassId() == shelly1pmDeviceClassId
|| info->device()->deviceClassId() == shelly25DeviceClassId) {
if (info->device()->paramValue(m_connectedDeviceParamTypeMap.value(info->device()->deviceClassId())).toString() == "Generic") {
DeviceDescriptor genericChild(shellyGenericPMDeviceClassId, info->device()->name() + " connected device", QString(), info->device()->id());
genericChild.setParams(ParamList() << Param(shellyGenericPMDeviceChannelParamTypeId, 1));
autoChilds.append(genericChild);
}
if (info->device()->paramValue(m_connectedDeviceParamTypeMap.value(info->device()->deviceClassId())).toString() == "Light") {
DeviceDescriptor lightChild(shellyLightPMDeviceClassId, info->device()->name() + " connected light", QString(), info->device()->id());
lightChild.setParams(ParamList() << Param(shellyLightPMDeviceChannelParamTypeId, 1));
autoChilds.append(lightChild);
}
if (info->device()->paramValue(m_connectedDeviceParamTypeMap.value(info->device()->deviceClassId())).toString() == "Socket") {
DeviceDescriptor socketChild(shellySocketPMDeviceClassId, info->device()->name() + " connected socket", QString(), info->device()->id());
socketChild.setParams(ParamList() << Param(shellySocketPMDeviceChannelParamTypeId, 1));
autoChilds.append(socketChild);
}
// Add more for 2.5
if (info->device()->deviceClassId() == shelly25DeviceClassId) {
if (info->device()->paramValue(m_connectedDevice2ParamTypeMap.value(info->device()->deviceClassId())).toString() == "Generic") {
DeviceDescriptor genericChild(shellyGenericPMDeviceClassId, info->device()->name() + " connected device 2", QString(), info->device()->id());
genericChild.setParams(ParamList() << Param(shellyGenericPMDeviceChannelParamTypeId, 2));
autoChilds.append(genericChild);
}
if (info->device()->paramValue(m_connectedDevice2ParamTypeMap.value(info->device()->deviceClassId())).toString() == "Light") {
DeviceDescriptor lightChild(shellyLightPMDeviceClassId, info->device()->name() + " connected light 2", QString(), info->device()->id());
lightChild.setParams(ParamList() << Param(shellyLightPMDeviceChannelParamTypeId, 2));
autoChilds.append(lightChild);
}
if (info->device()->paramValue(m_connectedDevice2ParamTypeMap.value(info->device()->deviceClassId())).toString() == "Socket") {
DeviceDescriptor socketChild(shellySocketPMDeviceClassId, info->device()->name() + " connected socket 2", QString(), info->device()->id());
socketChild.setParams(ParamList() << Param(shellySocketPMDeviceChannelParamTypeId, 2));
autoChilds.append(socketChild);
}
if (info->device()->paramValue(m_connectedDeviceParamTypeMap.value(info->device()->deviceClassId())).toString() == "Roller Shutter Up"
&& info->device()->paramValue(m_connectedDevice2ParamTypeMap.value(info->device()->deviceClassId())).toString() == "Roller Shutter Down") {
DeviceDescriptor rollerShutterChild(shellyRollerDeviceClassId, info->device()->name() + " connected shutter", QString(), info->device()->id());
rollerShutterChild.setParams(ParamList() << Param(shellyRollerDeviceChannelParamTypeId, 1));
autoChilds.append(rollerShutterChild);
}
}
}
}
@ -325,8 +798,8 @@ void DevicePluginShelly::setupShellyGateway(DeviceSetupInfo *info)
emit autoDevicesAppeared(autoChilds);
// Make sure authentication is enalbed if the user wants it
QString username = info->device()->paramValue(shelly1DeviceUsernameParamTypeId).toString();
QString password = info->device()->paramValue(shelly1DevicePasswordParamTypeId).toString();
QString username = info->device()->paramValue(m_usernameParamTypeMap.value(info->device()->deviceClassId())).toString();
QString password = info->device()->paramValue(m_passwordParamTypeMap.value(info->device()->deviceClassId())).toString();
if (!username.isEmpty()) {
QUrl url;
url.setScheme("http");
@ -349,6 +822,34 @@ void DevicePluginShelly::setupShellyGateway(DeviceSetupInfo *info)
connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater);
}
});
// Handle device settings of gateway devices
if (info->device()->deviceClassId() == shellyPlugDeviceClassId) {
connect(info->device(), &Device::settingChanged, this, [this, device, shellyId](const ParamTypeId &paramTypeId, const QVariant &value) {
pluginStorage()->beginGroup(device->id().toString());
QString address = pluginStorage()->value("cachedAddress").toString();
pluginStorage()->endGroup();
QUrl url;
url.setScheme("http");
url.setHost(address);
url.setPort(80);
url.setPath("/settings/relay/0");
url.setUserName(device->paramValue(m_usernameParamTypeMap.value(device->deviceClassId())).toString());
url.setPassword(device->paramValue(m_passwordParamTypeMap.value(device->deviceClassId())).toString());
QUrlQuery query;
if (paramTypeId == shellyPlugSettingsDefaultStateParamTypeId) {
query.addQueryItem("default_state", value.toString());
}
url.setQuery(query);
QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(url));
connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater);
});
}
}
void DevicePluginShelly::setupShellyChild(DeviceSetupInfo *info)
@ -367,8 +868,8 @@ void DevicePluginShelly::setupShellyChild(DeviceSetupInfo *info)
url.setHost(address);
url.setPort(80);
url.setPath("/settings/relay/0");
url.setUserName(parentDevice->paramValue(shelly1DeviceUsernameParamTypeId).toString());
url.setPassword(parentDevice->paramValue(shelly1DevicePasswordParamTypeId).toString());
url.setUserName(parentDevice->paramValue(m_usernameParamTypeMap.value(parentDevice->deviceClassId())).toString());
url.setPassword(parentDevice->paramValue(m_passwordParamTypeMap.value(parentDevice->deviceClassId())).toString());
QUrlQuery query;
if (paramTypeId == shellySwitchSettingsButtonTypeParamTypeId) {

View File

@ -71,10 +71,50 @@ private:
QHash<Device*, MqttChannel*> m_mqttChannels;
QHash<DeviceClassId, ParamTypeId> m_idParamTypeMap;
QHash<DeviceClassId, ParamTypeId> m_usernameParamTypeMap;
QHash<DeviceClassId, ParamTypeId> m_passwordParamTypeMap;
QHash<DeviceClassId, ParamTypeId> m_connectedDeviceParamTypeMap;
QHash<DeviceClassId, ParamTypeId> m_connectedDevice2ParamTypeMap;
QHash<DeviceClassId, ParamTypeId> m_channelParamTypeMap;
QHash<DeviceClassId, StateTypeId> m_connectedStateTypesMap;
QHash<DeviceClassId, StateTypeId> m_powerStateTypeMap;
QHash<DeviceClassId, StateTypeId> m_currentPowerStateTypeMap;
QHash<DeviceClassId, StateTypeId> m_totalEnergyConsumedStateTypeMap;
QHash<DeviceClassId, StateTypeId> m_colorStateTypeMap;
QHash<DeviceClassId, StateTypeId> m_colorTemperatureStateTypeMap;
QHash<DeviceClassId, StateTypeId> m_brightnessStateTypeMap;
QHash<ActionTypeId, DeviceClassId> m_rebootActionTypeMap;
// Relay based power actions
QHash<ActionTypeId, DeviceClassId> m_powerActionTypesMap;
QHash<ActionTypeId, ParamTypeId> m_powerActionParamTypesMap;
// Color JSON based power actions
QHash<ActionTypeId, DeviceClassId> m_colorPowerActionTypesMap;
QHash<ActionTypeId, ParamTypeId> m_colorPowerActionParamTypesMap;
// Color actions
QHash<ActionTypeId, DeviceClassId> m_colorActionTypesMap;
QHash<ActionTypeId, ParamTypeId> m_colorActionParamTypesMap;
// Color JSON brightness actions
QHash<ActionTypeId, DeviceClassId> m_colorBrightnessActionTypesMap;
QHash<ActionTypeId, ParamTypeId> m_colorBrightnessActionParamTypesMap;
// Color temp
QHash<ActionTypeId, DeviceClassId> m_colorTemperatureActionTypesMap;
QHash<ActionTypeId, ParamTypeId> m_colorTemperatureActionParamTypesMap;
// Dimmable based power actions
QHash<ActionTypeId, DeviceClassId> m_dimmablePowerActionTypesMap;
QHash<ActionTypeId, ParamTypeId> m_dimmablePowerActionParamTypesMap;
// Dimmable based brightness actions
QHash<ActionTypeId, DeviceClassId> m_dimmableBrightnessActionTypesMap;
QHash<ActionTypeId, ParamTypeId> m_dimmableBrightnessActionParamTypesMap;
// Roller shutter actions
QHash<ActionTypeId, DeviceClassId> m_rollerOpenActionTypeMap;
QHash<ActionTypeId, DeviceClassId> m_rollerCloseActionTypeMap;
QHash<ActionTypeId, DeviceClassId> m_rollerStopActionTypeMap;
};
#endif // DEVICEPLUGINSHELLY_H

View File

@ -11,7 +11,7 @@
{
"id": "f810b66a-7177-4397-9771-4229abaabbb6",
"name": "shelly1",
"displayName": "Shelly1 / Shelly1PM",
"displayName": "Shelly 1",
"createMethods": ["discovery"],
"interfaces": [ "gateway" ],
"paramTypes": [
@ -27,7 +27,7 @@
"name": "connectedDevice",
"displayName": "Connected device",
"type": "QString",
"allowedValues": ["None", "Generic", "Light"],
"allowedValues": ["None", "Generic", "Light", "Socket"],
"defaultValue": "Generic"
},
{
@ -62,6 +62,391 @@
}
]
},
{
"id": "30e74e9f-57f4-4bbc-b0df-f2c4f28b2f06",
"name": "shelly1pm",
"displayName": "Shelly 1PM",
"createMethods": ["discovery"],
"interfaces": [ "gateway" ],
"paramTypes": [
{
"id": "6df5db8a-4e27-49e5-8cf9-78cb8497d831",
"name":"id",
"displayName": "Shelly ID",
"type": "QString",
"readOnly": true
},
{
"id": "3aacd693-3f1a-4040-be3a-953e600da44f",
"name": "connectedDevice",
"displayName": "Connected device",
"type": "QString",
"allowedValues": ["None", "Generic", "Light", "Socket"],
"defaultValue": "Generic"
},
{
"id": "99a31711-0029-461e-9117-2834451175c1",
"name": "username",
"displayName": "Username (optional)",
"type": "QString"
},
{
"id": "3a86e7bc-8bde-4b20-833b-7bee41dd9bc6",
"name": "password",
"displayName": "Password (optional)",
"type": "QString"
}
],
"stateTypes": [
{
"id": "df23a5ea-5f54-42ac-ab6b-aea8f71224f0",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected changed",
"type": "bool",
"defaultValue": false,
"cached": false
}
],
"actionTypes": [
{
"id": "3133cf3d-729d-4f36-9a6d-1eeecb07edde",
"name": "reboot",
"displayName": "Reboot"
}
]
},
{
"id": "465efb0d-da68-4177-a040-940c7f451e29",
"name": "shelly25",
"displayName": "Shelly 2.5",
"createMethods": ["discovery"],
"interfaces": [ "gateway" ],
"paramTypes": [
{
"id": "d79de2fa-81dd-440f-80b8-f1f71149d1f2",
"name":"id",
"displayName": "Shelly ID",
"type": "QString",
"readOnly": true
},
{
"id": "dc8a02fb-baa4-40bf-9e00-684b17794287",
"name": "connectedDevice1",
"displayName": "Connected device 1",
"type": "QString",
"allowedValues": ["None", "Generic", "Light", "Socket", "Roller Shutter Up"],
"defaultValue": "Generic"
},
{
"id": "1e6925f8-1613-4fe4-8234-e4a4e973ef83",
"name": "connectedDevice2",
"displayName": "Connected device 2",
"type": "QString",
"allowedValues": ["None", "Generic", "Light", "Socket", "Roller Shutter Down"],
"defaultValue": "Generic"
},
{
"id": "4fb3c690-0183-4fc4-affa-1404788b2dcc",
"name": "username",
"displayName": "Username (optional)",
"type": "QString"
},
{
"id": "738a6ca4-83f8-4a72-ba11-3a195f9177e3",
"name": "password",
"displayName": "Password (optional)",
"type": "QString"
}
],
"stateTypes": [
{
"id": "36a50e24-707e-4d5d-8eba-d2a73f626e2b",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected changed",
"type": "bool",
"defaultValue": false,
"cached": false
}
],
"actionTypes": [
{
"id": "4085a6a0-746f-490d-9e38-897c24f866b6",
"name": "reboot",
"displayName": "Reboot"
}
]
},
{
"id": "22229a6d-2af8-44e0-bea9-310a0f2769ef",
"name": "shellyPlug",
"displayName": "Shelly Plug/PlugS",
"createMethods": ["discovery"],
"interfaces": [ "powersocket", "extendedsmartmeterconsumer", "connectable" ],
"paramTypes": [
{
"id": "bd5679fc-b761-4a56-a472-97717418c425",
"name":"id",
"displayName": "Shelly ID",
"type": "QString",
"readOnly": true
},
{
"id": "9686b1ca-e71f-4e62-beb0-6a20f21550e9",
"name": "connectedDevice",
"displayName": "Connected device",
"type": "QString",
"allowedValues": ["Generic", "Light"],
"defaultValue": "Generic"
},
{
"id": "42797a00-1591-4021-8f4c-2a170189911b",
"name": "username",
"displayName": "Username (optional)",
"type": "QString"
},
{
"id": "e0141b39-fa76-49de-94c6-133cfe41257f",
"name": "password",
"displayName": "Password (optional)",
"type": "QString"
}
],
"settingsTypes": [
{
"id": "40f251db-919a-410f-939a-a11bbc4f7f95",
"name": "defaultState",
"displayName": "Default state",
"allowedValues": ["on", "off", "last"],
"defaultValue": "off",
"type": "QString"
}
],
"stateTypes": [
{
"id": "584b3558-5fb5-40a9-81ad-dc71ba68fd45",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected changed",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "d813b35f-e11e-4783-b3b3-dbecb956ffb5",
"name": "power",
"displayName": "Powered",
"displayNameEvent": "Turned on or off",
"displayNameAction": "Turn on or off",
"type": "bool",
"defaultValue": false,
"writable": true
},
{
"id": "962fec29-6be0-452e-87c5-5ff71435c40f",
"name": "totalEnergyConsumed",
"displayName": "Total energy consumed",
"displayNameEvent": "Consumed energy changed",
"type": "double",
"unit": "KiloWattHour",
"defaultValue": 0
},
{
"id": "202ea409-650e-48b2-9aae-d4ebe9d505fd",
"name": "currentPower",
"displayName": "Power consumption",
"displayNameEvent": "Power consumption changed",
"type": "double",
"unit": "Watt",
"defaultValue": 0
}
],
"actionTypes": [
{
"id": "7dc03565-d7cb-4add-ba08-b751ce0821d5",
"name": "reboot",
"displayName": "Reboot"
}
]
},
{
"id": "17f24cec-e6ed-4abd-9d42-60999f391dba",
"name": "shellyRgbw2",
"displayName": "Shelly RGBW2",
"createMethods": ["discovery"],
"interfaces": ["colorlight", "connectable"],
"paramTypes": [
{
"id": "2b0cd1b2-1648-4e0d-85d2-34aa9b9b835e",
"name":"id",
"displayName": "Shelly ID",
"type": "QString",
"readOnly": true
},
{
"id": "0b060c1a-3b9b-42d7-87f8-41b7b64a7eb8",
"name": "username",
"displayName": "Username (optional)",
"type": "QString"
},
{
"id": "1cc21f73-b93a-4044-924b-d290870d5226",
"name": "password",
"displayName": "Password (optional)",
"type": "QString"
}
],
"stateTypes": [
{
"id": "98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected/disconnected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "14abcd30-9db2-4065-ae81-501a55fbb145",
"name": "power",
"displayName": "On",
"displayNameEvent": "Turned on or off",
"displayNameAction": "Turn on or off",
"type": "bool",
"defaultValue": false,
"writable": true
},
{
"id": "3f74eb92-d95b-48c2-8ac6-29bea9f65ce3",
"name": "brightness",
"displayName": "Brightness",
"displayNameEvent": "Brightness changed",
"displayNameAction": "Set brightness",
"type": "int",
"defaultValue": 0,
"minValue": 0,
"maxValue": 100,
"writable": true
},
{
"id": "a32a457f-fdc0-46ce-9106-6f9d4f4a6b16",
"name": "colorTemperature",
"displayName": "Color temperature",
"displayNameEvent": "Color temperature changed",
"displayNameAction": "Set color temperature",
"type": "int",
"minValue": 0,
"maxValue": 100,
"defaultValue": false,
"writable": true
},
{
"id": "6ef7c686-350d-4069-9c41-9b90b3906748",
"name": "color",
"displayName": "Color",
"displayNameEvent": "Color changed",
"displayNameAction": "Set color",
"type": "QColor",
"defaultValue": "white",
"writable": true
},
{
"id": "82ce0c4f-cb81-43c7-bc07-003f8a3cfbc8",
"name": "currentPower",
"displayName": "Current power consumption",
"displayNameEvent": "Current power consumption changed",
"type": "double",
"defaultValue": 0,
"unit": "Watt"
}
],
"actionTypes": [
{
"id": "1390811d-dc71-4d89-a6e1-a808e03225f9",
"name": "reboot",
"displayName": "Reboot"
}
]
},
{
"id": "3a1d6fc1-c623-4b45-9c81-1573fcc15f99",
"name": "shellyDimmer",
"displayName": "Shelly Dimmer",
"createMethods": ["discovery"],
"interfaces": ["dimmablelight", "connectable"],
"paramTypes": [
{
"id": "32e328be-2357-4d94-b438-3fe1ae94d97b",
"name":"id",
"displayName": "Shelly ID",
"type": "QString",
"readOnly": true
},
{
"id": "2df0d509-d4b5-407a-835a-6b6392653e10",
"name": "username",
"displayName": "Username (optional)",
"type": "QString"
},
{
"id": "b181bf78-a19c-4f97-9264-f16fbac64ee2",
"name": "password",
"displayName": "Password (optional)",
"type": "QString"
}
],
"stateTypes": [
{
"id": "49ff0891-1798-459f-a97c-f1cc4e643a46",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected/disconnected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "e4a6ac87-31fb-4516-9cf3-f135621e902c",
"name": "power",
"displayName": "On",
"displayNameEvent": "Turned on or off",
"displayNameAction": "Turn on or off",
"type": "bool",
"defaultValue": false,
"writable": true
},
{
"id": "f41c93ac-6911-45fc-9221-7dd26bf65fd0",
"name": "brightness",
"displayName": "Brightness",
"displayNameEvent": "Brightness changed",
"displayNameAction": "Set brightness",
"type": "int",
"defaultValue": 0,
"minValue": 0,
"maxValue": 100,
"unit": "Percentage",
"writable": true
},
{
"id": "b3336ca6-1577-4230-8708-98875148606e",
"name": "currentPower",
"displayName": "Current power consumption",
"displayNameEvent": "Current power consumption changed",
"type": "double",
"defaultValue": 0,
"unit": "Watt"
}
],
"actionTypes": [
{
"id": "dca1d1bb-b377-41b8-ac26-579060448fd7",
"name": "reboot",
"displayName": "Reboot"
}
]
},
{
"id": "6de35a17-0f54-4397-894d-4321b64c53d1",
"name": "shellySwitch",
@ -85,6 +470,15 @@
"defaultValue": false
}
],
"paramTypes": [
{
"id": "be6bdd43-cbf0-4d16-b789-ccad16e23788",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"stateTypes": [
{
"id": "0c233312-7b8f-4ca3-880d-523cab9b3ccb",
@ -127,7 +521,15 @@
"defaultValue": "off",
"type": "QString"
}
],
"paramTypes": [
{
"id": "c08b1272-6eb2-4fed-80ad-06566a521b95",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"stateTypes": [
{
@ -152,6 +554,80 @@
]
},
{
"id": "3bd614e0-72c4-4fbe-8c70-ce6c48d04bce",
"name": "shellyGenericPM",
"displayName": "Shelly connected device",
"createMethods": ["auto"],
"interfaces": ["power", "extendedsmartmeterconsumer", "connectable"],
"settingsTypes": [
{
"id": "8c60a23c-5e5b-42ba-abae-aeeb3d379d79",
"name": "defaultState",
"displayName": "Default state",
"allowedValues": ["on", "off", "last", "switch"],
"defaultValue": "off",
"type": "QString"
}
],
"paramTypes": [
{
"id": "ff7f0b1c-e3ad-44ac-9bbd-71cd2715126c",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"paramTypes": [
{
"id": "5e7c6ed5-fe9c-4e27-ad1e-e96886f3c09b",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"stateTypes": [
{
"id": "5ec936f8-694d-43f4-b3a2-fdc77d38feab",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected or disconnected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "bd9480af-eec2-42d7-ab17-15715ee2e8e0",
"name": "power",
"displayName": "Power",
"displayNameEvent": "Turned on or off",
"displayNameAction": "Turn on or off",
"type": "bool",
"defaultValue": false,
"writable": true
},
{
"id": "54b0b02e-1dfe-4172-bdfd-8129709e5d9f",
"name": "totalEnergyConsumed",
"displayName": "Total energy consumed",
"displayNameEvent": "Total energy changed",
"type": "double",
"defaultValue": 0,
"unit": "KiloWattHour"
},
{
"id": "41338dbd-6d58-4093-a56c-0adaec5398d5",
"name": "currentPower",
"displayName": "Current power consumption",
"displayNameEvent": "Power consumption changed",
"type": "double",
"defaultValue": 0,
"unit": "Watt"
}
]
},
{
"id": "62a2d6b8-d70d-45fc-ba8c-1c680282a399",
"name": "shellyLight",
@ -168,6 +644,15 @@
"type": "QString"
}
],
"paramTypes": [
{
"id": "9c8b88c0-2825-4235-9b68-2ba378eeb53f",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"stateTypes": [
{
"id": "61b7d8ac-d229-4268-8143-6edb2eca978d",
@ -189,6 +674,266 @@
"writable": true
}
]
},
{
"id": "5ab05c19-71aa-4a85-a02f-a108f039a69a",
"name": "shellyLightPM",
"displayName": "Shelly connected light",
"createMethods": ["auto"],
"interfaces": ["light", "extendedsmartmeterconsumer", "connectable"],
"settingsTypes": [
{
"id": "01cc242a-268d-4dd9-96ce-5502dd1bd430",
"name": "defaultState",
"displayName": "Default state",
"allowedValues": ["on", "off", "last", "switch"],
"defaultValue": "off",
"type": "QString"
}
],
"paramTypes": [
{
"id": "9066e9e9-56e0-4e6b-8667-503b68613640",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"stateTypes": [
{
"id": "df6f8a11-1295-4ceb-b277-dbe83b9d039c",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected or disconnected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "e77d1c75-e856-46bc-9f38-36e59ed7849d",
"name": "power",
"displayName": "Power",
"displayNameEvent": "Turned on or off",
"displayNameAction": "Turn on or off",
"type": "bool",
"defaultValue": false,
"writable": true
},
{
"id": "39e3d2c6-efb8-4c40-8ae9-8684d87e4087",
"name": "totalEnergyConsumed",
"displayName": "Total energy consumed",
"displayNameEvent": "Total energy changed",
"type": "double",
"defaultValue": 0,
"unit": "KiloWattHour"
},
{
"id": "0de42461-1077-4b74-9212-5446914fd25f",
"name": "currentPower",
"displayName": "Current power consumption",
"displayNameEvent": "Power consumption changed",
"type": "double",
"defaultValue": 0,
"unit": "Watt"
}
]
},
{
"id": "3e13206c-a6cd-49a0-b653-2ccb5bb4bbc1",
"name": "shellySocket",
"displayName": "Shelly connected power socket",
"createMethods": ["auto"],
"interfaces": ["powersocket", "connectable"],
"settingsTypes": [
{
"id": "9f365d87-ddb9-4764-9bfb-0e64020646b4",
"name": "defaultState",
"displayName": "Default state",
"allowedValues": ["on", "off", "last", "switch"],
"defaultValue": "off",
"type": "QString"
}
],
"paramTypes": [
{
"id": "d48edbdf-8ed5-4721-a42a-fd2c340c1a6e",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"stateTypes": [
{
"id": "b71fa926-9fd2-4008-9fe5-83bbf821963c",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected or disconnected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "51e897b3-dd17-4df3-aa42-52b9bb5f0df8",
"name": "power",
"displayName": "Power",
"displayNameEvent": "Turned on or off",
"displayNameAction": "Turn on or off",
"type": "bool",
"defaultValue": false,
"writable": true
}
]
},
{
"id": "ae6e55fe-1a0b-43bc-bdfb-605661b96905",
"name": "shellySocketPM",
"displayName": "Shelly connected power socket",
"createMethods": ["auto"],
"interfaces": ["powersocket", "extendedsmartmeterconsumer", "connectable"],
"settingsTypes": [
{
"id": "9880a51b-57da-4b65-a0ec-23eb0fdcb8ac",
"name": "defaultState",
"displayName": "Default state",
"allowedValues": ["on", "off", "last", "switch"],
"defaultValue": "off",
"type": "QString"
}
],
"paramTypes": [
{
"id": "17c19689-8c88-454e-8b18-15436cad293d",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"stateTypes": [
{
"id": "6e5dbb06-ef4b-42eb-bf6d-e3c83d78de67",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected or disconnected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "d6adeab6-c91d-44ba-8d01-9b5b9b7368be",
"name": "power",
"displayName": "Power",
"displayNameEvent": "Turned on or off",
"displayNameAction": "Turn on or off",
"type": "bool",
"defaultValue": false,
"writable": true
},
{
"id": "89a65444-63d4-4add-a479-a48e95dd0458",
"name": "totalEnergyConsumed",
"displayName": "Total energy consumed",
"displayNameEvent": "Total energy changed",
"type": "double",
"defaultValue": 0,
"unit": "KiloWattHour"
},
{
"id": "e95b97d4-b88f-4656-8819-3f681fbe8510",
"name": "currentPower",
"displayName": "Current power consumption",
"displayNameEvent": "Power consumption changed",
"type": "double",
"defaultValue": 0,
"unit": "Watt"
}
]
},
{
"id": "d681a4cb-481a-4469-a49a-e6bbb11eb9c9",
"name": "shellyRoller",
"displayName": "Shelly connected Roller Shutter",
"createMethods": ["auto"],
"interfaces": ["extendedshutter", "extendedsmartmeterconsumer", "connectable"],
"paramTypes": [
{
"id": "281385a5-5084-4ded-80a4-66c0dc1096a8",
"name": "channel",
"displayName": "Channel",
"type": "uint",
"defaultValue": 1
}
],
"stateTypes": [
{
"id": "d446719d-628e-477d-882c-a84210c85869",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected or disconnected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "a7d88654-7503-474d-9a7c-02150d61a6dc",
"name": "totalEnergyConsumed",
"displayName": "Total energy consumed",
"displayNameEvent": "Total energy changed",
"type": "double",
"defaultValue": 0,
"unit": "KiloWattHour"
},
{
"id": "0d7cb1cf-3fff-4d0b-96c2-c02e9a92af57",
"name": "currentPower",
"displayName": "Current power consumption",
"displayNameEvent": "Power consumption changed",
"type": "double",
"defaultValue": 0,
"unit": "Watt"
},
{
"id": "2729d4e0-c38c-47b8-a0e8-26959090fe74",
"name": "moving",
"displayName": "Moving",
"displayNameEvent": "Moving changed",
"type": "bool",
"defaultValue": false
},
{
"id": "86270b8b-bce4-4d8a-9bc9-d72af36b991c",
"name": "percentage",
"displayName": "Position",
"displayNameEvent": "Position changed",
"type": "int",
"defaultValue": 0
}
],
"actionTypes": [
{
"id": "b96a8f85-c39e-499b-abbd-40b18788e907",
"name": "open",
"displayName": "Open"
},
{
"id": "87eb0290-615e-4c98-9ec8-a21104fcf05d",
"name": "close",
"displayName": "Close"
},
{
"id": "2266303c-df0c-4eae-b15e-6a86e73c9699",
"name": "stop",
"displayName": "stop"
},
{
"id": "4e2d8a7b-821e-4ee8-9f9b-f774d631845f",
"name": "calibrate",
"displayName": "Calibrate"
}
]
}
]
}

View File

@ -33,10 +33,26 @@
</message>
<message>
<source>Connected</source>
<extracomment>The name of the ParamType (DeviceClass: shellyLight, EventType: connected, ID: {61b7d8ac-d229-4268-8143-6edb2eca978d})
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, EventType: connected, ID: {6e5dbb06-ef4b-42eb-bf6d-e3c83d78de67})
----------
The name of the StateType ({6e5dbb06-ef4b-42eb-bf6d-e3c83d78de67}) of DeviceClass shellySocketPM
----------
The name of the ParamType (DeviceClass: shellySocket, EventType: connected, ID: {b71fa926-9fd2-4008-9fe5-83bbf821963c})
----------
The name of the StateType ({b71fa926-9fd2-4008-9fe5-83bbf821963c}) of DeviceClass shellySocket
----------
The name of the ParamType (DeviceClass: shellyLightPM, EventType: connected, ID: {df6f8a11-1295-4ceb-b277-dbe83b9d039c})
----------
The name of the StateType ({df6f8a11-1295-4ceb-b277-dbe83b9d039c}) of DeviceClass shellyLightPM
----------
The name of the ParamType (DeviceClass: shellyLight, EventType: connected, ID: {61b7d8ac-d229-4268-8143-6edb2eca978d})
----------
The name of the StateType ({61b7d8ac-d229-4268-8143-6edb2eca978d}) of DeviceClass shellyLight
----------
The name of the ParamType (DeviceClass: shellyGenericPM, EventType: connected, ID: {5ec936f8-694d-43f4-b3a2-fdc77d38feab})
----------
The name of the StateType ({5ec936f8-694d-43f4-b3a2-fdc77d38feab}) of DeviceClass shellyGenericPM
----------
The name of the ParamType (DeviceClass: shellyGeneric, EventType: connected, ID: {4a141674-faa6-4953-8272-5b4a4da84d31})
----------
The name of the StateType ({4a141674-faa6-4953-8272-5b4a4da84d31}) of DeviceClass shellyGeneric
@ -45,6 +61,26 @@ The name of the ParamType (DeviceClass: shellySwitch, EventType: connected, ID:
----------
The name of the StateType ({0c233312-7b8f-4ca3-880d-523cab9b3ccb}) of DeviceClass shellySwitch
----------
The name of the ParamType (DeviceClass: shellyDimmer, EventType: connected, ID: {49ff0891-1798-459f-a97c-f1cc4e643a46})
----------
The name of the StateType ({49ff0891-1798-459f-a97c-f1cc4e643a46}) of DeviceClass shellyDimmer
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: connected, ID: {98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6})
----------
The name of the StateType ({98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6}) of DeviceClass shellyRgbw2
----------
The name of the ParamType (DeviceClass: shellyPlug, EventType: connected, ID: {584b3558-5fb5-40a9-81ad-dc71ba68fd45})
----------
The name of the StateType ({584b3558-5fb5-40a9-81ad-dc71ba68fd45}) of DeviceClass shellyPlug
----------
The name of the ParamType (DeviceClass: shelly25, EventType: connected, ID: {36a50e24-707e-4d5d-8eba-d2a73f626e2b})
----------
The name of the StateType ({36a50e24-707e-4d5d-8eba-d2a73f626e2b}) of DeviceClass shelly25
----------
The name of the ParamType (DeviceClass: shelly1pm, EventType: connected, ID: {df23a5ea-5f54-42ac-ab6b-aea8f71224f0})
----------
The name of the StateType ({df23a5ea-5f54-42ac-ab6b-aea8f71224f0}) of DeviceClass shelly1pm
----------
The name of the ParamType (DeviceClass: shelly1, EventType: connected, ID: {e5d41e05-2296-457e-97d8-98a5ac0de615})
----------
The name of the StateType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClass shelly1</extracomment>
@ -52,19 +88,39 @@ The name of the StateType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClas
</message>
<message>
<source>Connected changed</source>
<extracomment>The name of the EventType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClass shelly1</extracomment>
<extracomment>The name of the EventType ({584b3558-5fb5-40a9-81ad-dc71ba68fd45}) of DeviceClass shellyPlug
----------
The name of the EventType ({36a50e24-707e-4d5d-8eba-d2a73f626e2b}) of DeviceClass shelly25
----------
The name of the EventType ({df23a5ea-5f54-42ac-ab6b-aea8f71224f0}) of DeviceClass shelly1pm
----------
The name of the EventType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClass shelly1</extracomment>
<translation>Verbunden oder getrennt</translation>
</message>
<message>
<source>Connected device</source>
<extracomment>The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d0e0499e-faa0-432a-a760-c295b0aefed0})</extracomment>
<extracomment>The name of the ParamType (DeviceClass: shellyPlug, Type: device, ID: {9686b1ca-e71f-4e62-beb0-6a20f21550e9})
----------
The name of the ParamType (DeviceClass: shelly1pm, Type: device, ID: {3aacd693-3f1a-4040-be3a-953e600da44f})
----------
The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d0e0499e-faa0-432a-a760-c295b0aefed0})</extracomment>
<translation>Verbundenes Gerät</translation>
</message>
<message>
<source>Default state</source>
<extracomment>The name of the ParamType (DeviceClass: shellyLight, Type: settings, ID: {4fe9ae31-3657-41bf-bd40-a219d58465d3})
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, Type: settings, ID: {9880a51b-57da-4b65-a0ec-23eb0fdcb8ac})
----------
The name of the ParamType (DeviceClass: shellyGeneric, Type: settings, ID: {7d35aea3-1444-48c8-9732-a41bfc3b9d75})</extracomment>
The name of the ParamType (DeviceClass: shellySocket, Type: settings, ID: {9f365d87-ddb9-4764-9bfb-0e64020646b4})
----------
The name of the ParamType (DeviceClass: shellyLightPM, Type: settings, ID: {01cc242a-268d-4dd9-96ce-5502dd1bd430})
----------
The name of the ParamType (DeviceClass: shellyLight, Type: settings, ID: {4fe9ae31-3657-41bf-bd40-a219d58465d3})
----------
The name of the ParamType (DeviceClass: shellyGenericPM, Type: settings, ID: {8c60a23c-5e5b-42ba-abae-aeeb3d379d79})
----------
The name of the ParamType (DeviceClass: shellyGeneric, Type: settings, ID: {7d35aea3-1444-48c8-9732-a41bfc3b9d75})
----------
The name of the ParamType (DeviceClass: shellyPlug, Type: settings, ID: {40f251db-919a-410f-939a-a11bbc4f7f95})</extracomment>
<translation>Anfangszustand</translation>
</message>
<message>
@ -86,17 +142,51 @@ The name of the StateType ({20f74d88-0683-4d3a-9513-6b29b5112b7b}) of DeviceClas
</message>
<message>
<source>Password (optional)</source>
<extracomment>The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d29b8399-bfa6-4146-921d-a1d43ca4e184})</extracomment>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, Type: device, ID: {b181bf78-a19c-4f97-9264-f16fbac64ee2})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, Type: device, ID: {1cc21f73-b93a-4044-924b-d290870d5226})
----------
The name of the ParamType (DeviceClass: shellyPlug, Type: device, ID: {e0141b39-fa76-49de-94c6-133cfe41257f})
----------
The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {738a6ca4-83f8-4a72-ba11-3a195f9177e3})
----------
The name of the ParamType (DeviceClass: shelly1pm, Type: device, ID: {3a86e7bc-8bde-4b20-833b-7bee41dd9bc6})
----------
The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d29b8399-bfa6-4146-921d-a1d43ca4e184})</extracomment>
<translation>Passwort (Optional)</translation>
</message>
<message>
<source>Power</source>
<extracomment>The name of the ParamType (DeviceClass: shellyLight, ActionType: power, ID: {2ee5bfab-271e-4b95-9464-122a5208f1a5})
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, ActionType: power, ID: {d6adeab6-c91d-44ba-8d01-9b5b9b7368be})
----------
The name of the ParamType (DeviceClass: shellySocketPM, EventType: power, ID: {d6adeab6-c91d-44ba-8d01-9b5b9b7368be})
----------
The name of the StateType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of DeviceClass shellySocketPM
----------
The name of the ParamType (DeviceClass: shellySocket, ActionType: power, ID: {51e897b3-dd17-4df3-aa42-52b9bb5f0df8})
----------
The name of the ParamType (DeviceClass: shellySocket, EventType: power, ID: {51e897b3-dd17-4df3-aa42-52b9bb5f0df8})
----------
The name of the StateType ({51e897b3-dd17-4df3-aa42-52b9bb5f0df8}) of DeviceClass shellySocket
----------
The name of the ParamType (DeviceClass: shellyLightPM, ActionType: power, ID: {e77d1c75-e856-46bc-9f38-36e59ed7849d})
----------
The name of the ParamType (DeviceClass: shellyLightPM, EventType: power, ID: {e77d1c75-e856-46bc-9f38-36e59ed7849d})
----------
The name of the StateType ({e77d1c75-e856-46bc-9f38-36e59ed7849d}) of DeviceClass shellyLightPM
----------
The name of the ParamType (DeviceClass: shellyLight, ActionType: power, ID: {2ee5bfab-271e-4b95-9464-122a5208f1a5})
----------
The name of the ParamType (DeviceClass: shellyLight, EventType: power, ID: {2ee5bfab-271e-4b95-9464-122a5208f1a5})
----------
The name of the StateType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
----------
The name of the ParamType (DeviceClass: shellyGenericPM, ActionType: power, ID: {bd9480af-eec2-42d7-ab17-15715ee2e8e0})
----------
The name of the ParamType (DeviceClass: shellyGenericPM, EventType: power, ID: {bd9480af-eec2-42d7-ab17-15715ee2e8e0})
----------
The name of the StateType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of DeviceClass shellyGenericPM
----------
The name of the ParamType (DeviceClass: shellyGeneric, ActionType: power, ID: {72d7dbba-757c-4b03-a092-1d3f374fa961})
----------
The name of the ParamType (DeviceClass: shellyGeneric, EventType: power, ID: {72d7dbba-757c-4b03-a092-1d3f374fa961})
@ -111,7 +201,17 @@ The name of the StateType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClas
</message>
<message>
<source>Reboot</source>
<extracomment>The name of the ActionType ({b4067d54-36c5-4d30-bbc3-c8c712d6fd32}) of DeviceClass shelly1</extracomment>
<extracomment>The name of the ActionType ({dca1d1bb-b377-41b8-ac26-579060448fd7}) of DeviceClass shellyDimmer
----------
The name of the ActionType ({1390811d-dc71-4d89-a6e1-a808e03225f9}) of DeviceClass shellyRgbw2
----------
The name of the ActionType ({7dc03565-d7cb-4add-ba08-b751ce0821d5}) of DeviceClass shellyPlug
----------
The name of the ActionType ({4085a6a0-746f-490d-9e38-897c24f866b6}) of DeviceClass shelly25
----------
The name of the ActionType ({3133cf3d-729d-4f36-9a6d-1eeecb07edde}) of DeviceClass shelly1pm
----------
The name of the ActionType ({b4067d54-36c5-4d30-bbc3-c8c712d6fd32}) of DeviceClass shelly1</extracomment>
<translation>Neustart</translation>
</message>
<message>
@ -123,17 +223,31 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9})</extracom
</message>
<message>
<source>Shelly ID</source>
<extracomment>The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {1d301dc0-5e48-473f-a611-8e407289e545})</extracomment>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, Type: device, ID: {32e328be-2357-4d94-b438-3fe1ae94d97b})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, Type: device, ID: {2b0cd1b2-1648-4e0d-85d2-34aa9b9b835e})
----------
The name of the ParamType (DeviceClass: shellyPlug, Type: device, ID: {bd5679fc-b761-4a56-a472-97717418c425})
----------
The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {d79de2fa-81dd-440f-80b8-f1f71149d1f2})
----------
The name of the ParamType (DeviceClass: shelly1pm, Type: device, ID: {6df5db8a-4e27-49e5-8cf9-78cb8497d831})
----------
The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {1d301dc0-5e48-473f-a611-8e407289e545})</extracomment>
<translation>Shelly ID</translation>
</message>
<message>
<source>Shelly connected device</source>
<extracomment>The name of the DeviceClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25})</extracomment>
<extracomment>The name of the DeviceClass ({3bd614e0-72c4-4fbe-8c70-ce6c48d04bce})
----------
The name of the DeviceClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25})</extracomment>
<translation>Verbundenes Gerät an Schelly</translation>
</message>
<message>
<source>Shelly connected light</source>
<extracomment>The name of the DeviceClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399})</extracomment>
<extracomment>The name of the DeviceClass ({5ab05c19-71aa-4a85-a02f-a108f039a69a})
----------
The name of the DeviceClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399})</extracomment>
<translation>Verbundene Beleuchtung an Shelly</translation>
</message>
<message>
@ -141,19 +255,32 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9})</extracom
<extracomment>The name of the DeviceClass ({6de35a17-0f54-4397-894d-4321b64c53d1})</extracomment>
<translation>Shelly Taster</translation>
</message>
<message>
<source>Shelly1 / Shelly1PM</source>
<extracomment>The name of the DeviceClass ({f810b66a-7177-4397-9771-4229abaabbb6})</extracomment>
<translation>Shelly1 /Shelly1PM</translation>
</message>
<message>
<source>Username (optional)</source>
<extracomment>The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {fa1aa0f6-93b2-410d-a2c5-7b2f45eae679})</extracomment>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, Type: device, ID: {2df0d509-d4b5-407a-835a-6b6392653e10})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, Type: device, ID: {0b060c1a-3b9b-42d7-87f8-41b7b64a7eb8})
----------
The name of the ParamType (DeviceClass: shellyPlug, Type: device, ID: {42797a00-1591-4021-8f4c-2a170189911b})
----------
The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {4fb3c690-0183-4fc4-affa-1404788b2dcc})
----------
The name of the ParamType (DeviceClass: shelly1pm, Type: device, ID: {99a31711-0029-461e-9117-2834451175c1})
----------
The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {fa1aa0f6-93b2-410d-a2c5-7b2f45eae679})</extracomment>
<translation>Benutzername (Optional)</translation>
</message>
<message>
<source>Connected or disconnected</source>
<extracomment>The name of the EventType ({61b7d8ac-d229-4268-8143-6edb2eca978d}) of DeviceClass shellyLight
<extracomment>The name of the EventType ({6e5dbb06-ef4b-42eb-bf6d-e3c83d78de67}) of DeviceClass shellySocketPM
----------
The name of the EventType ({b71fa926-9fd2-4008-9fe5-83bbf821963c}) of DeviceClass shellySocket
----------
The name of the EventType ({df6f8a11-1295-4ceb-b277-dbe83b9d039c}) of DeviceClass shellyLightPM
----------
The name of the EventType ({61b7d8ac-d229-4268-8143-6edb2eca978d}) of DeviceClass shellyLight
----------
The name of the EventType ({5ec936f8-694d-43f4-b3a2-fdc77d38feab}) of DeviceClass shellyGenericPM
----------
The name of the EventType ({4a141674-faa6-4953-8272-5b4a4da84d31}) of DeviceClass shellyGeneric
----------
@ -162,17 +289,288 @@ The name of the EventType ({0c233312-7b8f-4ca3-880d-523cab9b3ccb}) of DeviceClas
</message>
<message>
<source>Turn on or off</source>
<extracomment>The name of the ActionType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
<extracomment>The name of the ActionType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of DeviceClass shellySocketPM
----------
The name of the ActionType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClass shellyGeneric</extracomment>
The name of the ActionType ({51e897b3-dd17-4df3-aa42-52b9bb5f0df8}) of DeviceClass shellySocket
----------
The name of the ActionType ({e77d1c75-e856-46bc-9f38-36e59ed7849d}) of DeviceClass shellyLightPM
----------
The name of the ActionType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
----------
The name of the ActionType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of DeviceClass shellyGenericPM
----------
The name of the ActionType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClass shellyGeneric
----------
The name of the ActionType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of DeviceClass shellyDimmer
----------
The name of the ActionType ({14abcd30-9db2-4065-ae81-501a55fbb145}) of DeviceClass shellyRgbw2
----------
The name of the ActionType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of DeviceClass shellyPlug</extracomment>
<translation>Ein- oder ausschalten</translation>
</message>
<message>
<source>Turned on or off</source>
<extracomment>The name of the EventType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
<extracomment>The name of the EventType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of DeviceClass shellySocketPM
----------
The name of the EventType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClass shellyGeneric</extracomment>
The name of the EventType ({51e897b3-dd17-4df3-aa42-52b9bb5f0df8}) of DeviceClass shellySocket
----------
The name of the EventType ({e77d1c75-e856-46bc-9f38-36e59ed7849d}) of DeviceClass shellyLightPM
----------
The name of the EventType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
----------
The name of the EventType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of DeviceClass shellyGenericPM
----------
The name of the EventType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClass shellyGeneric
----------
The name of the EventType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of DeviceClass shellyDimmer
----------
The name of the EventType ({14abcd30-9db2-4065-ae81-501a55fbb145}) of DeviceClass shellyRgbw2
----------
The name of the EventType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of DeviceClass shellyPlug</extracomment>
<translation>Ein. oder ausgeschaltet</translation>
</message>
<message>
<source>Brightness</source>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, ActionType: brightness, ID: {f41c93ac-6911-45fc-9221-7dd26bf65fd0})
----------
The name of the ParamType (DeviceClass: shellyDimmer, EventType: brightness, ID: {f41c93ac-6911-45fc-9221-7dd26bf65fd0})
----------
The name of the StateType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of DeviceClass shellyDimmer
----------
The name of the ParamType (DeviceClass: shellyRgbw2, ActionType: brightness, ID: {3f74eb92-d95b-48c2-8ac6-29bea9f65ce3})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: brightness, ID: {3f74eb92-d95b-48c2-8ac6-29bea9f65ce3})
----------
The name of the StateType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of DeviceClass shellyRgbw2</extracomment>
<translation>Helligkeit</translation>
</message>
<message>
<source>Brightness changed</source>
<extracomment>The name of the EventType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of DeviceClass shellyDimmer
----------
The name of the EventType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of DeviceClass shellyRgbw2</extracomment>
<translation>Helligkeit geändert</translation>
</message>
<message>
<source>Color</source>
<extracomment>The name of the ParamType (DeviceClass: shellyRgbw2, ActionType: color, ID: {6ef7c686-350d-4069-9c41-9b90b3906748})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: color, ID: {6ef7c686-350d-4069-9c41-9b90b3906748})
----------
The name of the StateType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2</extracomment>
<translation>Farbe</translation>
</message>
<message>
<source>Color changed</source>
<extracomment>The name of the EventType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2</extracomment>
<translation>Farbe geändert</translation>
</message>
<message>
<source>Color temperature</source>
<extracomment>The name of the ParamType (DeviceClass: shellyRgbw2, ActionType: colorTemperature, ID: {a32a457f-fdc0-46ce-9106-6f9d4f4a6b16})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: colorTemperature, ID: {a32a457f-fdc0-46ce-9106-6f9d4f4a6b16})
----------
The name of the StateType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2</extracomment>
<translation>Farbtemperatur</translation>
</message>
<message>
<source>Color temperature changed</source>
<extracomment>The name of the EventType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2</extracomment>
<translation>Farbtemeratur geändert</translation>
</message>
<message>
<source>Connected/disconnected</source>
<extracomment>The name of the EventType ({49ff0891-1798-459f-a97c-f1cc4e643a46}) of DeviceClass shellyDimmer
----------
The name of the EventType ({98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6}) of DeviceClass shellyRgbw2</extracomment>
<translation>Verbunden/getrennt</translation>
</message>
<message>
<source>Consumed energy changed</source>
<extracomment>The name of the EventType ({962fec29-6be0-452e-87c5-5ff71435c40f}) of DeviceClass shellyPlug</extracomment>
<translation>Verbrauchte Energie geänert</translation>
</message>
<message>
<source>Current power consumption</source>
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, EventType: currentPower, ID: {e95b97d4-b88f-4656-8819-3f681fbe8510})
----------
The name of the StateType ({e95b97d4-b88f-4656-8819-3f681fbe8510}) of DeviceClass shellySocketPM
----------
The name of the ParamType (DeviceClass: shellyLightPM, EventType: currentPower, ID: {0de42461-1077-4b74-9212-5446914fd25f})
----------
The name of the StateType ({0de42461-1077-4b74-9212-5446914fd25f}) of DeviceClass shellyLightPM
----------
The name of the ParamType (DeviceClass: shellyGenericPM, EventType: currentPower, ID: {41338dbd-6d58-4093-a56c-0adaec5398d5})
----------
The name of the StateType ({41338dbd-6d58-4093-a56c-0adaec5398d5}) of DeviceClass shellyGenericPM
----------
The name of the ParamType (DeviceClass: shellyDimmer, EventType: currentPower, ID: {b3336ca6-1577-4230-8708-98875148606e})
----------
The name of the StateType ({b3336ca6-1577-4230-8708-98875148606e}) of DeviceClass shellyDimmer
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: currentPower, ID: {82ce0c4f-cb81-43c7-bc07-003f8a3cfbc8})
----------
The name of the StateType ({82ce0c4f-cb81-43c7-bc07-003f8a3cfbc8}) of DeviceClass shellyRgbw2</extracomment>
<translation>Aktueller Stromverbraucht</translation>
</message>
<message>
<source>Current power consumption changed</source>
<extracomment>The name of the EventType ({b3336ca6-1577-4230-8708-98875148606e}) of DeviceClass shellyDimmer
----------
The name of the EventType ({82ce0c4f-cb81-43c7-bc07-003f8a3cfbc8}) of DeviceClass shellyRgbw2</extracomment>
<translation>Aktueller Stromverbraucht geändert</translation>
</message>
<message>
<source>On</source>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, ActionType: power, ID: {e4a6ac87-31fb-4516-9cf3-f135621e902c})
----------
The name of the ParamType (DeviceClass: shellyDimmer, EventType: power, ID: {e4a6ac87-31fb-4516-9cf3-f135621e902c})
----------
The name of the StateType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of DeviceClass shellyDimmer
----------
The name of the ParamType (DeviceClass: shellyRgbw2, ActionType: power, ID: {14abcd30-9db2-4065-ae81-501a55fbb145})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: power, ID: {14abcd30-9db2-4065-ae81-501a55fbb145})
----------
The name of the StateType ({14abcd30-9db2-4065-ae81-501a55fbb145}) of DeviceClass shellyRgbw2</extracomment>
<translation>Ein</translation>
</message>
<message>
<source>Power consumption</source>
<extracomment>The name of the ParamType (DeviceClass: shellyPlug, EventType: currentPower, ID: {202ea409-650e-48b2-9aae-d4ebe9d505fd})
----------
The name of the StateType ({202ea409-650e-48b2-9aae-d4ebe9d505fd}) of DeviceClass shellyPlug</extracomment>
<translation>Stromverbraucht</translation>
</message>
<message>
<source>Power consumption changed</source>
<extracomment>The name of the EventType ({e95b97d4-b88f-4656-8819-3f681fbe8510}) of DeviceClass shellySocketPM
----------
The name of the EventType ({0de42461-1077-4b74-9212-5446914fd25f}) of DeviceClass shellyLightPM
----------
The name of the EventType ({41338dbd-6d58-4093-a56c-0adaec5398d5}) of DeviceClass shellyGenericPM
----------
The name of the EventType ({202ea409-650e-48b2-9aae-d4ebe9d505fd}) of DeviceClass shellyPlug</extracomment>
<translation>Stromverbraucht geändert</translation>
</message>
<message>
<source>Powered</source>
<extracomment>The name of the ParamType (DeviceClass: shellyPlug, ActionType: power, ID: {d813b35f-e11e-4783-b3b3-dbecb956ffb5})
----------
The name of the ParamType (DeviceClass: shellyPlug, EventType: power, ID: {d813b35f-e11e-4783-b3b3-dbecb956ffb5})
----------
The name of the StateType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of DeviceClass shellyPlug</extracomment>
<translation>Eingeschaltet</translation>
</message>
<message>
<source>Set brightness</source>
<extracomment>The name of the ActionType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of DeviceClass shellyDimmer
----------
The name of the ActionType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of DeviceClass shellyRgbw2</extracomment>
<translation>Setze Helligkeit</translation>
</message>
<message>
<source>Set color</source>
<extracomment>The name of the ActionType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2</extracomment>
<translation>Setze Farbe</translation>
</message>
<message>
<source>Set color temperature</source>
<extracomment>The name of the ActionType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2</extracomment>
<translation>Setze Farbtemeratur</translation>
</message>
<message>
<source>Shelly Dimmer</source>
<extracomment>The name of the DeviceClass ({3a1d6fc1-c623-4b45-9c81-1573fcc15f99})</extracomment>
<translation>Shelly Dimmer</translation>
</message>
<message>
<source>Shelly Plug/PlugS</source>
<extracomment>The name of the DeviceClass ({22229a6d-2af8-44e0-bea9-310a0f2769ef})</extracomment>
<translation>Shelly Plug/PlugS</translation>
</message>
<message>
<source>Shelly RGBW2</source>
<extracomment>The name of the DeviceClass ({17f24cec-e6ed-4abd-9d42-60999f391dba})</extracomment>
<translation>Shelly RGBW2</translation>
</message>
<message>
<source>Total energy consumed</source>
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, EventType: totalEnergyConsumed, ID: {89a65444-63d4-4add-a479-a48e95dd0458})
----------
The name of the StateType ({89a65444-63d4-4add-a479-a48e95dd0458}) of DeviceClass shellySocketPM
----------
The name of the ParamType (DeviceClass: shellyLightPM, EventType: totalEnergyConsumed, ID: {39e3d2c6-efb8-4c40-8ae9-8684d87e4087})
----------
The name of the StateType ({39e3d2c6-efb8-4c40-8ae9-8684d87e4087}) of DeviceClass shellyLightPM
----------
The name of the ParamType (DeviceClass: shellyGenericPM, EventType: totalEnergyConsumed, ID: {54b0b02e-1dfe-4172-bdfd-8129709e5d9f})
----------
The name of the StateType ({54b0b02e-1dfe-4172-bdfd-8129709e5d9f}) of DeviceClass shellyGenericPM
----------
The name of the ParamType (DeviceClass: shellyPlug, EventType: totalEnergyConsumed, ID: {962fec29-6be0-452e-87c5-5ff71435c40f})
----------
The name of the StateType ({962fec29-6be0-452e-87c5-5ff71435c40f}) of DeviceClass shellyPlug</extracomment>
<translation>Gesamtenergieverbrauch</translation>
</message>
<message>
<source>Channel</source>
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, Type: device, ID: {17c19689-8c88-454e-8b18-15436cad293d})
----------
The name of the ParamType (DeviceClass: shellySocket, Type: device, ID: {d48edbdf-8ed5-4721-a42a-fd2c340c1a6e})
----------
The name of the ParamType (DeviceClass: shellyLightPM, Type: device, ID: {9066e9e9-56e0-4e6b-8667-503b68613640})
----------
The name of the ParamType (DeviceClass: shellyLight, Type: device, ID: {9c8b88c0-2825-4235-9b68-2ba378eeb53f})
----------
The name of the ParamType (DeviceClass: shellyGenericPM, Type: device, ID: {5e7c6ed5-fe9c-4e27-ad1e-e96886f3c09b})
----------
The name of the ParamType (DeviceClass: shellyGeneric, Type: device, ID: {c08b1272-6eb2-4fed-80ad-06566a521b95})
----------
The name of the ParamType (DeviceClass: shellySwitch, Type: device, ID: {be6bdd43-cbf0-4d16-b789-ccad16e23788})</extracomment>
<translation>Kanal</translation>
</message>
<message>
<source>Connected device 1</source>
<extracomment>The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {dc8a02fb-baa4-40bf-9e00-684b17794287})</extracomment>
<translation>Verbundenes Gerät 1</translation>
</message>
<message>
<source>Connected device 2</source>
<extracomment>The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {1e6925f8-1613-4fe4-8234-e4a4e973ef83})</extracomment>
<translation>Verbundenes Gerät 2</translation>
</message>
<message>
<source>Shelly 1</source>
<extracomment>The name of the DeviceClass ({f810b66a-7177-4397-9771-4229abaabbb6})</extracomment>
<translation>Shelly 1</translation>
</message>
<message>
<source>Shelly 1PM</source>
<extracomment>The name of the DeviceClass ({30e74e9f-57f4-4bbc-b0df-f2c4f28b2f06})</extracomment>
<translation>Shelly 1PM</translation>
</message>
<message>
<source>Shelly 2.5</source>
<extracomment>The name of the DeviceClass ({465efb0d-da68-4177-a040-940c7f451e29})</extracomment>
<translation>Shelly 2.5</translation>
</message>
<message>
<source>Shelly connected power socket</source>
<extracomment>The name of the DeviceClass ({ae6e55fe-1a0b-43bc-bdfb-605661b96905})
----------
The name of the DeviceClass ({3e13206c-a6cd-49a0-b653-2ccb5bb4bbc1})</extracomment>
<translation>Verbundende Steckdose</translation>
</message>
<message>
<source>Total energy changed</source>
<extracomment>The name of the EventType ({89a65444-63d4-4add-a479-a48e95dd0458}) of DeviceClass shellySocketPM
----------
The name of the EventType ({39e3d2c6-efb8-4c40-8ae9-8684d87e4087}) of DeviceClass shellyLightPM
----------
The name of the EventType ({54b0b02e-1dfe-4172-bdfd-8129709e5d9f}) of DeviceClass shellyGenericPM</extracomment>
<translation>Gesamtenergieverbrauch</translation>
</message>
</context>
</TS>

View File

@ -33,10 +33,26 @@
</message>
<message>
<source>Connected</source>
<extracomment>The name of the ParamType (DeviceClass: shellyLight, EventType: connected, ID: {61b7d8ac-d229-4268-8143-6edb2eca978d})
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, EventType: connected, ID: {6e5dbb06-ef4b-42eb-bf6d-e3c83d78de67})
----------
The name of the StateType ({6e5dbb06-ef4b-42eb-bf6d-e3c83d78de67}) of DeviceClass shellySocketPM
----------
The name of the ParamType (DeviceClass: shellySocket, EventType: connected, ID: {b71fa926-9fd2-4008-9fe5-83bbf821963c})
----------
The name of the StateType ({b71fa926-9fd2-4008-9fe5-83bbf821963c}) of DeviceClass shellySocket
----------
The name of the ParamType (DeviceClass: shellyLightPM, EventType: connected, ID: {df6f8a11-1295-4ceb-b277-dbe83b9d039c})
----------
The name of the StateType ({df6f8a11-1295-4ceb-b277-dbe83b9d039c}) of DeviceClass shellyLightPM
----------
The name of the ParamType (DeviceClass: shellyLight, EventType: connected, ID: {61b7d8ac-d229-4268-8143-6edb2eca978d})
----------
The name of the StateType ({61b7d8ac-d229-4268-8143-6edb2eca978d}) of DeviceClass shellyLight
----------
The name of the ParamType (DeviceClass: shellyGenericPM, EventType: connected, ID: {5ec936f8-694d-43f4-b3a2-fdc77d38feab})
----------
The name of the StateType ({5ec936f8-694d-43f4-b3a2-fdc77d38feab}) of DeviceClass shellyGenericPM
----------
The name of the ParamType (DeviceClass: shellyGeneric, EventType: connected, ID: {4a141674-faa6-4953-8272-5b4a4da84d31})
----------
The name of the StateType ({4a141674-faa6-4953-8272-5b4a4da84d31}) of DeviceClass shellyGeneric
@ -45,6 +61,26 @@ The name of the ParamType (DeviceClass: shellySwitch, EventType: connected, ID:
----------
The name of the StateType ({0c233312-7b8f-4ca3-880d-523cab9b3ccb}) of DeviceClass shellySwitch
----------
The name of the ParamType (DeviceClass: shellyDimmer, EventType: connected, ID: {49ff0891-1798-459f-a97c-f1cc4e643a46})
----------
The name of the StateType ({49ff0891-1798-459f-a97c-f1cc4e643a46}) of DeviceClass shellyDimmer
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: connected, ID: {98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6})
----------
The name of the StateType ({98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6}) of DeviceClass shellyRgbw2
----------
The name of the ParamType (DeviceClass: shellyPlug, EventType: connected, ID: {584b3558-5fb5-40a9-81ad-dc71ba68fd45})
----------
The name of the StateType ({584b3558-5fb5-40a9-81ad-dc71ba68fd45}) of DeviceClass shellyPlug
----------
The name of the ParamType (DeviceClass: shelly25, EventType: connected, ID: {36a50e24-707e-4d5d-8eba-d2a73f626e2b})
----------
The name of the StateType ({36a50e24-707e-4d5d-8eba-d2a73f626e2b}) of DeviceClass shelly25
----------
The name of the ParamType (DeviceClass: shelly1pm, EventType: connected, ID: {df23a5ea-5f54-42ac-ab6b-aea8f71224f0})
----------
The name of the StateType ({df23a5ea-5f54-42ac-ab6b-aea8f71224f0}) of DeviceClass shelly1pm
----------
The name of the ParamType (DeviceClass: shelly1, EventType: connected, ID: {e5d41e05-2296-457e-97d8-98a5ac0de615})
----------
The name of the StateType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClass shelly1</extracomment>
@ -52,19 +88,39 @@ The name of the StateType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClas
</message>
<message>
<source>Connected changed</source>
<extracomment>The name of the EventType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClass shelly1</extracomment>
<extracomment>The name of the EventType ({584b3558-5fb5-40a9-81ad-dc71ba68fd45}) of DeviceClass shellyPlug
----------
The name of the EventType ({36a50e24-707e-4d5d-8eba-d2a73f626e2b}) of DeviceClass shelly25
----------
The name of the EventType ({df23a5ea-5f54-42ac-ab6b-aea8f71224f0}) of DeviceClass shelly1pm
----------
The name of the EventType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClass shelly1</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connected device</source>
<extracomment>The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d0e0499e-faa0-432a-a760-c295b0aefed0})</extracomment>
<extracomment>The name of the ParamType (DeviceClass: shellyPlug, Type: device, ID: {9686b1ca-e71f-4e62-beb0-6a20f21550e9})
----------
The name of the ParamType (DeviceClass: shelly1pm, Type: device, ID: {3aacd693-3f1a-4040-be3a-953e600da44f})
----------
The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d0e0499e-faa0-432a-a760-c295b0aefed0})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Default state</source>
<extracomment>The name of the ParamType (DeviceClass: shellyLight, Type: settings, ID: {4fe9ae31-3657-41bf-bd40-a219d58465d3})
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, Type: settings, ID: {9880a51b-57da-4b65-a0ec-23eb0fdcb8ac})
----------
The name of the ParamType (DeviceClass: shellyGeneric, Type: settings, ID: {7d35aea3-1444-48c8-9732-a41bfc3b9d75})</extracomment>
The name of the ParamType (DeviceClass: shellySocket, Type: settings, ID: {9f365d87-ddb9-4764-9bfb-0e64020646b4})
----------
The name of the ParamType (DeviceClass: shellyLightPM, Type: settings, ID: {01cc242a-268d-4dd9-96ce-5502dd1bd430})
----------
The name of the ParamType (DeviceClass: shellyLight, Type: settings, ID: {4fe9ae31-3657-41bf-bd40-a219d58465d3})
----------
The name of the ParamType (DeviceClass: shellyGenericPM, Type: settings, ID: {8c60a23c-5e5b-42ba-abae-aeeb3d379d79})
----------
The name of the ParamType (DeviceClass: shellyGeneric, Type: settings, ID: {7d35aea3-1444-48c8-9732-a41bfc3b9d75})
----------
The name of the ParamType (DeviceClass: shellyPlug, Type: settings, ID: {40f251db-919a-410f-939a-a11bbc4f7f95})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
@ -86,17 +142,51 @@ The name of the StateType ({20f74d88-0683-4d3a-9513-6b29b5112b7b}) of DeviceClas
</message>
<message>
<source>Password (optional)</source>
<extracomment>The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d29b8399-bfa6-4146-921d-a1d43ca4e184})</extracomment>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, Type: device, ID: {b181bf78-a19c-4f97-9264-f16fbac64ee2})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, Type: device, ID: {1cc21f73-b93a-4044-924b-d290870d5226})
----------
The name of the ParamType (DeviceClass: shellyPlug, Type: device, ID: {e0141b39-fa76-49de-94c6-133cfe41257f})
----------
The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {738a6ca4-83f8-4a72-ba11-3a195f9177e3})
----------
The name of the ParamType (DeviceClass: shelly1pm, Type: device, ID: {3a86e7bc-8bde-4b20-833b-7bee41dd9bc6})
----------
The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d29b8399-bfa6-4146-921d-a1d43ca4e184})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Power</source>
<extracomment>The name of the ParamType (DeviceClass: shellyLight, ActionType: power, ID: {2ee5bfab-271e-4b95-9464-122a5208f1a5})
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, ActionType: power, ID: {d6adeab6-c91d-44ba-8d01-9b5b9b7368be})
----------
The name of the ParamType (DeviceClass: shellySocketPM, EventType: power, ID: {d6adeab6-c91d-44ba-8d01-9b5b9b7368be})
----------
The name of the StateType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of DeviceClass shellySocketPM
----------
The name of the ParamType (DeviceClass: shellySocket, ActionType: power, ID: {51e897b3-dd17-4df3-aa42-52b9bb5f0df8})
----------
The name of the ParamType (DeviceClass: shellySocket, EventType: power, ID: {51e897b3-dd17-4df3-aa42-52b9bb5f0df8})
----------
The name of the StateType ({51e897b3-dd17-4df3-aa42-52b9bb5f0df8}) of DeviceClass shellySocket
----------
The name of the ParamType (DeviceClass: shellyLightPM, ActionType: power, ID: {e77d1c75-e856-46bc-9f38-36e59ed7849d})
----------
The name of the ParamType (DeviceClass: shellyLightPM, EventType: power, ID: {e77d1c75-e856-46bc-9f38-36e59ed7849d})
----------
The name of the StateType ({e77d1c75-e856-46bc-9f38-36e59ed7849d}) of DeviceClass shellyLightPM
----------
The name of the ParamType (DeviceClass: shellyLight, ActionType: power, ID: {2ee5bfab-271e-4b95-9464-122a5208f1a5})
----------
The name of the ParamType (DeviceClass: shellyLight, EventType: power, ID: {2ee5bfab-271e-4b95-9464-122a5208f1a5})
----------
The name of the StateType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
----------
The name of the ParamType (DeviceClass: shellyGenericPM, ActionType: power, ID: {bd9480af-eec2-42d7-ab17-15715ee2e8e0})
----------
The name of the ParamType (DeviceClass: shellyGenericPM, EventType: power, ID: {bd9480af-eec2-42d7-ab17-15715ee2e8e0})
----------
The name of the StateType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of DeviceClass shellyGenericPM
----------
The name of the ParamType (DeviceClass: shellyGeneric, ActionType: power, ID: {72d7dbba-757c-4b03-a092-1d3f374fa961})
----------
The name of the ParamType (DeviceClass: shellyGeneric, EventType: power, ID: {72d7dbba-757c-4b03-a092-1d3f374fa961})
@ -111,7 +201,17 @@ The name of the StateType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClas
</message>
<message>
<source>Reboot</source>
<extracomment>The name of the ActionType ({b4067d54-36c5-4d30-bbc3-c8c712d6fd32}) of DeviceClass shelly1</extracomment>
<extracomment>The name of the ActionType ({dca1d1bb-b377-41b8-ac26-579060448fd7}) of DeviceClass shellyDimmer
----------
The name of the ActionType ({1390811d-dc71-4d89-a6e1-a808e03225f9}) of DeviceClass shellyRgbw2
----------
The name of the ActionType ({7dc03565-d7cb-4add-ba08-b751ce0821d5}) of DeviceClass shellyPlug
----------
The name of the ActionType ({4085a6a0-746f-490d-9e38-897c24f866b6}) of DeviceClass shelly25
----------
The name of the ActionType ({3133cf3d-729d-4f36-9a6d-1eeecb07edde}) of DeviceClass shelly1pm
----------
The name of the ActionType ({b4067d54-36c5-4d30-bbc3-c8c712d6fd32}) of DeviceClass shelly1</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
@ -123,17 +223,31 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9})</extracom
</message>
<message>
<source>Shelly ID</source>
<extracomment>The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {1d301dc0-5e48-473f-a611-8e407289e545})</extracomment>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, Type: device, ID: {32e328be-2357-4d94-b438-3fe1ae94d97b})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, Type: device, ID: {2b0cd1b2-1648-4e0d-85d2-34aa9b9b835e})
----------
The name of the ParamType (DeviceClass: shellyPlug, Type: device, ID: {bd5679fc-b761-4a56-a472-97717418c425})
----------
The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {d79de2fa-81dd-440f-80b8-f1f71149d1f2})
----------
The name of the ParamType (DeviceClass: shelly1pm, Type: device, ID: {6df5db8a-4e27-49e5-8cf9-78cb8497d831})
----------
The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {1d301dc0-5e48-473f-a611-8e407289e545})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly connected device</source>
<extracomment>The name of the DeviceClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25})</extracomment>
<extracomment>The name of the DeviceClass ({3bd614e0-72c4-4fbe-8c70-ce6c48d04bce})
----------
The name of the DeviceClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly connected light</source>
<extracomment>The name of the DeviceClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399})</extracomment>
<extracomment>The name of the DeviceClass ({5ab05c19-71aa-4a85-a02f-a108f039a69a})
----------
The name of the DeviceClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
@ -141,19 +255,32 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9})</extracom
<extracomment>The name of the DeviceClass ({6de35a17-0f54-4397-894d-4321b64c53d1})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly1 / Shelly1PM</source>
<extracomment>The name of the DeviceClass ({f810b66a-7177-4397-9771-4229abaabbb6})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Username (optional)</source>
<extracomment>The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {fa1aa0f6-93b2-410d-a2c5-7b2f45eae679})</extracomment>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, Type: device, ID: {2df0d509-d4b5-407a-835a-6b6392653e10})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, Type: device, ID: {0b060c1a-3b9b-42d7-87f8-41b7b64a7eb8})
----------
The name of the ParamType (DeviceClass: shellyPlug, Type: device, ID: {42797a00-1591-4021-8f4c-2a170189911b})
----------
The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {4fb3c690-0183-4fc4-affa-1404788b2dcc})
----------
The name of the ParamType (DeviceClass: shelly1pm, Type: device, ID: {99a31711-0029-461e-9117-2834451175c1})
----------
The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {fa1aa0f6-93b2-410d-a2c5-7b2f45eae679})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connected or disconnected</source>
<extracomment>The name of the EventType ({61b7d8ac-d229-4268-8143-6edb2eca978d}) of DeviceClass shellyLight
<extracomment>The name of the EventType ({6e5dbb06-ef4b-42eb-bf6d-e3c83d78de67}) of DeviceClass shellySocketPM
----------
The name of the EventType ({b71fa926-9fd2-4008-9fe5-83bbf821963c}) of DeviceClass shellySocket
----------
The name of the EventType ({df6f8a11-1295-4ceb-b277-dbe83b9d039c}) of DeviceClass shellyLightPM
----------
The name of the EventType ({61b7d8ac-d229-4268-8143-6edb2eca978d}) of DeviceClass shellyLight
----------
The name of the EventType ({5ec936f8-694d-43f4-b3a2-fdc77d38feab}) of DeviceClass shellyGenericPM
----------
The name of the EventType ({4a141674-faa6-4953-8272-5b4a4da84d31}) of DeviceClass shellyGeneric
----------
@ -162,16 +289,287 @@ The name of the EventType ({0c233312-7b8f-4ca3-880d-523cab9b3ccb}) of DeviceClas
</message>
<message>
<source>Turn on or off</source>
<extracomment>The name of the ActionType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
<extracomment>The name of the ActionType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of DeviceClass shellySocketPM
----------
The name of the ActionType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClass shellyGeneric</extracomment>
The name of the ActionType ({51e897b3-dd17-4df3-aa42-52b9bb5f0df8}) of DeviceClass shellySocket
----------
The name of the ActionType ({e77d1c75-e856-46bc-9f38-36e59ed7849d}) of DeviceClass shellyLightPM
----------
The name of the ActionType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
----------
The name of the ActionType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of DeviceClass shellyGenericPM
----------
The name of the ActionType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClass shellyGeneric
----------
The name of the ActionType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of DeviceClass shellyDimmer
----------
The name of the ActionType ({14abcd30-9db2-4065-ae81-501a55fbb145}) of DeviceClass shellyRgbw2
----------
The name of the ActionType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of DeviceClass shellyPlug</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Turned on or off</source>
<extracomment>The name of the EventType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
<extracomment>The name of the EventType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of DeviceClass shellySocketPM
----------
The name of the EventType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClass shellyGeneric</extracomment>
The name of the EventType ({51e897b3-dd17-4df3-aa42-52b9bb5f0df8}) of DeviceClass shellySocket
----------
The name of the EventType ({e77d1c75-e856-46bc-9f38-36e59ed7849d}) of DeviceClass shellyLightPM
----------
The name of the EventType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight
----------
The name of the EventType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of DeviceClass shellyGenericPM
----------
The name of the EventType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of DeviceClass shellyGeneric
----------
The name of the EventType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of DeviceClass shellyDimmer
----------
The name of the EventType ({14abcd30-9db2-4065-ae81-501a55fbb145}) of DeviceClass shellyRgbw2
----------
The name of the EventType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of DeviceClass shellyPlug</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Brightness</source>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, ActionType: brightness, ID: {f41c93ac-6911-45fc-9221-7dd26bf65fd0})
----------
The name of the ParamType (DeviceClass: shellyDimmer, EventType: brightness, ID: {f41c93ac-6911-45fc-9221-7dd26bf65fd0})
----------
The name of the StateType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of DeviceClass shellyDimmer
----------
The name of the ParamType (DeviceClass: shellyRgbw2, ActionType: brightness, ID: {3f74eb92-d95b-48c2-8ac6-29bea9f65ce3})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: brightness, ID: {3f74eb92-d95b-48c2-8ac6-29bea9f65ce3})
----------
The name of the StateType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Brightness changed</source>
<extracomment>The name of the EventType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of DeviceClass shellyDimmer
----------
The name of the EventType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Color</source>
<extracomment>The name of the ParamType (DeviceClass: shellyRgbw2, ActionType: color, ID: {6ef7c686-350d-4069-9c41-9b90b3906748})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: color, ID: {6ef7c686-350d-4069-9c41-9b90b3906748})
----------
The name of the StateType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Color changed</source>
<extracomment>The name of the EventType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Color temperature</source>
<extracomment>The name of the ParamType (DeviceClass: shellyRgbw2, ActionType: colorTemperature, ID: {a32a457f-fdc0-46ce-9106-6f9d4f4a6b16})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: colorTemperature, ID: {a32a457f-fdc0-46ce-9106-6f9d4f4a6b16})
----------
The name of the StateType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Color temperature changed</source>
<extracomment>The name of the EventType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connected/disconnected</source>
<extracomment>The name of the EventType ({49ff0891-1798-459f-a97c-f1cc4e643a46}) of DeviceClass shellyDimmer
----------
The name of the EventType ({98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Consumed energy changed</source>
<extracomment>The name of the EventType ({962fec29-6be0-452e-87c5-5ff71435c40f}) of DeviceClass shellyPlug</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Current power consumption</source>
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, EventType: currentPower, ID: {e95b97d4-b88f-4656-8819-3f681fbe8510})
----------
The name of the StateType ({e95b97d4-b88f-4656-8819-3f681fbe8510}) of DeviceClass shellySocketPM
----------
The name of the ParamType (DeviceClass: shellyLightPM, EventType: currentPower, ID: {0de42461-1077-4b74-9212-5446914fd25f})
----------
The name of the StateType ({0de42461-1077-4b74-9212-5446914fd25f}) of DeviceClass shellyLightPM
----------
The name of the ParamType (DeviceClass: shellyGenericPM, EventType: currentPower, ID: {41338dbd-6d58-4093-a56c-0adaec5398d5})
----------
The name of the StateType ({41338dbd-6d58-4093-a56c-0adaec5398d5}) of DeviceClass shellyGenericPM
----------
The name of the ParamType (DeviceClass: shellyDimmer, EventType: currentPower, ID: {b3336ca6-1577-4230-8708-98875148606e})
----------
The name of the StateType ({b3336ca6-1577-4230-8708-98875148606e}) of DeviceClass shellyDimmer
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: currentPower, ID: {82ce0c4f-cb81-43c7-bc07-003f8a3cfbc8})
----------
The name of the StateType ({82ce0c4f-cb81-43c7-bc07-003f8a3cfbc8}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Current power consumption changed</source>
<extracomment>The name of the EventType ({b3336ca6-1577-4230-8708-98875148606e}) of DeviceClass shellyDimmer
----------
The name of the EventType ({82ce0c4f-cb81-43c7-bc07-003f8a3cfbc8}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>On</source>
<extracomment>The name of the ParamType (DeviceClass: shellyDimmer, ActionType: power, ID: {e4a6ac87-31fb-4516-9cf3-f135621e902c})
----------
The name of the ParamType (DeviceClass: shellyDimmer, EventType: power, ID: {e4a6ac87-31fb-4516-9cf3-f135621e902c})
----------
The name of the StateType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of DeviceClass shellyDimmer
----------
The name of the ParamType (DeviceClass: shellyRgbw2, ActionType: power, ID: {14abcd30-9db2-4065-ae81-501a55fbb145})
----------
The name of the ParamType (DeviceClass: shellyRgbw2, EventType: power, ID: {14abcd30-9db2-4065-ae81-501a55fbb145})
----------
The name of the StateType ({14abcd30-9db2-4065-ae81-501a55fbb145}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Power consumption</source>
<extracomment>The name of the ParamType (DeviceClass: shellyPlug, EventType: currentPower, ID: {202ea409-650e-48b2-9aae-d4ebe9d505fd})
----------
The name of the StateType ({202ea409-650e-48b2-9aae-d4ebe9d505fd}) of DeviceClass shellyPlug</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Power consumption changed</source>
<extracomment>The name of the EventType ({e95b97d4-b88f-4656-8819-3f681fbe8510}) of DeviceClass shellySocketPM
----------
The name of the EventType ({0de42461-1077-4b74-9212-5446914fd25f}) of DeviceClass shellyLightPM
----------
The name of the EventType ({41338dbd-6d58-4093-a56c-0adaec5398d5}) of DeviceClass shellyGenericPM
----------
The name of the EventType ({202ea409-650e-48b2-9aae-d4ebe9d505fd}) of DeviceClass shellyPlug</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Powered</source>
<extracomment>The name of the ParamType (DeviceClass: shellyPlug, ActionType: power, ID: {d813b35f-e11e-4783-b3b3-dbecb956ffb5})
----------
The name of the ParamType (DeviceClass: shellyPlug, EventType: power, ID: {d813b35f-e11e-4783-b3b3-dbecb956ffb5})
----------
The name of the StateType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of DeviceClass shellyPlug</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Set brightness</source>
<extracomment>The name of the ActionType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of DeviceClass shellyDimmer
----------
The name of the ActionType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Set color</source>
<extracomment>The name of the ActionType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Set color temperature</source>
<extracomment>The name of the ActionType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly Dimmer</source>
<extracomment>The name of the DeviceClass ({3a1d6fc1-c623-4b45-9c81-1573fcc15f99})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly Plug/PlugS</source>
<extracomment>The name of the DeviceClass ({22229a6d-2af8-44e0-bea9-310a0f2769ef})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly RGBW2</source>
<extracomment>The name of the DeviceClass ({17f24cec-e6ed-4abd-9d42-60999f391dba})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Total energy consumed</source>
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, EventType: totalEnergyConsumed, ID: {89a65444-63d4-4add-a479-a48e95dd0458})
----------
The name of the StateType ({89a65444-63d4-4add-a479-a48e95dd0458}) of DeviceClass shellySocketPM
----------
The name of the ParamType (DeviceClass: shellyLightPM, EventType: totalEnergyConsumed, ID: {39e3d2c6-efb8-4c40-8ae9-8684d87e4087})
----------
The name of the StateType ({39e3d2c6-efb8-4c40-8ae9-8684d87e4087}) of DeviceClass shellyLightPM
----------
The name of the ParamType (DeviceClass: shellyGenericPM, EventType: totalEnergyConsumed, ID: {54b0b02e-1dfe-4172-bdfd-8129709e5d9f})
----------
The name of the StateType ({54b0b02e-1dfe-4172-bdfd-8129709e5d9f}) of DeviceClass shellyGenericPM
----------
The name of the ParamType (DeviceClass: shellyPlug, EventType: totalEnergyConsumed, ID: {962fec29-6be0-452e-87c5-5ff71435c40f})
----------
The name of the StateType ({962fec29-6be0-452e-87c5-5ff71435c40f}) of DeviceClass shellyPlug</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channel</source>
<extracomment>The name of the ParamType (DeviceClass: shellySocketPM, Type: device, ID: {17c19689-8c88-454e-8b18-15436cad293d})
----------
The name of the ParamType (DeviceClass: shellySocket, Type: device, ID: {d48edbdf-8ed5-4721-a42a-fd2c340c1a6e})
----------
The name of the ParamType (DeviceClass: shellyLightPM, Type: device, ID: {9066e9e9-56e0-4e6b-8667-503b68613640})
----------
The name of the ParamType (DeviceClass: shellyLight, Type: device, ID: {9c8b88c0-2825-4235-9b68-2ba378eeb53f})
----------
The name of the ParamType (DeviceClass: shellyGenericPM, Type: device, ID: {5e7c6ed5-fe9c-4e27-ad1e-e96886f3c09b})
----------
The name of the ParamType (DeviceClass: shellyGeneric, Type: device, ID: {c08b1272-6eb2-4fed-80ad-06566a521b95})
----------
The name of the ParamType (DeviceClass: shellySwitch, Type: device, ID: {be6bdd43-cbf0-4d16-b789-ccad16e23788})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connected device 1</source>
<extracomment>The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {dc8a02fb-baa4-40bf-9e00-684b17794287})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connected device 2</source>
<extracomment>The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {1e6925f8-1613-4fe4-8234-e4a4e973ef83})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly 1</source>
<extracomment>The name of the DeviceClass ({f810b66a-7177-4397-9771-4229abaabbb6})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly 1PM</source>
<extracomment>The name of the DeviceClass ({30e74e9f-57f4-4bbc-b0df-f2c4f28b2f06})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly 2.5</source>
<extracomment>The name of the DeviceClass ({465efb0d-da68-4177-a040-940c7f451e29})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shelly connected power socket</source>
<extracomment>The name of the DeviceClass ({ae6e55fe-1a0b-43bc-bdfb-605661b96905})
----------
The name of the DeviceClass ({3e13206c-a6cd-49a0-b653-2ccb5bb4bbc1})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Total energy changed</source>
<extracomment>The name of the EventType ({89a65444-63d4-4add-a479-a48e95dd0458}) of DeviceClass shellySocketPM
----------
The name of the EventType ({39e3d2c6-efb8-4c40-8ae9-8684d87e4087}) of DeviceClass shellyLightPM
----------
The name of the EventType ({54b0b02e-1dfe-4172-bdfd-8129709e5d9f}) of DeviceClass shellyGenericPM</extracomment>
<translation type="unfinished"></translation>
</message>
</context>