Merge PR #580: Tasmota: Add support for energy metering
This commit is contained in:
commit
f3403ef943
@ -42,9 +42,11 @@
|
|||||||
#include "network/mqtt/mqttchannel.h"
|
#include "network/mqtt/mqttchannel.h"
|
||||||
|
|
||||||
static QHash<QString, StateTypeId> sonoff_basicPowerStateTypeIds = {
|
static QHash<QString, StateTypeId> sonoff_basicPowerStateTypeIds = {
|
||||||
|
{"POWER", sonoff_basicPowerStateTypeId}, // On single channel devices, sometimes there's no index
|
||||||
{"POWER1", sonoff_basicPowerStateTypeId},
|
{"POWER1", sonoff_basicPowerStateTypeId},
|
||||||
};
|
};
|
||||||
static QHash<QString, StateTypeId> sonoff_dimmerPowerStateTypeIds = {
|
static QHash<QString, StateTypeId> sonoff_dimmerPowerStateTypeIds = {
|
||||||
|
{"POWER", sonoff_dimmerPowerStateTypeId}, // On single channel devices, sometimes there's no index
|
||||||
{"POWER1", sonoff_dimmerPowerStateTypeId},
|
{"POWER1", sonoff_dimmerPowerStateTypeId},
|
||||||
};
|
};
|
||||||
static QHash<QString, StateTypeId> sonoff_dualPowerStateTypeIds = {
|
static QHash<QString, StateTypeId> sonoff_dualPowerStateTypeIds = {
|
||||||
@ -92,9 +94,6 @@ IntegrationPluginTasmota::IntegrationPluginTasmota()
|
|||||||
m_openingChannelParamTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsThingOpeningChannelParamTypeId;
|
m_openingChannelParamTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsThingOpeningChannelParamTypeId;
|
||||||
m_closingChannelParamTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsThingClosingChannelParamTypeId;
|
m_closingChannelParamTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsThingClosingChannelParamTypeId;
|
||||||
|
|
||||||
m_powerStateTypeMap[tasmotaSwitchThingClassId] = tasmotaSwitchPowerStateTypeId;
|
|
||||||
m_powerStateTypeMap[tasmotaLightThingClassId] = tasmotaLightPowerStateTypeId;
|
|
||||||
|
|
||||||
m_closableOpenActionTypeMap[tasmotaShutterThingClassId] = tasmotaShutterOpenActionTypeId;
|
m_closableOpenActionTypeMap[tasmotaShutterThingClassId] = tasmotaShutterOpenActionTypeId;
|
||||||
m_closableCloseActionTypeMap[tasmotaShutterThingClassId] = tasmotaShutterCloseActionTypeId;
|
m_closableCloseActionTypeMap[tasmotaShutterThingClassId] = tasmotaShutterCloseActionTypeId;
|
||||||
m_closableStopActionTypeMap[tasmotaShutterThingClassId] = tasmotaShutterStopActionTypeId;
|
m_closableStopActionTypeMap[tasmotaShutterThingClassId] = tasmotaShutterStopActionTypeId;
|
||||||
@ -102,29 +101,6 @@ IntegrationPluginTasmota::IntegrationPluginTasmota()
|
|||||||
m_closableOpenActionTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsOpenActionTypeId;
|
m_closableOpenActionTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsOpenActionTypeId;
|
||||||
m_closableCloseActionTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsCloseActionTypeId;
|
m_closableCloseActionTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsCloseActionTypeId;
|
||||||
m_closableStopActionTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsStopActionTypeId;
|
m_closableStopActionTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsStopActionTypeId;
|
||||||
|
|
||||||
// Helper maps for all devices
|
|
||||||
m_connectedStateTypeMap[sonoff_basicThingClassId] = sonoff_basicConnectedStateTypeId;
|
|
||||||
m_connectedStateTypeMap[sonoff_dualThingClassId] = sonoff_dualConnectedStateTypeId;
|
|
||||||
m_connectedStateTypeMap[sonoff_triThingClassId] = sonoff_triConnectedStateTypeId;
|
|
||||||
m_connectedStateTypeMap[sonoff_quadThingClassId] = sonoff_quadConnectedStateTypeId;
|
|
||||||
m_connectedStateTypeMap[sonoff_dimmerThingClassId] = sonoff_dimmerConnectedStateTypeId;
|
|
||||||
m_connectedStateTypeMap[tasmotaSwitchThingClassId] = tasmotaSwitchConnectedStateTypeId;
|
|
||||||
m_connectedStateTypeMap[tasmotaLightThingClassId] = tasmotaLightConnectedStateTypeId;
|
|
||||||
m_connectedStateTypeMap[tasmotaShutterThingClassId] = tasmotaShutterConnectedStateTypeId;
|
|
||||||
m_connectedStateTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsConnectedStateTypeId;
|
|
||||||
|
|
||||||
m_signalStrengthStateTypeMap[sonoff_basicThingClassId] = sonoff_basicSignalStrengthStateTypeId;
|
|
||||||
m_signalStrengthStateTypeMap[sonoff_dualThingClassId] = sonoff_dualSignalStrengthStateTypeId;
|
|
||||||
m_signalStrengthStateTypeMap[sonoff_triThingClassId] = sonoff_triSignalStrengthStateTypeId;
|
|
||||||
m_signalStrengthStateTypeMap[sonoff_quadThingClassId] = sonoff_quadSignalStrengthStateTypeId;
|
|
||||||
m_signalStrengthStateTypeMap[sonoff_dimmerThingClassId] = sonoff_dimmerSignalStrengthStateTypeId;
|
|
||||||
m_signalStrengthStateTypeMap[tasmotaSwitchThingClassId] = tasmotaSwitchSignalStrengthStateTypeId;
|
|
||||||
m_signalStrengthStateTypeMap[tasmotaLightThingClassId] = tasmotaLightSignalStrengthStateTypeId;
|
|
||||||
m_signalStrengthStateTypeMap[tasmotaShutterThingClassId] = tasmotaShutterSignalStrengthStateTypeId;
|
|
||||||
m_signalStrengthStateTypeMap[tasmotaBlindsThingClassId] = tasmotaBlindsSignalStrengthStateTypeId;
|
|
||||||
|
|
||||||
m_brightnessStateTypeMap[sonoff_dimmerThingClassId] = sonoff_dimmerBrightnessStateTypeId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IntegrationPluginTasmota::~IntegrationPluginTasmota()
|
IntegrationPluginTasmota::~IntegrationPluginTasmota()
|
||||||
@ -164,6 +140,7 @@ void IntegrationPluginTasmota::setupThing(ThingSetupInfo *info)
|
|||||||
configItems.insert("MqttUser", channel->username());
|
configItems.insert("MqttUser", channel->username());
|
||||||
configItems.insert("MqttPassword", channel->password());
|
configItems.insert("MqttPassword", channel->password());
|
||||||
configItems.insert("Topic", "sonoff");
|
configItems.insert("Topic", "sonoff");
|
||||||
|
configItems.insert("TelePeriod", "10");
|
||||||
configItems.insert("FullTopic", channel->topicPrefixList().first() + "/%topic%/");
|
configItems.insert("FullTopic", channel->topicPrefixList().first() + "/%topic%/");
|
||||||
|
|
||||||
QStringList configList;
|
QStringList configList;
|
||||||
@ -266,10 +243,9 @@ void IntegrationPluginTasmota::setupThing(ThingSetupInfo *info)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_connectedStateTypeMap.contains(thing->thingClassId())) {
|
if (thing->hasState("connected")) {
|
||||||
Thing* parentDevice = myThings().findById(thing->parentId());
|
Thing* parentDevice = myThings().findById(thing->parentId());
|
||||||
StateTypeId connectedStateTypeId = m_connectedStateTypeMap.value(thing->thingClassId());
|
thing->setStateValue("connected", parentDevice->stateValue("connected"));
|
||||||
thing->setStateValue(m_connectedStateTypeMap.value(thing->thingClassId()), parentDevice->stateValue(connectedStateTypeId));
|
|
||||||
return info->finish(Thing::ThingErrorNoError);
|
return info->finish(Thing::ThingErrorNoError);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,7 +303,7 @@ void IntegrationPluginTasmota::executeAction(ThingActionInfo *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Legacy (deprecated) connected devices
|
// Legacy (deprecated) connected devices
|
||||||
if (m_powerStateTypeMap.contains(thing->thingClassId())) {
|
if (thing->hasState("power")) {
|
||||||
Thing *parentDev = myThings().findById(thing->parentId());
|
Thing *parentDev = myThings().findById(thing->parentId());
|
||||||
MqttChannel *channel = m_mqttChannels.value(parentDev);
|
MqttChannel *channel = m_mqttChannels.value(parentDev);
|
||||||
if (!channel) {
|
if (!channel) {
|
||||||
@ -335,10 +311,10 @@ void IntegrationPluginTasmota::executeAction(ThingActionInfo *info)
|
|||||||
return info->finish(Thing::ThingErrorHardwareNotAvailable);
|
return info->finish(Thing::ThingErrorHardwareNotAvailable);
|
||||||
}
|
}
|
||||||
ParamTypeId channelParamTypeId = m_channelParamTypeMap.value(thing->thingClassId());
|
ParamTypeId channelParamTypeId = m_channelParamTypeMap.value(thing->thingClassId());
|
||||||
ParamTypeId powerActionParamTypeId = ParamTypeId(m_powerStateTypeMap.value(thing->thingClassId()).toString());
|
ParamTypeId powerActionParamTypeId = thing->thingClass().actionTypes().findByName("power").paramTypes().findByName("power").id();
|
||||||
qCDebug(dcTasmota) << "Publishing:" << channel->topicPrefixList().first() + "/sonoff/cmnd/" + thing->paramValue(channelParamTypeId).toString() << (action.param(powerActionParamTypeId).value().toBool() ? "ON" : "OFF");
|
qCDebug(dcTasmota) << "Publishing:" << channel->topicPrefixList().first() + "/sonoff/cmnd/" + thing->paramValue(channelParamTypeId).toString() << (action.param(powerActionParamTypeId).value().toBool() ? "ON" : "OFF");
|
||||||
channel->publish(channel->topicPrefixList().first() + "/sonoff/cmnd/" + thing->paramValue(channelParamTypeId).toString().toLower(), action.param(powerActionParamTypeId).value().toBool() ? "ON" : "OFF");
|
channel->publish(channel->topicPrefixList().first() + "/sonoff/cmnd/" + thing->paramValue(channelParamTypeId).toString().toLower(), action.param(powerActionParamTypeId).value().toBool() ? "ON" : "OFF");
|
||||||
thing->setStateValue(m_powerStateTypeMap.value(thing->thingClassId()), action.param(powerActionParamTypeId).value().toBool());
|
thing->setStateValue("power", action.param(powerActionParamTypeId).value().toBool());
|
||||||
return info->finish(Thing::ThingErrorNoError);
|
return info->finish(Thing::ThingErrorNoError);
|
||||||
}
|
}
|
||||||
if (m_closableStopActionTypeMap.contains(thing->thingClassId())) {
|
if (m_closableStopActionTypeMap.contains(thing->thingClassId())) {
|
||||||
@ -375,11 +351,11 @@ void IntegrationPluginTasmota::onClientConnected(MqttChannel *channel)
|
|||||||
{
|
{
|
||||||
qCDebug(dcTasmota) << "Sonoff thing connected!";
|
qCDebug(dcTasmota) << "Sonoff thing connected!";
|
||||||
Thing *dev = m_mqttChannels.key(channel);
|
Thing *dev = m_mqttChannels.key(channel);
|
||||||
dev->setStateValue(m_connectedStateTypeMap.value(dev->thingClassId()), true);
|
dev->setStateValue("connected", true);
|
||||||
|
|
||||||
foreach (Thing *child, myThings()) {
|
foreach (Thing *child, myThings()) {
|
||||||
if (child->parentId() == dev->id()) {
|
if (child->parentId() == dev->id()) {
|
||||||
child->setStateValue(m_connectedStateTypeMap.value(child->thingClassId()), true);
|
child->setStateValue("connected", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -388,11 +364,11 @@ void IntegrationPluginTasmota::onClientDisconnected(MqttChannel *channel)
|
|||||||
{
|
{
|
||||||
qCDebug(dcTasmota) << "Sonoff thing disconnected!";
|
qCDebug(dcTasmota) << "Sonoff thing disconnected!";
|
||||||
Thing *dev = m_mqttChannels.key(channel);
|
Thing *dev = m_mqttChannels.key(channel);
|
||||||
dev->setStateValue(m_connectedStateTypeMap.value(dev->thingClassId()), false);
|
dev->setStateValue("connected", false);
|
||||||
|
|
||||||
foreach (Thing *child, myThings()) {
|
foreach (Thing *child, myThings()) {
|
||||||
if (child->parentId() == dev->id()) {
|
if (child->parentId() == dev->id()) {
|
||||||
child->setStateValue(m_connectedStateTypeMap.value(child->thingClassId()), false);
|
child->setStateValue("connected", false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -411,8 +387,8 @@ void IntegrationPluginTasmota::onPublishReceived(MqttChannel *channel, const QSt
|
|||||||
if (child->paramValue(m_channelParamTypeMap.value(child->thingClassId())).toString() != channelName) {
|
if (child->paramValue(m_channelParamTypeMap.value(child->thingClassId())).toString() != channelName) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (m_powerStateTypeMap.contains(child->thingClassId())) {
|
if (child->hasState("power")) {
|
||||||
child->setStateValue(m_powerStateTypeMap.value(child->thingClassId()), payload == "ON");
|
child->setStateValue("power", payload == "ON");
|
||||||
}
|
}
|
||||||
if (child->thingClassId() == tasmotaSwitchThingClassId) {
|
if (child->thingClassId() == tasmotaSwitchThingClassId) {
|
||||||
Event event(tasmotaSwitchPressedEventTypeId, child->id());
|
Event event(tasmotaSwitchPressedEventTypeId, child->id());
|
||||||
@ -428,20 +404,45 @@ void IntegrationPluginTasmota::onPublishReceived(MqttChannel *channel, const QSt
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QVariantMap dataMap = jsonDoc.toVariant().toMap();
|
QVariantMap dataMap = jsonDoc.toVariant().toMap();
|
||||||
thing->setStateValue(m_signalStrengthStateTypeMap.value(thing->thingClassId()), dataMap.value("Wifi").toMap().value("RSSI").toInt());
|
thing->setStateValue("signalStrength", dataMap.value("Wifi").toMap().value("RSSI").toInt());
|
||||||
|
|
||||||
if (m_brightnessStateTypeMap.contains(thing->thingClassId())) {
|
if (thing->hasState("brightness")) {
|
||||||
thing->setStateValue(m_brightnessStateTypeMap.value(thing->thingClassId()), dataMap.value("Dimmer").toInt());
|
thing->setStateValue("brightness", dataMap.value("Dimmer").toInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Legacy (deprecated) connected things by params
|
// Legacy (deprecated) connected things by params
|
||||||
foreach (Thing *child, myThings().filterByParentId(thing->id())) {
|
foreach (Thing *child, myThings().filterByParentId(thing->id())) {
|
||||||
if (m_powerStateTypeMap.contains(child->thingClassId())) {
|
if (child->hasState("power")) {
|
||||||
QString childChannel = child->paramValue(m_channelParamTypeMap.value(child->thingClassId())).toString();
|
QString childChannel = child->paramValue(m_channelParamTypeMap.value(child->thingClassId())).toString();
|
||||||
QString valueString = jsonDoc.toVariant().toMap().value(childChannel).toString();
|
QString valueString = jsonDoc.toVariant().toMap().value(childChannel).toString();
|
||||||
child->setStateValue(m_powerStateTypeMap.value(child->thingClassId()), valueString == "ON");
|
child->setStateValue("power", valueString == "ON");
|
||||||
}
|
}
|
||||||
child->setStateValue(m_signalStrengthStateTypeMap.value(child->thingClassId()), dataMap.value("Wifi").toMap().value("RSSI").toInt());
|
child->setStateValue("signalStrength", dataMap.value("Wifi").toMap().value("RSSI").toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (topic.startsWith(channel->topicPrefixList().first() + "/sonoff/SENSOR")) {
|
||||||
|
QJsonParseError error;
|
||||||
|
QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &error);
|
||||||
|
if (error.error != QJsonParseError::NoError) {
|
||||||
|
qCWarning(dcTasmota) << "Cannot parse JSON from Tasmota device" << error.errorString();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QVariantMap dataMap = jsonDoc.toVariant().toMap();
|
||||||
|
|
||||||
|
if (dataMap.contains("ENERGY")) {
|
||||||
|
QVariantMap energyMap = dataMap.value("ENERGY").toMap();
|
||||||
|
QString channelName = topic.split("/").last();
|
||||||
|
|
||||||
|
// If we received energy meter values but don't have a power meter child yet, create one
|
||||||
|
Thing *meter = myThings().filterByParentId(thing->id()).filterByInterface("smartmeterconsumer").findByParams({Param(powerMeterChannelThingChannelNameParamTypeId, channelName)});
|
||||||
|
if (!meter) {
|
||||||
|
ThingDescriptor descriptor(powerMeterChannelThingClassId, thing->name(), QString(), thing->id());
|
||||||
|
descriptor.setParams({Param(powerMeterChannelThingChannelNameParamTypeId, channelName)});
|
||||||
|
emit autoThingsAppeared({descriptor});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
meter->setStateValue("currentPower", energyMap.value("Power").toDouble());
|
||||||
|
meter->setStateValue("totalEnergyConsumed", energyMap.value("Total").toDouble());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -68,17 +68,10 @@ private:
|
|||||||
QHash<ThingClassId, ParamTypeId> m_channelParamTypeMap;
|
QHash<ThingClassId, ParamTypeId> m_channelParamTypeMap;
|
||||||
QHash<ThingClassId, ParamTypeId> m_openingChannelParamTypeMap;
|
QHash<ThingClassId, ParamTypeId> m_openingChannelParamTypeMap;
|
||||||
QHash<ThingClassId, ParamTypeId> m_closingChannelParamTypeMap;
|
QHash<ThingClassId, ParamTypeId> m_closingChannelParamTypeMap;
|
||||||
QHash<ThingClassId, StateTypeId> m_powerStateTypeMap;
|
|
||||||
|
|
||||||
QHash<ThingClassId, ActionTypeId> m_closableOpenActionTypeMap;
|
QHash<ThingClassId, ActionTypeId> m_closableOpenActionTypeMap;
|
||||||
QHash<ThingClassId, ActionTypeId> m_closableCloseActionTypeMap;
|
QHash<ThingClassId, ActionTypeId> m_closableCloseActionTypeMap;
|
||||||
QHash<ThingClassId, ActionTypeId> m_closableStopActionTypeMap;
|
QHash<ThingClassId, ActionTypeId> m_closableStopActionTypeMap;
|
||||||
|
|
||||||
// Helpers for both devices
|
|
||||||
QHash<ThingClassId, StateTypeId> m_connectedStateTypeMap;
|
|
||||||
QHash<ThingClassId, StateTypeId> m_signalStrengthStateTypeMap;
|
|
||||||
|
|
||||||
QHash<ThingClassId, StateTypeId> m_brightnessStateTypeMap;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INTEGRATIONPLUGINTASMOTA_H
|
#endif // INTEGRATIONPLUGINTASMOTA_H
|
||||||
|
|||||||
@ -623,6 +623,64 @@
|
|||||||
"displayName": "Stop"
|
"displayName": "Stop"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "805487dd-768b-47d5-a0a9-c7021bbec6ff",
|
||||||
|
"name": "powerMeterChannel",
|
||||||
|
"displayName": "Power meter",
|
||||||
|
"createMethods": ["auto"],
|
||||||
|
"interfaces": ["smartmeterconsumer", "wirelessconnectable"],
|
||||||
|
"paramTypes": [
|
||||||
|
{
|
||||||
|
"id": "72bafebf-e541-4ede-aed5-a17241a57743",
|
||||||
|
"name": "channelName",
|
||||||
|
"displayName": "Channel name",
|
||||||
|
"type": "QString"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"stateTypes": [
|
||||||
|
{
|
||||||
|
"id": "f268fa63-e17f-41ab-9536-ec2e21a9164c",
|
||||||
|
"name": "connected",
|
||||||
|
"displayName": "Connected",
|
||||||
|
"displayNameEvent": "Connected changed",
|
||||||
|
"type": "bool",
|
||||||
|
"defaultValue": false,
|
||||||
|
"cached": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5ef7fb87-901f-4f1f-8db0-1aa0e0ee633e",
|
||||||
|
"name": "signalStrength",
|
||||||
|
"displayName": "Signal strength",
|
||||||
|
"displayNameEvent": "Signal strength changed",
|
||||||
|
"type": "uint",
|
||||||
|
"unit": "Percentage",
|
||||||
|
"minValue": 0,
|
||||||
|
"maxValue": 100,
|
||||||
|
"defaultValue": 0,
|
||||||
|
"cached": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bcd91dba-d063-445a-9680-32d64da29fc0",
|
||||||
|
"name": "currentPower",
|
||||||
|
"displayName": "Current power consumption",
|
||||||
|
"displayNameEvent": "Current power consumption changed",
|
||||||
|
"type": "double",
|
||||||
|
"unit": "Watt",
|
||||||
|
"defaultValue": 0,
|
||||||
|
"cached": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ebd82e2f-4d23-451a-a26d-9c95fd3c00be",
|
||||||
|
"name": "totalEnergyConsumed",
|
||||||
|
"displayName": "Total consumed energy",
|
||||||
|
"displayNameEvent": "Total consumption changed",
|
||||||
|
"type": "double",
|
||||||
|
"unit": "KiloWattHour",
|
||||||
|
"defaultValue": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,63 +49,26 @@ The name of the ParamType (ThingClass: sonoff_basic, Type: thing, ID: {cdead654-
|
|||||||
<extracomment>The name of the ParamType (ThingClass: sonoff_basic, Type: thing, ID: {f210d0c0-dda1-442d-a0cc-2f2e48c24984})</extracomment>
|
<extracomment>The name of the ParamType (ThingClass: sonoff_basic, Type: thing, ID: {f210d0c0-dda1-442d-a0cc-2f2e48c24984})</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Connected changed</source>
|
|
||||||
<extracomment>The name of the EventType ({686ad054-0ee5-4135-8f2d-dda993532262}) of ThingClass tasmotaBlinds
|
|
||||||
----------
|
|
||||||
The name of the EventType ({7bbf0bbf-abb3-487e-b5e9-077f7b00d8ef}) of ThingClass tasmotaShutter
|
|
||||||
----------
|
|
||||||
The name of the EventType ({72050de9-c318-4e53-93e5-36f7c2fc7cab}) of ThingClass tasmotaLight
|
|
||||||
----------
|
|
||||||
The name of the EventType ({b4607e5d-70c4-4e76-9d9a-c6de7c50377e}) of ThingClass tasmotaSwitch
|
|
||||||
----------
|
|
||||||
The name of the EventType ({1078dd25-b5bd-4005-8c1f-005ddca7ea21}) of ThingClass sonoff_dimmer
|
|
||||||
----------
|
|
||||||
The name of the EventType ({5b422d28-9f60-4ea9-ab23-42a0ec605b9e}) of ThingClass sonoff_quad
|
|
||||||
----------
|
|
||||||
The name of the EventType ({e6439ea4-4373-4ac1-a790-748604cf2830}) of ThingClass sonoff_tri
|
|
||||||
----------
|
|
||||||
The name of the EventType ({e2f55332-e706-412e-beb6-abf76b3bcff3}) of ThingClass sonoff_dual
|
|
||||||
----------
|
|
||||||
The name of the EventType ({9cde6321-2abf-4a58-a1d6-c7418edb9747}) of ThingClass sonoff_basic</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Connected</source>
|
<source>Connected</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: tasmotaBlinds, EventType: connected, ID: {686ad054-0ee5-4135-8f2d-dda993532262})
|
<extracomment>The name of the StateType ({f268fa63-e17f-41ab-9536-ec2e21a9164c}) of ThingClass powerMeterChannel
|
||||||
----------
|
----------
|
||||||
The name of the StateType ({686ad054-0ee5-4135-8f2d-dda993532262}) of ThingClass tasmotaBlinds
|
The name of the StateType ({686ad054-0ee5-4135-8f2d-dda993532262}) of ThingClass tasmotaBlinds
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaShutter, EventType: connected, ID: {7bbf0bbf-abb3-487e-b5e9-077f7b00d8ef})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({7bbf0bbf-abb3-487e-b5e9-077f7b00d8ef}) of ThingClass tasmotaShutter
|
The name of the StateType ({7bbf0bbf-abb3-487e-b5e9-077f7b00d8ef}) of ThingClass tasmotaShutter
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaLight, EventType: connected, ID: {72050de9-c318-4e53-93e5-36f7c2fc7cab})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({72050de9-c318-4e53-93e5-36f7c2fc7cab}) of ThingClass tasmotaLight
|
The name of the StateType ({72050de9-c318-4e53-93e5-36f7c2fc7cab}) of ThingClass tasmotaLight
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaSwitch, EventType: connected, ID: {b4607e5d-70c4-4e76-9d9a-c6de7c50377e})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({b4607e5d-70c4-4e76-9d9a-c6de7c50377e}) of ThingClass tasmotaSwitch
|
The name of the StateType ({b4607e5d-70c4-4e76-9d9a-c6de7c50377e}) of ThingClass tasmotaSwitch
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dimmer, EventType: connected, ID: {1078dd25-b5bd-4005-8c1f-005ddca7ea21})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({1078dd25-b5bd-4005-8c1f-005ddca7ea21}) of ThingClass sonoff_dimmer
|
The name of the StateType ({1078dd25-b5bd-4005-8c1f-005ddca7ea21}) of ThingClass sonoff_dimmer
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_quad, EventType: connected, ID: {5b422d28-9f60-4ea9-ab23-42a0ec605b9e})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({5b422d28-9f60-4ea9-ab23-42a0ec605b9e}) of ThingClass sonoff_quad
|
The name of the StateType ({5b422d28-9f60-4ea9-ab23-42a0ec605b9e}) of ThingClass sonoff_quad
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_tri, EventType: connected, ID: {e6439ea4-4373-4ac1-a790-748604cf2830})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({e6439ea4-4373-4ac1-a790-748604cf2830}) of ThingClass sonoff_tri
|
The name of the StateType ({e6439ea4-4373-4ac1-a790-748604cf2830}) of ThingClass sonoff_tri
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dual, EventType: connected, ID: {e2f55332-e706-412e-beb6-abf76b3bcff3})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({e2f55332-e706-412e-beb6-abf76b3bcff3}) of ThingClass sonoff_dual
|
The name of the StateType ({e2f55332-e706-412e-beb6-abf76b3bcff3}) of ThingClass sonoff_dual
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_basic, EventType: connected, ID: {9cde6321-2abf-4a58-a1d6-c7418edb9747})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({9cde6321-2abf-4a58-a1d6-c7418edb9747}) of ThingClass sonoff_basic</extracomment>
|
The name of the StateType ({9cde6321-2abf-4a58-a1d6-c7418edb9747}) of ThingClass sonoff_basic</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -156,46 +119,29 @@ The name of the ParamType (ThingClass: sonoff_tri, Type: thing, ID: {7dada813-d3
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Channel name</source>
|
<source>Channel name</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: tasmotaLight, Type: thing, ID: {1f792ae4-cf39-4e12-99ca-c593bd020fcb})
|
<extracomment>The name of the ParamType (ThingClass: powerMeterChannel, Type: thing, ID: {72bafebf-e541-4ede-aed5-a17241a57743})
|
||||||
|
----------
|
||||||
|
The name of the ParamType (ThingClass: tasmotaLight, Type: thing, ID: {1f792ae4-cf39-4e12-99ca-c593bd020fcb})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaSwitch, Type: thing, ID: {564cf6c6-86eb-41a5-9b87-fb32f1b6fcd6})</extracomment>
|
The name of the ParamType (ThingClass: tasmotaSwitch, Type: thing, ID: {564cf6c6-86eb-41a5-9b87-fb32f1b6fcd6})</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Power changed</source>
|
|
||||||
<extracomment>The name of the EventType ({88dbdf8e-45ff-466f-8352-8654a6b5fe68}) of ThingClass tasmotaLight
|
|
||||||
----------
|
|
||||||
The name of the EventType ({413503d7-fc9f-417a-95fa-5c350a6f69f9}) of ThingClass tasmotaSwitch
|
|
||||||
----------
|
|
||||||
The name of the EventType ({c8ec62d4-024b-4770-b893-6288b64f0dfe}) of ThingClass sonoff_dimmer
|
|
||||||
----------
|
|
||||||
The name of the EventType ({0b5a48c9-73b8-42ab-9909-71b8dc2227e3}) of ThingClass sonoff_basic</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Power</source>
|
<source>Power</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: tasmotaLight, ActionType: power, ID: {88dbdf8e-45ff-466f-8352-8654a6b5fe68})
|
<extracomment>The name of the ParamType (ThingClass: tasmotaLight, ActionType: power, ID: {88dbdf8e-45ff-466f-8352-8654a6b5fe68})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaLight, EventType: power, ID: {88dbdf8e-45ff-466f-8352-8654a6b5fe68})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({88dbdf8e-45ff-466f-8352-8654a6b5fe68}) of ThingClass tasmotaLight
|
The name of the StateType ({88dbdf8e-45ff-466f-8352-8654a6b5fe68}) of ThingClass tasmotaLight
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaSwitch, ActionType: power, ID: {413503d7-fc9f-417a-95fa-5c350a6f69f9})
|
The name of the ParamType (ThingClass: tasmotaSwitch, ActionType: power, ID: {413503d7-fc9f-417a-95fa-5c350a6f69f9})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaSwitch, EventType: power, ID: {413503d7-fc9f-417a-95fa-5c350a6f69f9})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({413503d7-fc9f-417a-95fa-5c350a6f69f9}) of ThingClass tasmotaSwitch
|
The name of the StateType ({413503d7-fc9f-417a-95fa-5c350a6f69f9}) of ThingClass tasmotaSwitch
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dimmer, ActionType: power, ID: {c8ec62d4-024b-4770-b893-6288b64f0dfe})
|
The name of the ParamType (ThingClass: sonoff_dimmer, ActionType: power, ID: {c8ec62d4-024b-4770-b893-6288b64f0dfe})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dimmer, EventType: power, ID: {c8ec62d4-024b-4770-b893-6288b64f0dfe})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({c8ec62d4-024b-4770-b893-6288b64f0dfe}) of ThingClass sonoff_dimmer
|
The name of the StateType ({c8ec62d4-024b-4770-b893-6288b64f0dfe}) of ThingClass sonoff_dimmer
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_basic, ActionType: power, ID: {0b5a48c9-73b8-42ab-9909-71b8dc2227e3})
|
The name of the ParamType (ThingClass: sonoff_basic, ActionType: power, ID: {0b5a48c9-73b8-42ab-9909-71b8dc2227e3})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_basic, EventType: power, ID: {0b5a48c9-73b8-42ab-9909-71b8dc2227e3})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({0b5a48c9-73b8-42ab-9909-71b8dc2227e3}) of ThingClass sonoff_basic</extracomment>
|
The name of the StateType ({0b5a48c9-73b8-42ab-9909-71b8dc2227e3}) of ThingClass sonoff_basic</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -277,160 +223,75 @@ The name of the ActionType ({c9c9c569-e224-4f63-abed-782cba04d61b}) of ThingClas
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Signal strength</source>
|
<source>Signal strength</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: tasmotaBlinds, EventType: signalStrength, ID: {dc58b863-1e84-4469-b226-cd4349d82050})
|
<extracomment>The name of the StateType ({5ef7fb87-901f-4f1f-8db0-1aa0e0ee633e}) of ThingClass powerMeterChannel
|
||||||
----------
|
----------
|
||||||
The name of the StateType ({dc58b863-1e84-4469-b226-cd4349d82050}) of ThingClass tasmotaBlinds
|
The name of the StateType ({dc58b863-1e84-4469-b226-cd4349d82050}) of ThingClass tasmotaBlinds
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaShutter, EventType: signalStrength, ID: {1de7fac2-87f1-4c2b-9286-1b0895c5ac49})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({1de7fac2-87f1-4c2b-9286-1b0895c5ac49}) of ThingClass tasmotaShutter
|
The name of the StateType ({1de7fac2-87f1-4c2b-9286-1b0895c5ac49}) of ThingClass tasmotaShutter
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaLight, EventType: signalStrength, ID: {dcc39f5e-6bcb-4c04-910e-8dd5f9ad5402})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({dcc39f5e-6bcb-4c04-910e-8dd5f9ad5402}) of ThingClass tasmotaLight
|
The name of the StateType ({dcc39f5e-6bcb-4c04-910e-8dd5f9ad5402}) of ThingClass tasmotaLight
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: tasmotaSwitch, EventType: signalStrength, ID: {34e54234-d2d6-4c93-8d52-bada19e5ff23})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({34e54234-d2d6-4c93-8d52-bada19e5ff23}) of ThingClass tasmotaSwitch
|
The name of the StateType ({34e54234-d2d6-4c93-8d52-bada19e5ff23}) of ThingClass tasmotaSwitch
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dimmer, EventType: signalStrength, ID: {662d99de-bfce-4cf0-8029-108e9911866c})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({662d99de-bfce-4cf0-8029-108e9911866c}) of ThingClass sonoff_dimmer
|
The name of the StateType ({662d99de-bfce-4cf0-8029-108e9911866c}) of ThingClass sonoff_dimmer
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_quad, EventType: signalStrength, ID: {d80d8f37-f3c0-4364-998b-312339fd1fa8})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({d80d8f37-f3c0-4364-998b-312339fd1fa8}) of ThingClass sonoff_quad
|
The name of the StateType ({d80d8f37-f3c0-4364-998b-312339fd1fa8}) of ThingClass sonoff_quad
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_tri, EventType: signalStrength, ID: {08b4ec84-1aec-4e68-a3b4-ae251b8cbe6d})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({08b4ec84-1aec-4e68-a3b4-ae251b8cbe6d}) of ThingClass sonoff_tri
|
The name of the StateType ({08b4ec84-1aec-4e68-a3b4-ae251b8cbe6d}) of ThingClass sonoff_tri
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dual, EventType: signalStrength, ID: {3d6a567f-d266-4711-bcf1-3ac1f53abadb})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({3d6a567f-d266-4711-bcf1-3ac1f53abadb}) of ThingClass sonoff_dual
|
The name of the StateType ({3d6a567f-d266-4711-bcf1-3ac1f53abadb}) of ThingClass sonoff_dual
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_basic, EventType: signalStrength, ID: {f70e202a-c178-4fbe-a778-713220d11b23})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({f70e202a-c178-4fbe-a778-713220d11b23}) of ThingClass sonoff_basic</extracomment>
|
The name of the StateType ({f70e202a-c178-4fbe-a778-713220d11b23}) of ThingClass sonoff_basic</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Signal strength changed</source>
|
|
||||||
<extracomment>The name of the EventType ({dc58b863-1e84-4469-b226-cd4349d82050}) of ThingClass tasmotaBlinds
|
|
||||||
----------
|
|
||||||
The name of the EventType ({1de7fac2-87f1-4c2b-9286-1b0895c5ac49}) of ThingClass tasmotaShutter
|
|
||||||
----------
|
|
||||||
The name of the EventType ({dcc39f5e-6bcb-4c04-910e-8dd5f9ad5402}) of ThingClass tasmotaLight
|
|
||||||
----------
|
|
||||||
The name of the EventType ({34e54234-d2d6-4c93-8d52-bada19e5ff23}) of ThingClass tasmotaSwitch
|
|
||||||
----------
|
|
||||||
The name of the EventType ({662d99de-bfce-4cf0-8029-108e9911866c}) of ThingClass sonoff_dimmer
|
|
||||||
----------
|
|
||||||
The name of the EventType ({d80d8f37-f3c0-4364-998b-312339fd1fa8}) of ThingClass sonoff_quad
|
|
||||||
----------
|
|
||||||
The name of the EventType ({08b4ec84-1aec-4e68-a3b4-ae251b8cbe6d}) of ThingClass sonoff_tri
|
|
||||||
----------
|
|
||||||
The name of the EventType ({3d6a567f-d266-4711-bcf1-3ac1f53abadb}) of ThingClass sonoff_dual
|
|
||||||
----------
|
|
||||||
The name of the EventType ({f70e202a-c178-4fbe-a778-713220d11b23}) of ThingClass sonoff_basic</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Power channel 1</source>
|
<source>Power channel 1</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: sonoff_quad, ActionType: powerCH1, ID: {e8fd95c3-2323-40d8-89cf-40e0068977d8})
|
<extracomment>The name of the ParamType (ThingClass: sonoff_quad, ActionType: powerCH1, ID: {e8fd95c3-2323-40d8-89cf-40e0068977d8})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_quad, EventType: powerCH1, ID: {e8fd95c3-2323-40d8-89cf-40e0068977d8})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({e8fd95c3-2323-40d8-89cf-40e0068977d8}) of ThingClass sonoff_quad
|
The name of the StateType ({e8fd95c3-2323-40d8-89cf-40e0068977d8}) of ThingClass sonoff_quad
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_tri, ActionType: powerCH1, ID: {27bdb42d-ef95-4905-ac3d-925bcc8a1ba1})
|
The name of the ParamType (ThingClass: sonoff_tri, ActionType: powerCH1, ID: {27bdb42d-ef95-4905-ac3d-925bcc8a1ba1})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_tri, EventType: powerCH1, ID: {27bdb42d-ef95-4905-ac3d-925bcc8a1ba1})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({27bdb42d-ef95-4905-ac3d-925bcc8a1ba1}) of ThingClass sonoff_tri
|
The name of the StateType ({27bdb42d-ef95-4905-ac3d-925bcc8a1ba1}) of ThingClass sonoff_tri
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dual, ActionType: powerCH1, ID: {b8bf3085-8061-4cd6-af1f-f76a03054f46})
|
The name of the ParamType (ThingClass: sonoff_dual, ActionType: powerCH1, ID: {b8bf3085-8061-4cd6-af1f-f76a03054f46})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dual, EventType: powerCH1, ID: {b8bf3085-8061-4cd6-af1f-f76a03054f46})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({b8bf3085-8061-4cd6-af1f-f76a03054f46}) of ThingClass sonoff_dual</extracomment>
|
The name of the StateType ({b8bf3085-8061-4cd6-af1f-f76a03054f46}) of ThingClass sonoff_dual</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Power channel 1 changed</source>
|
|
||||||
<extracomment>The name of the EventType ({e8fd95c3-2323-40d8-89cf-40e0068977d8}) of ThingClass sonoff_quad
|
|
||||||
----------
|
|
||||||
The name of the EventType ({27bdb42d-ef95-4905-ac3d-925bcc8a1ba1}) of ThingClass sonoff_tri
|
|
||||||
----------
|
|
||||||
The name of the EventType ({b8bf3085-8061-4cd6-af1f-f76a03054f46}) of ThingClass sonoff_dual</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Power channel 2</source>
|
<source>Power channel 2</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: sonoff_quad, ActionType: powerCH2, ID: {baf0ca62-7f09-45ea-aea1-6de34764e6cb})
|
<extracomment>The name of the ParamType (ThingClass: sonoff_quad, ActionType: powerCH2, ID: {baf0ca62-7f09-45ea-aea1-6de34764e6cb})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_quad, EventType: powerCH2, ID: {baf0ca62-7f09-45ea-aea1-6de34764e6cb})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({baf0ca62-7f09-45ea-aea1-6de34764e6cb}) of ThingClass sonoff_quad
|
The name of the StateType ({baf0ca62-7f09-45ea-aea1-6de34764e6cb}) of ThingClass sonoff_quad
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_tri, ActionType: powerCH2, ID: {705d8277-896a-4d56-b9ff-0a614ecfd39c})
|
The name of the ParamType (ThingClass: sonoff_tri, ActionType: powerCH2, ID: {705d8277-896a-4d56-b9ff-0a614ecfd39c})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_tri, EventType: powerCH2, ID: {705d8277-896a-4d56-b9ff-0a614ecfd39c})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({705d8277-896a-4d56-b9ff-0a614ecfd39c}) of ThingClass sonoff_tri
|
The name of the StateType ({705d8277-896a-4d56-b9ff-0a614ecfd39c}) of ThingClass sonoff_tri
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dual, ActionType: powerCH2, ID: {4fbcaeb6-9242-4aa6-b462-a214fb38bcc9})
|
The name of the ParamType (ThingClass: sonoff_dual, ActionType: powerCH2, ID: {4fbcaeb6-9242-4aa6-b462-a214fb38bcc9})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dual, EventType: powerCH2, ID: {4fbcaeb6-9242-4aa6-b462-a214fb38bcc9})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({4fbcaeb6-9242-4aa6-b462-a214fb38bcc9}) of ThingClass sonoff_dual</extracomment>
|
The name of the StateType ({4fbcaeb6-9242-4aa6-b462-a214fb38bcc9}) of ThingClass sonoff_dual</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Power channel 2 changed</source>
|
|
||||||
<extracomment>The name of the EventType ({baf0ca62-7f09-45ea-aea1-6de34764e6cb}) of ThingClass sonoff_quad
|
|
||||||
----------
|
|
||||||
The name of the EventType ({705d8277-896a-4d56-b9ff-0a614ecfd39c}) of ThingClass sonoff_tri
|
|
||||||
----------
|
|
||||||
The name of the EventType ({4fbcaeb6-9242-4aa6-b462-a214fb38bcc9}) of ThingClass sonoff_dual</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Power channel 3</source>
|
<source>Power channel 3</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: sonoff_quad, ActionType: powerCH3, ID: {8b939d15-3e45-40aa-bb53-9b3fb47f3cb3})
|
<extracomment>The name of the ParamType (ThingClass: sonoff_quad, ActionType: powerCH3, ID: {8b939d15-3e45-40aa-bb53-9b3fb47f3cb3})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_quad, EventType: powerCH3, ID: {8b939d15-3e45-40aa-bb53-9b3fb47f3cb3})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({8b939d15-3e45-40aa-bb53-9b3fb47f3cb3}) of ThingClass sonoff_quad
|
The name of the StateType ({8b939d15-3e45-40aa-bb53-9b3fb47f3cb3}) of ThingClass sonoff_quad
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_tri, ActionType: powerCH3, ID: {156f285d-e474-43d9-9a9d-17b3bcaef893})
|
The name of the ParamType (ThingClass: sonoff_tri, ActionType: powerCH3, ID: {156f285d-e474-43d9-9a9d-17b3bcaef893})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_tri, EventType: powerCH3, ID: {156f285d-e474-43d9-9a9d-17b3bcaef893})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({156f285d-e474-43d9-9a9d-17b3bcaef893}) of ThingClass sonoff_tri</extracomment>
|
The name of the StateType ({156f285d-e474-43d9-9a9d-17b3bcaef893}) of ThingClass sonoff_tri</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Power channel 3 changed</source>
|
|
||||||
<extracomment>The name of the EventType ({8b939d15-3e45-40aa-bb53-9b3fb47f3cb3}) of ThingClass sonoff_quad
|
|
||||||
----------
|
|
||||||
The name of the EventType ({156f285d-e474-43d9-9a9d-17b3bcaef893}) of ThingClass sonoff_tri</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Power channel 4</source>
|
<source>Power channel 4</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: sonoff_quad, ActionType: powerCH4, ID: {4060baa0-2b11-4905-908c-b6f1c3b6a892})
|
<extracomment>The name of the ParamType (ThingClass: sonoff_quad, ActionType: powerCH4, ID: {4060baa0-2b11-4905-908c-b6f1c3b6a892})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_quad, EventType: powerCH4, ID: {4060baa0-2b11-4905-908c-b6f1c3b6a892})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({4060baa0-2b11-4905-908c-b6f1c3b6a892}) of ThingClass sonoff_quad</extracomment>
|
The name of the StateType ({4060baa0-2b11-4905-908c-b6f1c3b6a892}) of ThingClass sonoff_quad</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Power channel 4 changed</source>
|
|
||||||
<extracomment>The name of the EventType ({4060baa0-2b11-4905-908c-b6f1c3b6a892}) of ThingClass sonoff_quad</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Set power channel 1</source>
|
<source>Set power channel 1</source>
|
||||||
<extracomment>The name of the ActionType ({e8fd95c3-2323-40d8-89cf-40e0068977d8}) of ThingClass sonoff_quad
|
<extracomment>The name of the ActionType ({e8fd95c3-2323-40d8-89cf-40e0068977d8}) of ThingClass sonoff_quad
|
||||||
@ -465,16 +326,9 @@ The name of the ActionType ({156f285d-e474-43d9-9a9d-17b3bcaef893}) of ThingClas
|
|||||||
<source>Brightness</source>
|
<source>Brightness</source>
|
||||||
<extracomment>The name of the ParamType (ThingClass: sonoff_dimmer, ActionType: brightness, ID: {5cd8d0df-1188-4da1-9a87-bff991d3b2af})
|
<extracomment>The name of the ParamType (ThingClass: sonoff_dimmer, ActionType: brightness, ID: {5cd8d0df-1188-4da1-9a87-bff991d3b2af})
|
||||||
----------
|
----------
|
||||||
The name of the ParamType (ThingClass: sonoff_dimmer, EventType: brightness, ID: {5cd8d0df-1188-4da1-9a87-bff991d3b2af})
|
|
||||||
----------
|
|
||||||
The name of the StateType ({5cd8d0df-1188-4da1-9a87-bff991d3b2af}) of ThingClass sonoff_dimmer</extracomment>
|
The name of the StateType ({5cd8d0df-1188-4da1-9a87-bff991d3b2af}) of ThingClass sonoff_dimmer</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Brightness changed</source>
|
|
||||||
<extracomment>The name of the EventType ({5cd8d0df-1188-4da1-9a87-bff991d3b2af}) of ThingClass sonoff_dimmer</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Dimmer (Sonoff D1...)</source>
|
<source>Dimmer (Sonoff D1...)</source>
|
||||||
<extracomment>The name of the ThingClass ({4fb65caa-7f84-4496-91f6-1cd35574cc2e})</extracomment>
|
<extracomment>The name of the ThingClass ({4fb65caa-7f84-4496-91f6-1cd35574cc2e})</extracomment>
|
||||||
@ -485,5 +339,20 @@ The name of the StateType ({5cd8d0df-1188-4da1-9a87-bff991d3b2af}) of ThingClass
|
|||||||
<extracomment>The name of the ActionType ({5cd8d0df-1188-4da1-9a87-bff991d3b2af}) of ThingClass sonoff_dimmer</extracomment>
|
<extracomment>The name of the ActionType ({5cd8d0df-1188-4da1-9a87-bff991d3b2af}) of ThingClass sonoff_dimmer</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Current power consumption</source>
|
||||||
|
<extracomment>The name of the StateType ({bcd91dba-d063-445a-9680-32d64da29fc0}) of ThingClass powerMeterChannel</extracomment>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Power meter</source>
|
||||||
|
<extracomment>The name of the ThingClass ({805487dd-768b-47d5-a0a9-c7021bbec6ff})</extracomment>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Total consumed energy</source>
|
||||||
|
<extracomment>The name of the StateType ({ebd82e2f-4d23-451a-a26d-9c95fd3c00be}) of ThingClass powerMeterChannel</extracomment>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user