diff --git a/shelly/README.md b/shelly/README.md index 7148ec3d..32638409 100644 --- a/shelly/README.md +++ b/shelly/README.md @@ -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. diff --git a/shelly/devicepluginshelly.cpp b/shelly/devicepluginshelly.cpp index 523b1eae..ac77b5eb 100644 --- a/shelly/devicepluginshelly.cpp +++ b/shelly/devicepluginshelly.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #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(); + 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 ¶mTypeId, 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) { diff --git a/shelly/devicepluginshelly.h b/shelly/devicepluginshelly.h index b84f5488..e8c3ebc3 100644 --- a/shelly/devicepluginshelly.h +++ b/shelly/devicepluginshelly.h @@ -71,10 +71,50 @@ private: QHash m_mqttChannels; + QHash m_idParamTypeMap; + QHash m_usernameParamTypeMap; + QHash m_passwordParamTypeMap; + QHash m_connectedDeviceParamTypeMap; + QHash m_connectedDevice2ParamTypeMap; + QHash m_channelParamTypeMap; + QHash m_connectedStateTypesMap; QHash m_powerStateTypeMap; + QHash m_currentPowerStateTypeMap; + QHash m_totalEnergyConsumedStateTypeMap; + QHash m_colorStateTypeMap; + QHash m_colorTemperatureStateTypeMap; + QHash m_brightnessStateTypeMap; + + QHash m_rebootActionTypeMap; + // Relay based power actions QHash m_powerActionTypesMap; QHash m_powerActionParamTypesMap; + + // Color JSON based power actions + QHash m_colorPowerActionTypesMap; + QHash m_colorPowerActionParamTypesMap; + // Color actions + QHash m_colorActionTypesMap; + QHash m_colorActionParamTypesMap; + // Color JSON brightness actions + QHash m_colorBrightnessActionTypesMap; + QHash m_colorBrightnessActionParamTypesMap; + // Color temp + QHash m_colorTemperatureActionTypesMap; + QHash m_colorTemperatureActionParamTypesMap; + + // Dimmable based power actions + QHash m_dimmablePowerActionTypesMap; + QHash m_dimmablePowerActionParamTypesMap; + // Dimmable based brightness actions + QHash m_dimmableBrightnessActionTypesMap; + QHash m_dimmableBrightnessActionParamTypesMap; + + // Roller shutter actions + QHash m_rollerOpenActionTypeMap; + QHash m_rollerCloseActionTypeMap; + QHash m_rollerStopActionTypeMap; }; #endif // DEVICEPLUGINSHELLY_H diff --git a/shelly/devicepluginshelly.json b/shelly/devicepluginshelly.json index 11f525b4..7c61202d 100644 --- a/shelly/devicepluginshelly.json +++ b/shelly/devicepluginshelly.json @@ -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" + } + ] } ] } diff --git a/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-de.ts b/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-de.ts index 93a9091d..0b1dd64b 100644 --- a/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-de.ts +++ b/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-de.ts @@ -33,10 +33,26 @@ Connected - The name of the ParamType (DeviceClass: shellyLight, EventType: connected, ID: {61b7d8ac-d229-4268-8143-6edb2eca978d}) + 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 @@ -52,19 +88,39 @@ The name of the StateType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClas Connected changed - The name of the EventType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClass shelly1 + 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 Verbunden oder getrennt Connected device - The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d0e0499e-faa0-432a-a760-c295b0aefed0}) + 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}) Verbundenes Gerät Default state - The name of the ParamType (DeviceClass: shellyLight, Type: settings, ID: {4fe9ae31-3657-41bf-bd40-a219d58465d3}) + 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}) +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}) Anfangszustand @@ -86,17 +142,51 @@ The name of the StateType ({20f74d88-0683-4d3a-9513-6b29b5112b7b}) of DeviceClas Password (optional) - The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d29b8399-bfa6-4146-921d-a1d43ca4e184}) + 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}) Passwort (Optional) Power - The name of the ParamType (DeviceClass: shellyLight, ActionType: power, ID: {2ee5bfab-271e-4b95-9464-122a5208f1a5}) + 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 Reboot - The name of the ActionType ({b4067d54-36c5-4d30-bbc3-c8c712d6fd32}) of DeviceClass shelly1 + 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 Neustart @@ -123,17 +223,31 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9}) Shelly ID - The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {1d301dc0-5e48-473f-a611-8e407289e545}) + 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}) Shelly ID Shelly connected device - The name of the DeviceClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25}) + The name of the DeviceClass ({3bd614e0-72c4-4fbe-8c70-ce6c48d04bce}) +---------- +The name of the DeviceClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25}) Verbundenes Gerät an Schelly Shelly connected light - The name of the DeviceClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399}) + The name of the DeviceClass ({5ab05c19-71aa-4a85-a02f-a108f039a69a}) +---------- +The name of the DeviceClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399}) Verbundene Beleuchtung an Shelly @@ -141,19 +255,32 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9})The name of the DeviceClass ({6de35a17-0f54-4397-894d-4321b64c53d1}) Shelly Taster - - Shelly1 / Shelly1PM - The name of the DeviceClass ({f810b66a-7177-4397-9771-4229abaabbb6}) - Shelly1 /Shelly1PM - Username (optional) - The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {fa1aa0f6-93b2-410d-a2c5-7b2f45eae679}) + 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}) Benutzername (Optional) Connected or disconnected - The name of the EventType ({61b7d8ac-d229-4268-8143-6edb2eca978d}) of DeviceClass shellyLight + 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 Turn on or off - The name of the ActionType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight + 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 +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 Ein- oder ausschalten Turned on or off - The name of the EventType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight + 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 +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 Ein. oder ausgeschaltet + + Brightness + 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 + Helligkeit + + + Brightness changed + 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 + Helligkeit geändert + + + Color + 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 + Farbe + + + Color changed + The name of the EventType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2 + Farbe geändert + + + Color temperature + 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 + Farbtemperatur + + + Color temperature changed + The name of the EventType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2 + Farbtemeratur geändert + + + Connected/disconnected + 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 + Verbunden/getrennt + + + Consumed energy changed + The name of the EventType ({962fec29-6be0-452e-87c5-5ff71435c40f}) of DeviceClass shellyPlug + Verbrauchte Energie geänert + + + Current power consumption + 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 + Aktueller Stromverbraucht + + + Current power consumption changed + 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 + Aktueller Stromverbraucht geändert + + + On + 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 + Ein + + + Power consumption + 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 + Stromverbraucht + + + Power consumption changed + 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 + Stromverbraucht geändert + + + Powered + 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 + Eingeschaltet + + + Set brightness + 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 + Setze Helligkeit + + + Set color + The name of the ActionType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2 + Setze Farbe + + + Set color temperature + The name of the ActionType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2 + Setze Farbtemeratur + + + Shelly Dimmer + The name of the DeviceClass ({3a1d6fc1-c623-4b45-9c81-1573fcc15f99}) + Shelly Dimmer + + + Shelly Plug/PlugS + The name of the DeviceClass ({22229a6d-2af8-44e0-bea9-310a0f2769ef}) + Shelly Plug/PlugS + + + Shelly RGBW2 + The name of the DeviceClass ({17f24cec-e6ed-4abd-9d42-60999f391dba}) + Shelly RGBW2 + + + Total energy consumed + 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 + Gesamtenergieverbrauch + + + Channel + 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}) + Kanal + + + Connected device 1 + The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {dc8a02fb-baa4-40bf-9e00-684b17794287}) + Verbundenes Gerät 1 + + + Connected device 2 + The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {1e6925f8-1613-4fe4-8234-e4a4e973ef83}) + Verbundenes Gerät 2 + + + Shelly 1 + The name of the DeviceClass ({f810b66a-7177-4397-9771-4229abaabbb6}) + Shelly 1 + + + Shelly 1PM + The name of the DeviceClass ({30e74e9f-57f4-4bbc-b0df-f2c4f28b2f06}) + Shelly 1PM + + + Shelly 2.5 + The name of the DeviceClass ({465efb0d-da68-4177-a040-940c7f451e29}) + Shelly 2.5 + + + Shelly connected power socket + The name of the DeviceClass ({ae6e55fe-1a0b-43bc-bdfb-605661b96905}) +---------- +The name of the DeviceClass ({3e13206c-a6cd-49a0-b653-2ccb5bb4bbc1}) + Verbundende Steckdose + + + Total energy changed + 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 + Gesamtenergieverbrauch + diff --git a/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-en.ts b/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-en.ts index 5d745144..b2798ada 100644 --- a/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-en.ts +++ b/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-en.ts @@ -33,10 +33,26 @@ Connected - The name of the ParamType (DeviceClass: shellyLight, EventType: connected, ID: {61b7d8ac-d229-4268-8143-6edb2eca978d}) + 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 @@ -52,19 +88,39 @@ The name of the StateType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClas Connected changed - The name of the EventType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of DeviceClass shelly1 + 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 Connected device - The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d0e0499e-faa0-432a-a760-c295b0aefed0}) + 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}) Default state - The name of the ParamType (DeviceClass: shellyLight, Type: settings, ID: {4fe9ae31-3657-41bf-bd40-a219d58465d3}) + 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}) +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}) @@ -86,17 +142,51 @@ The name of the StateType ({20f74d88-0683-4d3a-9513-6b29b5112b7b}) of DeviceClas Password (optional) - The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {d29b8399-bfa6-4146-921d-a1d43ca4e184}) + 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}) Power - The name of the ParamType (DeviceClass: shellyLight, ActionType: power, ID: {2ee5bfab-271e-4b95-9464-122a5208f1a5}) + 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 Reboot - The name of the ActionType ({b4067d54-36c5-4d30-bbc3-c8c712d6fd32}) of DeviceClass shelly1 + 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 @@ -123,17 +223,31 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9}) Shelly ID - The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {1d301dc0-5e48-473f-a611-8e407289e545}) + 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}) Shelly connected device - The name of the DeviceClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25}) + The name of the DeviceClass ({3bd614e0-72c4-4fbe-8c70-ce6c48d04bce}) +---------- +The name of the DeviceClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25}) Shelly connected light - The name of the DeviceClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399}) + The name of the DeviceClass ({5ab05c19-71aa-4a85-a02f-a108f039a69a}) +---------- +The name of the DeviceClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399}) @@ -141,19 +255,32 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9})The name of the DeviceClass ({6de35a17-0f54-4397-894d-4321b64c53d1}) - - Shelly1 / Shelly1PM - The name of the DeviceClass ({f810b66a-7177-4397-9771-4229abaabbb6}) - - Username (optional) - The name of the ParamType (DeviceClass: shelly1, Type: device, ID: {fa1aa0f6-93b2-410d-a2c5-7b2f45eae679}) + 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}) Connected or disconnected - The name of the EventType ({61b7d8ac-d229-4268-8143-6edb2eca978d}) of DeviceClass shellyLight + 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 Turn on or off - The name of the ActionType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight + 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 +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 Turned on or off - The name of the EventType ({2ee5bfab-271e-4b95-9464-122a5208f1a5}) of DeviceClass shellyLight + 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 +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 + + + + Brightness + 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 + + + + Brightness changed + 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 + + + + Color + 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 + + + + Color changed + The name of the EventType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2 + + + + Color temperature + 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 + + + + Color temperature changed + The name of the EventType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2 + + + + Connected/disconnected + 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 + + + + Consumed energy changed + The name of the EventType ({962fec29-6be0-452e-87c5-5ff71435c40f}) of DeviceClass shellyPlug + + + + Current power consumption + 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 + + + + Current power consumption changed + 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 + + + + On + 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 + + + + Power consumption + 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 + + + + Power consumption changed + 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 + + + + Powered + 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 + + + + Set brightness + 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 + + + + Set color + The name of the ActionType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of DeviceClass shellyRgbw2 + + + + Set color temperature + The name of the ActionType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of DeviceClass shellyRgbw2 + + + + Shelly Dimmer + The name of the DeviceClass ({3a1d6fc1-c623-4b45-9c81-1573fcc15f99}) + + + + Shelly Plug/PlugS + The name of the DeviceClass ({22229a6d-2af8-44e0-bea9-310a0f2769ef}) + + + + Shelly RGBW2 + The name of the DeviceClass ({17f24cec-e6ed-4abd-9d42-60999f391dba}) + + + + Total energy consumed + 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 + + + + Channel + 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}) + + + + Connected device 1 + The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {dc8a02fb-baa4-40bf-9e00-684b17794287}) + + + + Connected device 2 + The name of the ParamType (DeviceClass: shelly25, Type: device, ID: {1e6925f8-1613-4fe4-8234-e4a4e973ef83}) + + + + Shelly 1 + The name of the DeviceClass ({f810b66a-7177-4397-9771-4229abaabbb6}) + + + + Shelly 1PM + The name of the DeviceClass ({30e74e9f-57f4-4bbc-b0df-f2c4f28b2f06}) + + + + Shelly 2.5 + The name of the DeviceClass ({465efb0d-da68-4177-a040-940c7f451e29}) + + + + Shelly connected power socket + The name of the DeviceClass ({ae6e55fe-1a0b-43bc-bdfb-605661b96905}) +---------- +The name of the DeviceClass ({3e13206c-a6cd-49a0-b653-2ccb5bb4bbc1}) + + + + Total energy changed + 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