From 11820a97a79dff49038c6e91fe28f84f7495daca Mon Sep 17 00:00:00 2001 From: loosrob <79396812+loosrob@users.noreply.github.com> Date: Sun, 6 Feb 2022 22:46:03 +0100 Subject: [PATCH 01/10] Add Shelly EM --- shelly/integrationpluginshelly.cpp | 266 ++++++++++++-------- shelly/integrationpluginshelly.json | 375 ++++++++++++++++++++++------ 2 files changed, 453 insertions(+), 188 deletions(-) diff --git a/shelly/integrationpluginshelly.cpp b/shelly/integrationpluginshelly.cpp index 35fee339..db93f14c 100644 --- a/shelly/integrationpluginshelly.cpp +++ b/shelly/integrationpluginshelly.cpp @@ -44,6 +44,8 @@ #include "plugintimer.h" +#include "math.h" + #include "network/zeroconf/zeroconfservicebrowser.h" #include "platform/platformzeroconfcontroller.h" @@ -65,6 +67,7 @@ static QHash idParamTypeMap = { {shelly2ThingClassId, shelly2ThingIdParamTypeId}, {shelly25ThingClassId, shelly25ThingIdParamTypeId}, {shellyButton1ThingClassId, shellyButton1ThingIdParamTypeId}, + {shellyEmThingClassId, shellyEmThingIdParamTypeId}, {shellyEm3ThingClassId, shellyEm3ThingIdParamTypeId}, {shellyHTThingClassId, shellyHTThingIdParamTypeId}, {shellyI3ThingClassId, shellyI3ThingIdParamTypeId}, @@ -81,6 +84,7 @@ static QHash usernameParamTypeMap = { {shelly2ThingClassId, shelly2ThingUsernameParamTypeId}, {shelly25ThingClassId, shelly25ThingUsernameParamTypeId}, {shellyButton1ThingClassId, shellyButton1ThingUsernameParamTypeId}, + {shellyEmThingClassId, shellyEmThingUsernameParamTypeId}, {shellyEm3ThingClassId, shellyEm3ThingUsernameParamTypeId}, {shellyHTThingClassId, shellyHTThingUsernameParamTypeId}, {shellyI3ThingClassId, shellyI3ThingUsernameParamTypeId}, @@ -97,6 +101,7 @@ static QHash passwordParamTypeMap = { {shelly2ThingClassId, shelly2ThingPasswordParamTypeId}, {shelly25ThingClassId, shelly25ThingPasswordParamTypeId}, {shellyButton1ThingClassId, shellyButton1ThingPasswordParamTypeId}, + {shellyEmThingClassId, shellyEmThingPasswordParamTypeId}, {shellyEm3ThingClassId, shellyEm3ThingPasswordParamTypeId}, {shellyHTThingClassId, shellyHTThingPasswordParamTypeId}, {shellyI3ThingClassId, shellyI3ThingPasswordParamTypeId}, @@ -121,6 +126,7 @@ static QHash channelParamTypeMap = { {shellyLightPMThingClassId, shellyLightPMThingChannelParamTypeId}, {shellySocketPMThingClassId, shellySocketPMThingChannelParamTypeId}, {shellyRollerThingClassId, shellyRollerThingChannelParamTypeId}, + {shellyEmChannelThingClassId, shellyEmChannelThingChannelParamTypeId}, }; static QHash connectedStateTypesMap = { @@ -133,6 +139,8 @@ static QHash connectedStateTypesMap = { {shellyRgbw2ThingClassId, shellyRgbw2ConnectedStateTypeId}, {shellyDimmerThingClassId, shellyDimmerConnectedStateTypeId}, {shellyButton1ThingClassId, shellyButton1ConnectedStateTypeId}, + {shellyEmThingClassId, shellyEmConnectedStateTypeId}, + {shellyEmChannelThingClassId, shellyEmChannelConnectedStateTypeId}, {shellyEm3ThingClassId, shellyEm3ConnectedStateTypeId}, {shellyHTThingClassId, shellyHTConnectedStateTypeId}, {shellySwitchThingClassId, shellySwitchConnectedStateTypeId}, @@ -157,6 +165,8 @@ static QHash signalStrengthStateTypesMap = { {shellyRgbw2ThingClassId, shellyRgbw2SignalStrengthStateTypeId}, {shellyDimmerThingClassId, shellyDimmerSignalStrengthStateTypeId}, {shellyButton1ThingClassId, shellyButton1SignalStrengthStateTypeId}, + {shellyEmThingClassId, shellyEmSignalStrengthStateTypeId}, + {shellyEmChannelThingClassId, shellyEmChannelSignalStrengthStateTypeId}, {shellyEm3ThingClassId, shellyEm3SignalStrengthStateTypeId}, {shellyHTThingClassId, shellyHTSignalStrengthStateTypeId}, {shellySwitchThingClassId, shellySwitchSignalStrengthStateTypeId}, @@ -184,6 +194,7 @@ static QHash powerStateTypeMap = { {shellyGenericPMThingClassId, shellyGenericPMPowerStateTypeId}, {shellyLightPMThingClassId, shellyLightPMPowerStateTypeId}, {shellySocketPMThingClassId, shellySocketPMPowerStateTypeId}, + {shellyEmThingClassId, shellyEmPowerStateTypeId}, {shellyEm3ThingClassId, shellyEm3PowerStateTypeId}, }; @@ -197,6 +208,7 @@ static QHash currentPowerStateTypeMap = { {shellyLightPMThingClassId, shellyLightPMCurrentPowerStateTypeId}, {shellySocketPMThingClassId, shellySocketPMCurrentPowerStateTypeId}, {shellyRollerThingClassId, shellyRollerCurrentPowerStateTypeId}, + {shellyEmChannelThingClassId, shellyEmChannelCurrentPowerStateTypeId}, {shellyEm3ThingClassId, shellyEm3CurrentPowerStateTypeId}, }; @@ -207,6 +219,7 @@ static QHash totalEnergyConsumedStateTypeMap = { {shellyLightPMThingClassId, shellyLightPMTotalEnergyConsumedStateTypeId}, {shellySocketPMThingClassId, shellySocketPMTotalEnergyConsumedStateTypeId}, {shellyRollerThingClassId, shellyRollerTotalEnergyConsumedStateTypeId}, + {shellyEmChannelThingClassId, shellyEmChannelTotalEnergyConsumedStateTypeId}, {shellyEm3ThingClassId, shellyEm3TotalEnergyConsumedStateTypeId}, }; @@ -233,6 +246,7 @@ static QHash updateStatusStateTypesMap = { {shellyRgbw2ThingClassId, shellyRgbw2UpdateStatusStateTypeId}, {shellyDimmerThingClassId, shellyDimmerUpdateStatusStateTypeId}, {shellyButton1ThingClassId, shellyButton1UpdateStatusStateTypeId}, + {shellyEmThingClassId, shellyEmUpdateStatusStateTypeId}, {shellyEm3ThingClassId, shellyEm3UpdateStatusStateTypeId}, {shellyHTThingClassId, shellyHTUpdateStatusStateTypeId}, {shellyI3ThingClassId, shellyI3UpdateStatusStateTypeId}, @@ -249,6 +263,7 @@ static QHash currentVersionStateTypesMap = { {shellyRgbw2ThingClassId, shellyRgbw2CurrentVersionStateTypeId}, {shellyDimmerThingClassId, shellyDimmerCurrentVersionStateTypeId}, {shellyButton1ThingClassId, shellyButton1CurrentVersionStateTypeId}, + {shellyEmThingClassId, shellyEmCurrentVersionStateTypeId}, {shellyEm3ThingClassId, shellyEm3CurrentVersionStateTypeId}, {shellyHTThingClassId, shellyHTCurrentVersionStateTypeId}, {shellyI3ThingClassId, shellyI3CurrentVersionStateTypeId}, @@ -265,6 +280,7 @@ static QHash availableVersionStateTypesMap = { {shellyRgbw2ThingClassId, shellyRgbw2AvailableVersionStateTypeId}, {shellyDimmerThingClassId, shellyDimmerAvailableVersionStateTypeId}, {shellyButton1ThingClassId, shellyButton1AvailableVersionStateTypeId}, + {shellyEmThingClassId, shellyEmAvailableVersionStateTypeId}, {shellyEm3ThingClassId, shellyEm3AvailableVersionStateTypeId}, {shellyHTThingClassId, shellyHTAvailableVersionStateTypeId}, {shellyI3ThingClassId, shellyI3AvailableVersionStateTypeId}, @@ -319,9 +335,8 @@ static QHash powerActionTypesMap = { {shellyGenericPMPowerActionTypeId, shellyGenericPMThingClassId}, {shellyLightPMPowerActionTypeId, shellyLightPMThingClassId}, {shellySocketPMPowerActionTypeId, shellySocketPMThingClassId}, + {shellyEmPowerActionTypeId, shellyEmThingClassId}, // move power to switch child? {shellyEm3PowerActionTypeId, shellyEm3ThingClassId}, - {shelly25Channel1ActionTypeId, shelly25ThingClassId}, - {shelly25Channel2ActionTypeId, shelly25ThingClassId} }; static QHash powerActionParamTypesMap = { @@ -335,9 +350,8 @@ static QHash powerActionParamTypesMap = { {shellyGenericPMPowerActionTypeId, shellyGenericPMPowerActionPowerParamTypeId}, {shellyLightPMPowerActionTypeId, shellyLightPMPowerActionPowerParamTypeId}, {shellySocketPMPowerActionTypeId, shellySocketPMPowerActionPowerParamTypeId}, + {shellyEmPowerActionTypeId, shellyEmPowerActionPowerParamTypeId}, // move power to switch child? {shellyEm3PowerActionTypeId, shellyEm3PowerActionPowerParamTypeId}, - {shelly25Channel1ActionTypeId, shelly25Channel1ActionChannel1ParamTypeId}, - {shelly25Channel2ActionTypeId, shelly25Channel2ActionChannel2ParamTypeId} }; static QHash colorPowerActionTypesMap = { @@ -410,24 +424,13 @@ static QHash updateActionTypesMap = { {shellyRgbw2PerformUpdateActionTypeId, shellyRgbw2ThingClassId}, {shellyDimmerPerformUpdateActionTypeId, shellyDimmerThingClassId}, {shellyButton1PerformUpdateActionTypeId, shellyButton1ThingClassId}, + {shellyEmPerformUpdateActionTypeId, shellyEmThingClassId}, {shellyEm3PerformUpdateActionTypeId, shellyEm3ThingClassId}, {shellyHTPerformUpdateActionTypeId, shellyHTThingClassId}, {shellyI3PerformUpdateActionTypeId, shellyI3ThingClassId}, {shellyMotionPerformUpdateActionTypeId, shellyMotionThingClassId} }; -// Settings -static QHash longpushMinDurationSettingIds = { - {shellyI3ThingClassId, shellyI3SettingsLongpushMinDurationParamTypeId} -}; -static QHash longpushMaxDurationSettingIds = { - {shellyButton1ThingClassId, shellyButton1SettingsLongpushMaxDurationParamTypeId}, - {shellyI3ThingClassId, shellyI3SettingsLongpushMaxDurationParamTypeId} -}; -static QHash multipushTimeBetweenPushesSettingIds = { - {shellyButton1ThingClassId, shellyButton1SettingsMultipushTimeBetweenPushesParamTypeId}, - {shellyI3ThingClassId, shellyI3SettingsMultipushTimeBetweenPushesParamTypeId} -}; IntegrationPluginShelly::IntegrationPluginShelly() { @@ -458,13 +461,15 @@ void IntegrationPluginShelly::discoverThings(ThingDiscoveryInfo *info) } else if (info->thingClassId() == shellyRgbw2ThingClassId) { namePattern = QRegExp("^shellyrgbw2-[0-9A-Z]+$"); } else if (info->thingClassId() == shellyDimmerThingClassId) { - namePattern = QRegExp("^(shellydimmer(2)?|ShellyVintage)-[0-9A-Z]+$"); + namePattern = QRegExp("^shellydimmer(2)?-[0-9A-Z]+$"); } else if (info->thingClassId() == shelly2ThingClassId) { namePattern = QRegExp("^shellyswitch-[0-9A-Z]+$"); } else if (info->thingClassId() == shelly25ThingClassId) { namePattern = QRegExp("^shellyswitch25-[0-9A-Z]+$"); } else if (info->thingClassId() == shellyButton1ThingClassId) { namePattern = QRegExp("^shellybutton1-[0-9-A-Z]+$"); + } else if (info->thingClassId() == shellyEmThingClassId) { + namePattern = QRegExp("^shellyem-[0-9A-Z]+$"); } else if (info->thingClassId() == shellyEm3ThingClassId) { namePattern = QRegExp("^shellyem3-[0-9A-Z]+$"); } else if (info->thingClassId() == shellyHTThingClassId) { @@ -564,14 +569,8 @@ void IntegrationPluginShelly::executeAction(ThingActionInfo *info) MqttChannel *channel = m_mqttChannels.value(parentDevice); QString shellyId = parentDevice->paramValue(idParamTypeMap.value(parentDevice->thingClassId())).toString(); int relay = 1; - QHash actionChannelMap = { - {shelly25Channel1ActionTypeId, 1}, - {shelly25Channel2ActionTypeId, 2} - }; if (channelParamTypeMap.contains(thing->thingClassId())) { relay = thing->paramValue(channelParamTypeMap.value(thing->thingClassId())).toInt(); - } else if (actionChannelMap.contains(action.actionTypeId())) { - relay = actionChannelMap.value(action.actionTypeId()); } ParamTypeId powerParamTypeId = powerActionParamTypesMap.value(action.actionTypeId()); bool on = action.param(powerParamTypeId).value().toBool(); @@ -689,6 +688,14 @@ void IntegrationPluginShelly::executeAction(ThingActionInfo *info) return; } + if (action.actionTypeId() == shellyEmResetActionTypeId) { + MqttChannel *channel = m_mqttChannels.value(thing); + QString shellyId = thing->paramValue(shellyEmThingIdParamTypeId).toString(); + channel->publish("shellies/" + shellyId + "/command", "reset_data"); + info->finish(Thing::ThingErrorNoError); + return; + } + if (action.actionTypeId() == shellyEm3ResetActionTypeId) { MqttChannel *channel = m_mqttChannels.value(thing); QString shellyId = thing->paramValue(shellyEm3ThingIdParamTypeId).toString(); @@ -754,7 +761,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr return; } - qCDebug(dcShelly()) << "Publish received from" << thing->name() << topic << payload; + qCDebug(dcShelly()) << "Publish received from" << thing->name() << topic; QString shellyId = thing->paramValue(idParamTypeMap.value(thing->thingClassId())).toString(); if (topic == "shellies/" + shellyId + "/info") { @@ -765,6 +772,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr qCWarning(dcShelly()) << qUtf8Printable(payload); return; } + // qCDebug(dcShelly()) << "Payload:" << qUtf8Printable(jsonDoc.toJson()); QVariantMap data = jsonDoc.toVariant().toMap(); // Wifi signal strength @@ -784,36 +792,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr thing->setStateValue(currentVersionStateTypesMap.value(thing->thingClassId()), data.value("update").toMap().value("old_version").toString()); thing->setStateValue(availableVersionStateTypesMap.value(thing->thingClassId()), data.value("update").toMap().value("new_version").toString()); - if (data.contains("longpush_duration_ms")) { - if (longpushMinDurationSettingIds.contains(thing->thingClassId())) { - thing->setSettingValue(longpushMinDurationSettingIds.value(thing->thingClassId()), data.value("longpush_duration_ms").toMap().value("min").toUInt()); - } - foreach (Thing *child, myThings().filterByParentId(thing->id())) { - if (longpushMinDurationSettingIds.contains(child->thingClassId())) { - thing->setSettingValue(longpushMinDurationSettingIds.value(thing->thingClassId()), data.value("longpush_duration_ms").toMap().value("min").toUInt()); - } - } - if (longpushMaxDurationSettingIds.contains(thing->thingClassId())) { - thing->setSettingValue(longpushMaxDurationSettingIds.value(thing->thingClassId()), data.value("longpush_duration_ms").toMap().value("max").toUInt()); - } - foreach (Thing *child, myThings().filterByParentId(thing->id())) { - if (longpushMaxDurationSettingIds.contains(child->thingClassId())) { - thing->setSettingValue(longpushMaxDurationSettingIds.value(thing->thingClassId()), data.value("longpush_duration_ms").toMap().value("max").toUInt()); - } - } - } - if (data.contains("multipush_time_between_pushes_ms")) { - if (multipushTimeBetweenPushesSettingIds.contains(thing->thingClassId())) { - thing->setSettingValue(multipushTimeBetweenPushesSettingIds.value(thing->thingClassId()), data.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); - } - foreach (Thing *child, myThings().filterByParentId(thing->id())) { - if (multipushTimeBetweenPushesSettingIds.contains(child->thingClassId())) { - thing->setSettingValue(multipushTimeBetweenPushesSettingIds.value(thing->thingClassId()), data.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); - } - } - } - - // While we normally use the specific topics instead of the "info" object, the Shell H&T posts it very rarely // and in combination with its power safe mode let's use this one to get temp/humidity if (thing->thingClassId() == shellyHTThingClassId) { @@ -828,17 +806,27 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr if (topic.startsWith("shellies/" + shellyId + "/input/")) { + // qCDebug(dcShelly()) << "Payload:" << payload; int channel = topic.split("/").last().toInt(); // "1" or "0" // Emit event button pressed bool on = payload == "1"; if (thing->thingClassId() == shellyI3ThingClassId) { if (channel == 0) { - thing->setStateValue(shellyI3Input1StateTypeId, on); + if (thing->stateValue(shellyI3Input1StateTypeId).toBool() != on) { + thing->setStateValue(shellyI3Input1StateTypeId, on); + emit emitEvent(Event(shellyI3Input1EventTypeId, thing->id())); + } } else if (channel == 1) { - thing->setStateValue(shellyI3Input2StateTypeId, on); + if (thing->stateValue(shellyI3Input2StateTypeId).toBool() != on) { + thing->setStateValue(shellyI3Input2StateTypeId, on); + emit emitEvent(Event(shellyI3Input2EventTypeId, thing->id())); + } } else { - thing->setStateValue(shellyI3Input3StateTypeId, on); + if (thing->stateValue(shellyI3Input3StateTypeId).toBool() != on) { + thing->setStateValue(shellyI3Input3StateTypeId, on); + emit emitEvent(Event(shellyI3Input3EventTypeId, thing->id())); + } } return; } @@ -854,6 +842,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr QRegExp topicMatcher = QRegExp("shellies/" + shellyId + "/relay/[0-1]"); if (topicMatcher.exactMatch(topic)) { + // qCDebug(dcShelly()) << "Payload:" << payload; QStringList parts = topic.split("/"); int channel = parts.at(3).toInt(); bool on = payload == "on"; @@ -862,15 +851,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr if (powerStateTypeMap.contains(thing->thingClassId())) { thing->setStateValue(powerStateTypeMap.value(thing->thingClassId()), on); } - // If the shelly main thing has multiple channels (e.g. Shelly 2.5) - if (thing->thingClassId() == shelly25ThingClassId) { - QHash powerChannelStateTypesMap = { - {0, shelly25Channel1StateTypeId}, - {1, shelly25Channel2StateTypeId} - }; - thing->setStateValue(powerChannelStateTypesMap.value(channel), on); - } - // And switch all childs of this shelly too foreach (Thing *child, myThings().filterByParentId(thing->id())) { if (powerStateTypeMap.contains(child->thingClassId())) { @@ -880,11 +860,11 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } } } - } topicMatcher = QRegExp("shellies/" + shellyId + "/(relay|roller)/[0-1]/power"); if (topicMatcher.exactMatch(topic)) { + // qCDebug(dcShelly()) << "Payload:" << payload; QStringList parts = topic.split("/"); int channel = parts.at(3).toInt(); double power = payload.toDouble(); @@ -903,6 +883,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr topicMatcher = QRegExp("shellies/" + shellyId + "/(relay|roller)/[0-1]/energy"); if (topicMatcher.exactMatch(topic)) { + // qCDebug(dcShelly()) << "Payload:" << payload; QStringList parts = topic.split("/"); int channel = parts.at(3).toInt(); // W/min => kW/h @@ -921,6 +902,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } if (topic == "shellies/" + shellyId + "/color/0") { + // qCDebug(dcShelly()) << "Payload:" << payload; bool on = payload == "on"; if (powerStateTypeMap.contains(thing->thingClassId())) { thing->setStateValue(powerStateTypeMap.value(thing->thingClassId()), on); @@ -928,6 +910,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } if (topic == "shellies/" + shellyId + "/color/0/status") { + // qCDebug(dcShelly()) << "Payload:" << payload; QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &error); if (error.error != QJsonParseError::NoError) { @@ -950,6 +933,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } if (topic == "shellies/" + shellyId + "/light/0") { + // qCDebug(dcShelly()) << "Payload:" << payload; bool on = payload == "on"; if (powerStateTypeMap.contains(thing->thingClassId())) { thing->setStateValue(powerStateTypeMap.value(thing->thingClassId()), on); @@ -1004,7 +988,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } if (topic.startsWith("shellies/" + shellyId + "/input_event/")) { - qCDebug(dcShelly()) << "Payload:" << payload; if (thing->thingClassId() == shellyButton1ThingClassId) { // it can be only at channel 0 QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &error); @@ -1029,26 +1012,28 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr qCWarning(dcShelly()) << "Failed to parse JSON from shelly:" << error.errorString() << qUtf8Printable(payload); return; } - - QString buttonName = QString::number(channel + 1); QString event = jsonDoc.toVariant().toMap().value("event").toString(); - if (event == "S") { - thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 1)); - } else if (event == "L") { - thing->emitEvent(shellyI3LongPressedEventTypeId, ParamList() << Param(shellyI3LongPressedEventButtonNameParamTypeId, buttonName)); - } else if (event == "SS") { - thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 2)); - } else if (event == "SSS") { - thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 3)); - } else if (event == "SL") { - thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 1)); - thing->emitEvent(shellyI3LongPressedEventTypeId, ParamList() << Param(shellyI3LongPressedEventButtonNameParamTypeId, buttonName)); - } else if (event == "LS") { - thing->emitEvent(shellyI3LongPressedEventTypeId, ParamList() << Param(shellyI3LongPressedEventButtonNameParamTypeId, buttonName)); - thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 1)); - } else { - qCDebug(dcShelly()) << "Invalid button code from shelly I3:" << event; + if (event.isEmpty()) { + return; } + QString param = ""; + EventTypeId eventTypeId = shellyI3LongPressedEventTypeId; + ParamTypeId paramTypeId = shellyI3LongPressedEventButtonNameParamTypeId; + ParamTypeId param2TypeId = shellyI3LongPressedEventOriginParamTypeId; + if (event == "L") { + param = "1"; + } else if (event == "SL") { + param = "2"; + } else if (event == "LS") { + param = "3"; + } else { // short press + param = QString::number(event.length()); + eventTypeId = shellyI3PressedEventTypeId; + paramTypeId = shellyI3PressedEventButtonNameParamTypeId; + param2TypeId = shellyI3PressedEventOriginParamTypeId; + } + QString usedSwitch = QString::number(channel + 1); + thing->emitEvent(eventTypeId, ParamList() << Param(paramTypeId, param) << Param(param2TypeId, usedSwitch)); } } @@ -1111,6 +1096,69 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } } + if (topicMatcher.exactMatch(topic) && thing->thingClassId() == shellyEmThingClassId) { + int channel = topic.split('/').at(3).toInt(); + QString stateName = topic.split('/').at(4); + QVariant value = payload; + QHash stateTypeIdMap; + stateTypeIdMap["power"] = shellyEmChannelCurrentPowerPhaseAStateTypeId; + stateTypeIdMap["reactive_power"] = shellyEmChannelReactivePowerPhaseAStateTypeId; + stateTypeIdMap["voltage"] = shellyEmChannelVoltagePhaseAStateTypeId; + stateTypeIdMap["total"] = shellyEmChannelEnergyConsumedPhaseAStateTypeId; + stateTypeIdMap["total_returned"] = shellyEmChannelEnergyProducedPhaseAStateTypeId; + StateTypeId stateTypeId = stateTypeIdMap.value(stateName); + if (stateTypeId.isNull()) { + qCWarning(dcShelly()) << "Unhandled emeter value for channel" << channel << stateName; + return; + } + double factor = 1; + if (stateName == "total" || stateName == "total_returned") { + factor = 0.001; + } + // For multi-channel devices, power measurements are per-channel, so, find the child thing + foreach (Thing *child, myThings().filterByParentId(thing->id()).filterByInterface("energymeter")) { + ParamTypeId channelParamTypeId = channelParamTypeMap.value(child->thingClassId()); + if (child->paramValue(channelParamTypeId).toInt() == channel + 1) { + //child->setStateValue(currentPowerStateTypeMap.value(child->thingClassId()), power); + child->setStateValue(stateTypeId, value.toDouble() * factor); + } + } + + // Some optimization specific to the EM: We calculate totals, current & power factor ourselves. + // In order to not produce intermediate totals for each incoming message, + // we'll only do the calculations when we get the total_returned (i.e. the last message) for the channel. + if (stateName == "total_returned") { + foreach (Thing *child, myThings().filterByParentId(thing->id()).filterByInterface("energymeter")) { + ParamTypeId channelParamTypeId = channelParamTypeMap.value(child->thingClassId()); + if (child->paramValue(channelParamTypeId).toInt() == channel + 1) { + double voltage = child->stateValue(shellyEmChannelVoltagePhaseAStateTypeId).toDouble(); + if (qFuzzyCompare(voltage, 0) == false) { + double calcCurrent = child->stateValue(shellyEmChannelCurrentPowerPhaseAStateTypeId).toDouble()/voltage; + child->setStateValue(shellyEmChannelCurrentPhaseAStateTypeId, calcCurrent); + } else { + child->setStateValue(shellyEmChannelCurrentPhaseAStateTypeId, 0); + } + double power = child->stateValue(shellyEmChannelCurrentPowerPhaseAStateTypeId).toDouble(); + double reactivePower = child->stateValue(shellyEmChannelReactivePowerPhaseAStateTypeId).toDouble(); + double root = sqrt(power*power + reactivePower*reactivePower); + if (qFuzzyCompare(root, 0) == false) { + double calcPf = power/root; + child->setStateValue(shellyEmChannelPowerFactorPhaseAStateTypeId, calcPf); + } else { + child->setStateValue(shellyEmChannelPowerFactorPhaseAStateTypeId, 0); + } + double grandTotal = child->stateValue(shellyEmChannelEnergyConsumedPhaseAStateTypeId).toDouble(); + child->setStateValue(shellyEmChannelTotalEnergyConsumedStateTypeId, grandTotal); + double grandTotalReturned = child->stateValue(shellyEmChannelEnergyProducedPhaseAStateTypeId).toDouble(); + child->setStateValue(shellyEmChannelTotalEnergyProducedStateTypeId, grandTotalReturned); + double totalPower = child->stateValue(shellyEmChannelCurrentPowerPhaseAStateTypeId).toDouble(); + child->setStateValue(shellyEmChannelCurrentPowerStateTypeId, totalPower); + } + } + + } + } + if (topic == "shellies/" + shellyId + "/status") { QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &error); @@ -1200,13 +1248,12 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) } MqttChannel *channel = hardwareManager()->mqttProvider()->createChannel(shellyId, QHostAddress(address), {"shellies"}); + m_mqttChannels.insert(info->thing(), channel); if (!channel) { qCWarning(dcShelly()) << "Failed to create MQTT channel."; return info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Error creating MQTT channel. Please check MQTT server settings.")); } - - m_mqttChannels.insert(info->thing(), channel); connect(channel, &MqttChannel::clientConnected, this, &IntegrationPluginShelly::onClientConnected); connect(channel, &MqttChannel::clientDisconnected, this, &IntegrationPluginShelly::onClientDisconnected); connect(channel, &MqttChannel::publishReceived, this, &IntegrationPluginShelly::onPublishReceived); @@ -1280,11 +1327,7 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) info->thing()->setSettingValue(shellyButton1SettingsRemainAwakeParamTypeId, settingsMap.value("remain_awake").toInt()); info->thing()->setSettingValue(shellyButton1SettingsStatusLedEnabledParamTypeId, !settingsMap.value("led_status_disable").toBool()); info->thing()->setSettingValue(shellyButton1SettingsLongpushMaxDurationParamTypeId, settingsMap.value("longpush_duration_ms").toMap().value("max").toUInt()); - info->thing()->setSettingValue(shellyButton1SettingsMultipushTimeBetweenPushesParamTypeId, settingsMap.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); - } else if (info->thing()->thingClassId() == shellyI3ThingClassId) { - info->thing()->setSettingValue(shellyI3SettingsLongpushMinDurationParamTypeId, settingsMap.value("longpush_duration_ms").toMap().value("min").toUInt()); - info->thing()->setSettingValue(shellyI3SettingsLongpushMaxDurationParamTypeId, settingsMap.value("longpush_duration_ms").toMap().value("max").toUInt()); - info->thing()->setSettingValue(shellyI3SettingsMultipushTimeBetweenPushesParamTypeId, settingsMap.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); + info->thing()->setSettingValue(shellyButton1SettingsMultipressIntervalParamTypeId, settingsMap.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); } ThingDescriptors autoChilds; @@ -1293,17 +1336,17 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) if (myThings().filterByParentId(info->thing()->id()).isEmpty()) { // Always create the switch thing if we don't have one yet for shellies with input (1, 1pm etc) if (info->thing()->thingClassId() == shelly1ThingClassId - || info->thing()->thingClassId() == shelly1pmThingClassId) { + || info->thing()->thingClassId() == shelly1pmThingClassId + || info->thing()->thingClassId() == shelly1lThingClassId) { ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch", QString(), info->thing()->id()); switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1)); autoChilds.append(switchChild); } - // Create 2 switches for some that have 2 + // Create 2 switches for shelly 2.5 if (info->thing()->thingClassId() == shelly2ThingClassId || info->thing()->thingClassId() == shelly25ThingClassId - || (info->thing()->thingClassId() == shellyDimmerThingClassId && info->thing()->paramValue(shellyDimmerThingIdParamTypeId).toString().startsWith("shellydimmer")) // Don't create chids for shelly vintage - || info->thing()->thingClassId() == shelly1lThingClassId) { + || info->thing()->thingClassId() == shellyDimmerThingClassId) { ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch 1", QString(), info->thing()->id()); switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1)); autoChilds.append(switchChild); @@ -1312,6 +1355,19 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) autoChilds.append(switch2Child); } + // Create 2 measurement channels for shelly em --> create separate switch child as well? + if (info->thing()->thingClassId() == shellyEmThingClassId) { + /*ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch", QString(), info->thing()->id()); + switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1)); + autoChilds.append(switchChild);*/ + ThingDescriptor channelChild(shellyEmChannelThingClassId, info->thing()->name() + " channel 1", QString(), info->thing()->id()); + channelChild.setParams(ParamList() << Param(shellyEmChannelThingChannelParamTypeId, 1)); + autoChilds.append(channelChild); + ThingDescriptor channel2Child(shellyEmChannelThingClassId, info->thing()->name() + " channel 2", QString(), info->thing()->id()); + channel2Child.setParams(ParamList() << Param(shellyEmChannelThingChannelParamTypeId, 2)); + autoChilds.append(channel2Child); + } + // Add connected devices as configured in params // No PM devices for shelly 1 and 2 if (info->thing()->thingClassId() == shelly1ThingClassId @@ -1438,8 +1494,7 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) // Handle thing settings of gateway devices if (info->thing()->thingClassId() == shellyPlugThingClassId || - info->thing()->thingClassId() == shellyButton1ThingClassId || - info->thing()->thingClassId() == shellyI3ThingClassId) { + info->thing()->thingClassId() == shellyButton1ThingClassId) { connect(info->thing(), &Thing::settingChanged, this, [this, thing, shellyId](const ParamTypeId &settingTypeId, const QVariant &value) { pluginStorage()->beginGroup(thing->id().toString()); @@ -1463,23 +1518,14 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) } else if (settingTypeId == shellyButton1SettingsStatusLedEnabledParamTypeId) { url.setPath("/settings"); query.addQueryItem("led_status_disable", value.toBool() ? "false" : "true"); - } else if (settingTypeId == shellyI3SettingsLongpushMinDurationParamTypeId) { - url.setPath("/settings"); - query.addQueryItem("longpush_duration_ms_min", value.toString()); - } else if (settingTypeId == shellyButton1SettingsLongpushMaxDurationParamTypeId - || settingTypeId == shellyI3SettingsLongpushMaxDurationParamTypeId) { + } else if (settingTypeId == shellyButton1SettingsLongpushMaxDurationParamTypeId) { url.setPath("/settings"); query.addQueryItem("longpush_duration_ms_max", value.toString()); - } else if (settingTypeId == shellyButton1SettingsMultipushTimeBetweenPushesParamTypeId - || settingTypeId == shellyI3SettingsMultipushTimeBetweenPushesParamTypeId) { - url.setPath("/settings"); - query.addQueryItem("multipush_time_between_pushes_ms_max", value.toString()); } url.setQuery(query); QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(url)); - qCDebug(dcShelly()) << "Setting configuration:" << url.toString(); connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater); }); } @@ -1519,7 +1565,7 @@ void IntegrationPluginShelly::setupShellyChild(ThingSetupInfo *info) url.setScheme("http"); url.setHost(address); url.setPort(80); - url.setPath(QString("/settings/relay/%1").arg(thing->paramValue(channelParamTypeMap.value(thing->thingClassId())).toInt() + 1)); + url.setPath("/settings/relay/0"); url.setUserName(parentDevice->paramValue(usernameParamTypeMap.value(parentDevice->thingClassId())).toString()); url.setPassword(parentDevice->paramValue(passwordParamTypeMap.value(parentDevice->thingClassId())).toString()); diff --git a/shelly/integrationpluginshelly.json b/shelly/integrationpluginshelly.json index 85c54761..07fa9f41 100644 --- a/shelly/integrationpluginshelly.json +++ b/shelly/integrationpluginshelly.json @@ -206,7 +206,8 @@ "displayNameEvent": "Current power consumption changed", "type": "double", "unit": "Watt", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" } ], "actionTypes": [ @@ -322,7 +323,8 @@ "displayNameEvent": "Current power consumption changed", "type": "double", "unit": "Watt", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" } ], "actionTypes": [ @@ -529,28 +531,6 @@ "displayNameEvent": "Available firmware version changed", "type": "QString", "defaultValue": "" - }, - { - "id": "118d572c-cc12-4037-82d8-7d8f6fb4a364", - "name": "channel1", - "displayName": "Power channel 1", - "displayNameEvent": "Channel 1 turned on or off", - "displayNameAction": "Turn channel 1 on or off", - "type": "bool", - "defaultValue": false, - "writable": true, - "ioType": "digitalOutput" - }, - { - "id": "7952aec0-cd27-4ef9-87a6-c499564bc1d4", - "name": "channel2", - "displayName": "Power channel 2", - "displayNameEvent": "Channel 2 turned on or off", - "displayNameAction": "Turn channel 2 on or off", - "type": "bool", - "defaultValue": false, - "writable": true, - "ioType": "digitalOutput" } ], "actionTypes": [ @@ -651,7 +631,8 @@ "displayNameEvent": "Power consumption changed", "type": "double", "unit": "Watt", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" }, { "id": "ccec3806-cc48-42cf-94d7-811ff569d407", @@ -791,7 +772,8 @@ "displayNameEvent": "Current power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt" + "unit": "Watt", + "filter": "adaptive" }, { "id": "3d22110c-db53-4420-8e0f-314555484926", @@ -835,7 +817,7 @@ { "id": "3a1d6fc1-c623-4b45-9c81-1573fcc15f99", "name": "shellyDimmer", - "displayName": "Shelly Dimmer (2) / Vintage", + "displayName": "Shelly Dimmer / Dimmer 2", "createMethods": ["discovery"], "interfaces": ["dimmablelight", "wirelessconnectable", "update"], "paramTypes": [ @@ -910,7 +892,8 @@ "displayNameEvent": "Current power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt" + "unit": "Watt", + "filter": "adaptive" }, { "id": "8d3b3d63-86f1-46cb-92ef-d27c0d9d0a4e", @@ -1008,10 +991,9 @@ }, { "id": "b1f5a911-76ec-42e5-ac64-17f85d82b875", - "name": "multipushTimeBetweenPushes", + "name": "multipressInterval", "displayName": "Max time between multiple presses", "type": "uint", - "unit": "MilliSeconds", "minValue": 200, "maxValue": 2000, "defaultValue": 500 @@ -1148,38 +1130,6 @@ "type": "QString" } ], - "settingsTypes": [ - { - "id": "a04fda4b-f187-477c-b7a8-b56613bf9264", - "name": "longpushMinDuration", - "displayName": "Minimum longpress duration", - "type": "uint", - "unit": "MilliSeconds", - "minValue": 100, - "maxValue": 2900, - "defaultValue": 100 - }, - { - "id": "6485685e-0097-48db-958b-43126c6fb5a6", - "name": "longpushMaxDuration", - "displayName": "Maximum longpress duration", - "type": "uint", - "unit": "MilliSeconds", - "minValue": 200, - "maxValue": 6000, - "defaultValue": 3000 - }, - { - "id": "52699a1b-3526-4f60-83ec-f35faa863597", - "name": "multipushTimeBetweenPushes", - "displayName": "Max time between multiple presses", - "type": "uint", - "unit": "MilliSeconds", - "minValue": 100, - "maxValue": 500, - "defaultValue": 500 - } - ], "stateTypes": [ { "id": "9b17b10d-07ee-4a3d-813f-ef37e79e7241", @@ -1263,17 +1213,16 @@ { "id": "146313a1-cfb6-4732-a1be-86ec575bcbdb", "name": "buttonName", - "displayName": "Button name", + "displayName": "Count", "type": "QString", "allowedValues": ["1", "2", "3"] }, { "id": "0ed31339-7457-443c-b6e3-3b8ce3fc2bd8", - "name": "count", - "displayName": "Press count", - "type": "uint", - "minValue": 1, - "maxValue": 3 + "name": "origin", + "displayName": "Switch", + "type": "QString", + "allowedValues": ["1", "2", "3"] } ] }, @@ -1285,7 +1234,14 @@ { "id": "99683cf9-930e-4f10-94f2-73bb32092639", "name": "buttonName", - "displayName": "Button name", + "displayName": "Count", + "type": "QString", + "allowedValues": ["1", "2", "3"] + }, + { + "id": "866d6db6-e989-4b19-93c3-cc4aa7453c9e", + "name": "origin", + "displayName": "Switch", "type": "QString", "allowedValues": ["1", "2", "3"] } @@ -1569,7 +1525,8 @@ "displayNameEvent": "Current power changed", "type": "double", "unit": "Watt", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" }, { "id": "432ba180-936d-4700-907e-766264bfdd35", @@ -1578,7 +1535,8 @@ "displayNameEvent": "Power usage (Phase A) changed", "type": "double", "unit": "Watt", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" }, { "id": "50be490b-ba5d-4b1f-806c-9e15b915c1eb", @@ -1595,7 +1553,8 @@ "displayNameEvent": "Current (Phase A) changed", "type": "double", "unit": "Ampere", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" }, { "id": "5977ffab-cdcf-409c-940b-aa0a59de84a5", @@ -1631,7 +1590,8 @@ "displayNameEvent": "Power usage (Phase B) changed", "type": "double", "unit": "Watt", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" }, { "id": "f56504bb-0c6c-4425-831c-771b23aadf19", @@ -1684,7 +1644,8 @@ "displayNameEvent": "Power usage (Phase C) changed", "type": "double", "unit": "Watt", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" }, { "id": "2e2c622f-1575-4d0b-a0c0-78bc03748c1e", @@ -1780,6 +1741,260 @@ } ] }, + { + "id": "bcc7326d-555a-4763-80ce-7354e67cc700", + "name": "shellyEm", + "displayName": "Shelly EM", + "createMethods": ["discovery"], + "interfaces": ["gateway", "wirelessconnectable", "update"], + "paramTypes": [ + { + "id": "e44d6880-4e54-44b0-85f5-4e035179402e", + "name":"id", + "displayName": "Shelly ID", + "type": "QString", + "readOnly": true + }, + { + "id": "61957e60-4b77-4aa7-893f-e94559cac15c", + "name": "username", + "displayName": "Username (optional)", + "type": "QString" + }, + { + "id": "66c1cd5d-c1c4-4d23-8e83-d5f5563abb8e", + "name": "password", + "displayName": "Password (optional)", + "type": "QString" + } + ], + "stateTypes": [ + { + "id": "75f1a571-b21c-43c2-b4a3-ab8e9d7ef08c", + "name": "connected", + "displayName": "Connected", + "displayNameEvent": "Connected or disconnected", + "type": "bool", + "defaultValue": false, + "cached": false + }, + { + "id": "87664175-4b84-4cfe-9bee-5d1bcf2566f8", + "name": "signalStrength", + "displayName": "Signal strength", + "displayNameEvent": "Signal strength changed", + "type": "uint", + "minValue": 0, + "maxValue": 100, + "unit": "Percentage", + "defaultValue": 0, + "cached": false + }, + { + "id": "ad5d523e-9a4d-47d2-912c-c8ec5081f9ff", + "name": "updateStatus", + "displayName": "Update status", + "displayNameEvent": "Update status changed", + "type": "QString", + "possibleValues": ["idle", "available", "updating"], + "defaultValue": "idle", + "cached": false + }, + { + "id": "f5f03ab2-fec6-4502-8a47-100211878a8a", + "name": "currentVersion", + "displayName": "Current firmware version", + "displayNameEvent": "Current firmware version changed", + "type": "QString", + "defaultValue": "", + "cached": false + }, + { + "id": "97ab36bb-355b-4559-838a-fe49a9cbd13e", + "name": "availableVersion", + "displayName": "Available firmware version", + "displayNameEvent": "Available firmware version changed", + "type": "QString", + "defaultValue": "", + "cached": false + }, + { + "id": "9a2c6304-91d6-45fc-8ef7-75355457eca5", + "name": "power", + "displayName": "Powered", + "displayNameEvent": "Turned on or off", + "displayNameAction": "Turn on or off", + "type": "bool", + "defaultValue": false, + "writable": true, + "ioType": "digitalOutput", + "cached": false + } + ], + "actionTypes": [ + { + "id": "6a30f435-2b35-4df5-8a20-ef3dbec817c9", + "name": "performUpdate", + "displayName": "Start firmware update" + }, + { + "id": "09f6d675-4c22-4a9f-b9f2-3349ab947529", + "name": "reset", + "displayName": "Reset data" + } + ] + }, + { + "id": "67ccc046-c8b5-4584-8f7f-6fe0a0c6a860", + "name": "shellyEmChannel", + "displayName": "Shelly EM Channel", + "createMethods": ["auto"], + "interfaces": ["energymeter"], + "paramTypes": [ + { + "id": "b9b85416-0d48-4e71-9471-03385f8fc619", + "name":"id", + "displayName": "Shelly ID", + "type": "QString", + "readOnly": true + }, + { + "id": "e8865f9d-2601-4e02-9ff1-780332f1f18f", + "name": "channel", + "displayName": "Channel", + "type": "uint", + "defaultValue": 1 + } + ], + "stateTypes": [ + { + "id": "d96d7505-f270-49ad-abb2-4f29ac11fb84", + "name": "connected", + "displayName": "Connected", + "displayNameEvent": "Connected or disconnected", + "type": "bool", + "defaultValue": false, + "cached": false + }, + { + "id": "d1928e72-73e6-4009-846e-149f80ad5899", + "name": "signalStrength", + "displayName": "Signal strength", + "displayNameEvent": "Signal strength changed", + "type": "uint", + "unit": "Percentage", + "minValue": 0, + "maxValue": 100, + "defaultValue": 100, + "cached": false + }, + { + "id": "4ce53fa0-d6b7-4c1b-87d9-edcaeedb640e", + "name": "totalEnergyConsumed", + "displayName": "Total consumed energy", + "displayNameEvent": "Total consumed energy changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0, + "cached": false + }, + { + "id": "7fe88e8f-a1c4-4e8d-a1de-9135b80bc7e3", + "name": "totalEnergyProduced", + "displayName": "Total returned energy", + "displayNameEvent": "Total returned energy changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0, + "cached": false + }, + { + "id": "a85041e8-a19e-4695-8404-3e3a06b1e92a", + "name": "currentPower", + "displayName": "Current power", + "displayNameEvent": "Current power changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0, + "filter": "adaptive", + "cached": false + }, + { + "id": "18b17662-43bc-45d4-9e33-35912b57bfb1", + "name": "currentPowerPhaseA", + "displayName": "Current power", + "displayNameEvent": "Current power changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0, + "filter": "adaptive", + "cached": false + }, + { + "id": "fd5898ce-c8c9-422d-a32a-996d4004ca15", + "name": "powerFactorPhaseA", + "displayName": "Power factor", + "displayNameEvent": "Power factor changed", + "type": "double", + "defaultValue": 0, + "cached": false + }, + { + "id": "abdb5b38-05d3-4c12-aed2-f7c560d6b4e8", + "name": "reactivePowerPhaseA", + "displayName": "Reactive power", + "displayNameEvent": "Reactive power changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0, + "cached": false + }, + { + "id": "1d457f50-0951-4ba5-8d8e-b79ea5a75535", + "name": "currentPhaseA", + "displayName": "Current", + "displayNameEvent": "Current changed", + "type": "double", + "unit": "Ampere", + "defaultValue": 0, + "filter": "adaptive", + "cached": false + }, + { + "id": "d6cb777f-c9af-46d8-845a-883ac05c206a", + "name": "voltagePhaseA", + "displayName": "Voltage", + "displayNameEvent": "Voltage changed", + "type": "double", + "unit": "Volt", + "defaultValue": 0, + "filter": "adaptive", + "cached": false + }, + { + "id": "cb28c99c-2f64-4b8b-83ca-e9809ecd992a", + "name": "energyConsumedPhaseA", + "displayName": "Total consumed energy", + "displayNameEvent": "Total consumed energy changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0, + "cached": false + }, + { + "id": "3c254d08-ca5a-4caa-a6fb-7f9d0e3ac6d6", + "name": "energyProducedPhaseA", + "displayName": "Total returned energy", + "displayNameEvent": "Total returned energy changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0, + "cached": false + } + ], + "actionTypes": [ + ] + }, { "id": "a82737bb-f2d6-442e-a468-5acc0a2e4cd7", "name": "shellyMotion", @@ -2036,7 +2251,8 @@ "displayNameEvent": "Power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt" + "unit": "Watt", + "filter": "adaptive" } ] }, @@ -2170,7 +2386,8 @@ "displayNameEvent": "Power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt" + "unit": "Watt", + "filter": "adaptive" } ] }, @@ -2304,7 +2521,8 @@ "displayNameEvent": "Power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt" + "unit": "Watt", + "filter": "adaptive" } ] }, @@ -2360,7 +2578,8 @@ "displayNameEvent": "Power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt" + "unit": "Watt", + "filter": "adaptive" }, { "id": "2729d4e0-c38c-47b8-a0e8-26959090fe74", From bfe91a9ab2c02732a7e1b048b3cc906666e36e61 Mon Sep 17 00:00:00 2001 From: loosrob <79396812+loosrob@users.noreply.github.com> Date: Sun, 6 Feb 2022 22:47:42 +0100 Subject: [PATCH 02/10] Update README.md --- shelly/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/shelly/README.md b/shelly/README.md index 85fd8bb7..45a595dc 100644 --- a/shelly/README.md +++ b/shelly/README.md @@ -12,6 +12,7 @@ The currently supported devices are: * Shelly RGBW2 * Shelly Dimmer / Dimmer 2 * Shelly Button 1 +* Shelly EM * Shelly 3EM * Shelly H+T * Shelly i3 From f7eabe522dd55638d8d45cfb57ef241d90e5ee01 Mon Sep 17 00:00:00 2001 From: loosrob <79396812+loosrob@users.noreply.github.com> Date: Mon, 7 Feb 2022 19:56:38 +0100 Subject: [PATCH 03/10] use qmath, remove some comments --- shelly/integrationpluginshelly.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/shelly/integrationpluginshelly.cpp b/shelly/integrationpluginshelly.cpp index db93f14c..a4eb978b 100644 --- a/shelly/integrationpluginshelly.cpp +++ b/shelly/integrationpluginshelly.cpp @@ -44,7 +44,7 @@ #include "plugintimer.h" -#include "math.h" +#include "qmath.h" #include "network/zeroconf/zeroconfservicebrowser.h" #include "platform/platformzeroconfcontroller.h" @@ -335,7 +335,7 @@ static QHash powerActionTypesMap = { {shellyGenericPMPowerActionTypeId, shellyGenericPMThingClassId}, {shellyLightPMPowerActionTypeId, shellyLightPMThingClassId}, {shellySocketPMPowerActionTypeId, shellySocketPMThingClassId}, - {shellyEmPowerActionTypeId, shellyEmThingClassId}, // move power to switch child? + {shellyEmPowerActionTypeId, shellyEmThingClassId}, {shellyEm3PowerActionTypeId, shellyEm3ThingClassId}, }; @@ -350,7 +350,7 @@ static QHash powerActionParamTypesMap = { {shellyGenericPMPowerActionTypeId, shellyGenericPMPowerActionPowerParamTypeId}, {shellyLightPMPowerActionTypeId, shellyLightPMPowerActionPowerParamTypeId}, {shellySocketPMPowerActionTypeId, shellySocketPMPowerActionPowerParamTypeId}, - {shellyEmPowerActionTypeId, shellyEmPowerActionPowerParamTypeId}, // move power to switch child? + {shellyEmPowerActionTypeId, shellyEmPowerActionPowerParamTypeId}, {shellyEm3PowerActionTypeId, shellyEm3PowerActionPowerParamTypeId}, }; @@ -1140,7 +1140,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } double power = child->stateValue(shellyEmChannelCurrentPowerPhaseAStateTypeId).toDouble(); double reactivePower = child->stateValue(shellyEmChannelReactivePowerPhaseAStateTypeId).toDouble(); - double root = sqrt(power*power + reactivePower*reactivePower); + double root = qsqrt(power*power + reactivePower*reactivePower); if (qFuzzyCompare(root, 0) == false) { double calcPf = power/root; child->setStateValue(shellyEmChannelPowerFactorPhaseAStateTypeId, calcPf); @@ -1357,9 +1357,6 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) // Create 2 measurement channels for shelly em --> create separate switch child as well? if (info->thing()->thingClassId() == shellyEmThingClassId) { - /*ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch", QString(), info->thing()->id()); - switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1)); - autoChilds.append(switchChild);*/ ThingDescriptor channelChild(shellyEmChannelThingClassId, info->thing()->name() + " channel 1", QString(), info->thing()->id()); channelChild.setParams(ParamList() << Param(shellyEmChannelThingChannelParamTypeId, 1)); autoChilds.append(channelChild); From 2836eb4cc443dacd59e3779508f214fb30b6d102 Mon Sep 17 00:00:00 2001 From: loosrob <79396812+loosrob@users.noreply.github.com> Date: Mon, 7 Feb 2022 21:34:53 +0100 Subject: [PATCH 04/10] rebase on correct master --- shelly/integrationpluginshelly.cpp | 159 +++++++++++++++++++--------- shelly/integrationpluginshelly.json | 121 +++++++++++++-------- 2 files changed, 187 insertions(+), 93 deletions(-) diff --git a/shelly/integrationpluginshelly.cpp b/shelly/integrationpluginshelly.cpp index a4eb978b..5749cea9 100644 --- a/shelly/integrationpluginshelly.cpp +++ b/shelly/integrationpluginshelly.cpp @@ -337,6 +337,8 @@ static QHash powerActionTypesMap = { {shellySocketPMPowerActionTypeId, shellySocketPMThingClassId}, {shellyEmPowerActionTypeId, shellyEmThingClassId}, {shellyEm3PowerActionTypeId, shellyEm3ThingClassId}, + {shelly25Channel1ActionTypeId, shelly25ThingClassId}, + {shelly25Channel2ActionTypeId, shelly25ThingClassId} }; static QHash powerActionParamTypesMap = { @@ -352,6 +354,8 @@ static QHash powerActionParamTypesMap = { {shellySocketPMPowerActionTypeId, shellySocketPMPowerActionPowerParamTypeId}, {shellyEmPowerActionTypeId, shellyEmPowerActionPowerParamTypeId}, {shellyEm3PowerActionTypeId, shellyEm3PowerActionPowerParamTypeId}, + {shelly25Channel1ActionTypeId, shelly25Channel1ActionChannel1ParamTypeId}, + {shelly25Channel2ActionTypeId, shelly25Channel2ActionChannel2ParamTypeId} }; static QHash colorPowerActionTypesMap = { @@ -431,6 +435,18 @@ static QHash updateActionTypesMap = { {shellyMotionPerformUpdateActionTypeId, shellyMotionThingClassId} }; +// Settings +static QHash longpushMinDurationSettingIds = { + {shellyI3ThingClassId, shellyI3SettingsLongpushMinDurationParamTypeId} +}; +static QHash longpushMaxDurationSettingIds = { + {shellyButton1ThingClassId, shellyButton1SettingsLongpushMaxDurationParamTypeId}, + {shellyI3ThingClassId, shellyI3SettingsLongpushMaxDurationParamTypeId} +}; +static QHash multipushTimeBetweenPushesSettingIds = { + {shellyButton1ThingClassId, shellyButton1SettingsMultipushTimeBetweenPushesParamTypeId}, + {shellyI3ThingClassId, shellyI3SettingsMultipushTimeBetweenPushesParamTypeId} +}; IntegrationPluginShelly::IntegrationPluginShelly() { @@ -461,7 +477,7 @@ void IntegrationPluginShelly::discoverThings(ThingDiscoveryInfo *info) } else if (info->thingClassId() == shellyRgbw2ThingClassId) { namePattern = QRegExp("^shellyrgbw2-[0-9A-Z]+$"); } else if (info->thingClassId() == shellyDimmerThingClassId) { - namePattern = QRegExp("^shellydimmer(2)?-[0-9A-Z]+$"); + namePattern = QRegExp("^(shellydimmer(2)?|ShellyVintage)-[0-9A-Z]+$"); } else if (info->thingClassId() == shelly2ThingClassId) { namePattern = QRegExp("^shellyswitch-[0-9A-Z]+$"); } else if (info->thingClassId() == shelly25ThingClassId) { @@ -569,8 +585,14 @@ void IntegrationPluginShelly::executeAction(ThingActionInfo *info) MqttChannel *channel = m_mqttChannels.value(parentDevice); QString shellyId = parentDevice->paramValue(idParamTypeMap.value(parentDevice->thingClassId())).toString(); int relay = 1; + QHash actionChannelMap = { + {shelly25Channel1ActionTypeId, 1}, + {shelly25Channel2ActionTypeId, 2} + }; if (channelParamTypeMap.contains(thing->thingClassId())) { relay = thing->paramValue(channelParamTypeMap.value(thing->thingClassId())).toInt(); + } else if (actionChannelMap.contains(action.actionTypeId())) { + relay = actionChannelMap.value(action.actionTypeId()); } ParamTypeId powerParamTypeId = powerActionParamTypesMap.value(action.actionTypeId()); bool on = action.param(powerParamTypeId).value().toBool(); @@ -761,7 +783,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr return; } - qCDebug(dcShelly()) << "Publish received from" << thing->name() << topic; + qCDebug(dcShelly()) << "Publish received from" << thing->name() << topic << payload; QString shellyId = thing->paramValue(idParamTypeMap.value(thing->thingClassId())).toString(); if (topic == "shellies/" + shellyId + "/info") { @@ -772,7 +794,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr qCWarning(dcShelly()) << qUtf8Printable(payload); return; } - // qCDebug(dcShelly()) << "Payload:" << qUtf8Printable(jsonDoc.toJson()); QVariantMap data = jsonDoc.toVariant().toMap(); // Wifi signal strength @@ -792,6 +813,36 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr thing->setStateValue(currentVersionStateTypesMap.value(thing->thingClassId()), data.value("update").toMap().value("old_version").toString()); thing->setStateValue(availableVersionStateTypesMap.value(thing->thingClassId()), data.value("update").toMap().value("new_version").toString()); + if (data.contains("longpush_duration_ms")) { + if (longpushMinDurationSettingIds.contains(thing->thingClassId())) { + thing->setSettingValue(longpushMinDurationSettingIds.value(thing->thingClassId()), data.value("longpush_duration_ms").toMap().value("min").toUInt()); + } + foreach (Thing *child, myThings().filterByParentId(thing->id())) { + if (longpushMinDurationSettingIds.contains(child->thingClassId())) { + thing->setSettingValue(longpushMinDurationSettingIds.value(thing->thingClassId()), data.value("longpush_duration_ms").toMap().value("min").toUInt()); + } + } + if (longpushMaxDurationSettingIds.contains(thing->thingClassId())) { + thing->setSettingValue(longpushMaxDurationSettingIds.value(thing->thingClassId()), data.value("longpush_duration_ms").toMap().value("max").toUInt()); + } + foreach (Thing *child, myThings().filterByParentId(thing->id())) { + if (longpushMaxDurationSettingIds.contains(child->thingClassId())) { + thing->setSettingValue(longpushMaxDurationSettingIds.value(thing->thingClassId()), data.value("longpush_duration_ms").toMap().value("max").toUInt()); + } + } + } + if (data.contains("multipush_time_between_pushes_ms")) { + if (multipushTimeBetweenPushesSettingIds.contains(thing->thingClassId())) { + thing->setSettingValue(multipushTimeBetweenPushesSettingIds.value(thing->thingClassId()), data.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); + } + foreach (Thing *child, myThings().filterByParentId(thing->id())) { + if (multipushTimeBetweenPushesSettingIds.contains(child->thingClassId())) { + thing->setSettingValue(multipushTimeBetweenPushesSettingIds.value(thing->thingClassId()), data.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); + } + } + } + + // While we normally use the specific topics instead of the "info" object, the Shell H&T posts it very rarely // and in combination with its power safe mode let's use this one to get temp/humidity if (thing->thingClassId() == shellyHTThingClassId) { @@ -806,27 +857,17 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr if (topic.startsWith("shellies/" + shellyId + "/input/")) { - // qCDebug(dcShelly()) << "Payload:" << payload; int channel = topic.split("/").last().toInt(); // "1" or "0" // Emit event button pressed bool on = payload == "1"; if (thing->thingClassId() == shellyI3ThingClassId) { if (channel == 0) { - if (thing->stateValue(shellyI3Input1StateTypeId).toBool() != on) { - thing->setStateValue(shellyI3Input1StateTypeId, on); - emit emitEvent(Event(shellyI3Input1EventTypeId, thing->id())); - } + thing->setStateValue(shellyI3Input1StateTypeId, on); } else if (channel == 1) { - if (thing->stateValue(shellyI3Input2StateTypeId).toBool() != on) { - thing->setStateValue(shellyI3Input2StateTypeId, on); - emit emitEvent(Event(shellyI3Input2EventTypeId, thing->id())); - } + thing->setStateValue(shellyI3Input2StateTypeId, on); } else { - if (thing->stateValue(shellyI3Input3StateTypeId).toBool() != on) { - thing->setStateValue(shellyI3Input3StateTypeId, on); - emit emitEvent(Event(shellyI3Input3EventTypeId, thing->id())); - } + thing->setStateValue(shellyI3Input3StateTypeId, on); } return; } @@ -842,7 +883,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr QRegExp topicMatcher = QRegExp("shellies/" + shellyId + "/relay/[0-1]"); if (topicMatcher.exactMatch(topic)) { - // qCDebug(dcShelly()) << "Payload:" << payload; QStringList parts = topic.split("/"); int channel = parts.at(3).toInt(); bool on = payload == "on"; @@ -851,6 +891,15 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr if (powerStateTypeMap.contains(thing->thingClassId())) { thing->setStateValue(powerStateTypeMap.value(thing->thingClassId()), on); } + // If the shelly main thing has multiple channels (e.g. Shelly 2.5) + if (thing->thingClassId() == shelly25ThingClassId) { + QHash powerChannelStateTypesMap = { + {0, shelly25Channel1StateTypeId}, + {1, shelly25Channel2StateTypeId} + }; + thing->setStateValue(powerChannelStateTypesMap.value(channel), on); + } + // And switch all childs of this shelly too foreach (Thing *child, myThings().filterByParentId(thing->id())) { if (powerStateTypeMap.contains(child->thingClassId())) { @@ -860,11 +909,11 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } } } + } topicMatcher = QRegExp("shellies/" + shellyId + "/(relay|roller)/[0-1]/power"); if (topicMatcher.exactMatch(topic)) { - // qCDebug(dcShelly()) << "Payload:" << payload; QStringList parts = topic.split("/"); int channel = parts.at(3).toInt(); double power = payload.toDouble(); @@ -883,7 +932,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr topicMatcher = QRegExp("shellies/" + shellyId + "/(relay|roller)/[0-1]/energy"); if (topicMatcher.exactMatch(topic)) { - // qCDebug(dcShelly()) << "Payload:" << payload; QStringList parts = topic.split("/"); int channel = parts.at(3).toInt(); // W/min => kW/h @@ -902,7 +950,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } if (topic == "shellies/" + shellyId + "/color/0") { - // qCDebug(dcShelly()) << "Payload:" << payload; bool on = payload == "on"; if (powerStateTypeMap.contains(thing->thingClassId())) { thing->setStateValue(powerStateTypeMap.value(thing->thingClassId()), on); @@ -910,7 +957,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } if (topic == "shellies/" + shellyId + "/color/0/status") { - // qCDebug(dcShelly()) << "Payload:" << payload; QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &error); if (error.error != QJsonParseError::NoError) { @@ -933,7 +979,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } if (topic == "shellies/" + shellyId + "/light/0") { - // qCDebug(dcShelly()) << "Payload:" << payload; bool on = payload == "on"; if (powerStateTypeMap.contains(thing->thingClassId())) { thing->setStateValue(powerStateTypeMap.value(thing->thingClassId()), on); @@ -988,6 +1033,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } if (topic.startsWith("shellies/" + shellyId + "/input_event/")) { + qCDebug(dcShelly()) << "Payload:" << payload; if (thing->thingClassId() == shellyButton1ThingClassId) { // it can be only at channel 0 QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &error); @@ -1012,28 +1058,26 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr qCWarning(dcShelly()) << "Failed to parse JSON from shelly:" << error.errorString() << qUtf8Printable(payload); return; } + + QString buttonName = QString::number(channel + 1); QString event = jsonDoc.toVariant().toMap().value("event").toString(); - if (event.isEmpty()) { - return; - } - QString param = ""; - EventTypeId eventTypeId = shellyI3LongPressedEventTypeId; - ParamTypeId paramTypeId = shellyI3LongPressedEventButtonNameParamTypeId; - ParamTypeId param2TypeId = shellyI3LongPressedEventOriginParamTypeId; - if (event == "L") { - param = "1"; + if (event == "S") { + thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 1)); + } else if (event == "L") { + thing->emitEvent(shellyI3LongPressedEventTypeId, ParamList() << Param(shellyI3LongPressedEventButtonNameParamTypeId, buttonName)); + } else if (event == "SS") { + thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 2)); + } else if (event == "SSS") { + thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 3)); } else if (event == "SL") { - param = "2"; + thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 1)); + thing->emitEvent(shellyI3LongPressedEventTypeId, ParamList() << Param(shellyI3LongPressedEventButtonNameParamTypeId, buttonName)); } else if (event == "LS") { - param = "3"; - } else { // short press - param = QString::number(event.length()); - eventTypeId = shellyI3PressedEventTypeId; - paramTypeId = shellyI3PressedEventButtonNameParamTypeId; - param2TypeId = shellyI3PressedEventOriginParamTypeId; + thing->emitEvent(shellyI3LongPressedEventTypeId, ParamList() << Param(shellyI3LongPressedEventButtonNameParamTypeId, buttonName)); + thing->emitEvent(shellyI3PressedEventTypeId, ParamList() << Param(shellyI3PressedEventButtonNameParamTypeId, buttonName) << Param(shellyI3PressedEventCountParamTypeId, 1)); + } else { + qCDebug(dcShelly()) << "Invalid button code from shelly I3:" << event; } - QString usedSwitch = QString::number(channel + 1); - thing->emitEvent(eventTypeId, ParamList() << Param(paramTypeId, param) << Param(param2TypeId, usedSwitch)); } } @@ -1140,7 +1184,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } double power = child->stateValue(shellyEmChannelCurrentPowerPhaseAStateTypeId).toDouble(); double reactivePower = child->stateValue(shellyEmChannelReactivePowerPhaseAStateTypeId).toDouble(); - double root = qsqrt(power*power + reactivePower*reactivePower); + double root = qSqrt(power*power + reactivePower*reactivePower); if (qFuzzyCompare(root, 0) == false) { double calcPf = power/root; child->setStateValue(shellyEmChannelPowerFactorPhaseAStateTypeId, calcPf); @@ -1248,12 +1292,13 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) } MqttChannel *channel = hardwareManager()->mqttProvider()->createChannel(shellyId, QHostAddress(address), {"shellies"}); - m_mqttChannels.insert(info->thing(), channel); if (!channel) { qCWarning(dcShelly()) << "Failed to create MQTT channel."; return info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Error creating MQTT channel. Please check MQTT server settings.")); } + + m_mqttChannels.insert(info->thing(), channel); connect(channel, &MqttChannel::clientConnected, this, &IntegrationPluginShelly::onClientConnected); connect(channel, &MqttChannel::clientDisconnected, this, &IntegrationPluginShelly::onClientDisconnected); connect(channel, &MqttChannel::publishReceived, this, &IntegrationPluginShelly::onPublishReceived); @@ -1327,7 +1372,11 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) info->thing()->setSettingValue(shellyButton1SettingsRemainAwakeParamTypeId, settingsMap.value("remain_awake").toInt()); info->thing()->setSettingValue(shellyButton1SettingsStatusLedEnabledParamTypeId, !settingsMap.value("led_status_disable").toBool()); info->thing()->setSettingValue(shellyButton1SettingsLongpushMaxDurationParamTypeId, settingsMap.value("longpush_duration_ms").toMap().value("max").toUInt()); - info->thing()->setSettingValue(shellyButton1SettingsMultipressIntervalParamTypeId, settingsMap.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); + info->thing()->setSettingValue(shellyButton1SettingsMultipushTimeBetweenPushesParamTypeId, settingsMap.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); + } else if (info->thing()->thingClassId() == shellyI3ThingClassId) { + info->thing()->setSettingValue(shellyI3SettingsLongpushMinDurationParamTypeId, settingsMap.value("longpush_duration_ms").toMap().value("min").toUInt()); + info->thing()->setSettingValue(shellyI3SettingsLongpushMaxDurationParamTypeId, settingsMap.value("longpush_duration_ms").toMap().value("max").toUInt()); + info->thing()->setSettingValue(shellyI3SettingsMultipushTimeBetweenPushesParamTypeId, settingsMap.value("multipush_time_between_pushes_ms").toMap().value("max").toUInt()); } ThingDescriptors autoChilds; @@ -1336,17 +1385,17 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) if (myThings().filterByParentId(info->thing()->id()).isEmpty()) { // Always create the switch thing if we don't have one yet for shellies with input (1, 1pm etc) if (info->thing()->thingClassId() == shelly1ThingClassId - || info->thing()->thingClassId() == shelly1pmThingClassId - || info->thing()->thingClassId() == shelly1lThingClassId) { + || info->thing()->thingClassId() == shelly1pmThingClassId) { ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch", QString(), info->thing()->id()); switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1)); autoChilds.append(switchChild); } - // Create 2 switches for shelly 2.5 + // Create 2 switches for some that have 2 if (info->thing()->thingClassId() == shelly2ThingClassId || info->thing()->thingClassId() == shelly25ThingClassId - || info->thing()->thingClassId() == shellyDimmerThingClassId) { + || (info->thing()->thingClassId() == shellyDimmerThingClassId && info->thing()->paramValue(shellyDimmerThingIdParamTypeId).toString().startsWith("shellydimmer")) // Don't create chids for shelly vintage + || info->thing()->thingClassId() == shelly1lThingClassId) { ThingDescriptor switchChild(shellySwitchThingClassId, info->thing()->name() + " switch 1", QString(), info->thing()->id()); switchChild.setParams(ParamList() << Param(shellySwitchThingChannelParamTypeId, 1)); autoChilds.append(switchChild); @@ -1491,7 +1540,8 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) // Handle thing settings of gateway devices if (info->thing()->thingClassId() == shellyPlugThingClassId || - info->thing()->thingClassId() == shellyButton1ThingClassId) { + info->thing()->thingClassId() == shellyButton1ThingClassId || + info->thing()->thingClassId() == shellyI3ThingClassId) { connect(info->thing(), &Thing::settingChanged, this, [this, thing, shellyId](const ParamTypeId &settingTypeId, const QVariant &value) { pluginStorage()->beginGroup(thing->id().toString()); @@ -1515,14 +1565,23 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) } else if (settingTypeId == shellyButton1SettingsStatusLedEnabledParamTypeId) { url.setPath("/settings"); query.addQueryItem("led_status_disable", value.toBool() ? "false" : "true"); - } else if (settingTypeId == shellyButton1SettingsLongpushMaxDurationParamTypeId) { + } else if (settingTypeId == shellyI3SettingsLongpushMinDurationParamTypeId) { + url.setPath("/settings"); + query.addQueryItem("longpush_duration_ms_min", value.toString()); + } else if (settingTypeId == shellyButton1SettingsLongpushMaxDurationParamTypeId + || settingTypeId == shellyI3SettingsLongpushMaxDurationParamTypeId) { url.setPath("/settings"); query.addQueryItem("longpush_duration_ms_max", value.toString()); + } else if (settingTypeId == shellyButton1SettingsMultipushTimeBetweenPushesParamTypeId + || settingTypeId == shellyI3SettingsMultipushTimeBetweenPushesParamTypeId) { + url.setPath("/settings"); + query.addQueryItem("multipush_time_between_pushes_ms_max", value.toString()); } url.setQuery(query); QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(url)); + qCDebug(dcShelly()) << "Setting configuration:" << url.toString(); connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater); }); } @@ -1562,7 +1621,7 @@ void IntegrationPluginShelly::setupShellyChild(ThingSetupInfo *info) url.setScheme("http"); url.setHost(address); url.setPort(80); - url.setPath("/settings/relay/0"); + url.setPath(QString("/settings/relay/%1").arg(thing->paramValue(channelParamTypeMap.value(thing->thingClassId())).toInt() + 1)); url.setUserName(parentDevice->paramValue(usernameParamTypeMap.value(parentDevice->thingClassId())).toString()); url.setPassword(parentDevice->paramValue(passwordParamTypeMap.value(parentDevice->thingClassId())).toString()); diff --git a/shelly/integrationpluginshelly.json b/shelly/integrationpluginshelly.json index 07fa9f41..b5b5cec6 100644 --- a/shelly/integrationpluginshelly.json +++ b/shelly/integrationpluginshelly.json @@ -206,8 +206,7 @@ "displayNameEvent": "Current power consumption changed", "type": "double", "unit": "Watt", - "defaultValue": 0, - "filter": "adaptive" + "defaultValue": 0 } ], "actionTypes": [ @@ -323,8 +322,7 @@ "displayNameEvent": "Current power consumption changed", "type": "double", "unit": "Watt", - "defaultValue": 0, - "filter": "adaptive" + "defaultValue": 0 } ], "actionTypes": [ @@ -531,6 +529,28 @@ "displayNameEvent": "Available firmware version changed", "type": "QString", "defaultValue": "" + }, + { + "id": "118d572c-cc12-4037-82d8-7d8f6fb4a364", + "name": "channel1", + "displayName": "Power channel 1", + "displayNameEvent": "Channel 1 turned on or off", + "displayNameAction": "Turn channel 1 on or off", + "type": "bool", + "defaultValue": false, + "writable": true, + "ioType": "digitalOutput" + }, + { + "id": "7952aec0-cd27-4ef9-87a6-c499564bc1d4", + "name": "channel2", + "displayName": "Power channel 2", + "displayNameEvent": "Channel 2 turned on or off", + "displayNameAction": "Turn channel 2 on or off", + "type": "bool", + "defaultValue": false, + "writable": true, + "ioType": "digitalOutput" } ], "actionTypes": [ @@ -631,8 +651,7 @@ "displayNameEvent": "Power consumption changed", "type": "double", "unit": "Watt", - "defaultValue": 0, - "filter": "adaptive" + "defaultValue": 0 }, { "id": "ccec3806-cc48-42cf-94d7-811ff569d407", @@ -772,8 +791,7 @@ "displayNameEvent": "Current power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt", - "filter": "adaptive" + "unit": "Watt" }, { "id": "3d22110c-db53-4420-8e0f-314555484926", @@ -817,7 +835,7 @@ { "id": "3a1d6fc1-c623-4b45-9c81-1573fcc15f99", "name": "shellyDimmer", - "displayName": "Shelly Dimmer / Dimmer 2", + "displayName": "Shelly Dimmer (2) / Vintage", "createMethods": ["discovery"], "interfaces": ["dimmablelight", "wirelessconnectable", "update"], "paramTypes": [ @@ -892,8 +910,7 @@ "displayNameEvent": "Current power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt", - "filter": "adaptive" + "unit": "Watt" }, { "id": "8d3b3d63-86f1-46cb-92ef-d27c0d9d0a4e", @@ -991,9 +1008,10 @@ }, { "id": "b1f5a911-76ec-42e5-ac64-17f85d82b875", - "name": "multipressInterval", + "name": "multipushTimeBetweenPushes", "displayName": "Max time between multiple presses", "type": "uint", + "unit": "MilliSeconds", "minValue": 200, "maxValue": 2000, "defaultValue": 500 @@ -1130,6 +1148,38 @@ "type": "QString" } ], + "settingsTypes": [ + { + "id": "a04fda4b-f187-477c-b7a8-b56613bf9264", + "name": "longpushMinDuration", + "displayName": "Minimum longpress duration", + "type": "uint", + "unit": "MilliSeconds", + "minValue": 100, + "maxValue": 2900, + "defaultValue": 100 + }, + { + "id": "6485685e-0097-48db-958b-43126c6fb5a6", + "name": "longpushMaxDuration", + "displayName": "Maximum longpress duration", + "type": "uint", + "unit": "MilliSeconds", + "minValue": 200, + "maxValue": 6000, + "defaultValue": 3000 + }, + { + "id": "52699a1b-3526-4f60-83ec-f35faa863597", + "name": "multipushTimeBetweenPushes", + "displayName": "Max time between multiple presses", + "type": "uint", + "unit": "MilliSeconds", + "minValue": 100, + "maxValue": 500, + "defaultValue": 500 + } + ], "stateTypes": [ { "id": "9b17b10d-07ee-4a3d-813f-ef37e79e7241", @@ -1213,16 +1263,17 @@ { "id": "146313a1-cfb6-4732-a1be-86ec575bcbdb", "name": "buttonName", - "displayName": "Count", + "displayName": "Button name", "type": "QString", "allowedValues": ["1", "2", "3"] }, { "id": "0ed31339-7457-443c-b6e3-3b8ce3fc2bd8", - "name": "origin", - "displayName": "Switch", - "type": "QString", - "allowedValues": ["1", "2", "3"] + "name": "count", + "displayName": "Press count", + "type": "uint", + "minValue": 1, + "maxValue": 3 } ] }, @@ -1234,14 +1285,7 @@ { "id": "99683cf9-930e-4f10-94f2-73bb32092639", "name": "buttonName", - "displayName": "Count", - "type": "QString", - "allowedValues": ["1", "2", "3"] - }, - { - "id": "866d6db6-e989-4b19-93c3-cc4aa7453c9e", - "name": "origin", - "displayName": "Switch", + "displayName": "Button name", "type": "QString", "allowedValues": ["1", "2", "3"] } @@ -1525,8 +1569,7 @@ "displayNameEvent": "Current power changed", "type": "double", "unit": "Watt", - "defaultValue": 0, - "filter": "adaptive" + "defaultValue": 0 }, { "id": "432ba180-936d-4700-907e-766264bfdd35", @@ -1535,8 +1578,7 @@ "displayNameEvent": "Power usage (Phase A) changed", "type": "double", "unit": "Watt", - "defaultValue": 0, - "filter": "adaptive" + "defaultValue": 0 }, { "id": "50be490b-ba5d-4b1f-806c-9e15b915c1eb", @@ -1553,8 +1595,7 @@ "displayNameEvent": "Current (Phase A) changed", "type": "double", "unit": "Ampere", - "defaultValue": 0, - "filter": "adaptive" + "defaultValue": 0 }, { "id": "5977ffab-cdcf-409c-940b-aa0a59de84a5", @@ -1590,8 +1631,7 @@ "displayNameEvent": "Power usage (Phase B) changed", "type": "double", "unit": "Watt", - "defaultValue": 0, - "filter": "adaptive" + "defaultValue": 0 }, { "id": "f56504bb-0c6c-4425-831c-771b23aadf19", @@ -1644,8 +1684,7 @@ "displayNameEvent": "Power usage (Phase C) changed", "type": "double", "unit": "Watt", - "defaultValue": 0, - "filter": "adaptive" + "defaultValue": 0 }, { "id": "2e2c622f-1575-4d0b-a0c0-78bc03748c1e", @@ -2251,8 +2290,7 @@ "displayNameEvent": "Power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt", - "filter": "adaptive" + "unit": "Watt" } ] }, @@ -2386,8 +2424,7 @@ "displayNameEvent": "Power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt", - "filter": "adaptive" + "unit": "Watt" } ] }, @@ -2521,8 +2558,7 @@ "displayNameEvent": "Power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt", - "filter": "adaptive" + "unit": "Watt" } ] }, @@ -2578,8 +2614,7 @@ "displayNameEvent": "Power consumption changed", "type": "double", "defaultValue": 0, - "unit": "Watt", - "filter": "adaptive" + "unit": "Watt" }, { "id": "2729d4e0-c38c-47b8-a0e8-26959090fe74", From 2ea3bfb695b444640047a2a32c2bffc7afbbf56f Mon Sep 17 00:00:00 2001 From: loosrob <79396812+loosrob@users.noreply.github.com> Date: Tue, 8 Feb 2022 21:41:59 +0100 Subject: [PATCH 06/10] various small changes --- shelly/integrationpluginshelly.cpp | 19 +++++-------- shelly/integrationpluginshelly.json | 41 ++++------------------------- 2 files changed, 11 insertions(+), 49 deletions(-) diff --git a/shelly/integrationpluginshelly.cpp b/shelly/integrationpluginshelly.cpp index 5749cea9..b010da51 100644 --- a/shelly/integrationpluginshelly.cpp +++ b/shelly/integrationpluginshelly.cpp @@ -1145,11 +1145,11 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr QString stateName = topic.split('/').at(4); QVariant value = payload; QHash stateTypeIdMap; - stateTypeIdMap["power"] = shellyEmChannelCurrentPowerPhaseAStateTypeId; + stateTypeIdMap["power"] = shellyEmChannelCurrentPowerStateTypeId; stateTypeIdMap["reactive_power"] = shellyEmChannelReactivePowerPhaseAStateTypeId; stateTypeIdMap["voltage"] = shellyEmChannelVoltagePhaseAStateTypeId; - stateTypeIdMap["total"] = shellyEmChannelEnergyConsumedPhaseAStateTypeId; - stateTypeIdMap["total_returned"] = shellyEmChannelEnergyProducedPhaseAStateTypeId; + stateTypeIdMap["total"] = shellyEmChannelTotalEnergyConsumedStateTypeId; + stateTypeIdMap["total_returned"] = shellyEmChannelTotalEnergyProducedStateTypeId; StateTypeId stateTypeId = stateTypeIdMap.value(stateName); if (stateTypeId.isNull()) { qCWarning(dcShelly()) << "Unhandled emeter value for channel" << channel << stateName; @@ -1163,7 +1163,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr foreach (Thing *child, myThings().filterByParentId(thing->id()).filterByInterface("energymeter")) { ParamTypeId channelParamTypeId = channelParamTypeMap.value(child->thingClassId()); if (child->paramValue(channelParamTypeId).toInt() == channel + 1) { - //child->setStateValue(currentPowerStateTypeMap.value(child->thingClassId()), power); child->setStateValue(stateTypeId, value.toDouble() * factor); } } @@ -1175,14 +1174,14 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr foreach (Thing *child, myThings().filterByParentId(thing->id()).filterByInterface("energymeter")) { ParamTypeId channelParamTypeId = channelParamTypeMap.value(child->thingClassId()); if (child->paramValue(channelParamTypeId).toInt() == channel + 1) { + double power = child->stateValue(shellyEmChannelCurrentPowerStateTypeId).toDouble(); double voltage = child->stateValue(shellyEmChannelVoltagePhaseAStateTypeId).toDouble(); if (qFuzzyCompare(voltage, 0) == false) { - double calcCurrent = child->stateValue(shellyEmChannelCurrentPowerPhaseAStateTypeId).toDouble()/voltage; + double calcCurrent = power/voltage; child->setStateValue(shellyEmChannelCurrentPhaseAStateTypeId, calcCurrent); } else { child->setStateValue(shellyEmChannelCurrentPhaseAStateTypeId, 0); } - double power = child->stateValue(shellyEmChannelCurrentPowerPhaseAStateTypeId).toDouble(); double reactivePower = child->stateValue(shellyEmChannelReactivePowerPhaseAStateTypeId).toDouble(); double root = qSqrt(power*power + reactivePower*reactivePower); if (qFuzzyCompare(root, 0) == false) { @@ -1191,12 +1190,6 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } else { child->setStateValue(shellyEmChannelPowerFactorPhaseAStateTypeId, 0); } - double grandTotal = child->stateValue(shellyEmChannelEnergyConsumedPhaseAStateTypeId).toDouble(); - child->setStateValue(shellyEmChannelTotalEnergyConsumedStateTypeId, grandTotal); - double grandTotalReturned = child->stateValue(shellyEmChannelEnergyProducedPhaseAStateTypeId).toDouble(); - child->setStateValue(shellyEmChannelTotalEnergyProducedStateTypeId, grandTotalReturned); - double totalPower = child->stateValue(shellyEmChannelCurrentPowerPhaseAStateTypeId).toDouble(); - child->setStateValue(shellyEmChannelCurrentPowerStateTypeId, totalPower); } } @@ -1404,7 +1397,7 @@ void IntegrationPluginShelly::setupShellyGateway(ThingSetupInfo *info) autoChilds.append(switch2Child); } - // Create 2 measurement channels for shelly em --> create separate switch child as well? + // Create 2 measurement channels for shelly em if (info->thing()->thingClassId() == shellyEmThingClassId) { ThingDescriptor channelChild(shellyEmChannelThingClassId, info->thing()->name() + " channel 1", QString(), info->thing()->id()); channelChild.setParams(ParamList() << Param(shellyEmChannelThingChannelParamTypeId, 1)); diff --git a/shelly/integrationpluginshelly.json b/shelly/integrationpluginshelly.json index b5b5cec6..a482edab 100644 --- a/shelly/integrationpluginshelly.json +++ b/shelly/integrationpluginshelly.json @@ -1785,7 +1785,8 @@ "name": "shellyEm", "displayName": "Shelly EM", "createMethods": ["discovery"], - "interfaces": ["gateway", "wirelessconnectable", "update"], + "interfaces": ["gateway", "wirelessconnectable", "power", "update"], + "providedInterfaces": ["energymeter"], "paramTypes": [ { "id": "e44d6880-4e54-44b0-85f5-4e035179402e", @@ -1888,7 +1889,7 @@ "name": "shellyEmChannel", "displayName": "Shelly EM Channel", "createMethods": ["auto"], - "interfaces": ["energymeter"], + "interfaces": ["wirelessconnectable", "energymeter"], "paramTypes": [ { "id": "b9b85416-0d48-4e71-9471-03385f8fc619", @@ -1935,7 +1936,7 @@ "type": "double", "unit": "KiloWattHour", "defaultValue": 0, - "cached": false + "cached": true }, { "id": "7fe88e8f-a1c4-4e8d-a1de-9135b80bc7e3", @@ -1945,7 +1946,7 @@ "type": "double", "unit": "KiloWattHour", "defaultValue": 0, - "cached": false + "cached": true }, { "id": "a85041e8-a19e-4695-8404-3e3a06b1e92a", @@ -1955,18 +1956,6 @@ "type": "double", "unit": "Watt", "defaultValue": 0, - "filter": "adaptive", - "cached": false - }, - { - "id": "18b17662-43bc-45d4-9e33-35912b57bfb1", - "name": "currentPowerPhaseA", - "displayName": "Current power", - "displayNameEvent": "Current power changed", - "type": "double", - "unit": "Watt", - "defaultValue": 0, - "filter": "adaptive", "cached": false }, { @@ -2009,26 +1998,6 @@ "defaultValue": 0, "filter": "adaptive", "cached": false - }, - { - "id": "cb28c99c-2f64-4b8b-83ca-e9809ecd992a", - "name": "energyConsumedPhaseA", - "displayName": "Total consumed energy", - "displayNameEvent": "Total consumed energy changed", - "type": "double", - "unit": "KiloWattHour", - "defaultValue": 0, - "cached": false - }, - { - "id": "3c254d08-ca5a-4caa-a6fb-7f9d0e3ac6d6", - "name": "energyProducedPhaseA", - "displayName": "Total returned energy", - "displayNameEvent": "Total returned energy changed", - "type": "double", - "unit": "KiloWattHour", - "defaultValue": 0, - "cached": false } ], "actionTypes": [ From 9963edf80449096a7f38de8092ece59af3a49791 Mon Sep 17 00:00:00 2001 From: loosrob <79396812+loosrob@users.noreply.github.com> Date: Tue, 8 Feb 2022 21:46:39 +0100 Subject: [PATCH 07/10] update translations --- ...6162773b-0435-408c-a4f8-7860d38031a9-de.ts | 1490 ++++++++++------- ...2773b-0435-408c-a4f8-7860d38031a9-en_US.ts | 1490 ++++++++++------- 2 files changed, 1688 insertions(+), 1292 deletions(-) diff --git a/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-de.ts b/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-de.ts index c6ce4927..20c429bc 100644 --- a/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-de.ts +++ b/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-de.ts @@ -4,38 +4,38 @@ IntegrationPluginShelly - + Unable to find the thing in the network. Das Gerät konnte nicht im Netzwerk gefunden werden. - + Roller shutter mode can't be mixed with relay mode. Please configure both connected devices to control a shutter or relays. Rollos-Modus kann nicht gleichzeitig mit Relais Modus betrieben werden. Bitte wähle für beide Kanäle entweder ein Relais oder ein Rollo aus. - - + + For using a roller shutter, one channel must be set to up, the other to down. Um den Rollos Modus zu verwenden muss ein Kanal für öffnen, der andere für schließen konfiguriert werden. - + Error creating MQTT channel. Please check MQTT server settings. Fehler beim erstellen des MQTT Kanals. Bitte überprüfe die MQTT Servereinstellungen. - + Username and password not set correctly. Benutzername und Passwort sind nicht richtig. - + Error connecting to Shelly device. Fehler beim Verbinden mit dem Shelly Gerät. - + Unexpected data received from Shelly device. Unerwartete Daten vom Shelly Gerät empfangen. @@ -43,37 +43,43 @@ shelly - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + Available firmware version The name of the ParamType (ThingClass: shellyMotion, EventType: availableVersion, ID: {0c9e8da4-1b1c-4047-8e9d-c5c580bcf43f}) ---------- The name of the StateType ({0c9e8da4-1b1c-4047-8e9d-c5c580bcf43f}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEm, EventType: availableVersion, ID: {97ab36bb-355b-4559-838a-fe49a9cbd13e}) +---------- +The name of the StateType ({97ab36bb-355b-4559-838a-fe49a9cbd13e}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: availableVersion, ID: {27f1e394-642f-4a90-88bf-1ef9ba88b10b}) ---------- The name of the StateType ({27f1e394-642f-4a90-88bf-1ef9ba88b10b}) of ThingClass shellyEm3 @@ -124,22 +130,25 @@ The name of the StateType ({6e794011-d184-4ab2-9c3a-3b2205880cbc}) of ThingClass Verfügbare Firmwareversion - - - - - - - - - - - - - + + + + + + + + + + + + + + Available firmware version changed The name of the EventType ({0c9e8da4-1b1c-4047-8e9d-c5c580bcf43f}) of ThingClass shellyMotion ---------- +The name of the EventType ({97ab36bb-355b-4559-838a-fe49a9cbd13e}) of ThingClass shellyEm +---------- The name of the EventType ({27f1e394-642f-4a90-88bf-1ef9ba88b10b}) of ThingClass shellyEm3 ---------- The name of the EventType ({770b6b3a-3815-4ba3-8a2d-3fb949c914de}) of ThingClass shellyHT @@ -166,8 +175,8 @@ The name of the EventType ({6e794011-d184-4ab2-9c3a-3b2205880cbc}) of ThingClass Verfügbare Firmwareversion geändert - - + + Battery critical changed The name of the EventType ({56053726-92dc-4a80-b05e-a9a857c02bc1}) of ThingClass shellyHT ---------- @@ -175,18 +184,18 @@ The name of the EventType ({18edddee-1b30-48e4-b233-1e3b68bd6ff1}) of ThingClass Battierladung kritisch geändert - + Battery entered critical state The name of the EventType ({1d03941e-9c41-446b-b698-f8dff335bf11}) of ThingClass shellyMotion Batterieladung erreicht kritischen Zustand - - - - - - + + + + + + Battery level The name of the ParamType (ThingClass: shellyMotion, EventType: batteryLevel, ID: {f6d89aa6-7dba-4bb0-89cf-36d85208933f}) ---------- @@ -202,9 +211,9 @@ The name of the StateType ({338355e5-9506-48b1-be86-757d69b34755}) of ThingClass Batterieladung - - - + + + Battery level changed The name of the EventType ({f6d89aa6-7dba-4bb0-89cf-36d85208933f}) of ThingClass shellyMotion ---------- @@ -214,12 +223,12 @@ The name of the EventType ({338355e5-9506-48b1-be86-757d69b34755}) of ThingClass Batterieladung geändert - - - - - - + + + + + + Battery level critical The name of the ParamType (ThingClass: shellyMotion, EventType: batteryCritical, ID: {1d03941e-9c41-446b-b698-f8dff335bf11}) ---------- @@ -235,12 +244,12 @@ The name of the StateType ({18edddee-1b30-48e4-b233-1e3b68bd6ff1}) of ThingClass Batterieladung kritisch - - - - - - + + + + + + Brightness The name of the ParamType (ThingClass: shellyDimmer, ActionType: brightness, ID: {f41c93ac-6911-45fc-9221-7dd26bf65fd0}) ---------- @@ -256,8 +265,8 @@ The name of the StateType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of ThingClass Helligkeit - - + + Brightness changed The name of the EventType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of ThingClass shellyDimmer ---------- @@ -265,8 +274,8 @@ The name of the EventType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of ThingClass Helligkeit geändert - - + + Button name The name of the ParamType (ThingClass: shellyI3, EventType: longPressed, ID: {99683cf9-930e-4f10-94f2-73bb32092639}) ---------- @@ -274,26 +283,27 @@ The name of the ParamType (ThingClass: shellyI3, EventType: pressed, ID: {146313 - + Button type The name of the ParamType (ThingClass: shellySwitch, Type: settings, ID: {ce9f1650-5e12-40f4-97de-27af86afa40b}) Tastentyp - + Calibrate The name of the ActionType ({4e2d8a7b-821e-4ee8-9f9b-f774d631845f}) of ThingClass shellyRoller Kalibrieren - - - - - - - - + + + + + + + + + Channel The name of the ParamType (ThingClass: shellyRoller, Type: thing, ID: {281385a5-5084-4ded-80a4-66c0dc1096a8}) ---------- @@ -309,31 +319,33 @@ The name of the ParamType (ThingClass: shellyGenericPM, Type: thing, ID: {5e7c6e ---------- The name of the ParamType (ThingClass: shellyGeneric, Type: thing, ID: {c08b1272-6eb2-4fed-80ad-06566a521b95}) ---------- +The name of the ParamType (ThingClass: shellyEmChannel, Type: thing, ID: {e8865f9d-2601-4e02-9ff1-780332f1f18f}) +---------- The name of the ParamType (ThingClass: shellySwitch, Type: thing, ID: {be6bdd43-cbf0-4d16-b789-ccad16e23788}) Kanal - + Channel 1 turned on or off The name of the EventType ({118d572c-cc12-4037-82d8-7d8f6fb4a364}) of ThingClass shelly25 Kanal 1 an- oder ausgeschaltet - + Channel 2 turned on or off The name of the EventType ({7952aec0-cd27-4ef9-87a6-c499564bc1d4}) of ThingClass shelly25 Kanal 2 an- oder ausgeschaltet - + Close The name of the ActionType ({87eb0290-615e-4c98-9ec8-a21104fcf05d}) of ThingClass shellyRoller Schließen - - - + + + Color The name of the ParamType (ThingClass: shellyRgbw2, ActionType: color, ID: {6ef7c686-350d-4069-9c41-9b90b3906748}) ---------- @@ -343,15 +355,15 @@ The name of the StateType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of ThingClass Farbe - + Color changed The name of the EventType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of ThingClass shellyRgbw2 Farbe geändert - - - + + + Color temperature The name of the ParamType (ThingClass: shellyRgbw2, ActionType: colorTemperature, ID: {a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) ---------- @@ -361,54 +373,58 @@ The name of the StateType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of ThingClass Farbtemperatur - + Color temperature changed The name of the EventType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of ThingClass shellyRgbw2 Farbtemperatur geändert - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Connected The name of the ParamType (ThingClass: shellyRoller, EventType: connected, ID: {d446719d-628e-477d-882c-a84210c85869}) ---------- @@ -442,6 +458,14 @@ The name of the ParamType (ThingClass: shellyMotion, EventType: connected, ID: { ---------- The name of the StateType ({9ed997fa-1ec8-44d2-ac44-c99d4e259dae}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEmChannel, EventType: connected, ID: {d96d7505-f270-49ad-abb2-4f29ac11fb84}) +---------- +The name of the StateType ({d96d7505-f270-49ad-abb2-4f29ac11fb84}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm, EventType: connected, ID: {75f1a571-b21c-43c2-b4a3-ab8e9d7ef08c}) +---------- +The name of the StateType ({75f1a571-b21c-43c2-b4a3-ab8e9d7ef08c}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: connected, ID: {08bd7743-af98-4328-bbca-64280afc5a87}) ---------- The name of the StateType ({08bd7743-af98-4328-bbca-64280afc5a87}) of ThingClass shellyEm3 @@ -496,13 +520,13 @@ The name of the StateType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of ThingClass Verbunden - - - - - - - + + + + + + + Connected changed The name of the EventType ({9b17b10d-07ee-4a3d-813f-ef37e79e7241}) of ThingClass shellyI3 ---------- @@ -520,8 +544,8 @@ The name of the EventType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of ThingClass Verbindung geändert - - + + Connected device 1 The name of the ParamType (ThingClass: shelly25, Type: thing, ID: {dc8a02fb-baa4-40bf-9e00-684b17794287}) ---------- @@ -529,8 +553,8 @@ The name of the ParamType (ThingClass: shelly2, Type: thing, ID: {84e60831-0a2c- Verbundenes Gerät 1 - - + + Connected device 2 The name of the ParamType (ThingClass: shelly25, Type: thing, ID: {1e6925f8-1613-4fe4-8234-e4a4e973ef83}) ---------- @@ -538,17 +562,19 @@ The name of the ParamType (ThingClass: shelly2, Type: thing, ID: {0becaa77-b927- Verbundenes Gerät 2 - - - - - - - - - - - + + + + + + + + + + + + + Connected or disconnected The name of the EventType ({d446719d-628e-477d-882c-a84210c85869}) of ThingClass shellyRoller ---------- @@ -566,6 +592,10 @@ The name of the EventType ({4a141674-faa6-4953-8272-5b4a4da84d31}) of ThingClass ---------- The name of the EventType ({9ed997fa-1ec8-44d2-ac44-c99d4e259dae}) of ThingClass shellyMotion ---------- +The name of the EventType ({d96d7505-f270-49ad-abb2-4f29ac11fb84}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({75f1a571-b21c-43c2-b4a3-ab8e9d7ef08c}) of ThingClass shellyEm +---------- The name of the EventType ({08bd7743-af98-4328-bbca-64280afc5a87}) of ThingClass shellyEm3 ---------- The name of the EventType ({0c233312-7b8f-4ca3-880d-523cab9b3ccb}) of ThingClass shellySwitch @@ -574,9 +604,9 @@ The name of the EventType ({b35ace90-8afb-49f1-924d-899bf1c03c3a}) of ThingClass Verbunden oder getrennt - - - + + + Connected/disconnected The name of the EventType ({d23e25a1-f723-4de1-806a-83fb073f01f4}) of ThingClass shellyButton1 ---------- @@ -586,14 +616,14 @@ The name of the EventType ({98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6}) of ThingClass - + Consumed energy changed The name of the EventType ({962fec29-6be0-452e-87c5-5ff71435c40f}) of ThingClass shellyPlug - - + + Count The name of the ParamType (ThingClass: shellyButton1, EventType: longPressed, ID: {f8b5f587-d266-4fd3-9f01-941d0dcedc1f}) ---------- @@ -601,8 +631,17 @@ The name of the ParamType (ThingClass: shellyButton1, EventType: pressed, ID: {a - - + + + Current + The name of the ParamType (ThingClass: shellyEmChannel, EventType: currentPhaseA, ID: {1d457f50-0951-4ba5-8d8e-b79ea5a75535}) +---------- +The name of the StateType ({1d457f50-0951-4ba5-8d8e-b79ea5a75535}) of ThingClass shellyEmChannel + + + + + Current (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPhaseA, ID: {5fa79319-756b-4b2c-87b1-59ff996b8435}) ---------- @@ -610,14 +649,14 @@ The name of the StateType ({5fa79319-756b-4b2c-87b1-59ff996b8435}) of ThingClass - + Current (Phase A) changed The name of the EventType ({5fa79319-756b-4b2c-87b1-59ff996b8435}) of ThingClass shellyEm3 - - + + Current (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPhaseB, ID: {a4151601-fe77-418a-a2c1-6376e32da3bd}) ---------- @@ -625,14 +664,14 @@ The name of the StateType ({a4151601-fe77-418a-a2c1-6376e32da3bd}) of ThingClass - + Current (Phase B) changed The name of the EventType ({a4151601-fe77-418a-a2c1-6376e32da3bd}) of ThingClass shellyEm3 - - + + Current (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPhaseC, ID: {ab78aa9c-aa73-4f5d-8d21-38c83c5e9e7c}) ---------- @@ -640,25 +679,37 @@ The name of the StateType ({ab78aa9c-aa73-4f5d-8d21-38c83c5e9e7c}) of ThingClass - + Current (Phase C) changed The name of the EventType ({ab78aa9c-aa73-4f5d-8d21-38c83c5e9e7c}) of ThingClass shellyEm3 - - - - - - - - + + Current changed + The name of the EventType ({1d457f50-0951-4ba5-8d8e-b79ea5a75535}) of ThingClass shellyEmChannel + + + + + + + + + + + + + Current firmware version The name of the ParamType (ThingClass: shellyMotion, EventType: currentVersion, ID: {e2d98172-5833-454b-9b4b-04693c6b9232}) ---------- The name of the StateType ({e2d98172-5833-454b-9b4b-04693c6b9232}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEm, EventType: currentVersion, ID: {f5f03ab2-fec6-4502-8a47-100211878a8a}) +---------- +The name of the StateType ({f5f03ab2-fec6-4502-8a47-100211878a8a}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: currentVersion, ID: {f9ddb9f1-1251-484e-bdce-531d584d8f6a}) ---------- The name of the StateType ({f9ddb9f1-1251-484e-bdce-531d584d8f6a}) of ThingClass shellyEm3 @@ -673,13 +724,16 @@ The name of the StateType ({b17a7df2-952b-4cdd-8d28-a8e8582b49d4}) of ThingClass - - - - + + + + + Current firmware version changed The name of the EventType ({e2d98172-5833-454b-9b4b-04693c6b9232}) of ThingClass shellyMotion ---------- +The name of the EventType ({f5f03ab2-fec6-4502-8a47-100211878a8a}) of ThingClass shellyEm +---------- The name of the EventType ({f9ddb9f1-1251-484e-bdce-531d584d8f6a}) of ThingClass shellyEm3 ---------- The name of the EventType ({5655b88c-f852-4efe-955f-cf5f88e8ba6b}) of ThingClass shellyHT @@ -688,37 +742,46 @@ The name of the EventType ({b17a7df2-952b-4cdd-8d28-a8e8582b49d4}) of ThingClass - - + + + + Current power - The name of the ParamType (ThingClass: shellyEm3, EventType: currentPower, ID: {3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) + The name of the ParamType (ThingClass: shellyEmChannel, EventType: currentPower, ID: {a85041e8-a19e-4695-8404-3e3a06b1e92a}) +---------- +The name of the StateType ({a85041e8-a19e-4695-8404-3e3a06b1e92a}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm3, EventType: currentPower, ID: {3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) ---------- The name of the StateType ({3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) of ThingClass shellyEm3 - + + Current power changed - The name of the EventType ({3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) of ThingClass shellyEm3 + The name of the EventType ({a85041e8-a19e-4695-8404-3e3a06b1e92a}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) of ThingClass shellyEm3 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + Current power consumption The name of the ParamType (ThingClass: shellyRoller, EventType: currentPower, ID: {0d7cb1cf-3fff-4d0b-96c2-c02e9a92af57}) ---------- @@ -754,10 +817,10 @@ The name of the StateType ({3ec03053-7cf5-44fb-ad92-041eed9edd9a}) of ThingClass - - - - + + + + Current power consumption changed The name of the EventType ({b3336ca6-1577-4230-8708-98875148606e}) of ThingClass shellyDimmer ---------- @@ -769,13 +832,13 @@ The name of the EventType ({3ec03053-7cf5-44fb-ad92-041eed9edd9a}) of ThingClass - - - - - - - + + + + + + + Default state The name of the ParamType (ThingClass: shellySocketPM, Type: settings, ID: {9880a51b-57da-4b65-a0ec-23eb0fdcb8ac}) ---------- @@ -793,8 +856,8 @@ The name of the ParamType (ThingClass: shellyPlug, Type: settings, ID: {40f251db - - + + Firmware update status The name of the ParamType (ThingClass: shellyDimmer, EventType: updateStatus, ID: {8d3b3d63-86f1-46cb-92ef-d27c0d9d0a4e}) ---------- @@ -802,30 +865,30 @@ The name of the StateType ({8d3b3d63-86f1-46cb-92ef-d27c0d9d0a4e}) of ThingClass - + Firmware update status changed The name of the EventType ({8d3b3d63-86f1-46cb-92ef-d27c0d9d0a4e}) of ThingClass shellyDimmer - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Firmware version The name of the ParamType (ThingClass: shellyI3, EventType: currentVersion, ID: {33e7d186-7c6b-4c4e-89c3-80362ef76615}) ---------- @@ -865,15 +928,15 @@ The name of the StateType ({e033cca0-03fa-4b2e-9d7b-d4a2c8ffbb8c}) of ThingClass - - - - - - - - - + + + + + + + + + Firmware version changed The name of the EventType ({33e7d186-7c6b-4c4e-89c3-80362ef76615}) of ThingClass shellyI3 ---------- @@ -895,8 +958,8 @@ The name of the EventType ({e033cca0-03fa-4b2e-9d7b-d4a2c8ffbb8c}) of ThingClass - - + + Humidity The name of the ParamType (ThingClass: shellyHT, EventType: humidity, ID: {18a3c71b-f4ef-45d8-a5db-58f533fb6e19}) ---------- @@ -904,14 +967,14 @@ The name of the StateType ({18a3c71b-f4ef-45d8-a5db-58f533fb6e19}) of ThingClass - + Humidity changed The name of the EventType ({18a3c71b-f4ef-45d8-a5db-58f533fb6e19}) of ThingClass shellyHT - - + + Input 1 The name of the ParamType (ThingClass: shellyI3, EventType: input1, ID: {61e98cc9-4449-4fb2-818e-692303244ce2}) ---------- @@ -919,14 +982,14 @@ The name of the StateType ({61e98cc9-4449-4fb2-818e-692303244ce2}) of ThingClass - + Input 1 changed The name of the EventType ({61e98cc9-4449-4fb2-818e-692303244ce2}) of ThingClass shellyI3 - - + + Input 2 The name of the ParamType (ThingClass: shellyI3, EventType: input2, ID: {04497ff2-a231-4d3d-adeb-66275a3b128b}) ---------- @@ -934,14 +997,14 @@ The name of the StateType ({04497ff2-a231-4d3d-adeb-66275a3b128b}) of ThingClass - + Input 2 changed The name of the EventType ({04497ff2-a231-4d3d-adeb-66275a3b128b}) of ThingClass shellyI3 - - + + Input 3 The name of the ParamType (ThingClass: shellyI3, EventType: input3, ID: {5895fc2d-19a4-40c2-8522-7c4462e55a3e}) ---------- @@ -949,20 +1012,20 @@ The name of the StateType ({5895fc2d-19a4-40c2-8522-7c4462e55a3e}) of ThingClass - + Input 3 changed The name of the EventType ({5895fc2d-19a4-40c2-8522-7c4462e55a3e}) of ThingClass shellyI3 - + Invert button The name of the ParamType (ThingClass: shellySwitch, Type: settings, ID: {f31eb52b-9aaf-409d-8bba-badda7c1a249}) - - + + Light intensity The name of the ParamType (ThingClass: shellyMotion, EventType: lightIntensity, ID: {a1e12487-ebab-4993-a075-78275aac7b0d}) ---------- @@ -970,32 +1033,32 @@ The name of the StateType ({a1e12487-ebab-4993-a075-78275aac7b0d}) of ThingClass - + Light intensity changed The name of the EventType ({a1e12487-ebab-4993-a075-78275aac7b0d}) of ThingClass shellyMotion - + Long Pressed The name of the EventType ({bb966833-a7a6-4ad7-b5f5-057b38ebb036}) of ThingClass shellyI3 - + Longpress duration The name of the ParamType (ThingClass: shellyButton1, Type: settings, ID: {b98423a8-c758-4dae-b979-e22446d06b22}) - + Longpressed The name of the EventType ({47cab6b6-eed3-4628-b3ad-2ceda26d6f84}) of ThingClass shellyButton1 - - + + Max time between multiple presses The name of the ParamType (ThingClass: shellyI3, Type: settings, ID: {52699a1b-3526-4f60-83ec-f35faa863597}) ---------- @@ -1003,20 +1066,20 @@ The name of the ParamType (ThingClass: shellyButton1, Type: settings, ID: {b1f5a - + Maximum longpress duration The name of the ParamType (ThingClass: shellyI3, Type: settings, ID: {6485685e-0097-48db-958b-43126c6fb5a6}) - + Minimum longpress duration The name of the ParamType (ThingClass: shellyI3, Type: settings, ID: {a04fda4b-f187-477c-b7a8-b56613bf9264}) - - + + Moving The name of the ParamType (ThingClass: shellyRoller, EventType: moving, ID: {2729d4e0-c38c-47b8-a0e8-26959090fe74}) ---------- @@ -1024,18 +1087,18 @@ The name of the StateType ({2729d4e0-c38c-47b8-a0e8-26959090fe74}) of ThingClass - + Moving changed The name of the EventType ({2729d4e0-c38c-47b8-a0e8-26959090fe74}) of ThingClass shellyRoller - - - - - - + + + + + + On The name of the ParamType (ThingClass: shellyDimmer, ActionType: power, ID: {e4a6ac87-31fb-4516-9cf3-f135621e902c}) ---------- @@ -1051,8 +1114,8 @@ The name of the StateType ({14abcd30-9db2-4065-ae81-501a55fbb145}) of ThingClass - - + + On/Off The name of the ParamType (ThingClass: shellySwitch, EventType: power, ID: {20f74d88-0683-4d3a-9513-6b29b5112b7b}) ---------- @@ -1060,34 +1123,37 @@ The name of the StateType ({20f74d88-0683-4d3a-9513-6b29b5112b7b}) of ThingClass - + On/Off toggled The name of the EventType ({20f74d88-0683-4d3a-9513-6b29b5112b7b}) of ThingClass shellySwitch - + Open The name of the ActionType ({b96a8f85-c39e-499b-abbd-40b18788e907}) of ThingClass shellyRoller - - - - - - - - - - - - - + + + + + + + + + + + + + + Password (optional) The name of the ParamType (ThingClass: shellyMotion, Type: thing, ID: {b6a48fc4-5016-47d9-8454-c64686120ee1}) ---------- +The name of the ParamType (ThingClass: shellyEm, Type: thing, ID: {66c1cd5d-c1c4-4d23-8e83-d5f5563abb8e}) +---------- The name of the ParamType (ThingClass: shellyEm3, Type: thing, ID: {29aee8f6-ed40-41c5-83c9-32c8aa89c7ea}) ---------- The name of the ParamType (ThingClass: shellyHT, Type: thing, ID: {a0e1670d-3df2-49c2-b080-577f2d10af68}) @@ -1114,8 +1180,8 @@ The name of the ParamType (ThingClass: shelly1, Type: thing, ID: {d29b8399-bfa6- - - + + Person is present The name of the ParamType (ThingClass: shellyMotion, EventType: isPresent, ID: {45c0cc07-0e13-449c-86a7-ab65d5cdf637}) ---------- @@ -1123,9 +1189,9 @@ The name of the StateType ({45c0cc07-0e13-449c-86a7-ab65d5cdf637}) of ThingClass - - - + + + Position The name of the ParamType (ThingClass: shellyRoller, ActionType: percentage, ID: {86270b8b-bce4-4d8a-9bc9-d72af36b991c}) ---------- @@ -1135,30 +1201,30 @@ The name of the StateType ({86270b8b-bce4-4d8a-9bc9-d72af36b991c}) of ThingClass - + Position changed The name of the EventType ({86270b8b-bce4-4d8a-9bc9-d72af36b991c}) of ThingClass shellyRoller - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Power The name of the ParamType (ThingClass: shellySocketPM, ActionType: power, ID: {d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) ---------- @@ -1198,9 +1264,9 @@ The name of the StateType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of ThingClass - - - + + + Power channel 1 The name of the ParamType (ThingClass: shelly25, ActionType: channel1, ID: {118d572c-cc12-4037-82d8-7d8f6fb4a364}) ---------- @@ -1210,9 +1276,9 @@ The name of the StateType ({118d572c-cc12-4037-82d8-7d8f6fb4a364}) of ThingClass - - - + + + Power channel 2 The name of the ParamType (ThingClass: shelly25, ActionType: channel2, ID: {7952aec0-cd27-4ef9-87a6-c499564bc1d4}) ---------- @@ -1222,8 +1288,8 @@ The name of the StateType ({7952aec0-cd27-4ef9-87a6-c499564bc1d4}) of ThingClass - - + + Power consumption The name of the ParamType (ThingClass: shellyPlug, EventType: currentPower, ID: {202ea409-650e-48b2-9aae-d4ebe9d505fd}) ---------- @@ -1231,11 +1297,11 @@ The name of the StateType ({202ea409-650e-48b2-9aae-d4ebe9d505fd}) of ThingClass - - - - - + + + + + Power consumption changed The name of the EventType ({0d7cb1cf-3fff-4d0b-96c2-c02e9a92af57}) of ThingClass shellyRoller ---------- @@ -1249,8 +1315,17 @@ The name of the EventType ({202ea409-650e-48b2-9aae-d4ebe9d505fd}) of ThingClass - - + + + Power factor + The name of the ParamType (ThingClass: shellyEmChannel, EventType: powerFactorPhaseA, ID: {fd5898ce-c8c9-422d-a32a-996d4004ca15}) +---------- +The name of the StateType ({fd5898ce-c8c9-422d-a32a-996d4004ca15}) of ThingClass shellyEmChannel + + + + + Power factor (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: powerFactorPhaseA, ID: {50be490b-ba5d-4b1f-806c-9e15b915c1eb}) ---------- @@ -1258,14 +1333,14 @@ The name of the StateType ({50be490b-ba5d-4b1f-806c-9e15b915c1eb}) of ThingClass - + Power factor (Phase A) changed The name of the EventType ({50be490b-ba5d-4b1f-806c-9e15b915c1eb}) of ThingClass shellyEm3 - - + + Power factor (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: powerFactorPhaseB, ID: {f56504bb-0c6c-4425-831c-771b23aadf19}) ---------- @@ -1273,14 +1348,14 @@ The name of the StateType ({f56504bb-0c6c-4425-831c-771b23aadf19}) of ThingClass - + Power factor (Phase B) changed The name of the EventType ({f56504bb-0c6c-4425-831c-771b23aadf19}) of ThingClass shellyEm3 - - + + Power factor (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: powerFactorPhaseC, ID: {2e2c622f-1575-4d0b-a0c0-78bc03748c1e}) ---------- @@ -1288,14 +1363,20 @@ The name of the StateType ({2e2c622f-1575-4d0b-a0c0-78bc03748c1e}) of ThingClass - + Power factor (Phase C) changed The name of the EventType ({2e2c622f-1575-4d0b-a0c0-78bc03748c1e}) of ThingClass shellyEm3 - - + + Power factor changed + The name of the EventType ({fd5898ce-c8c9-422d-a32a-996d4004ca15}) of ThingClass shellyEmChannel + + + + + Power usage (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPowerPhaseA, ID: {432ba180-936d-4700-907e-766264bfdd35}) ---------- @@ -1303,14 +1384,14 @@ The name of the StateType ({432ba180-936d-4700-907e-766264bfdd35}) of ThingClass - + Power usage (Phase A) changed The name of the EventType ({432ba180-936d-4700-907e-766264bfdd35}) of ThingClass shellyEm3 - - + + Power usage (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPowerPhaseB, ID: {02edeedb-8a93-41f8-8bc5-09031b7d2d4d}) ---------- @@ -1318,14 +1399,14 @@ The name of the StateType ({02edeedb-8a93-41f8-8bc5-09031b7d2d4d}) of ThingClass - + Power usage (Phase B) changed The name of the EventType ({02edeedb-8a93-41f8-8bc5-09031b7d2d4d}) of ThingClass shellyEm3 - - + + Power usage (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPowerPhaseC, ID: {82277a4e-49cc-45f4-8b29-470ce99333b6}) ---------- @@ -1333,29 +1414,38 @@ The name of the StateType ({82277a4e-49cc-45f4-8b29-470ce99333b6}) of ThingClass - + Power usage (Phase C) changed The name of the EventType ({82277a4e-49cc-45f4-8b29-470ce99333b6}) of ThingClass shellyEm3 - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Powered - The name of the ParamType (ThingClass: shellyEm3, ActionType: power, ID: {639dda4c-e354-43ca-a785-fbe6806986e2}) + The name of the ParamType (ThingClass: shellyEm, ActionType: power, ID: {9a2c6304-91d6-45fc-8ef7-75355457eca5}) +---------- +The name of the ParamType (ThingClass: shellyEm, EventType: power, ID: {9a2c6304-91d6-45fc-8ef7-75355457eca5}) +---------- +The name of the StateType ({9a2c6304-91d6-45fc-8ef7-75355457eca5}) of ThingClass shellyEm +---------- +The name of the ParamType (ThingClass: shellyEm3, ActionType: power, ID: {639dda4c-e354-43ca-a785-fbe6806986e2}) ---------- The name of the ParamType (ThingClass: shellyEm3, EventType: power, ID: {639dda4c-e354-43ca-a785-fbe6806986e2}) ---------- @@ -1387,20 +1477,20 @@ The name of the StateType ({5b7eeb6c-6113-41f3-a61b-3076d087c9fe}) of ThingClass - + Presence detected The name of the EventType ({45c0cc07-0e13-449c-86a7-ab65d5cdf637}) of ThingClass shellyMotion - + Press count The name of the ParamType (ThingClass: shellyI3, EventType: pressed, ID: {0ed31339-7457-443c-b6e3-3b8ce3fc2bd8}) - - + + Pressed The name of the EventType ({41498655-1943-4b46-ac36-adea7bafab87}) of ThingClass shellySwitch ---------- @@ -1408,15 +1498,30 @@ The name of the EventType ({25955cb9-dc0e-48dc-91b1-ba27e30a3a3f}) of ThingClass - - - - - - - - - + + + Reactive power + The name of the ParamType (ThingClass: shellyEmChannel, EventType: reactivePowerPhaseA, ID: {abdb5b38-05d3-4c12-aed2-f7c560d6b4e8}) +---------- +The name of the StateType ({abdb5b38-05d3-4c12-aed2-f7c560d6b4e8}) of ThingClass shellyEmChannel + + + + + Reactive power changed + The name of the EventType ({abdb5b38-05d3-4c12-aed2-f7c560d6b4e8}) of ThingClass shellyEmChannel + + + + + + + + + + + + Reboot The name of the ActionType ({162e7791-6890-4075-8e57-a4c15b9359bb}) of ThingClass shellyI3 ---------- @@ -1438,20 +1543,23 @@ The name of the ActionType ({b4067d54-36c5-4d30-bbc3-c8c712d6fd32}) of ThingClas - + Remain awake The name of the ParamType (ThingClass: shellyButton1, Type: settings, ID: {45d4628d-7d8c-43b6-ac86-6232caa5816f}) - + + Reset data - The name of the ActionType ({87772e43-1bf7-496b-b8be-46db39f71700}) of ThingClass shellyEm3 + The name of the ActionType ({09f6d675-4c22-4a9f-b9f2-3349ab947529}) of ThingClass shellyEm +---------- +The name of the ActionType ({87772e43-1bf7-496b-b8be-46db39f71700}) of ThingClass shellyEm3 - - + + Set brightness The name of the ActionType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of ThingClass shellyDimmer ---------- @@ -1459,26 +1567,26 @@ The name of the ActionType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of ThingClas - + Set color The name of the ActionType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of ThingClass shellyRgbw2 - + Set color temperature The name of the ActionType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of ThingClass shellyRgbw2 - + Set position The name of the ActionType ({86270b8b-bce4-4d8a-9bc9-d72af36b991c}) of ThingClass shellyRoller - - + + Shelly The name of the vendor ({d8e45fc2-90af-492e-8305-50baa1ec4c18}) ---------- @@ -1486,76 +1594,94 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9}) - + Shelly 1 The name of the ThingClass ({f810b66a-7177-4397-9771-4229abaabbb6}) - + Shelly 1L The name of the ThingClass ({20754114-1591-48b5-af2f-8c9966adb7c4}) - + Shelly 1PM The name of the ThingClass ({30e74e9f-57f4-4bbc-b0df-f2c4f28b2f06}) - + Shelly 2 The name of the ThingClass ({f277d3a3-62e0-49c1-90b2-4108578e80bf}) - + Shelly 2.5 The name of the ThingClass ({465efb0d-da68-4177-a040-940c7f451e29}) - + Shelly 3EM The name of the ThingClass ({ba293550-d2af-4463-b973-e1812ab67b96}) - - Shelly Dimmer / Dimmer 2 + + Shelly Dimmer (2) / Vintage The name of the ThingClass ({3a1d6fc1-c623-4b45-9c81-1573fcc15f99}) - + + Shelly EM + The name of the ThingClass ({bcc7326d-555a-4763-80ce-7354e67cc700}) + + + + + Shelly EM Channel + The name of the ThingClass ({67ccc046-c8b5-4584-8f7f-6fe0a0c6a860}) + + + + Shelly H&T The name of the ThingClass ({cc75be5c-8e34-4f72-a55d-c96e4c85d4be}) - + Shelly I3 The name of the ThingClass ({a4557bcc-bdae-4178-b774-5881a8ae490a}) - - - - - - - - - - - - - + + + + + + + + + + + + + + + Shelly ID The name of the ParamType (ThingClass: shellyMotion, Type: thing, ID: {b92fe8ba-8bfb-4d9a-9fb9-8d55ace8cfb4}) ---------- +The name of the ParamType (ThingClass: shellyEmChannel, Type: thing, ID: {b9b85416-0d48-4e71-9471-03385f8fc619}) +---------- +The name of the ParamType (ThingClass: shellyEm, Type: thing, ID: {e44d6880-4e54-44b0-85f5-4e035179402e}) +---------- The name of the ParamType (ThingClass: shellyEm3, Type: thing, ID: {a80894d2-dfba-4699-892d-081702b0f1f5}) ---------- The name of the ParamType (ThingClass: shellyHT, Type: thing, ID: {b6882bd5-7b1f-447b-9aa7-34aeeb538697}) @@ -1582,38 +1708,38 @@ The name of the ParamType (ThingClass: shelly1, Type: thing, ID: {1d301dc0-5e48- - + Shelly Motion The name of the ThingClass ({a82737bb-f2d6-442e-a468-5acc0a2e4cd7}) - + Shelly Plug/PlugS The name of the ThingClass ({22229a6d-2af8-44e0-bea9-310a0f2769ef}) - + Shelly RGBW2 The name of the ThingClass ({17f24cec-e6ed-4abd-9d42-60999f391dba}) - + Shelly button 1 The name of the ThingClass ({3eba6b29-f634-4ade-80a3-2159803373cc}) - + Shelly connected Roller Shutter The name of the ThingClass ({d681a4cb-481a-4469-a49a-e6bbb11eb9c9}) - - + + Shelly connected device The name of the ThingClass ({3bd614e0-72c4-4fbe-8c70-ce6c48d04bce}) ---------- @@ -1621,8 +1747,8 @@ The name of the ThingClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25}) - - + + Shelly connected light The name of the ThingClass ({5ab05c19-71aa-4a85-a02f-a108f039a69a}) ---------- @@ -1630,8 +1756,8 @@ The name of the ThingClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399}) - - + + Shelly connected power socket The name of the ThingClass ({ae6e55fe-1a0b-43bc-bdfb-605661b96905}) ---------- @@ -1639,60 +1765,64 @@ The name of the ThingClass ({3e13206c-a6cd-49a0-b653-2ccb5bb4bbc1}) - + Shelly switch The name of the ThingClass ({6de35a17-0f54-4397-894d-4321b64c53d1}) - + Short Pressed The name of the EventType ({79648810-b2f4-4aa5-902f-2875242e7bf8}) of ThingClass shellyI3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Signal strength The name of the ParamType (ThingClass: shellyRoller, EventType: signalStrength, ID: {f46c52ce-58dd-4d07-bb69-e8b8719c41bc}) ---------- @@ -1726,6 +1856,14 @@ The name of the ParamType (ThingClass: shellyMotion, EventType: signalStrength, ---------- The name of the StateType ({ecc61ce2-cb66-47ce-a65c-3b9e43ce6fdc}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEmChannel, EventType: signalStrength, ID: {d1928e72-73e6-4009-846e-149f80ad5899}) +---------- +The name of the StateType ({d1928e72-73e6-4009-846e-149f80ad5899}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm, EventType: signalStrength, ID: {87664175-4b84-4cfe-9bee-5d1bcf2566f8}) +---------- +The name of the StateType ({87664175-4b84-4cfe-9bee-5d1bcf2566f8}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: signalStrength, ID: {0f147c29-aefd-4926-a979-35dfeaec12c0}) ---------- The name of the StateType ({0f147c29-aefd-4926-a979-35dfeaec12c0}) of ThingClass shellyEm3 @@ -1780,27 +1918,29 @@ The name of the StateType ({74c631ed-fc3d-49e8-9dec-99cafa70c559}) of ThingClass - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + Signal strength changed The name of the EventType ({f46c52ce-58dd-4d07-bb69-e8b8719c41bc}) of ThingClass shellyRoller ---------- @@ -1818,6 +1958,10 @@ The name of the EventType ({e48d19f1-e04b-4c5d-b515-15bb22060607}) of ThingClass ---------- The name of the EventType ({ecc61ce2-cb66-47ce-a65c-3b9e43ce6fdc}) of ThingClass shellyMotion ---------- +The name of the EventType ({d1928e72-73e6-4009-846e-149f80ad5899}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({87664175-4b84-4cfe-9bee-5d1bcf2566f8}) of ThingClass shellyEm +---------- The name of the EventType ({0f147c29-aefd-4926-a979-35dfeaec12c0}) of ThingClass shellyEm3 ---------- The name of the EventType ({5088cd2d-8f71-4cfb-a120-4a2d4a84355d}) of ThingClass shellySwitch @@ -1846,13 +1990,16 @@ The name of the EventType ({74c631ed-fc3d-49e8-9dec-99cafa70c559}) of ThingClass - - - - + + + + + Start firmware update The name of the ActionType ({17327674-f160-44e1-8a3d-fc2b6e1ee319}) of ThingClass shellyMotion ---------- +The name of the ActionType ({6a30f435-2b35-4df5-8a20-ef3dbec817c9}) of ThingClass shellyEm +---------- The name of the ActionType ({f230d689-53f8-4542-9b20-9993b1c2eb27}) of ThingClass shellyEm3 ---------- The name of the ActionType ({e32aaff9-b2f8-437e-b7b4-5b519d9e5e21}) of ThingClass shellyHT @@ -1861,14 +2008,14 @@ The name of the ActionType ({87b24064-5db7-4590-a9d8-f6d8fd02ed6e}) of ThingClas - + Status LED enabled The name of the ParamType (ThingClass: shellyButton1, Type: settings, ID: {420298a7-bcf8-4970-951e-f6ee5efa1013}) - - + + Temperature The name of the ParamType (ThingClass: shellyHT, EventType: temperature, ID: {507e7ca7-e1ab-4e7c-8097-4aedf924f797}) ---------- @@ -1876,23 +2023,29 @@ The name of the StateType ({507e7ca7-e1ab-4e7c-8097-4aedf924f797}) of ThingClass - + Temperature changed The name of the EventType ({507e7ca7-e1ab-4e7c-8097-4aedf924f797}) of ThingClass shellyHT - - + + + + Total consumed energy - The name of the ParamType (ThingClass: shellyEm3, EventType: totalEnergyConsumed, ID: {67050a5a-cc78-4d11-a7d9-a9db528029ff}) + The name of the ParamType (ThingClass: shellyEmChannel, EventType: totalEnergyConsumed, ID: {4ce53fa0-d6b7-4c1b-87d9-edcaeedb640e}) +---------- +The name of the StateType ({4ce53fa0-d6b7-4c1b-87d9-edcaeedb640e}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm3, EventType: totalEnergyConsumed, ID: {67050a5a-cc78-4d11-a7d9-a9db528029ff}) ---------- The name of the StateType ({67050a5a-cc78-4d11-a7d9-a9db528029ff}) of ThingClass shellyEm3 - - + + Total consumed energy (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: energyConsumedPhaseA, ID: {ba25ef68-bb52-4e96-a8fb-137aae966104}) ---------- @@ -1900,14 +2053,14 @@ The name of the StateType ({ba25ef68-bb52-4e96-a8fb-137aae966104}) of ThingClass - + Total consumed energy (Phase A) changed The name of the EventType ({ba25ef68-bb52-4e96-a8fb-137aae966104}) of ThingClass shellyEm3 - - + + Total consumed energy (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: energyConsumedPhaseB, ID: {6636e6a0-e3ca-4654-9506-4302c4e8eed7}) ---------- @@ -1915,14 +2068,14 @@ The name of the StateType ({6636e6a0-e3ca-4654-9506-4302c4e8eed7}) of ThingClass - + Total consumed energy (Phase B) changed The name of the EventType ({6636e6a0-e3ca-4654-9506-4302c4e8eed7}) of ThingClass shellyEm3 - - + + Total consumed energy (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: energyConsumedPhaseC, ID: {452c2159-aa2f-4217-80e5-4b492b69671e}) ---------- @@ -1930,17 +2083,20 @@ The name of the StateType ({452c2159-aa2f-4217-80e5-4b492b69671e}) of ThingClass - + Total consumed energy (Phase C) changed The name of the EventType ({452c2159-aa2f-4217-80e5-4b492b69671e}) of ThingClass shellyEm3 - - - + + + + Total consumed energy changed - The name of the EventType ({67050a5a-cc78-4d11-a7d9-a9db528029ff}) of ThingClass shellyEm3 + The name of the EventType ({4ce53fa0-d6b7-4c1b-87d9-edcaeedb640e}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({67050a5a-cc78-4d11-a7d9-a9db528029ff}) of ThingClass shellyEm3 ---------- The name of the EventType ({0f879e7b-2124-4d98-9828-e5bbd1b344ce}) of ThingClass shelly1l ---------- @@ -1948,10 +2104,10 @@ The name of the EventType ({23594959-1cd4-4e23-a7ae-b0b7fbd29daa}) of ThingClass - - - - + + + + Total energy changed The name of the EventType ({a7d88654-7503-474d-9a7c-02150d61a6dc}) of ThingClass shellyRoller ---------- @@ -1963,20 +2119,20 @@ The name of the EventType ({54b0b02e-1dfe-4172-bdfd-8129709e5d9f}) of ThingClass - - - - - - - - - - - - - - + + + + + + + + + + + + + + Total energy consumed The name of the ParamType (ThingClass: shellyRoller, EventType: totalEnergyConsumed, ID: {a7d88654-7503-474d-9a7c-02150d61a6dc}) ---------- @@ -2008,17 +2164,23 @@ The name of the StateType ({23594959-1cd4-4e23-a7ae-b0b7fbd29daa}) of ThingClass - - + + + + Total returned energy - The name of the ParamType (ThingClass: shellyEm3, EventType: totalEnergyProduced, ID: {088cb7df-9187-4206-ae5b-18a00e4f1969}) + The name of the ParamType (ThingClass: shellyEmChannel, EventType: totalEnergyProduced, ID: {7fe88e8f-a1c4-4e8d-a1de-9135b80bc7e3}) +---------- +The name of the StateType ({7fe88e8f-a1c4-4e8d-a1de-9135b80bc7e3}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm3, EventType: totalEnergyProduced, ID: {088cb7df-9187-4206-ae5b-18a00e4f1969}) ---------- The name of the StateType ({088cb7df-9187-4206-ae5b-18a00e4f1969}) of ThingClass shellyEm3 - - + + Total returned energy (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: energyProducedPhaseA, ID: {34562cd3-b178-4f68-903d-a01e20d0ad76}) ---------- @@ -2026,14 +2188,14 @@ The name of the StateType ({34562cd3-b178-4f68-903d-a01e20d0ad76}) of ThingClass - + Total returned energy (Phase A) changed The name of the EventType ({34562cd3-b178-4f68-903d-a01e20d0ad76}) of ThingClass shellyEm3 - - + + Total returned energy (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: energyProducedPhaseB, ID: {d70a0d1a-cac1-4250-85fa-4859ad2dc947}) ---------- @@ -2041,14 +2203,14 @@ The name of the StateType ({d70a0d1a-cac1-4250-85fa-4859ad2dc947}) of ThingClass - + Total returned energy (Phase B) changed The name of the EventType ({d70a0d1a-cac1-4250-85fa-4859ad2dc947}) of ThingClass shellyEm3 - - + + Total returned energy (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: energyProducedPhaseC, ID: {de248e26-b617-4d22-9175-752e2d695274}) ---------- @@ -2056,40 +2218,44 @@ The name of the StateType ({de248e26-b617-4d22-9175-752e2d695274}) of ThingClass - + Total returned energy (Phase C) changed The name of the EventType ({de248e26-b617-4d22-9175-752e2d695274}) of ThingClass shellyEm3 - + + Total returned energy changed - The name of the EventType ({088cb7df-9187-4206-ae5b-18a00e4f1969}) of ThingClass shellyEm3 + The name of the EventType ({7fe88e8f-a1c4-4e8d-a1de-9135b80bc7e3}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({088cb7df-9187-4206-ae5b-18a00e4f1969}) of ThingClass shellyEm3 - + Turn channel 1 on or off The name of the ActionType ({118d572c-cc12-4037-82d8-7d8f6fb4a364}) of ThingClass shelly25 - + Turn channel 2 on or off The name of the ActionType ({7952aec0-cd27-4ef9-87a6-c499564bc1d4}) of ThingClass shelly25 - - - - - - - - - - + + + + + + + + + + + Turn on or off The name of the ActionType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of ThingClass shellySocketPM ---------- @@ -2103,6 +2269,8 @@ The name of the ActionType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of ThingClas ---------- The name of the ActionType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of ThingClass shellyGeneric ---------- +The name of the ActionType ({9a2c6304-91d6-45fc-8ef7-75355457eca5}) of ThingClass shellyEm +---------- The name of the ActionType ({639dda4c-e354-43ca-a785-fbe6806986e2}) of ThingClass shellyEm3 ---------- The name of the ActionType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of ThingClass shellyDimmer @@ -2113,9 +2281,9 @@ The name of the ActionType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of ThingClas - - - + + + Turn on/off The name of the ActionType ({94276bb9-ef68-47ab-8e74-34ebe54b411f}) of ThingClass shelly1l ---------- @@ -2125,16 +2293,17 @@ The name of the ActionType ({5b7eeb6c-6113-41f3-a61b-3076d087c9fe}) of ThingClas - - - - - - - - - - + + + + + + + + + + + Turned on or off The name of the EventType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of ThingClass shellySocketPM ---------- @@ -2148,6 +2317,8 @@ The name of the EventType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of ThingClass ---------- The name of the EventType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of ThingClass shellyGeneric ---------- +The name of the EventType ({9a2c6304-91d6-45fc-8ef7-75355457eca5}) of ThingClass shellyEm +---------- The name of the EventType ({639dda4c-e354-43ca-a785-fbe6806986e2}) of ThingClass shellyEm3 ---------- The name of the EventType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of ThingClass shellyDimmer @@ -2158,9 +2329,9 @@ The name of the EventType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of ThingClass - - - + + + Turned on/off The name of the EventType ({94276bb9-ef68-47ab-8e74-34ebe54b411f}) of ThingClass shelly1l ---------- @@ -2170,15 +2341,15 @@ The name of the EventType ({5b7eeb6c-6113-41f3-a61b-3076d087c9fe}) of ThingClass - - - - - - - - - + + + + + + + + + Update firmware The name of the ActionType ({1c677ecb-c54e-4c95-a3f7-e68fabeeda08}) of ThingClass shellyI3 ---------- @@ -2200,35 +2371,41 @@ The name of the ActionType ({6f814339-9a48-4027-a3f8-760742ff22ba}) of ThingClas - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + Update status The name of the ParamType (ThingClass: shellyMotion, EventType: updateStatus, ID: {a604a66c-3143-45ce-a6e3-17a339f428ab}) ---------- The name of the StateType ({a604a66c-3143-45ce-a6e3-17a339f428ab}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEm, EventType: updateStatus, ID: {ad5d523e-9a4d-47d2-912c-c8ec5081f9ff}) +---------- +The name of the StateType ({ad5d523e-9a4d-47d2-912c-c8ec5081f9ff}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: updateStatus, ID: {8e25bbc2-54d8-4aa1-8ca5-f61b5f17a03b}) ---------- The name of the StateType ({8e25bbc2-54d8-4aa1-8ca5-f61b5f17a03b}) of ThingClass shellyEm3 @@ -2275,21 +2452,24 @@ The name of the StateType ({68bf3780-8f7f-4ecb-8498-830e257c192c}) of ThingClass - - - - - - - - - - - - + + + + + + + + + + + + + Update status changed The name of the EventType ({a604a66c-3143-45ce-a6e3-17a339f428ab}) of ThingClass shellyMotion ---------- +The name of the EventType ({ad5d523e-9a4d-47d2-912c-c8ec5081f9ff}) of ThingClass shellyEm +---------- The name of the EventType ({8e25bbc2-54d8-4aa1-8ca5-f61b5f17a03b}) of ThingClass shellyEm3 ---------- The name of the EventType ({fdda809d-0807-4495-9d50-f9e2a12894ac}) of ThingClass shellyHT @@ -2314,22 +2494,25 @@ The name of the EventType ({68bf3780-8f7f-4ecb-8498-830e257c192c}) of ThingClass - - - - - - - - - - - - - + + + + + + + + + + + + + + Username (optional) The name of the ParamType (ThingClass: shellyMotion, Type: thing, ID: {ea210ec8-37ed-4479-9454-48cc06a1df88}) ---------- +The name of the ParamType (ThingClass: shellyEm, Type: thing, ID: {61957e60-4b77-4aa7-893f-e94559cac15c}) +---------- The name of the ParamType (ThingClass: shellyEm3, Type: thing, ID: {21e11417-b862-44e6-828f-d65207328630}) ---------- The name of the ParamType (ThingClass: shellyHT, Type: thing, ID: {1ea30a6f-5139-4452-8e23-0c525494c9c8}) @@ -2356,8 +2539,8 @@ The name of the ParamType (ThingClass: shelly1, Type: thing, ID: {fa1aa0f6-93b2- - - + + Vibration The name of the ParamType (ThingClass: shellyMotion, EventType: vibration, ID: {76438c2d-9742-4680-9139-d4b4e988cfd2}) ---------- @@ -2365,14 +2548,23 @@ The name of the StateType ({76438c2d-9742-4680-9139-d4b4e988cfd2}) of ThingClass - + Vibration detected The name of the EventType ({76438c2d-9742-4680-9139-d4b4e988cfd2}) of ThingClass shellyMotion - - + + + Voltage + The name of the ParamType (ThingClass: shellyEmChannel, EventType: voltagePhaseA, ID: {d6cb777f-c9af-46d8-845a-883ac05c206a}) +---------- +The name of the StateType ({d6cb777f-c9af-46d8-845a-883ac05c206a}) of ThingClass shellyEmChannel + + + + + Voltage (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: voltagePhaseA, ID: {5977ffab-cdcf-409c-940b-aa0a59de84a5}) ---------- @@ -2380,14 +2572,14 @@ The name of the StateType ({5977ffab-cdcf-409c-940b-aa0a59de84a5}) of ThingClass - + Voltage (Phase A) changed The name of the EventType ({5977ffab-cdcf-409c-940b-aa0a59de84a5}) of ThingClass shellyEm3 - - + + Voltage (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: voltagePhaseB, ID: {7c846993-fb06-48ef-987c-7b35d9671070}) ---------- @@ -2395,14 +2587,14 @@ The name of the StateType ({7c846993-fb06-48ef-987c-7b35d9671070}) of ThingClass - + Voltage (Phase B) changed The name of the EventType ({7c846993-fb06-48ef-987c-7b35d9671070}) of ThingClass shellyEm3 - - + + Voltage (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: voltagePhaseC, ID: {cd7af1b2-d5f0-4c2e-b85c-84f23ae1fbb9}) ---------- @@ -2410,13 +2602,19 @@ The name of the StateType ({cd7af1b2-d5f0-4c2e-b85c-84f23ae1fbb9}) of ThingClass - + Voltage (Phase C) changed The name of the EventType ({cd7af1b2-d5f0-4c2e-b85c-84f23ae1fbb9}) of ThingClass shellyEm3 - + + Voltage changed + The name of the EventType ({d6cb777f-c9af-46d8-845a-883ac05c206a}) of ThingClass shellyEmChannel + + + + stop The name of the ActionType ({2266303c-df0c-4eae-b15e-6a86e73c9699}) of ThingClass shellyRoller diff --git a/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-en_US.ts b/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-en_US.ts index 2879ec84..b8c76148 100644 --- a/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-en_US.ts +++ b/shelly/translations/6162773b-0435-408c-a4f8-7860d38031a9-en_US.ts @@ -4,38 +4,38 @@ IntegrationPluginShelly - + Unable to find the thing in the network. - + Roller shutter mode can't be mixed with relay mode. Please configure both connected devices to control a shutter or relays. - - + + For using a roller shutter, one channel must be set to up, the other to down. - + Error creating MQTT channel. Please check MQTT server settings. - + Username and password not set correctly. - + Error connecting to Shelly device. - + Unexpected data received from Shelly device. @@ -43,37 +43,43 @@ shelly - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + Available firmware version The name of the ParamType (ThingClass: shellyMotion, EventType: availableVersion, ID: {0c9e8da4-1b1c-4047-8e9d-c5c580bcf43f}) ---------- The name of the StateType ({0c9e8da4-1b1c-4047-8e9d-c5c580bcf43f}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEm, EventType: availableVersion, ID: {97ab36bb-355b-4559-838a-fe49a9cbd13e}) +---------- +The name of the StateType ({97ab36bb-355b-4559-838a-fe49a9cbd13e}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: availableVersion, ID: {27f1e394-642f-4a90-88bf-1ef9ba88b10b}) ---------- The name of the StateType ({27f1e394-642f-4a90-88bf-1ef9ba88b10b}) of ThingClass shellyEm3 @@ -124,22 +130,25 @@ The name of the StateType ({6e794011-d184-4ab2-9c3a-3b2205880cbc}) of ThingClass - - - - - - - - - - - - - + + + + + + + + + + + + + + Available firmware version changed The name of the EventType ({0c9e8da4-1b1c-4047-8e9d-c5c580bcf43f}) of ThingClass shellyMotion ---------- +The name of the EventType ({97ab36bb-355b-4559-838a-fe49a9cbd13e}) of ThingClass shellyEm +---------- The name of the EventType ({27f1e394-642f-4a90-88bf-1ef9ba88b10b}) of ThingClass shellyEm3 ---------- The name of the EventType ({770b6b3a-3815-4ba3-8a2d-3fb949c914de}) of ThingClass shellyHT @@ -166,8 +175,8 @@ The name of the EventType ({6e794011-d184-4ab2-9c3a-3b2205880cbc}) of ThingClass - - + + Battery critical changed The name of the EventType ({56053726-92dc-4a80-b05e-a9a857c02bc1}) of ThingClass shellyHT ---------- @@ -175,18 +184,18 @@ The name of the EventType ({18edddee-1b30-48e4-b233-1e3b68bd6ff1}) of ThingClass - + Battery entered critical state The name of the EventType ({1d03941e-9c41-446b-b698-f8dff335bf11}) of ThingClass shellyMotion - - - - - - + + + + + + Battery level The name of the ParamType (ThingClass: shellyMotion, EventType: batteryLevel, ID: {f6d89aa6-7dba-4bb0-89cf-36d85208933f}) ---------- @@ -202,9 +211,9 @@ The name of the StateType ({338355e5-9506-48b1-be86-757d69b34755}) of ThingClass - - - + + + Battery level changed The name of the EventType ({f6d89aa6-7dba-4bb0-89cf-36d85208933f}) of ThingClass shellyMotion ---------- @@ -214,12 +223,12 @@ The name of the EventType ({338355e5-9506-48b1-be86-757d69b34755}) of ThingClass - - - - - - + + + + + + Battery level critical The name of the ParamType (ThingClass: shellyMotion, EventType: batteryCritical, ID: {1d03941e-9c41-446b-b698-f8dff335bf11}) ---------- @@ -235,12 +244,12 @@ The name of the StateType ({18edddee-1b30-48e4-b233-1e3b68bd6ff1}) of ThingClass - - - - - - + + + + + + Brightness The name of the ParamType (ThingClass: shellyDimmer, ActionType: brightness, ID: {f41c93ac-6911-45fc-9221-7dd26bf65fd0}) ---------- @@ -256,8 +265,8 @@ The name of the StateType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of ThingClass - - + + Brightness changed The name of the EventType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of ThingClass shellyDimmer ---------- @@ -265,8 +274,8 @@ The name of the EventType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of ThingClass - - + + Button name The name of the ParamType (ThingClass: shellyI3, EventType: longPressed, ID: {99683cf9-930e-4f10-94f2-73bb32092639}) ---------- @@ -274,26 +283,27 @@ The name of the ParamType (ThingClass: shellyI3, EventType: pressed, ID: {146313 - + Button type The name of the ParamType (ThingClass: shellySwitch, Type: settings, ID: {ce9f1650-5e12-40f4-97de-27af86afa40b}) - + Calibrate The name of the ActionType ({4e2d8a7b-821e-4ee8-9f9b-f774d631845f}) of ThingClass shellyRoller - - - - - - - - + + + + + + + + + Channel The name of the ParamType (ThingClass: shellyRoller, Type: thing, ID: {281385a5-5084-4ded-80a4-66c0dc1096a8}) ---------- @@ -309,31 +319,33 @@ The name of the ParamType (ThingClass: shellyGenericPM, Type: thing, ID: {5e7c6e ---------- The name of the ParamType (ThingClass: shellyGeneric, Type: thing, ID: {c08b1272-6eb2-4fed-80ad-06566a521b95}) ---------- +The name of the ParamType (ThingClass: shellyEmChannel, Type: thing, ID: {e8865f9d-2601-4e02-9ff1-780332f1f18f}) +---------- The name of the ParamType (ThingClass: shellySwitch, Type: thing, ID: {be6bdd43-cbf0-4d16-b789-ccad16e23788}) - + Channel 1 turned on or off The name of the EventType ({118d572c-cc12-4037-82d8-7d8f6fb4a364}) of ThingClass shelly25 - + Channel 2 turned on or off The name of the EventType ({7952aec0-cd27-4ef9-87a6-c499564bc1d4}) of ThingClass shelly25 - + Close The name of the ActionType ({87eb0290-615e-4c98-9ec8-a21104fcf05d}) of ThingClass shellyRoller - - - + + + Color The name of the ParamType (ThingClass: shellyRgbw2, ActionType: color, ID: {6ef7c686-350d-4069-9c41-9b90b3906748}) ---------- @@ -343,15 +355,15 @@ The name of the StateType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of ThingClass - + Color changed The name of the EventType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of ThingClass shellyRgbw2 - - - + + + Color temperature The name of the ParamType (ThingClass: shellyRgbw2, ActionType: colorTemperature, ID: {a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) ---------- @@ -361,54 +373,58 @@ The name of the StateType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of ThingClass - + Color temperature changed The name of the EventType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of ThingClass shellyRgbw2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Connected The name of the ParamType (ThingClass: shellyRoller, EventType: connected, ID: {d446719d-628e-477d-882c-a84210c85869}) ---------- @@ -442,6 +458,14 @@ The name of the ParamType (ThingClass: shellyMotion, EventType: connected, ID: { ---------- The name of the StateType ({9ed997fa-1ec8-44d2-ac44-c99d4e259dae}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEmChannel, EventType: connected, ID: {d96d7505-f270-49ad-abb2-4f29ac11fb84}) +---------- +The name of the StateType ({d96d7505-f270-49ad-abb2-4f29ac11fb84}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm, EventType: connected, ID: {75f1a571-b21c-43c2-b4a3-ab8e9d7ef08c}) +---------- +The name of the StateType ({75f1a571-b21c-43c2-b4a3-ab8e9d7ef08c}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: connected, ID: {08bd7743-af98-4328-bbca-64280afc5a87}) ---------- The name of the StateType ({08bd7743-af98-4328-bbca-64280afc5a87}) of ThingClass shellyEm3 @@ -496,13 +520,13 @@ The name of the StateType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of ThingClass - - - - - - - + + + + + + + Connected changed The name of the EventType ({9b17b10d-07ee-4a3d-813f-ef37e79e7241}) of ThingClass shellyI3 ---------- @@ -520,8 +544,8 @@ The name of the EventType ({e5d41e05-2296-457e-97d8-98a5ac0de615}) of ThingClass - - + + Connected device 1 The name of the ParamType (ThingClass: shelly25, Type: thing, ID: {dc8a02fb-baa4-40bf-9e00-684b17794287}) ---------- @@ -529,8 +553,8 @@ The name of the ParamType (ThingClass: shelly2, Type: thing, ID: {84e60831-0a2c- - - + + Connected device 2 The name of the ParamType (ThingClass: shelly25, Type: thing, ID: {1e6925f8-1613-4fe4-8234-e4a4e973ef83}) ---------- @@ -538,17 +562,19 @@ The name of the ParamType (ThingClass: shelly2, Type: thing, ID: {0becaa77-b927- - - - - - - - - - - - + + + + + + + + + + + + + Connected or disconnected The name of the EventType ({d446719d-628e-477d-882c-a84210c85869}) of ThingClass shellyRoller ---------- @@ -566,6 +592,10 @@ The name of the EventType ({4a141674-faa6-4953-8272-5b4a4da84d31}) of ThingClass ---------- The name of the EventType ({9ed997fa-1ec8-44d2-ac44-c99d4e259dae}) of ThingClass shellyMotion ---------- +The name of the EventType ({d96d7505-f270-49ad-abb2-4f29ac11fb84}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({75f1a571-b21c-43c2-b4a3-ab8e9d7ef08c}) of ThingClass shellyEm +---------- The name of the EventType ({08bd7743-af98-4328-bbca-64280afc5a87}) of ThingClass shellyEm3 ---------- The name of the EventType ({0c233312-7b8f-4ca3-880d-523cab9b3ccb}) of ThingClass shellySwitch @@ -574,9 +604,9 @@ The name of the EventType ({b35ace90-8afb-49f1-924d-899bf1c03c3a}) of ThingClass - - - + + + Connected/disconnected The name of the EventType ({d23e25a1-f723-4de1-806a-83fb073f01f4}) of ThingClass shellyButton1 ---------- @@ -586,14 +616,14 @@ The name of the EventType ({98b6e1ba-8d5c-4cb1-82a0-2d06c71cdba6}) of ThingClass - + Consumed energy changed The name of the EventType ({962fec29-6be0-452e-87c5-5ff71435c40f}) of ThingClass shellyPlug - - + + Count The name of the ParamType (ThingClass: shellyButton1, EventType: longPressed, ID: {f8b5f587-d266-4fd3-9f01-941d0dcedc1f}) ---------- @@ -601,8 +631,17 @@ The name of the ParamType (ThingClass: shellyButton1, EventType: pressed, ID: {a - - + + + Current + The name of the ParamType (ThingClass: shellyEmChannel, EventType: currentPhaseA, ID: {1d457f50-0951-4ba5-8d8e-b79ea5a75535}) +---------- +The name of the StateType ({1d457f50-0951-4ba5-8d8e-b79ea5a75535}) of ThingClass shellyEmChannel + + + + + Current (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPhaseA, ID: {5fa79319-756b-4b2c-87b1-59ff996b8435}) ---------- @@ -610,14 +649,14 @@ The name of the StateType ({5fa79319-756b-4b2c-87b1-59ff996b8435}) of ThingClass - + Current (Phase A) changed The name of the EventType ({5fa79319-756b-4b2c-87b1-59ff996b8435}) of ThingClass shellyEm3 - - + + Current (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPhaseB, ID: {a4151601-fe77-418a-a2c1-6376e32da3bd}) ---------- @@ -625,14 +664,14 @@ The name of the StateType ({a4151601-fe77-418a-a2c1-6376e32da3bd}) of ThingClass - + Current (Phase B) changed The name of the EventType ({a4151601-fe77-418a-a2c1-6376e32da3bd}) of ThingClass shellyEm3 - - + + Current (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPhaseC, ID: {ab78aa9c-aa73-4f5d-8d21-38c83c5e9e7c}) ---------- @@ -640,25 +679,37 @@ The name of the StateType ({ab78aa9c-aa73-4f5d-8d21-38c83c5e9e7c}) of ThingClass - + Current (Phase C) changed The name of the EventType ({ab78aa9c-aa73-4f5d-8d21-38c83c5e9e7c}) of ThingClass shellyEm3 - - - - - - - - + + Current changed + The name of the EventType ({1d457f50-0951-4ba5-8d8e-b79ea5a75535}) of ThingClass shellyEmChannel + + + + + + + + + + + + + Current firmware version The name of the ParamType (ThingClass: shellyMotion, EventType: currentVersion, ID: {e2d98172-5833-454b-9b4b-04693c6b9232}) ---------- The name of the StateType ({e2d98172-5833-454b-9b4b-04693c6b9232}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEm, EventType: currentVersion, ID: {f5f03ab2-fec6-4502-8a47-100211878a8a}) +---------- +The name of the StateType ({f5f03ab2-fec6-4502-8a47-100211878a8a}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: currentVersion, ID: {f9ddb9f1-1251-484e-bdce-531d584d8f6a}) ---------- The name of the StateType ({f9ddb9f1-1251-484e-bdce-531d584d8f6a}) of ThingClass shellyEm3 @@ -673,13 +724,16 @@ The name of the StateType ({b17a7df2-952b-4cdd-8d28-a8e8582b49d4}) of ThingClass - - - - + + + + + Current firmware version changed The name of the EventType ({e2d98172-5833-454b-9b4b-04693c6b9232}) of ThingClass shellyMotion ---------- +The name of the EventType ({f5f03ab2-fec6-4502-8a47-100211878a8a}) of ThingClass shellyEm +---------- The name of the EventType ({f9ddb9f1-1251-484e-bdce-531d584d8f6a}) of ThingClass shellyEm3 ---------- The name of the EventType ({5655b88c-f852-4efe-955f-cf5f88e8ba6b}) of ThingClass shellyHT @@ -688,37 +742,46 @@ The name of the EventType ({b17a7df2-952b-4cdd-8d28-a8e8582b49d4}) of ThingClass - - + + + + Current power - The name of the ParamType (ThingClass: shellyEm3, EventType: currentPower, ID: {3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) + The name of the ParamType (ThingClass: shellyEmChannel, EventType: currentPower, ID: {a85041e8-a19e-4695-8404-3e3a06b1e92a}) +---------- +The name of the StateType ({a85041e8-a19e-4695-8404-3e3a06b1e92a}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm3, EventType: currentPower, ID: {3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) ---------- The name of the StateType ({3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) of ThingClass shellyEm3 - + + Current power changed - The name of the EventType ({3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) of ThingClass shellyEm3 + The name of the EventType ({a85041e8-a19e-4695-8404-3e3a06b1e92a}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({3fc2a87f-cd33-4d1f-b7a6-75ffcb4e7cc4}) of ThingClass shellyEm3 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + Current power consumption The name of the ParamType (ThingClass: shellyRoller, EventType: currentPower, ID: {0d7cb1cf-3fff-4d0b-96c2-c02e9a92af57}) ---------- @@ -754,10 +817,10 @@ The name of the StateType ({3ec03053-7cf5-44fb-ad92-041eed9edd9a}) of ThingClass - - - - + + + + Current power consumption changed The name of the EventType ({b3336ca6-1577-4230-8708-98875148606e}) of ThingClass shellyDimmer ---------- @@ -769,13 +832,13 @@ The name of the EventType ({3ec03053-7cf5-44fb-ad92-041eed9edd9a}) of ThingClass - - - - - - - + + + + + + + Default state The name of the ParamType (ThingClass: shellySocketPM, Type: settings, ID: {9880a51b-57da-4b65-a0ec-23eb0fdcb8ac}) ---------- @@ -793,8 +856,8 @@ The name of the ParamType (ThingClass: shellyPlug, Type: settings, ID: {40f251db - - + + Firmware update status The name of the ParamType (ThingClass: shellyDimmer, EventType: updateStatus, ID: {8d3b3d63-86f1-46cb-92ef-d27c0d9d0a4e}) ---------- @@ -802,30 +865,30 @@ The name of the StateType ({8d3b3d63-86f1-46cb-92ef-d27c0d9d0a4e}) of ThingClass - + Firmware update status changed The name of the EventType ({8d3b3d63-86f1-46cb-92ef-d27c0d9d0a4e}) of ThingClass shellyDimmer - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Firmware version The name of the ParamType (ThingClass: shellyI3, EventType: currentVersion, ID: {33e7d186-7c6b-4c4e-89c3-80362ef76615}) ---------- @@ -865,15 +928,15 @@ The name of the StateType ({e033cca0-03fa-4b2e-9d7b-d4a2c8ffbb8c}) of ThingClass - - - - - - - - - + + + + + + + + + Firmware version changed The name of the EventType ({33e7d186-7c6b-4c4e-89c3-80362ef76615}) of ThingClass shellyI3 ---------- @@ -895,8 +958,8 @@ The name of the EventType ({e033cca0-03fa-4b2e-9d7b-d4a2c8ffbb8c}) of ThingClass - - + + Humidity The name of the ParamType (ThingClass: shellyHT, EventType: humidity, ID: {18a3c71b-f4ef-45d8-a5db-58f533fb6e19}) ---------- @@ -904,14 +967,14 @@ The name of the StateType ({18a3c71b-f4ef-45d8-a5db-58f533fb6e19}) of ThingClass - + Humidity changed The name of the EventType ({18a3c71b-f4ef-45d8-a5db-58f533fb6e19}) of ThingClass shellyHT - - + + Input 1 The name of the ParamType (ThingClass: shellyI3, EventType: input1, ID: {61e98cc9-4449-4fb2-818e-692303244ce2}) ---------- @@ -919,14 +982,14 @@ The name of the StateType ({61e98cc9-4449-4fb2-818e-692303244ce2}) of ThingClass - + Input 1 changed The name of the EventType ({61e98cc9-4449-4fb2-818e-692303244ce2}) of ThingClass shellyI3 - - + + Input 2 The name of the ParamType (ThingClass: shellyI3, EventType: input2, ID: {04497ff2-a231-4d3d-adeb-66275a3b128b}) ---------- @@ -934,14 +997,14 @@ The name of the StateType ({04497ff2-a231-4d3d-adeb-66275a3b128b}) of ThingClass - + Input 2 changed The name of the EventType ({04497ff2-a231-4d3d-adeb-66275a3b128b}) of ThingClass shellyI3 - - + + Input 3 The name of the ParamType (ThingClass: shellyI3, EventType: input3, ID: {5895fc2d-19a4-40c2-8522-7c4462e55a3e}) ---------- @@ -949,20 +1012,20 @@ The name of the StateType ({5895fc2d-19a4-40c2-8522-7c4462e55a3e}) of ThingClass - + Input 3 changed The name of the EventType ({5895fc2d-19a4-40c2-8522-7c4462e55a3e}) of ThingClass shellyI3 - + Invert button The name of the ParamType (ThingClass: shellySwitch, Type: settings, ID: {f31eb52b-9aaf-409d-8bba-badda7c1a249}) - - + + Light intensity The name of the ParamType (ThingClass: shellyMotion, EventType: lightIntensity, ID: {a1e12487-ebab-4993-a075-78275aac7b0d}) ---------- @@ -970,32 +1033,32 @@ The name of the StateType ({a1e12487-ebab-4993-a075-78275aac7b0d}) of ThingClass - + Light intensity changed The name of the EventType ({a1e12487-ebab-4993-a075-78275aac7b0d}) of ThingClass shellyMotion - + Long Pressed The name of the EventType ({bb966833-a7a6-4ad7-b5f5-057b38ebb036}) of ThingClass shellyI3 - + Longpress duration The name of the ParamType (ThingClass: shellyButton1, Type: settings, ID: {b98423a8-c758-4dae-b979-e22446d06b22}) - + Longpressed The name of the EventType ({47cab6b6-eed3-4628-b3ad-2ceda26d6f84}) of ThingClass shellyButton1 - - + + Max time between multiple presses The name of the ParamType (ThingClass: shellyI3, Type: settings, ID: {52699a1b-3526-4f60-83ec-f35faa863597}) ---------- @@ -1003,20 +1066,20 @@ The name of the ParamType (ThingClass: shellyButton1, Type: settings, ID: {b1f5a - + Maximum longpress duration The name of the ParamType (ThingClass: shellyI3, Type: settings, ID: {6485685e-0097-48db-958b-43126c6fb5a6}) - + Minimum longpress duration The name of the ParamType (ThingClass: shellyI3, Type: settings, ID: {a04fda4b-f187-477c-b7a8-b56613bf9264}) - - + + Moving The name of the ParamType (ThingClass: shellyRoller, EventType: moving, ID: {2729d4e0-c38c-47b8-a0e8-26959090fe74}) ---------- @@ -1024,18 +1087,18 @@ The name of the StateType ({2729d4e0-c38c-47b8-a0e8-26959090fe74}) of ThingClass - + Moving changed The name of the EventType ({2729d4e0-c38c-47b8-a0e8-26959090fe74}) of ThingClass shellyRoller - - - - - - + + + + + + On The name of the ParamType (ThingClass: shellyDimmer, ActionType: power, ID: {e4a6ac87-31fb-4516-9cf3-f135621e902c}) ---------- @@ -1051,8 +1114,8 @@ The name of the StateType ({14abcd30-9db2-4065-ae81-501a55fbb145}) of ThingClass - - + + On/Off The name of the ParamType (ThingClass: shellySwitch, EventType: power, ID: {20f74d88-0683-4d3a-9513-6b29b5112b7b}) ---------- @@ -1060,34 +1123,37 @@ The name of the StateType ({20f74d88-0683-4d3a-9513-6b29b5112b7b}) of ThingClass - + On/Off toggled The name of the EventType ({20f74d88-0683-4d3a-9513-6b29b5112b7b}) of ThingClass shellySwitch - + Open The name of the ActionType ({b96a8f85-c39e-499b-abbd-40b18788e907}) of ThingClass shellyRoller - - - - - - - - - - - - - + + + + + + + + + + + + + + Password (optional) The name of the ParamType (ThingClass: shellyMotion, Type: thing, ID: {b6a48fc4-5016-47d9-8454-c64686120ee1}) ---------- +The name of the ParamType (ThingClass: shellyEm, Type: thing, ID: {66c1cd5d-c1c4-4d23-8e83-d5f5563abb8e}) +---------- The name of the ParamType (ThingClass: shellyEm3, Type: thing, ID: {29aee8f6-ed40-41c5-83c9-32c8aa89c7ea}) ---------- The name of the ParamType (ThingClass: shellyHT, Type: thing, ID: {a0e1670d-3df2-49c2-b080-577f2d10af68}) @@ -1114,8 +1180,8 @@ The name of the ParamType (ThingClass: shelly1, Type: thing, ID: {d29b8399-bfa6- - - + + Person is present The name of the ParamType (ThingClass: shellyMotion, EventType: isPresent, ID: {45c0cc07-0e13-449c-86a7-ab65d5cdf637}) ---------- @@ -1123,9 +1189,9 @@ The name of the StateType ({45c0cc07-0e13-449c-86a7-ab65d5cdf637}) of ThingClass - - - + + + Position The name of the ParamType (ThingClass: shellyRoller, ActionType: percentage, ID: {86270b8b-bce4-4d8a-9bc9-d72af36b991c}) ---------- @@ -1135,30 +1201,30 @@ The name of the StateType ({86270b8b-bce4-4d8a-9bc9-d72af36b991c}) of ThingClass - + Position changed The name of the EventType ({86270b8b-bce4-4d8a-9bc9-d72af36b991c}) of ThingClass shellyRoller - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Power The name of the ParamType (ThingClass: shellySocketPM, ActionType: power, ID: {d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) ---------- @@ -1198,9 +1264,9 @@ The name of the StateType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of ThingClass - - - + + + Power channel 1 The name of the ParamType (ThingClass: shelly25, ActionType: channel1, ID: {118d572c-cc12-4037-82d8-7d8f6fb4a364}) ---------- @@ -1210,9 +1276,9 @@ The name of the StateType ({118d572c-cc12-4037-82d8-7d8f6fb4a364}) of ThingClass - - - + + + Power channel 2 The name of the ParamType (ThingClass: shelly25, ActionType: channel2, ID: {7952aec0-cd27-4ef9-87a6-c499564bc1d4}) ---------- @@ -1222,8 +1288,8 @@ The name of the StateType ({7952aec0-cd27-4ef9-87a6-c499564bc1d4}) of ThingClass - - + + Power consumption The name of the ParamType (ThingClass: shellyPlug, EventType: currentPower, ID: {202ea409-650e-48b2-9aae-d4ebe9d505fd}) ---------- @@ -1231,11 +1297,11 @@ The name of the StateType ({202ea409-650e-48b2-9aae-d4ebe9d505fd}) of ThingClass - - - - - + + + + + Power consumption changed The name of the EventType ({0d7cb1cf-3fff-4d0b-96c2-c02e9a92af57}) of ThingClass shellyRoller ---------- @@ -1249,8 +1315,17 @@ The name of the EventType ({202ea409-650e-48b2-9aae-d4ebe9d505fd}) of ThingClass - - + + + Power factor + The name of the ParamType (ThingClass: shellyEmChannel, EventType: powerFactorPhaseA, ID: {fd5898ce-c8c9-422d-a32a-996d4004ca15}) +---------- +The name of the StateType ({fd5898ce-c8c9-422d-a32a-996d4004ca15}) of ThingClass shellyEmChannel + + + + + Power factor (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: powerFactorPhaseA, ID: {50be490b-ba5d-4b1f-806c-9e15b915c1eb}) ---------- @@ -1258,14 +1333,14 @@ The name of the StateType ({50be490b-ba5d-4b1f-806c-9e15b915c1eb}) of ThingClass - + Power factor (Phase A) changed The name of the EventType ({50be490b-ba5d-4b1f-806c-9e15b915c1eb}) of ThingClass shellyEm3 - - + + Power factor (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: powerFactorPhaseB, ID: {f56504bb-0c6c-4425-831c-771b23aadf19}) ---------- @@ -1273,14 +1348,14 @@ The name of the StateType ({f56504bb-0c6c-4425-831c-771b23aadf19}) of ThingClass - + Power factor (Phase B) changed The name of the EventType ({f56504bb-0c6c-4425-831c-771b23aadf19}) of ThingClass shellyEm3 - - + + Power factor (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: powerFactorPhaseC, ID: {2e2c622f-1575-4d0b-a0c0-78bc03748c1e}) ---------- @@ -1288,14 +1363,20 @@ The name of the StateType ({2e2c622f-1575-4d0b-a0c0-78bc03748c1e}) of ThingClass - + Power factor (Phase C) changed The name of the EventType ({2e2c622f-1575-4d0b-a0c0-78bc03748c1e}) of ThingClass shellyEm3 - - + + Power factor changed + The name of the EventType ({fd5898ce-c8c9-422d-a32a-996d4004ca15}) of ThingClass shellyEmChannel + + + + + Power usage (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPowerPhaseA, ID: {432ba180-936d-4700-907e-766264bfdd35}) ---------- @@ -1303,14 +1384,14 @@ The name of the StateType ({432ba180-936d-4700-907e-766264bfdd35}) of ThingClass - + Power usage (Phase A) changed The name of the EventType ({432ba180-936d-4700-907e-766264bfdd35}) of ThingClass shellyEm3 - - + + Power usage (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPowerPhaseB, ID: {02edeedb-8a93-41f8-8bc5-09031b7d2d4d}) ---------- @@ -1318,14 +1399,14 @@ The name of the StateType ({02edeedb-8a93-41f8-8bc5-09031b7d2d4d}) of ThingClass - + Power usage (Phase B) changed The name of the EventType ({02edeedb-8a93-41f8-8bc5-09031b7d2d4d}) of ThingClass shellyEm3 - - + + Power usage (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: currentPowerPhaseC, ID: {82277a4e-49cc-45f4-8b29-470ce99333b6}) ---------- @@ -1333,29 +1414,38 @@ The name of the StateType ({82277a4e-49cc-45f4-8b29-470ce99333b6}) of ThingClass - + Power usage (Phase C) changed The name of the EventType ({82277a4e-49cc-45f4-8b29-470ce99333b6}) of ThingClass shellyEm3 - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Powered - The name of the ParamType (ThingClass: shellyEm3, ActionType: power, ID: {639dda4c-e354-43ca-a785-fbe6806986e2}) + The name of the ParamType (ThingClass: shellyEm, ActionType: power, ID: {9a2c6304-91d6-45fc-8ef7-75355457eca5}) +---------- +The name of the ParamType (ThingClass: shellyEm, EventType: power, ID: {9a2c6304-91d6-45fc-8ef7-75355457eca5}) +---------- +The name of the StateType ({9a2c6304-91d6-45fc-8ef7-75355457eca5}) of ThingClass shellyEm +---------- +The name of the ParamType (ThingClass: shellyEm3, ActionType: power, ID: {639dda4c-e354-43ca-a785-fbe6806986e2}) ---------- The name of the ParamType (ThingClass: shellyEm3, EventType: power, ID: {639dda4c-e354-43ca-a785-fbe6806986e2}) ---------- @@ -1387,20 +1477,20 @@ The name of the StateType ({5b7eeb6c-6113-41f3-a61b-3076d087c9fe}) of ThingClass - + Presence detected The name of the EventType ({45c0cc07-0e13-449c-86a7-ab65d5cdf637}) of ThingClass shellyMotion - + Press count The name of the ParamType (ThingClass: shellyI3, EventType: pressed, ID: {0ed31339-7457-443c-b6e3-3b8ce3fc2bd8}) - - + + Pressed The name of the EventType ({41498655-1943-4b46-ac36-adea7bafab87}) of ThingClass shellySwitch ---------- @@ -1408,15 +1498,30 @@ The name of the EventType ({25955cb9-dc0e-48dc-91b1-ba27e30a3a3f}) of ThingClass - - - - - - - - - + + + Reactive power + The name of the ParamType (ThingClass: shellyEmChannel, EventType: reactivePowerPhaseA, ID: {abdb5b38-05d3-4c12-aed2-f7c560d6b4e8}) +---------- +The name of the StateType ({abdb5b38-05d3-4c12-aed2-f7c560d6b4e8}) of ThingClass shellyEmChannel + + + + + Reactive power changed + The name of the EventType ({abdb5b38-05d3-4c12-aed2-f7c560d6b4e8}) of ThingClass shellyEmChannel + + + + + + + + + + + + Reboot The name of the ActionType ({162e7791-6890-4075-8e57-a4c15b9359bb}) of ThingClass shellyI3 ---------- @@ -1438,20 +1543,23 @@ The name of the ActionType ({b4067d54-36c5-4d30-bbc3-c8c712d6fd32}) of ThingClas - + Remain awake The name of the ParamType (ThingClass: shellyButton1, Type: settings, ID: {45d4628d-7d8c-43b6-ac86-6232caa5816f}) - + + Reset data - The name of the ActionType ({87772e43-1bf7-496b-b8be-46db39f71700}) of ThingClass shellyEm3 + The name of the ActionType ({09f6d675-4c22-4a9f-b9f2-3349ab947529}) of ThingClass shellyEm +---------- +The name of the ActionType ({87772e43-1bf7-496b-b8be-46db39f71700}) of ThingClass shellyEm3 - - + + Set brightness The name of the ActionType ({f41c93ac-6911-45fc-9221-7dd26bf65fd0}) of ThingClass shellyDimmer ---------- @@ -1459,26 +1567,26 @@ The name of the ActionType ({3f74eb92-d95b-48c2-8ac6-29bea9f65ce3}) of ThingClas - + Set color The name of the ActionType ({6ef7c686-350d-4069-9c41-9b90b3906748}) of ThingClass shellyRgbw2 - + Set color temperature The name of the ActionType ({a32a457f-fdc0-46ce-9106-6f9d4f4a6b16}) of ThingClass shellyRgbw2 - + Set position The name of the ActionType ({86270b8b-bce4-4d8a-9bc9-d72af36b991c}) of ThingClass shellyRoller - - + + Shelly The name of the vendor ({d8e45fc2-90af-492e-8305-50baa1ec4c18}) ---------- @@ -1486,76 +1594,94 @@ The name of the plugin shelly ({6162773b-0435-408c-a4f8-7860d38031a9}) - + Shelly 1 The name of the ThingClass ({f810b66a-7177-4397-9771-4229abaabbb6}) - + Shelly 1L The name of the ThingClass ({20754114-1591-48b5-af2f-8c9966adb7c4}) - + Shelly 1PM The name of the ThingClass ({30e74e9f-57f4-4bbc-b0df-f2c4f28b2f06}) - + Shelly 2 The name of the ThingClass ({f277d3a3-62e0-49c1-90b2-4108578e80bf}) - + Shelly 2.5 The name of the ThingClass ({465efb0d-da68-4177-a040-940c7f451e29}) - + Shelly 3EM The name of the ThingClass ({ba293550-d2af-4463-b973-e1812ab67b96}) - - Shelly Dimmer / Dimmer 2 + + Shelly Dimmer (2) / Vintage The name of the ThingClass ({3a1d6fc1-c623-4b45-9c81-1573fcc15f99}) - + + Shelly EM + The name of the ThingClass ({bcc7326d-555a-4763-80ce-7354e67cc700}) + + + + + Shelly EM Channel + The name of the ThingClass ({67ccc046-c8b5-4584-8f7f-6fe0a0c6a860}) + + + + Shelly H&T The name of the ThingClass ({cc75be5c-8e34-4f72-a55d-c96e4c85d4be}) - + Shelly I3 The name of the ThingClass ({a4557bcc-bdae-4178-b774-5881a8ae490a}) - - - - - - - - - - - - - + + + + + + + + + + + + + + + Shelly ID The name of the ParamType (ThingClass: shellyMotion, Type: thing, ID: {b92fe8ba-8bfb-4d9a-9fb9-8d55ace8cfb4}) ---------- +The name of the ParamType (ThingClass: shellyEmChannel, Type: thing, ID: {b9b85416-0d48-4e71-9471-03385f8fc619}) +---------- +The name of the ParamType (ThingClass: shellyEm, Type: thing, ID: {e44d6880-4e54-44b0-85f5-4e035179402e}) +---------- The name of the ParamType (ThingClass: shellyEm3, Type: thing, ID: {a80894d2-dfba-4699-892d-081702b0f1f5}) ---------- The name of the ParamType (ThingClass: shellyHT, Type: thing, ID: {b6882bd5-7b1f-447b-9aa7-34aeeb538697}) @@ -1582,38 +1708,38 @@ The name of the ParamType (ThingClass: shelly1, Type: thing, ID: {1d301dc0-5e48- - + Shelly Motion The name of the ThingClass ({a82737bb-f2d6-442e-a468-5acc0a2e4cd7}) - + Shelly Plug/PlugS The name of the ThingClass ({22229a6d-2af8-44e0-bea9-310a0f2769ef}) - + Shelly RGBW2 The name of the ThingClass ({17f24cec-e6ed-4abd-9d42-60999f391dba}) - + Shelly button 1 The name of the ThingClass ({3eba6b29-f634-4ade-80a3-2159803373cc}) - + Shelly connected Roller Shutter The name of the ThingClass ({d681a4cb-481a-4469-a49a-e6bbb11eb9c9}) - - + + Shelly connected device The name of the ThingClass ({3bd614e0-72c4-4fbe-8c70-ce6c48d04bce}) ---------- @@ -1621,8 +1747,8 @@ The name of the ThingClass ({512c3c7d-d6a6-4d2a-bccd-83147e5f9a25}) - - + + Shelly connected light The name of the ThingClass ({5ab05c19-71aa-4a85-a02f-a108f039a69a}) ---------- @@ -1630,8 +1756,8 @@ The name of the ThingClass ({62a2d6b8-d70d-45fc-ba8c-1c680282a399}) - - + + Shelly connected power socket The name of the ThingClass ({ae6e55fe-1a0b-43bc-bdfb-605661b96905}) ---------- @@ -1639,60 +1765,64 @@ The name of the ThingClass ({3e13206c-a6cd-49a0-b653-2ccb5bb4bbc1}) - + Shelly switch The name of the ThingClass ({6de35a17-0f54-4397-894d-4321b64c53d1}) - + Short Pressed The name of the EventType ({79648810-b2f4-4aa5-902f-2875242e7bf8}) of ThingClass shellyI3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Signal strength The name of the ParamType (ThingClass: shellyRoller, EventType: signalStrength, ID: {f46c52ce-58dd-4d07-bb69-e8b8719c41bc}) ---------- @@ -1726,6 +1856,14 @@ The name of the ParamType (ThingClass: shellyMotion, EventType: signalStrength, ---------- The name of the StateType ({ecc61ce2-cb66-47ce-a65c-3b9e43ce6fdc}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEmChannel, EventType: signalStrength, ID: {d1928e72-73e6-4009-846e-149f80ad5899}) +---------- +The name of the StateType ({d1928e72-73e6-4009-846e-149f80ad5899}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm, EventType: signalStrength, ID: {87664175-4b84-4cfe-9bee-5d1bcf2566f8}) +---------- +The name of the StateType ({87664175-4b84-4cfe-9bee-5d1bcf2566f8}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: signalStrength, ID: {0f147c29-aefd-4926-a979-35dfeaec12c0}) ---------- The name of the StateType ({0f147c29-aefd-4926-a979-35dfeaec12c0}) of ThingClass shellyEm3 @@ -1780,27 +1918,29 @@ The name of the StateType ({74c631ed-fc3d-49e8-9dec-99cafa70c559}) of ThingClass - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + Signal strength changed The name of the EventType ({f46c52ce-58dd-4d07-bb69-e8b8719c41bc}) of ThingClass shellyRoller ---------- @@ -1818,6 +1958,10 @@ The name of the EventType ({e48d19f1-e04b-4c5d-b515-15bb22060607}) of ThingClass ---------- The name of the EventType ({ecc61ce2-cb66-47ce-a65c-3b9e43ce6fdc}) of ThingClass shellyMotion ---------- +The name of the EventType ({d1928e72-73e6-4009-846e-149f80ad5899}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({87664175-4b84-4cfe-9bee-5d1bcf2566f8}) of ThingClass shellyEm +---------- The name of the EventType ({0f147c29-aefd-4926-a979-35dfeaec12c0}) of ThingClass shellyEm3 ---------- The name of the EventType ({5088cd2d-8f71-4cfb-a120-4a2d4a84355d}) of ThingClass shellySwitch @@ -1846,13 +1990,16 @@ The name of the EventType ({74c631ed-fc3d-49e8-9dec-99cafa70c559}) of ThingClass - - - - + + + + + Start firmware update The name of the ActionType ({17327674-f160-44e1-8a3d-fc2b6e1ee319}) of ThingClass shellyMotion ---------- +The name of the ActionType ({6a30f435-2b35-4df5-8a20-ef3dbec817c9}) of ThingClass shellyEm +---------- The name of the ActionType ({f230d689-53f8-4542-9b20-9993b1c2eb27}) of ThingClass shellyEm3 ---------- The name of the ActionType ({e32aaff9-b2f8-437e-b7b4-5b519d9e5e21}) of ThingClass shellyHT @@ -1861,14 +2008,14 @@ The name of the ActionType ({87b24064-5db7-4590-a9d8-f6d8fd02ed6e}) of ThingClas - + Status LED enabled The name of the ParamType (ThingClass: shellyButton1, Type: settings, ID: {420298a7-bcf8-4970-951e-f6ee5efa1013}) - - + + Temperature The name of the ParamType (ThingClass: shellyHT, EventType: temperature, ID: {507e7ca7-e1ab-4e7c-8097-4aedf924f797}) ---------- @@ -1876,23 +2023,29 @@ The name of the StateType ({507e7ca7-e1ab-4e7c-8097-4aedf924f797}) of ThingClass - + Temperature changed The name of the EventType ({507e7ca7-e1ab-4e7c-8097-4aedf924f797}) of ThingClass shellyHT - - + + + + Total consumed energy - The name of the ParamType (ThingClass: shellyEm3, EventType: totalEnergyConsumed, ID: {67050a5a-cc78-4d11-a7d9-a9db528029ff}) + The name of the ParamType (ThingClass: shellyEmChannel, EventType: totalEnergyConsumed, ID: {4ce53fa0-d6b7-4c1b-87d9-edcaeedb640e}) +---------- +The name of the StateType ({4ce53fa0-d6b7-4c1b-87d9-edcaeedb640e}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm3, EventType: totalEnergyConsumed, ID: {67050a5a-cc78-4d11-a7d9-a9db528029ff}) ---------- The name of the StateType ({67050a5a-cc78-4d11-a7d9-a9db528029ff}) of ThingClass shellyEm3 - - + + Total consumed energy (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: energyConsumedPhaseA, ID: {ba25ef68-bb52-4e96-a8fb-137aae966104}) ---------- @@ -1900,14 +2053,14 @@ The name of the StateType ({ba25ef68-bb52-4e96-a8fb-137aae966104}) of ThingClass - + Total consumed energy (Phase A) changed The name of the EventType ({ba25ef68-bb52-4e96-a8fb-137aae966104}) of ThingClass shellyEm3 - - + + Total consumed energy (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: energyConsumedPhaseB, ID: {6636e6a0-e3ca-4654-9506-4302c4e8eed7}) ---------- @@ -1915,14 +2068,14 @@ The name of the StateType ({6636e6a0-e3ca-4654-9506-4302c4e8eed7}) of ThingClass - + Total consumed energy (Phase B) changed The name of the EventType ({6636e6a0-e3ca-4654-9506-4302c4e8eed7}) of ThingClass shellyEm3 - - + + Total consumed energy (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: energyConsumedPhaseC, ID: {452c2159-aa2f-4217-80e5-4b492b69671e}) ---------- @@ -1930,17 +2083,20 @@ The name of the StateType ({452c2159-aa2f-4217-80e5-4b492b69671e}) of ThingClass - + Total consumed energy (Phase C) changed The name of the EventType ({452c2159-aa2f-4217-80e5-4b492b69671e}) of ThingClass shellyEm3 - - - + + + + Total consumed energy changed - The name of the EventType ({67050a5a-cc78-4d11-a7d9-a9db528029ff}) of ThingClass shellyEm3 + The name of the EventType ({4ce53fa0-d6b7-4c1b-87d9-edcaeedb640e}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({67050a5a-cc78-4d11-a7d9-a9db528029ff}) of ThingClass shellyEm3 ---------- The name of the EventType ({0f879e7b-2124-4d98-9828-e5bbd1b344ce}) of ThingClass shelly1l ---------- @@ -1948,10 +2104,10 @@ The name of the EventType ({23594959-1cd4-4e23-a7ae-b0b7fbd29daa}) of ThingClass - - - - + + + + Total energy changed The name of the EventType ({a7d88654-7503-474d-9a7c-02150d61a6dc}) of ThingClass shellyRoller ---------- @@ -1963,20 +2119,20 @@ The name of the EventType ({54b0b02e-1dfe-4172-bdfd-8129709e5d9f}) of ThingClass - - - - - - - - - - - - - - + + + + + + + + + + + + + + Total energy consumed The name of the ParamType (ThingClass: shellyRoller, EventType: totalEnergyConsumed, ID: {a7d88654-7503-474d-9a7c-02150d61a6dc}) ---------- @@ -2008,17 +2164,23 @@ The name of the StateType ({23594959-1cd4-4e23-a7ae-b0b7fbd29daa}) of ThingClass - - + + + + Total returned energy - The name of the ParamType (ThingClass: shellyEm3, EventType: totalEnergyProduced, ID: {088cb7df-9187-4206-ae5b-18a00e4f1969}) + The name of the ParamType (ThingClass: shellyEmChannel, EventType: totalEnergyProduced, ID: {7fe88e8f-a1c4-4e8d-a1de-9135b80bc7e3}) +---------- +The name of the StateType ({7fe88e8f-a1c4-4e8d-a1de-9135b80bc7e3}) of ThingClass shellyEmChannel +---------- +The name of the ParamType (ThingClass: shellyEm3, EventType: totalEnergyProduced, ID: {088cb7df-9187-4206-ae5b-18a00e4f1969}) ---------- The name of the StateType ({088cb7df-9187-4206-ae5b-18a00e4f1969}) of ThingClass shellyEm3 - - + + Total returned energy (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: energyProducedPhaseA, ID: {34562cd3-b178-4f68-903d-a01e20d0ad76}) ---------- @@ -2026,14 +2188,14 @@ The name of the StateType ({34562cd3-b178-4f68-903d-a01e20d0ad76}) of ThingClass - + Total returned energy (Phase A) changed The name of the EventType ({34562cd3-b178-4f68-903d-a01e20d0ad76}) of ThingClass shellyEm3 - - + + Total returned energy (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: energyProducedPhaseB, ID: {d70a0d1a-cac1-4250-85fa-4859ad2dc947}) ---------- @@ -2041,14 +2203,14 @@ The name of the StateType ({d70a0d1a-cac1-4250-85fa-4859ad2dc947}) of ThingClass - + Total returned energy (Phase B) changed The name of the EventType ({d70a0d1a-cac1-4250-85fa-4859ad2dc947}) of ThingClass shellyEm3 - - + + Total returned energy (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: energyProducedPhaseC, ID: {de248e26-b617-4d22-9175-752e2d695274}) ---------- @@ -2056,40 +2218,44 @@ The name of the StateType ({de248e26-b617-4d22-9175-752e2d695274}) of ThingClass - + Total returned energy (Phase C) changed The name of the EventType ({de248e26-b617-4d22-9175-752e2d695274}) of ThingClass shellyEm3 - + + Total returned energy changed - The name of the EventType ({088cb7df-9187-4206-ae5b-18a00e4f1969}) of ThingClass shellyEm3 + The name of the EventType ({7fe88e8f-a1c4-4e8d-a1de-9135b80bc7e3}) of ThingClass shellyEmChannel +---------- +The name of the EventType ({088cb7df-9187-4206-ae5b-18a00e4f1969}) of ThingClass shellyEm3 - + Turn channel 1 on or off The name of the ActionType ({118d572c-cc12-4037-82d8-7d8f6fb4a364}) of ThingClass shelly25 - + Turn channel 2 on or off The name of the ActionType ({7952aec0-cd27-4ef9-87a6-c499564bc1d4}) of ThingClass shelly25 - - - - - - - - - - + + + + + + + + + + + Turn on or off The name of the ActionType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of ThingClass shellySocketPM ---------- @@ -2103,6 +2269,8 @@ The name of the ActionType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of ThingClas ---------- The name of the ActionType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of ThingClass shellyGeneric ---------- +The name of the ActionType ({9a2c6304-91d6-45fc-8ef7-75355457eca5}) of ThingClass shellyEm +---------- The name of the ActionType ({639dda4c-e354-43ca-a785-fbe6806986e2}) of ThingClass shellyEm3 ---------- The name of the ActionType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of ThingClass shellyDimmer @@ -2113,9 +2281,9 @@ The name of the ActionType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of ThingClas - - - + + + Turn on/off The name of the ActionType ({94276bb9-ef68-47ab-8e74-34ebe54b411f}) of ThingClass shelly1l ---------- @@ -2125,16 +2293,17 @@ The name of the ActionType ({5b7eeb6c-6113-41f3-a61b-3076d087c9fe}) of ThingClas - - - - - - - - - - + + + + + + + + + + + Turned on or off The name of the EventType ({d6adeab6-c91d-44ba-8d01-9b5b9b7368be}) of ThingClass shellySocketPM ---------- @@ -2148,6 +2317,8 @@ The name of the EventType ({bd9480af-eec2-42d7-ab17-15715ee2e8e0}) of ThingClass ---------- The name of the EventType ({72d7dbba-757c-4b03-a092-1d3f374fa961}) of ThingClass shellyGeneric ---------- +The name of the EventType ({9a2c6304-91d6-45fc-8ef7-75355457eca5}) of ThingClass shellyEm +---------- The name of the EventType ({639dda4c-e354-43ca-a785-fbe6806986e2}) of ThingClass shellyEm3 ---------- The name of the EventType ({e4a6ac87-31fb-4516-9cf3-f135621e902c}) of ThingClass shellyDimmer @@ -2158,9 +2329,9 @@ The name of the EventType ({d813b35f-e11e-4783-b3b3-dbecb956ffb5}) of ThingClass - - - + + + Turned on/off The name of the EventType ({94276bb9-ef68-47ab-8e74-34ebe54b411f}) of ThingClass shelly1l ---------- @@ -2170,15 +2341,15 @@ The name of the EventType ({5b7eeb6c-6113-41f3-a61b-3076d087c9fe}) of ThingClass - - - - - - - - - + + + + + + + + + Update firmware The name of the ActionType ({1c677ecb-c54e-4c95-a3f7-e68fabeeda08}) of ThingClass shellyI3 ---------- @@ -2200,35 +2371,41 @@ The name of the ActionType ({6f814339-9a48-4027-a3f8-760742ff22ba}) of ThingClas - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + Update status The name of the ParamType (ThingClass: shellyMotion, EventType: updateStatus, ID: {a604a66c-3143-45ce-a6e3-17a339f428ab}) ---------- The name of the StateType ({a604a66c-3143-45ce-a6e3-17a339f428ab}) of ThingClass shellyMotion ---------- +The name of the ParamType (ThingClass: shellyEm, EventType: updateStatus, ID: {ad5d523e-9a4d-47d2-912c-c8ec5081f9ff}) +---------- +The name of the StateType ({ad5d523e-9a4d-47d2-912c-c8ec5081f9ff}) of ThingClass shellyEm +---------- The name of the ParamType (ThingClass: shellyEm3, EventType: updateStatus, ID: {8e25bbc2-54d8-4aa1-8ca5-f61b5f17a03b}) ---------- The name of the StateType ({8e25bbc2-54d8-4aa1-8ca5-f61b5f17a03b}) of ThingClass shellyEm3 @@ -2275,21 +2452,24 @@ The name of the StateType ({68bf3780-8f7f-4ecb-8498-830e257c192c}) of ThingClass - - - - - - - - - - - - + + + + + + + + + + + + + Update status changed The name of the EventType ({a604a66c-3143-45ce-a6e3-17a339f428ab}) of ThingClass shellyMotion ---------- +The name of the EventType ({ad5d523e-9a4d-47d2-912c-c8ec5081f9ff}) of ThingClass shellyEm +---------- The name of the EventType ({8e25bbc2-54d8-4aa1-8ca5-f61b5f17a03b}) of ThingClass shellyEm3 ---------- The name of the EventType ({fdda809d-0807-4495-9d50-f9e2a12894ac}) of ThingClass shellyHT @@ -2314,22 +2494,25 @@ The name of the EventType ({68bf3780-8f7f-4ecb-8498-830e257c192c}) of ThingClass - - - - - - - - - - - - - + + + + + + + + + + + + + + Username (optional) The name of the ParamType (ThingClass: shellyMotion, Type: thing, ID: {ea210ec8-37ed-4479-9454-48cc06a1df88}) ---------- +The name of the ParamType (ThingClass: shellyEm, Type: thing, ID: {61957e60-4b77-4aa7-893f-e94559cac15c}) +---------- The name of the ParamType (ThingClass: shellyEm3, Type: thing, ID: {21e11417-b862-44e6-828f-d65207328630}) ---------- The name of the ParamType (ThingClass: shellyHT, Type: thing, ID: {1ea30a6f-5139-4452-8e23-0c525494c9c8}) @@ -2356,8 +2539,8 @@ The name of the ParamType (ThingClass: shelly1, Type: thing, ID: {fa1aa0f6-93b2- - - + + Vibration The name of the ParamType (ThingClass: shellyMotion, EventType: vibration, ID: {76438c2d-9742-4680-9139-d4b4e988cfd2}) ---------- @@ -2365,14 +2548,23 @@ The name of the StateType ({76438c2d-9742-4680-9139-d4b4e988cfd2}) of ThingClass - + Vibration detected The name of the EventType ({76438c2d-9742-4680-9139-d4b4e988cfd2}) of ThingClass shellyMotion - - + + + Voltage + The name of the ParamType (ThingClass: shellyEmChannel, EventType: voltagePhaseA, ID: {d6cb777f-c9af-46d8-845a-883ac05c206a}) +---------- +The name of the StateType ({d6cb777f-c9af-46d8-845a-883ac05c206a}) of ThingClass shellyEmChannel + + + + + Voltage (Phase A) The name of the ParamType (ThingClass: shellyEm3, EventType: voltagePhaseA, ID: {5977ffab-cdcf-409c-940b-aa0a59de84a5}) ---------- @@ -2380,14 +2572,14 @@ The name of the StateType ({5977ffab-cdcf-409c-940b-aa0a59de84a5}) of ThingClass - + Voltage (Phase A) changed The name of the EventType ({5977ffab-cdcf-409c-940b-aa0a59de84a5}) of ThingClass shellyEm3 - - + + Voltage (Phase B) The name of the ParamType (ThingClass: shellyEm3, EventType: voltagePhaseB, ID: {7c846993-fb06-48ef-987c-7b35d9671070}) ---------- @@ -2395,14 +2587,14 @@ The name of the StateType ({7c846993-fb06-48ef-987c-7b35d9671070}) of ThingClass - + Voltage (Phase B) changed The name of the EventType ({7c846993-fb06-48ef-987c-7b35d9671070}) of ThingClass shellyEm3 - - + + Voltage (Phase C) The name of the ParamType (ThingClass: shellyEm3, EventType: voltagePhaseC, ID: {cd7af1b2-d5f0-4c2e-b85c-84f23ae1fbb9}) ---------- @@ -2410,13 +2602,19 @@ The name of the StateType ({cd7af1b2-d5f0-4c2e-b85c-84f23ae1fbb9}) of ThingClass - + Voltage (Phase C) changed The name of the EventType ({cd7af1b2-d5f0-4c2e-b85c-84f23ae1fbb9}) of ThingClass shellyEm3 - + + Voltage changed + The name of the EventType ({d6cb777f-c9af-46d8-845a-883ac05c206a}) of ThingClass shellyEmChannel + + + + stop The name of the ActionType ({2266303c-df0c-4eae-b15e-6a86e73c9699}) of ThingClass shellyRoller From 8ce779b25848fc34da7367ea2673053018048b14 Mon Sep 17 00:00:00 2001 From: loosrob <79396812+loosrob@users.noreply.github.com> Date: Wed, 9 Feb 2022 09:04:03 +0100 Subject: [PATCH 08/10] signalstrength default to zero --- shelly/integrationpluginshelly.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shelly/integrationpluginshelly.json b/shelly/integrationpluginshelly.json index a482edab..8e12638b 100644 --- a/shelly/integrationpluginshelly.json +++ b/shelly/integrationpluginshelly.json @@ -1925,7 +1925,7 @@ "unit": "Percentage", "minValue": 0, "maxValue": 100, - "defaultValue": 100, + "defaultValue": 0, "cached": false }, { From 33a1934ef3808bf9831cba7d0a313151eed0bcfc Mon Sep 17 00:00:00 2001 From: loosrob <79396812+loosrob@users.noreply.github.com> Date: Sat, 12 Feb 2022 11:35:42 +0100 Subject: [PATCH 09/10] process power factor --- shelly/integrationpluginshelly.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/shelly/integrationpluginshelly.cpp b/shelly/integrationpluginshelly.cpp index b010da51..8a91fe14 100644 --- a/shelly/integrationpluginshelly.cpp +++ b/shelly/integrationpluginshelly.cpp @@ -1146,6 +1146,7 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr QVariant value = payload; QHash stateTypeIdMap; stateTypeIdMap["power"] = shellyEmChannelCurrentPowerStateTypeId; + stateTypeIdMap["pf"] = shellyEmChannelPowerFactorPhaseAStateTypeId; stateTypeIdMap["reactive_power"] = shellyEmChannelReactivePowerPhaseAStateTypeId; stateTypeIdMap["voltage"] = shellyEmChannelVoltagePhaseAStateTypeId; stateTypeIdMap["total"] = shellyEmChannelTotalEnergyConsumedStateTypeId; @@ -1182,14 +1183,14 @@ void IntegrationPluginShelly::onPublishReceived(MqttChannel *channel, const QStr } else { child->setStateValue(shellyEmChannelCurrentPhaseAStateTypeId, 0); } - double reactivePower = child->stateValue(shellyEmChannelReactivePowerPhaseAStateTypeId).toDouble(); + /*double reactivePower = child->stateValue(shellyEmChannelReactivePowerPhaseAStateTypeId).toDouble(); double root = qSqrt(power*power + reactivePower*reactivePower); if (qFuzzyCompare(root, 0) == false) { double calcPf = power/root; child->setStateValue(shellyEmChannelPowerFactorPhaseAStateTypeId, calcPf); } else { child->setStateValue(shellyEmChannelPowerFactorPhaseAStateTypeId, 0); - } + }*/ } }