Merge PR #411: ZigbeeGeneric: Add support for ZigBee door/window sensors

This commit is contained in:
Jenkins nymea 2021-04-28 13:54:43 +02:00
commit f47fb9de65
5 changed files with 434 additions and 163 deletions

View File

@ -22,6 +22,10 @@ Simple on/off power sockets.
Radiator thermostats that follow the ZigBee specification. Radiator thermostats that follow the ZigBee specification.
### Door/window sensors
Door/window that follow the ZigBee IAS Zone specification.
## Requirements ## Requirements
* A compatible ZigBee controller and a running ZigBee network in nymea. You can find more information about supported controllers and ZigBee network configurations [here](https://nymea.io/documentation/users/usage/configuration#zigbee). * A compatible ZigBee controller and a running ZigBee network in nymea. You can find more information about supported controllers and ZigBee network configurations [here](https://nymea.io/documentation/users/usage/configuration#zigbee).

View File

@ -37,49 +37,76 @@
#include <QDebug> #include <QDebug>
QHash<ThingClassId, StateTypeId> batteryLevelStateTypeIds = { static QHash<ThingClassId, StateTypeId> batteryLevelStateTypeIds = {
{thermostatThingClassId, thermostatBatteryLevelStateTypeId}, {thermostatThingClassId, thermostatBatteryLevelStateTypeId},
{doorLockThingClassId, doorLockBatteryLevelStateTypeId} {doorLockThingClassId, doorLockBatteryLevelStateTypeId},
{doorSensorThingClassId, doorSensorBatteryLevelStateTypeId}
}; };
QHash<ThingClassId, StateTypeId> batteryCriticalStateTypeIds = { static QHash<ThingClassId, StateTypeId> batteryCriticalStateTypeIds = {
{thermostatThingClassId, thermostatBatteryCriticalStateTypeId}, {thermostatThingClassId, thermostatBatteryCriticalStateTypeId},
{doorLockThingClassId, doorLockBatteryCriticalStateTypeId} {doorLockThingClassId, doorLockBatteryCriticalStateTypeId},
{doorSensorThingClassId, doorSensorBatteryCriticalStateTypeId}
}; };
static QHash<ThingClassId, ParamTypeId> ieeeAddressParamTypeIds = {
{thermostatThingClassId, thermostatThingIeeeAddressParamTypeId},
{powerSocketThingClassId, powerSocketThingIeeeAddressParamTypeId},
{doorLockThingClassId, doorLockThingIeeeAddressParamTypeId},
{doorSensorThingClassId, doorSensorThingIeeeAddressParamTypeId}
};
static QHash<ThingClassId, ParamTypeId> networkUuidParamTypeIds = {
{thermostatThingClassId, thermostatThingNetworkUuidParamTypeId},
{powerSocketThingClassId, powerSocketThingNetworkUuidParamTypeId},
{doorLockThingClassId, doorLockThingNetworkUuidParamTypeId},
{doorSensorThingClassId, doorSensorThingNetworkUuidParamTypeId}
};
static QHash<ThingClassId, ParamTypeId> endpointIdParamTypeIds = {
{thermostatThingClassId, thermostatThingEndpointIdParamTypeId},
{powerSocketThingClassId, powerSocketThingEndpointIdParamTypeId},
{doorLockThingClassId, doorLockThingEndpointIdParamTypeId},
{doorSensorThingClassId, doorSensorThingEndpointIdParamTypeId}
};
static QHash<ThingClassId, ParamTypeId> modelIdParamTypeIds = {
{thermostatThingClassId, thermostatThingManufacturerParamTypeId},
{powerSocketThingClassId, powerSocketThingManufacturerParamTypeId},
{doorLockThingClassId, doorLockThingManufacturerParamTypeId},
{doorSensorThingClassId, doorSensorThingManufacturerParamTypeId}
};
static QHash<ThingClassId, ParamTypeId> manufacturerIdParamTypeIds = {
{thermostatThingClassId, thermostatThingModelParamTypeId},
{powerSocketThingClassId, powerSocketThingModelParamTypeId},
{doorLockThingClassId, doorLockThingModelParamTypeId},
{doorSensorThingClassId, doorSensorThingModelParamTypeId}
};
static QHash<ThingClassId, StateTypeId> connectedStateTypeIds = {
{thermostatThingClassId, thermostatConnectedStateTypeId},
{powerSocketThingClassId, powerSocketConnectedStateTypeId},
{doorLockThingClassId, doorLockConnectedStateTypeId},
{doorSensorThingClassId, doorSensorConnectedStateTypeId}
};
static QHash<ThingClassId, StateTypeId> signalStrengthStateTypeIds = {
{thermostatThingClassId, thermostatSignalStrengthStateTypeId},
{powerSocketThingClassId, powerSocketSignalStrengthStateTypeId},
{doorLockThingClassId, doorLockSignalStrengthStateTypeId},
{doorSensorThingClassId, doorSensorSignalStrengthStateTypeId}
};
static QHash<ThingClassId, StateTypeId> versionStateTypeIds = {
{thermostatThingClassId, thermostatVersionStateTypeId},
{powerSocketThingClassId, powerSocketVersionStateTypeId},
{doorLockThingClassId, doorLockVersionStateTypeId}
};
IntegrationPluginZigbeeGeneric::IntegrationPluginZigbeeGeneric() IntegrationPluginZigbeeGeneric::IntegrationPluginZigbeeGeneric()
{ {
m_ieeeAddressParamTypeIds[thermostatThingClassId] = thermostatThingIeeeAddressParamTypeId;
m_ieeeAddressParamTypeIds[powerSocketThingClassId] = powerSocketThingIeeeAddressParamTypeId;
m_ieeeAddressParamTypeIds[doorLockThingClassId] = doorLockThingIeeeAddressParamTypeId;
m_networkUuidParamTypeIds[thermostatThingClassId] = thermostatThingNetworkUuidParamTypeId;
m_networkUuidParamTypeIds[powerSocketThingClassId] = powerSocketThingNetworkUuidParamTypeId;
m_networkUuidParamTypeIds[doorLockThingClassId] = doorLockThingNetworkUuidParamTypeId;
m_endpointIdParamTypeIds[thermostatThingClassId] = thermostatThingEndpointIdParamTypeId;
m_endpointIdParamTypeIds[powerSocketThingClassId] = powerSocketThingEndpointIdParamTypeId;
m_endpointIdParamTypeIds[doorLockThingClassId] = doorLockThingEndpointIdParamTypeId;
m_manufacturerIdParamTypeIds[thermostatThingClassId] = thermostatThingManufacturerParamTypeId;
m_manufacturerIdParamTypeIds[powerSocketThingClassId] = powerSocketThingManufacturerParamTypeId;
m_manufacturerIdParamTypeIds[doorLockThingClassId] = doorLockThingManufacturerParamTypeId;
m_modelIdParamTypeIds[thermostatThingClassId] = thermostatThingModelParamTypeId;
m_modelIdParamTypeIds[powerSocketThingClassId] = powerSocketThingModelParamTypeId;
m_modelIdParamTypeIds[doorLockThingClassId] = doorLockThingModelParamTypeId;
m_connectedStateTypeIds[thermostatThingClassId] = thermostatConnectedStateTypeId;
m_connectedStateTypeIds[powerSocketThingClassId] = powerSocketConnectedStateTypeId;
m_connectedStateTypeIds[doorLockThingClassId] = doorLockConnectedStateTypeId;
m_signalStrengthStateTypeIds[thermostatThingClassId] = thermostatSignalStrengthStateTypeId;
m_signalStrengthStateTypeIds[powerSocketThingClassId] = powerSocketSignalStrengthStateTypeId;
m_signalStrengthStateTypeIds[doorLockThingClassId] = doorLockSignalStrengthStateTypeId;
m_versionStateTypeIds[thermostatThingClassId] = thermostatVersionStateTypeId;
m_versionStateTypeIds[powerSocketThingClassId] = powerSocketVersionStateTypeId;
m_versionStateTypeIds[doorLockThingClassId] = doorLockVersionStateTypeId;
} }
QString IntegrationPluginZigbeeGeneric::name() const QString IntegrationPluginZigbeeGeneric::name() const
@ -127,10 +154,45 @@ bool IntegrationPluginZigbeeGeneric::handleNode(ZigbeeNode *node, const QUuid &n
qCDebug(dcZigbeeGeneric()) << "Handling door lock endpoint for" << node << endpoint; qCDebug(dcZigbeeGeneric()) << "Handling door lock endpoint for" << node << endpoint;
createThing(doorLockThingClassId, networkUuid, node, endpoint); createThing(doorLockThingClassId, networkUuid, node, endpoint);
// Initialize bindings and cluster attributes // Initialize bindings and cluster attributes
initializeDoorLock(node, endpoint); initDoorLock(node, endpoint);
handled = true; handled = true;
} }
} }
// Security sensors
if (endpoint->profile() == Zigbee::ZigbeeProfile::ZigbeeProfileHomeAutomation && endpoint->deviceId() == Zigbee::HomeAutomationDeviceIsaZone) {
qCInfo(dcZigbeeGeneric()) << "ISA Zone device found!";
// We need to read the Type cluster to determine what this actually is...
ZigbeeClusterIasZone *iasZoneCluster = endpoint->inputCluster<ZigbeeClusterIasZone>(ZigbeeClusterLibrary::ClusterIdIasZone);
ZigbeeClusterReply *reply = iasZoneCluster->readAttributes({ZigbeeClusterIasZone::AttributeZoneType});
connect(reply, &ZigbeeClusterReply::finished, this, [=](){
if (reply->error() != ZigbeeClusterReply::ErrorNoError) {
qCWarning(dcZigbeeGeneric()) << "Reading IAS Zone type attribute finished with error" << reply->error();
return;
}
QList<ZigbeeClusterLibrary::ReadAttributeStatusRecord> attributeStatusRecords = ZigbeeClusterLibrary::parseAttributeStatusRecords(reply->responseFrame().payload);
if (attributeStatusRecords.count() != 1 || attributeStatusRecords.first().attributeId != ZigbeeClusterIasZone::AttributeZoneType) {
qCWarning(dcZigbeeGeneric()) << "Unexpected reply in reading IAS Zone device type:" << attributeStatusRecords;
return;
}
ZigbeeClusterLibrary::ReadAttributeStatusRecord iasZoneTypeRecord = attributeStatusRecords.first();
qCDebug(dcZigbeeGeneric()) << "IAS Zone device type:" << iasZoneTypeRecord.dataType.toUInt16();
switch (iasZoneTypeRecord.dataType.toUInt16()) {
case ZigbeeClusterIasZone::ZoneTypeContactSwitch:
qCInfo(dcZigbeeGeneric()) << "Creating contact switch thing";
createThing(doorSensorThingClassId, networkUuid, node, endpoint);
initDoorSensor(node, endpoint);
break;
default:
qCWarning(dcZigbeeGeneric()) << "Unhandled IAS Zone device type:" << "0x" + QString::number(iasZoneTypeRecord.dataType.toUInt16(), 16);
}
});
handled = true;
}
} }
return handled; return handled;
@ -157,9 +219,9 @@ void IntegrationPluginZigbeeGeneric::init()
void IntegrationPluginZigbeeGeneric::setupThing(ThingSetupInfo *info) void IntegrationPluginZigbeeGeneric::setupThing(ThingSetupInfo *info)
{ {
Thing *thing = info->thing(); Thing *thing = info->thing();
QUuid networkUuid = thing->paramValue(m_networkUuidParamTypeIds.value(thing->thingClassId())).toUuid(); QUuid networkUuid = thing->paramValue(networkUuidParamTypeIds.value(thing->thingClassId())).toUuid();
qCDebug(dcZigbeeGeneric()) << "Nework uuid:" << networkUuid; qCDebug(dcZigbeeGeneric()) << "Nework uuid:" << networkUuid;
ZigbeeAddress zigbeeAddress = ZigbeeAddress(thing->paramValue(m_ieeeAddressParamTypeIds.value(thing->thingClassId())).toString()); ZigbeeAddress zigbeeAddress = ZigbeeAddress(thing->paramValue(ieeeAddressParamTypeIds.value(thing->thingClassId())).toString());
ZigbeeNode *node = m_thingNodes.value(thing); ZigbeeNode *node = m_thingNodes.value(thing);
if (!node) { if (!node) {
node = hardwareManager()->zigbeeResource()->claimNode(this, networkUuid, zigbeeAddress); node = hardwareManager()->zigbeeResource()->claimNode(this, networkUuid, zigbeeAddress);
@ -180,21 +242,21 @@ void IntegrationPluginZigbeeGeneric::setupThing(ThingSetupInfo *info)
} }
// Update connected state // Update connected state
thing->setStateValue(m_connectedStateTypeIds.value(thing->thingClassId()), node->reachable()); thing->setStateValue(connectedStateTypeIds.value(thing->thingClassId()), node->reachable());
connect(node, &ZigbeeNode::reachableChanged, thing, [thing, this](bool reachable){ connect(node, &ZigbeeNode::reachableChanged, thing, [thing, this](bool reachable){
thing->setStateValue(m_connectedStateTypeIds.value(thing->thingClassId()), reachable); thing->setStateValue(connectedStateTypeIds.value(thing->thingClassId()), reachable);
}); });
// Update signal strength // Update signal strength
thing->setStateValue(m_signalStrengthStateTypeIds.value(thing->thingClassId()), qRound(node->lqi() * 100.0 / 255.0)); thing->setStateValue(signalStrengthStateTypeIds.value(thing->thingClassId()), qRound(node->lqi() * 100.0 / 255.0));
connect(node, &ZigbeeNode::lqiChanged, thing, [this, thing](quint8 lqi){ connect(node, &ZigbeeNode::lqiChanged, thing, [this, thing](quint8 lqi){
uint signalStrength = qRound(lqi * 100.0 / 255.0); uint signalStrength = qRound(lqi * 100.0 / 255.0);
qCDebug(dcZigbeeGeneric()) << thing << "signal strength changed" << signalStrength << "%"; qCDebug(dcZigbeeGeneric()) << thing << "signal strength changed" << signalStrength << "%";
thing->setStateValue(m_signalStrengthStateTypeIds.value(thing->thingClassId()), signalStrength); thing->setStateValue(signalStrengthStateTypeIds.value(thing->thingClassId()), signalStrength);
}); });
// Set the version // Set the version
thing->setStateValue(m_versionStateTypeIds.value(thing->thingClassId()), endpoint->softwareBuildId()); thing->setStateValue(versionStateTypeIds.value(thing->thingClassId()), endpoint->softwareBuildId());
if (batteryLevelStateTypeIds.contains(thing->thingClassId())) { if (batteryLevelStateTypeIds.contains(thing->thingClassId())) {
connectToPowerConfigurationCluster(thing, endpoint); connectToPowerConfigurationCluster(thing, endpoint);
@ -302,6 +364,23 @@ void IntegrationPluginZigbeeGeneric::setupThing(ThingSetupInfo *info)
} }
} }
if (thing->thingClassId() == doorSensorThingClassId) {
ZigbeeClusterIasZone *iasZoneCluster = endpoint->inputCluster<ZigbeeClusterIasZone>(ZigbeeClusterLibrary::ClusterIdIasZone);
if (!iasZoneCluster) {
qCWarning(dcZigbeeGeneric()) << "Could not find IAS zone cluster on" << thing << endpoint;
} else {
if (iasZoneCluster->hasAttribute(ZigbeeClusterIasZone::AttributeZoneStatus)) {
qCDebug(dcZigbeeGeneric()) << thing << iasZoneCluster->zoneStatus();
ZigbeeClusterIasZone::ZoneStatusFlags zoneStatus = iasZoneCluster->zoneStatus();
thing->setStateValue(doorSensorClosedStateTypeId, !zoneStatus.testFlag(ZigbeeClusterIasZone::ZoneStatusAlarm1) && !zoneStatus.testFlag(ZigbeeClusterIasZone::ZoneStatusAlarm2));
}
connect(iasZoneCluster, &ZigbeeClusterIasZone::zoneStatusChanged, thing, [=](ZigbeeClusterIasZone::ZoneStatusFlags zoneStatus, quint8 extendedStatus, quint8 zoneId, quint16 delays) {
qCDebug(dcZigbeeGeneric()) << "Zone status changed to:" << zoneStatus << extendedStatus << zoneId << delays;
thing->setStateValue(doorSensorClosedStateTypeId, !zoneStatus.testFlag(ZigbeeClusterIasZone::ZoneStatusAlarm1) && !zoneStatus.testFlag(ZigbeeClusterIasZone::ZoneStatusAlarm2));
});
}
}
info->finish(Thing::ThingErrorNoError); info->finish(Thing::ThingErrorNoError);
} }
@ -460,7 +539,7 @@ void IntegrationPluginZigbeeGeneric::thingRemoved(Thing *thing)
{ {
ZigbeeNode *node = m_thingNodes.take(thing); ZigbeeNode *node = m_thingNodes.take(thing);
if (node) { if (node) {
QUuid networkUuid = thing->paramValue(m_networkUuidParamTypeIds.value(thing->thingClassId())).toUuid(); QUuid networkUuid = thing->paramValue(networkUuidParamTypeIds.value(thing->thingClassId())).toUuid();
hardwareManager()->zigbeeResource()->removeNodeFromNetwork(networkUuid, node); hardwareManager()->zigbeeResource()->removeNodeFromNetwork(networkUuid, node);
} }
} }
@ -473,7 +552,7 @@ ZigbeeNodeEndpoint *IntegrationPluginZigbeeGeneric::findEndpoint(Thing *thing)
return nullptr; return nullptr;
} }
quint8 endpointId = thing->paramValue(m_endpointIdParamTypeIds.value(thing->thingClassId())).toUInt(); quint8 endpointId = thing->paramValue(endpointIdParamTypeIds.value(thing->thingClassId())).toUInt();
return node->getEndpoint(endpointId); return node->getEndpoint(endpointId);
} }
@ -484,11 +563,11 @@ void IntegrationPluginZigbeeGeneric::createThing(const ThingClassId &thingClassI
descriptor.setTitle(QString("%1 (%2 - %3)").arg(deviceClassName).arg(endpoint->manufacturerName()).arg(endpoint->modelIdentifier())); descriptor.setTitle(QString("%1 (%2 - %3)").arg(deviceClassName).arg(endpoint->manufacturerName()).arg(endpoint->modelIdentifier()));
ParamList params; ParamList params;
params.append(Param(m_networkUuidParamTypeIds[thingClassId], networkUuid.toString())); params.append(Param(networkUuidParamTypeIds[thingClassId], networkUuid.toString()));
params.append(Param(m_ieeeAddressParamTypeIds[thingClassId], node->extendedAddress().toString())); params.append(Param(ieeeAddressParamTypeIds[thingClassId], node->extendedAddress().toString()));
params.append(Param(m_endpointIdParamTypeIds[thingClassId], endpoint->endpointId())); params.append(Param(endpointIdParamTypeIds[thingClassId], endpoint->endpointId()));
params.append(Param(m_modelIdParamTypeIds[thingClassId], endpoint->modelIdentifier())); params.append(Param(modelIdParamTypeIds[thingClassId], endpoint->modelIdentifier()));
params.append(Param(m_manufacturerIdParamTypeIds[thingClassId], endpoint->manufacturerName())); params.append(Param(manufacturerIdParamTypeIds[thingClassId], endpoint->manufacturerName()));
descriptor.setParams(params); descriptor.setParams(params);
emit autoThingsAppeared({descriptor}); emit autoThingsAppeared({descriptor});
} }
@ -510,7 +589,7 @@ void IntegrationPluginZigbeeGeneric::initSimplePowerSocket(ZigbeeNode *node, Zig
}); });
} }
void IntegrationPluginZigbeeGeneric::initializeDoorLock(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint) void IntegrationPluginZigbeeGeneric::initDoorLock(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint)
{ {
bindPowerConfigurationCluster(node, endpoint); bindPowerConfigurationCluster(node, endpoint);
@ -564,15 +643,8 @@ void IntegrationPluginZigbeeGeneric::initThermostat(ZigbeeNode *node, ZigbeeNode
reportingOccupiedHeatingSetpointConfig.maxReportingInterval = 2700; reportingOccupiedHeatingSetpointConfig.maxReportingInterval = 2700;
reportingOccupiedHeatingSetpointConfig.reportableChange = ZigbeeDataType(static_cast<quint8>(1)).data(); reportingOccupiedHeatingSetpointConfig.reportableChange = ZigbeeDataType(static_cast<quint8>(1)).data();
ZigbeeClusterLibrary::AttributeReportingConfiguration reportingBatteryPercentageConfig;
reportingBatteryPercentageConfig.attributeId = ZigbeeClusterPowerConfiguration::AttributeBatteryPercentageRemaining;
reportingBatteryPercentageConfig.dataType = Zigbee::Uint8;
reportingBatteryPercentageConfig.minReportingInterval = 300;
reportingBatteryPercentageConfig.maxReportingInterval = 2700;
reportingBatteryPercentageConfig.reportableChange = ZigbeeDataType(static_cast<quint8>(1)).data();
qCDebug(dcZigbeeGeneric()) << "Configuring attribute reporting for thermostat cluster"; qCDebug(dcZigbeeGeneric()) << "Configuring attribute reporting for thermostat cluster";
ZigbeeClusterReply *reportingReply = endpoint->getInputCluster(ZigbeeClusterLibrary::ClusterIdPowerConfiguration)->configureReporting({reportingOccupiedHeatingSetpointConfig, reportingBatteryPercentageConfig}); ZigbeeClusterReply *reportingReply = endpoint->getInputCluster(ZigbeeClusterLibrary::ClusterIdThermostat)->configureReporting({reportingOccupiedHeatingSetpointConfig});
connect(reportingReply, &ZigbeeClusterReply::finished, this, [=](){ connect(reportingReply, &ZigbeeClusterReply::finished, this, [=](){
if (reportingReply->error() != ZigbeeClusterReply::ErrorNoError) { if (reportingReply->error() != ZigbeeClusterReply::ErrorNoError) {
qCWarning(dcZigbeeGeneric()) << "Failed to configure thermostat cluster attribute reporting" << reportingReply->error(); qCWarning(dcZigbeeGeneric()) << "Failed to configure thermostat cluster attribute reporting" << reportingReply->error();
@ -583,6 +655,39 @@ void IntegrationPluginZigbeeGeneric::initThermostat(ZigbeeNode *node, ZigbeeNode
}); });
} }
void IntegrationPluginZigbeeGeneric::initDoorSensor(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint)
{
bindPowerConfigurationCluster(node, endpoint);
qCDebug(dcZigbeeGeneric()) << "Binding IAS custer";
ZigbeeDeviceObjectReply *bindIasClusterReply = node->deviceObject()->requestBindIeeeAddress(endpoint->endpointId(), ZigbeeClusterLibrary::ClusterIdIasZone,
hardwareManager()->zigbeeResource()->coordinatorAddress(node->networkUuid()), 0x01);
connect(bindIasClusterReply, &ZigbeeDeviceObjectReply::finished, node, [=](){
if (bindIasClusterReply->error() != ZigbeeDeviceObjectReply::ErrorNoError) {
qCWarning(dcZigbeeGeneric()) << "Failed to bind IAS zone cluster" << bindIasClusterReply->error();
} else {
qCDebug(dcZigbeeGeneric()) << "Binding IAS zone cluster finished successfully";
}
ZigbeeClusterLibrary::AttributeReportingConfiguration reportingStatusConfig;
reportingStatusConfig.attributeId = ZigbeeClusterIasZone::AttributeZoneStatus;
reportingStatusConfig.dataType = Zigbee::Int16;
reportingStatusConfig.minReportingInterval = 300;
reportingStatusConfig.maxReportingInterval = 2700;
reportingStatusConfig.reportableChange = ZigbeeDataType(static_cast<quint8>(1)).data();
qCDebug(dcZigbeeGeneric()) << "Configuring attribute reporting for thermostat cluster";
ZigbeeClusterReply *reportingReply = endpoint->getInputCluster(ZigbeeClusterLibrary::ClusterIdIasZone)->configureReporting({reportingStatusConfig});
connect(reportingReply, &ZigbeeClusterReply::finished, this, [=](){
if (reportingReply->error() != ZigbeeClusterReply::ErrorNoError) {
qCWarning(dcZigbeeGeneric()) << "Failed to configure IAS Zone cluster status attribute reporting" << reportingReply->error();
} else {
qCDebug(dcZigbeeGeneric()) << "Attribute reporting configuration finished for IAS Zone cluster" << ZigbeeClusterLibrary::parseAttributeReportingStatusRecords(reportingReply->responseFrame().payload);
}
});
});
}
void IntegrationPluginZigbeeGeneric::bindPowerConfigurationCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint) void IntegrationPluginZigbeeGeneric::bindPowerConfigurationCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint)
{ {
ZigbeeDeviceObjectReply *bindPowerReply = node->deviceObject()->requestBindIeeeAddress(endpoint->endpointId(), ZigbeeClusterLibrary::ClusterIdPowerConfiguration, ZigbeeDeviceObjectReply *bindPowerReply = node->deviceObject()->requestBindIeeeAddress(endpoint->endpointId(), ZigbeeClusterLibrary::ClusterIdPowerConfiguration,

View File

@ -59,23 +59,14 @@ public:
private: private:
QHash<Thing*, ZigbeeNode*> m_thingNodes; QHash<Thing*, ZigbeeNode*> m_thingNodes;
QHash<ThingClassId, ParamTypeId> m_ieeeAddressParamTypeIds;
QHash<ThingClassId, ParamTypeId> m_networkUuidParamTypeIds;
QHash<ThingClassId, ParamTypeId> m_endpointIdParamTypeIds;
QHash<ThingClassId, ParamTypeId> m_modelIdParamTypeIds;
QHash<ThingClassId, ParamTypeId> m_manufacturerIdParamTypeIds;
QHash<ThingClassId, StateTypeId> m_connectedStateTypeIds;
QHash<ThingClassId, StateTypeId> m_signalStrengthStateTypeIds;
QHash<ThingClassId, StateTypeId> m_versionStateTypeIds;
// Get the endpoint for the given thing // Get the endpoint for the given thing
ZigbeeNodeEndpoint *findEndpoint(Thing *thing); ZigbeeNodeEndpoint *findEndpoint(Thing *thing);
void createThing(const ThingClassId &thingClassId, const QUuid &networkUuid, ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint); void createThing(const ThingClassId &thingClassId, const QUuid &networkUuid, ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
void initSimplePowerSocket(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint); void initSimplePowerSocket(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
void initializeDoorLock(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint); void initDoorLock(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
void initThermostat(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint); void initThermostat(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
void initDoorSensor(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
void bindPowerConfigurationCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint); void bindPowerConfigurationCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);

View File

@ -342,9 +342,99 @@
"name": "close", "name": "close",
"displayName": "Lock door" "displayName": "Lock door"
} }
]
},
{
"id": "fd43b442-1764-4005-acaf-9075e6d11e3a",
"name": "doorSensor",
"displayName": "Door sensor",
"createMethods": ["auto"],
"interfaces": ["closablesensor", "battery", "wirelessconnectable"],
"paramTypes": [
{
"id": "98d4265d-99b7-4849-97ec-a7eae3b275ff",
"name": "ieeeAddress",
"displayName": "IEEE adress",
"type": "QString",
"defaultValue": "00:00:00:00:00:00:00:00"
},
{
"id": "260cb70b-7cb9-46b9-b6f3-0d4810a016b7",
"name": "networkUuid",
"displayName": "Zigbee network UUID",
"type": "QString",
"defaultValue": ""
},
{
"id": "e265b17c-e4f4-4bea-b299-a6a3d94a6e7a",
"name": "endpointId",
"displayName": "Endpoint ID",
"type": "uint",
"defaultValue": 1
},
{
"id": "193922e4-2c74-4748-a319-9e5b2f2607b4",
"name": "manufacturer",
"displayName": "Manufacturer",
"type": "QString",
"defaultValue": ""
},
{
"id": "74ddad9e-6849-4b7a-a356-971e77e5195b",
"name": "model",
"displayName": "Model",
"type": "QString",
"defaultValue": ""
}
], ],
"eventTypes": [ "stateTypes": [
{
"id": "2fb8e0a0-52f2-4c1d-b1c9-c7a295a83b44",
"name": "closed",
"displayName": "Closed",
"displayNameEvent": "Opened or closed",
"type": "bool",
"defaultValue": false
},
{
"id": "3c120c1c-0093-4c5e-8d7e-8892e4ce21b3",
"name": "batteryLevel",
"displayName": "Battery level",
"displayNameEvent": "Battery level changed",
"type": "int",
"minValue": 0,
"maxValue": 100,
"unit": "Percentage",
"defaultValue": 0
},
{
"id": "9628450e-5580-4f30-8af7-f1c3093dcfb7",
"name": "batteryCritical",
"displayName": "Battery critical",
"displayNameEvent": "Battery critical changed",
"type": "bool",
"defaultValue": false
},
{
"id": "4fae59a7-fe89-4bc7-bc04-fc18e94b5c3e",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected or disconnected",
"type": "bool",
"defaultValue": false,
"cached": false
},
{
"id": "a1bf9c90-6e12-4513-a82a-a1d15351f140",
"name": "signalStrength",
"displayName": "Signal strength",
"displayNameEvent": "Signal strength changed",
"type": "uint",
"minValue": 0,
"maxValue": 100,
"unit": "Percentage",
"defaultValue": 0
}
] ]
} }
] ]

View File

@ -4,10 +4,10 @@
<context> <context>
<name>ZigbeeGeneric</name> <name>ZigbeeGeneric</name>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="106"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="127"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="109"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="130"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="112"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="133"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="115"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="136"/>
<source>Battery</source> <source>Battery</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, EventType: batteryLevel, ID: {568e5bdd-47f3-4ccb-a1d8-ff3a5ea87ad8}) <extracomment>The name of the ParamType (ThingClass: doorLock, EventType: batteryLevel, ID: {568e5bdd-47f3-4ccb-a1d8-ff3a5ea87ad8})
---------- ----------
@ -19,8 +19,8 @@ The name of the StateType ({3a733e99-850b-4c56-b058-d39850ef2fee}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="118"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="139"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="121"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="142"/>
<source>Battery changed</source> <source>Battery changed</source>
<extracomment>The name of the EventType ({568e5bdd-47f3-4ccb-a1d8-ff3a5ea87ad8}) of ThingClass doorLock <extracomment>The name of the EventType ({568e5bdd-47f3-4ccb-a1d8-ff3a5ea87ad8}) of ThingClass doorLock
---------- ----------
@ -28,12 +28,18 @@ The name of the EventType ({3a733e99-850b-4c56-b058-d39850ef2fee}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="124"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="145"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="127"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="148"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="130"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="151"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="133"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="154"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="157"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="160"/>
<source>Battery critical</source> <source>Battery critical</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, EventType: batteryCritical, ID: {89abea26-b772-4258-9b56-e026b80c2028}) <extracomment>The name of the ParamType (ThingClass: doorSensor, EventType: batteryCritical, ID: {9628450e-5580-4f30-8af7-f1c3093dcfb7})
----------
The name of the StateType ({9628450e-5580-4f30-8af7-f1c3093dcfb7}) of ThingClass doorSensor
----------
The name of the ParamType (ThingClass: doorLock, EventType: batteryCritical, ID: {89abea26-b772-4258-9b56-e026b80c2028})
---------- ----------
The name of the StateType ({89abea26-b772-4258-9b56-e026b80c2028}) of ThingClass doorLock The name of the StateType ({89abea26-b772-4258-9b56-e026b80c2028}) of ThingClass doorLock
---------- ----------
@ -43,23 +49,56 @@ The name of the StateType ({5cec4399-ba7c-4c78-8c30-c91040ad99cf}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="136"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="163"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="139"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="166"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="169"/>
<source>Battery critical changed</source> <source>Battery critical changed</source>
<extracomment>The name of the EventType ({89abea26-b772-4258-9b56-e026b80c2028}) of ThingClass doorLock <extracomment>The name of the EventType ({9628450e-5580-4f30-8af7-f1c3093dcfb7}) of ThingClass doorSensor
----------
The name of the EventType ({89abea26-b772-4258-9b56-e026b80c2028}) of ThingClass doorLock
---------- ----------
The name of the EventType ({5cec4399-ba7c-4c78-8c30-c91040ad99cf}) of ThingClass thermostat</extracomment> The name of the EventType ({5cec4399-ba7c-4c78-8c30-c91040ad99cf}) of ThingClass thermostat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="142"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="172"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="145"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="175"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="148"/> <source>Battery level</source>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="151"/> <extracomment>The name of the ParamType (ThingClass: doorSensor, EventType: batteryLevel, ID: {3c120c1c-0093-4c5e-8d7e-8892e4ce21b3})
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="154"/> ----------
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="157"/> The name of the StateType ({3c120c1c-0093-4c5e-8d7e-8892e4ce21b3}) of ThingClass doorSensor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="178"/>
<source>Battery level changed</source>
<extracomment>The name of the EventType ({3c120c1c-0093-4c5e-8d7e-8892e4ce21b3}) of ThingClass doorSensor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="181"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="184"/>
<source>Closed</source>
<extracomment>The name of the ParamType (ThingClass: doorSensor, EventType: closed, ID: {2fb8e0a0-52f2-4c1d-b1c9-c7a295a83b44})
----------
The name of the StateType ({2fb8e0a0-52f2-4c1d-b1c9-c7a295a83b44}) of ThingClass doorSensor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="187"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="190"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="193"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="196"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="199"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="202"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="205"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="208"/>
<source>Connected</source> <source>Connected</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, EventType: connected, ID: {206b0508-b477-4aa2-b420-aba2259fb6e6}) <extracomment>The name of the ParamType (ThingClass: doorSensor, EventType: connected, ID: {4fae59a7-fe89-4bc7-bc04-fc18e94b5c3e})
----------
The name of the StateType ({4fae59a7-fe89-4bc7-bc04-fc18e94b5c3e}) of ThingClass doorSensor
----------
The name of the ParamType (ThingClass: doorLock, EventType: connected, ID: {206b0508-b477-4aa2-b420-aba2259fb6e6})
---------- ----------
The name of the StateType ({206b0508-b477-4aa2-b420-aba2259fb6e6}) of ThingClass doorLock The name of the StateType ({206b0508-b477-4aa2-b420-aba2259fb6e6}) of ThingClass doorLock
---------- ----------
@ -73,8 +112,8 @@ The name of the StateType ({e9fb2b10-96da-4b70-afda-46e948399af8}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="160"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="211"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="163"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="214"/>
<source>Connected changed</source> <source>Connected changed</source>
<extracomment>The name of the EventType ({206b0508-b477-4aa2-b420-aba2259fb6e6}) of ThingClass doorLock <extracomment>The name of the EventType ({206b0508-b477-4aa2-b420-aba2259fb6e6}) of ThingClass doorLock
---------- ----------
@ -82,14 +121,20 @@ The name of the EventType ({b5abd47e-95f1-4e35-94fa-be87c396073a}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="166"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="217"/>
<source>Connected or disconnected</source>
<extracomment>The name of the EventType ({4fae59a7-fe89-4bc7-bc04-fc18e94b5c3e}) of ThingClass doorSensor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="220"/>
<source>Connected/disconnected</source> <source>Connected/disconnected</source>
<extracomment>The name of the EventType ({e9fb2b10-96da-4b70-afda-46e948399af8}) of ThingClass thermostat</extracomment> <extracomment>The name of the EventType ({e9fb2b10-96da-4b70-afda-46e948399af8}) of ThingClass thermostat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="169"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="223"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="172"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="226"/>
<source>Cooling on</source> <source>Cooling on</source>
<extracomment>The name of the ParamType (ThingClass: thermostat, EventType: coolingOn, ID: {c77a3d3f-46c7-4026-b9ab-02ab88077cc4}) <extracomment>The name of the ParamType (ThingClass: thermostat, EventType: coolingOn, ID: {c77a3d3f-46c7-4026-b9ab-02ab88077cc4})
---------- ----------
@ -97,14 +142,14 @@ The name of the StateType ({c77a3d3f-46c7-4026-b9ab-02ab88077cc4}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="175"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="229"/>
<source>Cooling turned on</source> <source>Cooling turned on</source>
<extracomment>The name of the EventType ({c77a3d3f-46c7-4026-b9ab-02ab88077cc4}) of ThingClass thermostat</extracomment> <extracomment>The name of the EventType ({c77a3d3f-46c7-4026-b9ab-02ab88077cc4}) of ThingClass thermostat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="178"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="232"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="181"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="235"/>
<source>Current temperature</source> <source>Current temperature</source>
<extracomment>The name of the ParamType (ThingClass: thermostat, EventType: temperature, ID: {497af03a-a893-438c-aba2-1bf3ecfc66c5}) <extracomment>The name of the ParamType (ThingClass: thermostat, EventType: temperature, ID: {497af03a-a893-438c-aba2-1bf3ecfc66c5})
---------- ----------
@ -112,23 +157,32 @@ The name of the StateType ({497af03a-a893-438c-aba2-1bf3ecfc66c5}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="184"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="238"/>
<source>Current temperature changed</source> <source>Current temperature changed</source>
<extracomment>The name of the EventType ({497af03a-a893-438c-aba2-1bf3ecfc66c5}) of ThingClass thermostat</extracomment> <extracomment>The name of the EventType ({497af03a-a893-438c-aba2-1bf3ecfc66c5}) of ThingClass thermostat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="187"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="241"/>
<source>Door lock</source> <source>Door lock</source>
<extracomment>The name of the ThingClass ({34cb3d09-dd9f-4b95-95d0-30a1cd94adac})</extracomment> <extracomment>The name of the ThingClass ({34cb3d09-dd9f-4b95-95d0-30a1cd94adac})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="190"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="244"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="193"/> <source>Door sensor</source>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="196"/> <extracomment>The name of the ThingClass ({fd43b442-1764-4005-acaf-9075e6d11e3a})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="247"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="250"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="253"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="256"/>
<source>Endpoint ID</source> <source>Endpoint ID</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {ebf17460-4a37-461f-aa24-e0a9a4238c63}) <extracomment>The name of the ParamType (ThingClass: doorSensor, Type: thing, ID: {e265b17c-e4f4-4bea-b299-a6a3d94a6e7a})
----------
The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {ebf17460-4a37-461f-aa24-e0a9a4238c63})
---------- ----------
The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {c7cbda61-2b84-4f2f-a40d-bcbe0efad08c}) The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {c7cbda61-2b84-4f2f-a40d-bcbe0efad08c})
---------- ----------
@ -136,8 +190,8 @@ The name of the ParamType (ThingClass: thermostat, Type: thing, ID: {138a529d-1d
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="199"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="259"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="202"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="262"/>
<source>Heating on</source> <source>Heating on</source>
<extracomment>The name of the ParamType (ThingClass: thermostat, EventType: heatingOn, ID: {88d5dda1-b8f6-49f1-a55a-20415f9157b3}) <extracomment>The name of the ParamType (ThingClass: thermostat, EventType: heatingOn, ID: {88d5dda1-b8f6-49f1-a55a-20415f9157b3})
---------- ----------
@ -145,17 +199,20 @@ The name of the StateType ({88d5dda1-b8f6-49f1-a55a-20415f9157b3}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="205"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="265"/>
<source>Heating turned on</source> <source>Heating turned on</source>
<extracomment>The name of the EventType ({88d5dda1-b8f6-49f1-a55a-20415f9157b3}) of ThingClass thermostat</extracomment> <extracomment>The name of the EventType ({88d5dda1-b8f6-49f1-a55a-20415f9157b3}) of ThingClass thermostat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="208"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="268"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="211"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="271"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="214"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="274"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="277"/>
<source>IEEE adress</source> <source>IEEE adress</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {484bf80f-5d20-4029-b05e-6b4c9fbefd69}) <extracomment>The name of the ParamType (ThingClass: doorSensor, Type: thing, ID: {98d4265d-99b7-4849-97ec-a7eae3b275ff})
----------
The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {484bf80f-5d20-4029-b05e-6b4c9fbefd69})
---------- ----------
The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {1db22159-08a3-43d0-b515-7b34211b1d04}) The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {1db22159-08a3-43d0-b515-7b34211b1d04})
---------- ----------
@ -163,23 +220,26 @@ The name of the ParamType (ThingClass: thermostat, Type: thing, ID: {f38746d8-00
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="217"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="280"/>
<source>Identify</source> <source>Identify</source>
<extracomment>The name of the ActionType ({4e3b1430-d98e-4f05-bae6-301dac34bd4b}) of ThingClass powerSocket</extracomment> <extracomment>The name of the ActionType ({4e3b1430-d98e-4f05-bae6-301dac34bd4b}) of ThingClass powerSocket</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="220"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="283"/>
<source>Lock door</source> <source>Lock door</source>
<extracomment>The name of the ActionType ({c26e1908-25d0-4475-8f82-5aaf034640f1}) of ThingClass doorLock</extracomment> <extracomment>The name of the ActionType ({c26e1908-25d0-4475-8f82-5aaf034640f1}) of ThingClass doorLock</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="223"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="286"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="226"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="289"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="229"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="292"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="295"/>
<source>Manufacturer</source> <source>Manufacturer</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {1b177eb8-a13f-4975-92a7-a6bf54670c8f}) <extracomment>The name of the ParamType (ThingClass: doorSensor, Type: thing, ID: {193922e4-2c74-4748-a319-9e5b2f2607b4})
----------
The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {1b177eb8-a13f-4975-92a7-a6bf54670c8f})
---------- ----------
The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {8daa4709-1dc1-4717-a529-b78e32002b59}) The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {8daa4709-1dc1-4717-a529-b78e32002b59})
---------- ----------
@ -187,11 +247,14 @@ The name of the ParamType (ThingClass: thermostat, Type: thing, ID: {ae76acb0-40
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="232"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="298"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="235"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="301"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="238"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="304"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="307"/>
<source>Model</source> <source>Model</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {b13f86a7-dc65-4ed6-860c-cdb099f90916}) <extracomment>The name of the ParamType (ThingClass: doorSensor, Type: thing, ID: {74ddad9e-6849-4b7a-a356-971e77e5195b})
----------
The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {b13f86a7-dc65-4ed6-860c-cdb099f90916})
---------- ----------
The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {ad03bc04-857a-43a9-8bea-a3c9db24461a}) The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {ad03bc04-857a-43a9-8bea-a3c9db24461a})
---------- ----------
@ -199,9 +262,15 @@ The name of the ParamType (ThingClass: thermostat, Type: thing, ID: {4262cfc6-4b
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="241"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="310"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="244"/> <source>Opened or closed</source>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="247"/> <extracomment>The name of the EventType ({2fb8e0a0-52f2-4c1d-b1c9-c7a295a83b44}) of ThingClass doorSensor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="313"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="316"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="319"/>
<source>Power</source> <source>Power</source>
<extracomment>The name of the ParamType (ThingClass: powerSocket, ActionType: power, ID: {2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) <extracomment>The name of the ParamType (ThingClass: powerSocket, ActionType: power, ID: {2c8268b9-d76b-415a-b2e9-6bfeabd98a76})
---------- ----------
@ -211,38 +280,44 @@ The name of the StateType ({2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="250"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="322"/>
<source>Power changed</source> <source>Power changed</source>
<extracomment>The name of the EventType ({2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) of ThingClass powerSocket</extracomment> <extracomment>The name of the EventType ({2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) of ThingClass powerSocket</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="253"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="325"/>
<source>Power socket</source> <source>Power socket</source>
<extracomment>The name of the ThingClass ({800a8df8-06cb-4d93-8334-944fcce9651a})</extracomment> <extracomment>The name of the ThingClass ({800a8df8-06cb-4d93-8334-944fcce9651a})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="256"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="328"/>
<source>Set power</source> <source>Set power</source>
<extracomment>The name of the ActionType ({2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) of ThingClass powerSocket</extracomment> <extracomment>The name of the ActionType ({2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) of ThingClass powerSocket</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="259"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="331"/>
<source>Set target temperature</source> <source>Set target temperature</source>
<extracomment>The name of the ActionType ({88ad3957-2912-4de1-b53d-b360565dd361}) of ThingClass thermostat</extracomment> <extracomment>The name of the ActionType ({88ad3957-2912-4de1-b53d-b360565dd361}) of ThingClass thermostat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="262"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="334"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="265"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="337"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="268"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="340"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="271"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="343"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="274"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="346"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="277"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="349"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="352"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="355"/>
<source>Signal strength</source> <source>Signal strength</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, EventType: signalStrength, ID: {6c8f8db5-464c-408a-9c65-4e8096663019}) <extracomment>The name of the ParamType (ThingClass: doorSensor, EventType: signalStrength, ID: {a1bf9c90-6e12-4513-a82a-a1d15351f140})
----------
The name of the StateType ({a1bf9c90-6e12-4513-a82a-a1d15351f140}) of ThingClass doorSensor
----------
The name of the ParamType (ThingClass: doorLock, EventType: signalStrength, ID: {6c8f8db5-464c-408a-9c65-4e8096663019})
---------- ----------
The name of the StateType ({6c8f8db5-464c-408a-9c65-4e8096663019}) of ThingClass doorLock The name of the StateType ({6c8f8db5-464c-408a-9c65-4e8096663019}) of ThingClass doorLock
---------- ----------
@ -256,11 +331,14 @@ The name of the StateType ({8f0512ab-ced2-4dcb-90fe-aaa532efd0dd}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="280"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="358"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="283"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="361"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="286"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="364"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="367"/>
<source>Signal strength changed</source> <source>Signal strength changed</source>
<extracomment>The name of the EventType ({6c8f8db5-464c-408a-9c65-4e8096663019}) of ThingClass doorLock <extracomment>The name of the EventType ({a1bf9c90-6e12-4513-a82a-a1d15351f140}) of ThingClass doorSensor
----------
The name of the EventType ({6c8f8db5-464c-408a-9c65-4e8096663019}) of ThingClass doorLock
---------- ----------
The name of the EventType ({21889797-32c0-4f1b-903d-8af71981882b}) of ThingClass powerSocket The name of the EventType ({21889797-32c0-4f1b-903d-8af71981882b}) of ThingClass powerSocket
---------- ----------
@ -268,9 +346,9 @@ The name of the EventType ({8f0512ab-ced2-4dcb-90fe-aaa532efd0dd}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="289"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="370"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="292"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="373"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="295"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="376"/>
<source>Target temperature</source> <source>Target temperature</source>
<extracomment>The name of the ParamType (ThingClass: thermostat, ActionType: targetTemperature, ID: {88ad3957-2912-4de1-b53d-b360565dd361}) <extracomment>The name of the ParamType (ThingClass: thermostat, ActionType: targetTemperature, ID: {88ad3957-2912-4de1-b53d-b360565dd361})
---------- ----------
@ -280,24 +358,24 @@ The name of the StateType ({88ad3957-2912-4de1-b53d-b360565dd361}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="298"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="379"/>
<source>Target temperature changed</source> <source>Target temperature changed</source>
<extracomment>The name of the EventType ({88ad3957-2912-4de1-b53d-b360565dd361}) of ThingClass thermostat</extracomment> <extracomment>The name of the EventType ({88ad3957-2912-4de1-b53d-b360565dd361}) of ThingClass thermostat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="301"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="382"/>
<source>Unlock door</source> <source>Unlock door</source>
<extracomment>The name of the ActionType ({6e112e3b-080f-47e4-8e2b-453029f0eacb}) of ThingClass doorLock</extracomment> <extracomment>The name of the ActionType ({6e112e3b-080f-47e4-8e2b-453029f0eacb}) of ThingClass doorLock</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="304"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="385"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="307"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="388"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="310"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="391"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="313"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="394"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="316"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="397"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="319"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="400"/>
<source>Version</source> <source>Version</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, EventType: version, ID: {9e27850b-99d8-40df-9bc7-4b3c7c01faf8}) <extracomment>The name of the ParamType (ThingClass: doorLock, EventType: version, ID: {9e27850b-99d8-40df-9bc7-4b3c7c01faf8})
---------- ----------
@ -313,9 +391,9 @@ The name of the StateType ({c8bd12d2-b425-4422-9e0e-a65542a47b70}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="322"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="403"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="325"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="406"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="328"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="409"/>
<source>Version changed</source> <source>Version changed</source>
<extracomment>The name of the EventType ({9e27850b-99d8-40df-9bc7-4b3c7c01faf8}) of ThingClass doorLock <extracomment>The name of the EventType ({9e27850b-99d8-40df-9bc7-4b3c7c01faf8}) of ThingClass doorLock
---------- ----------
@ -325,23 +403,26 @@ The name of the EventType ({c8bd12d2-b425-4422-9e0e-a65542a47b70}) of ThingClass
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="331"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="412"/>
<source>Zigbee Generic</source> <source>Zigbee Generic</source>
<extracomment>The name of the plugin ZigbeeGeneric ({6a4343be-9fd6-4015-9ff5-38542651c534})</extracomment> <extracomment>The name of the plugin ZigbeeGeneric ({6a4343be-9fd6-4015-9ff5-38542651c534})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="334"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="415"/>
<source>Zigbee Thermostat</source> <source>Zigbee Thermostat</source>
<extracomment>The name of the ThingClass ({ca9af6cf-2d15-4d54-ba07-3d2ce03445b8})</extracomment> <extracomment>The name of the ThingClass ({ca9af6cf-2d15-4d54-ba07-3d2ce03445b8})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="337"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="418"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="340"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="421"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="343"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="424"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="427"/>
<source>Zigbee network UUID</source> <source>Zigbee network UUID</source>
<extracomment>The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {4d50cbd3-f297-421c-9938-65ec0bb4bd34}) <extracomment>The name of the ParamType (ThingClass: doorSensor, Type: thing, ID: {260cb70b-7cb9-46b9-b6f3-0d4810a016b7})
----------
The name of the ParamType (ThingClass: doorLock, Type: thing, ID: {4d50cbd3-f297-421c-9938-65ec0bb4bd34})
---------- ----------
The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {26e92d1d-bc2f-4ccd-ad1f-d6d6189d2609}) The name of the ParamType (ThingClass: powerSocket, Type: thing, ID: {26e92d1d-bc2f-4ccd-ad1f-d6d6189d2609})
---------- ----------
@ -349,7 +430,7 @@ The name of the ParamType (ThingClass: thermostat, Type: thing, ID: {4a92b536-de
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="346"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="430"/>
<source>nymea</source> <source>nymea</source>
<extracomment>The name of the vendor ({2062d64d-3232-433c-88bc-0d33c0ba2ba6})</extracomment> <extracomment>The name of the vendor ({2062d64d-3232-433c-88bc-0d33c0ba2ba6})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>