New Plugin: Zigbee remotes with support for the JUNG ZLL 5004M wall switch
This commit is contained in:
parent
07df2a4912
commit
d492bbb17c
41
debian/control
vendored
41
debian/control
vendored
@ -1150,22 +1150,6 @@ Description: nymea.io zigbee plugin for develco things
|
||||
This package will install the nymea.io plugin for Develco
|
||||
|
||||
|
||||
Package: nymea-plugin-zigbee-lumi
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
libnymea-zigbee1,
|
||||
nymea-plugins-translations,
|
||||
Description: nymea.io zigbee plugin for lumi/aquara/xiaomi things
|
||||
The nymea daemon is a plugin based IoT (Internet of Things) server. The
|
||||
server works like a translator for devices, things and services and
|
||||
allows them to interact.
|
||||
With the powerful rule engine you are able to connect any device available
|
||||
in the system and create individual scenes and behaviors for your environment.
|
||||
.
|
||||
This package will install the nymea.io plugin for Lumi
|
||||
|
||||
|
||||
Package: nymea-plugin-zigbee-generic
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
@ -1198,6 +1182,22 @@ Description: nymea.io zigbee plugin for different generic recognizable lights
|
||||
This package will install the nymea.io plugin for generic recognizable lights
|
||||
|
||||
|
||||
Package: nymea-plugin-zigbee-lumi
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
libnymea-zigbee1,
|
||||
nymea-plugins-translations,
|
||||
Description: nymea.io zigbee plugin for lumi/aquara/xiaomi things
|
||||
The nymea daemon is a plugin based IoT (Internet of Things) server. The
|
||||
server works like a translator for devices, things and services and
|
||||
allows them to interact.
|
||||
With the powerful rule engine you are able to connect any device available
|
||||
in the system and create individual scenes and behaviors for your environment.
|
||||
.
|
||||
This package will install the nymea.io plugin for Lumi
|
||||
|
||||
|
||||
Package: nymea-plugin-zigbee-philipshue
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
@ -1214,6 +1214,15 @@ Description: nymea.io zigbee plugin for Philips Hue devices
|
||||
This package will install the nymea.io plugin for Philips Hue zigbee devices
|
||||
|
||||
|
||||
Package: nymea-plugin-zigbee-remotes
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
libnymea-zigbee1,
|
||||
nymea-plugins-translations,
|
||||
Description: nymea.io plugin for various zigbee remote controls.
|
||||
|
||||
|
||||
Package: nymea-plugin-zigbee-tradfri
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
|
||||
1
debian/nymea-plugin-zigbee-remotes.install.in
vendored
Normal file
1
debian/nymea-plugin-zigbee-remotes.install.in
vendored
Normal file
@ -0,0 +1 @@
|
||||
usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationpluginzigbeeremotes.so
|
||||
@ -78,6 +78,7 @@ PLUGIN_DIRS = \
|
||||
zigbeegenericlights \
|
||||
zigbeelumi \
|
||||
zigbeephilipshue \
|
||||
zigbeeremotes \
|
||||
zigbeetradfri \
|
||||
|
||||
|
||||
|
||||
17
zigbeeremotes/README.md
Normal file
17
zigbeeremotes/README.md
Normal file
@ -0,0 +1,17 @@
|
||||
# ZigBee remotes
|
||||
|
||||
This plugin contains a collection of various Zigbee remote controls.
|
||||
|
||||
## Supported Things
|
||||
|
||||
### JUNG ZLL5004m
|
||||
|
||||
The JUNG ZLL5004m is a battery powered wall switch with 8 buttons. The top row acts as on/off on press as well as dimming up and down on longpress.
|
||||
The other 6 buttons recall scenes.
|
||||
To connect the device to nymea, start with factory resetting the remote by pressing and holding buttons 5 and 6 (3rd row, left and right) down simultaneously
|
||||
until the remote starts blinking, then press the off button. Then permit new devices to join the ZigBee network and press and hold button 2 and 7 (top-right
|
||||
and bottom-left) until the remote starts blinking.
|
||||
After the remote has joined the nymea network, the remote can also be directly linked to light bulbs by holding it close to a light bulb and pressing and
|
||||
holding buttons 1 and 8 (top-left and bottom-right) until the remote and the light start blinking. The remotes buttons will now control the light directly
|
||||
as well as sending its button presses to nymea for further processing.
|
||||
|
||||
291
zigbeeremotes/integrationpluginzigbeeremotes.cpp
Normal file
291
zigbeeremotes/integrationpluginzigbeeremotes.cpp
Normal file
@ -0,0 +1,291 @@
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
*
|
||||
*
|
||||
* Copyright 2013 - 2020, nymea GmbH
|
||||
* Contact: contact@nymea.io
|
||||
|
||||
* This file is part of nymea.
|
||||
* This project including source code and documentation is protected by
|
||||
* copyright law, and remains the property of nymea GmbH. All rights, including
|
||||
* reproduction, publication, editing and translation, are reserved. The use of
|
||||
* this project is subject to the terms of a license agreement to be concluded
|
||||
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
|
||||
* under https://nymea.io/license
|
||||
*
|
||||
* GNU Lesser General Public License Usage
|
||||
* Alternatively, this project may be redistributed and/or modified under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free
|
||||
* Software Foundation; version 3. This project is distributed in the hope that
|
||||
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this project. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For any further details and any questions please contact us under
|
||||
* contact@nymea.io or see our FAQ/Licensing Information on
|
||||
* https://nymea.io/license/faq
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include "integrationpluginzigbeeremotes.h"
|
||||
#include "plugininfo.h"
|
||||
#include "hardware/zigbee/zigbeehardwareresource.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
IntegrationPluginZigbeeRemotes::IntegrationPluginZigbeeRemotes()
|
||||
{
|
||||
}
|
||||
|
||||
QString IntegrationPluginZigbeeRemotes::name() const
|
||||
{
|
||||
return "Remotes";
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::init()
|
||||
{
|
||||
hardwareManager()->zigbeeResource()->registerHandler(this, ZigbeeHardwareResource::HandlerTypeVendor);
|
||||
}
|
||||
|
||||
bool IntegrationPluginZigbeeRemotes::handleNode(ZigbeeNode *node, const QUuid &networkUuid)
|
||||
{
|
||||
qCDebug(dcZigbeeRemotes) << "Evaluating node:" << node << node->nodeDescriptor().manufacturerCode << node->modelName();
|
||||
bool handled = false;
|
||||
// "Insta" remote (JUNG ZLL 5004)
|
||||
if (node->nodeDescriptor().manufacturerCode == 0x117A && node->modelName() == " Remote") {
|
||||
ZigbeeNodeEndpoint *endpoint = node->getEndpoint(0x01);
|
||||
if (!endpoint) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Device claims to be an Insta remote but does not provide endpoint 1";
|
||||
return false;
|
||||
}
|
||||
|
||||
createThing(instaThingClassId, networkUuid, node, endpoint);
|
||||
|
||||
// Nothing to be done here... The device does not support battery level updates and will send all the commands
|
||||
// to the coordinator unconditionally, no need to bind any clusters...
|
||||
|
||||
handled = true;
|
||||
}
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::handleRemoveNode(ZigbeeNode *node, const QUuid &networkUuid)
|
||||
{
|
||||
Q_UNUSED(networkUuid)
|
||||
Thing *thing = m_thingNodes.key(node);
|
||||
if (thing) {
|
||||
qCDebug(dcZigbeeRemotes()) << node << "for" << thing << "has left the network.";
|
||||
emit autoThingDisappeared(thing->id());
|
||||
|
||||
// Removing it from our map to prevent a loop that would ask the zigbee network to remove this node (see thingRemoved())
|
||||
m_thingNodes.remove(thing);
|
||||
}
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::setupThing(ThingSetupInfo *info)
|
||||
{
|
||||
Thing *thing = info->thing();
|
||||
QUuid networkUuid = thing->paramValue("networkUuid").toUuid();
|
||||
qCDebug(dcZigbeeRemotes()) << "Nework uuid:" << networkUuid;
|
||||
ZigbeeAddress zigbeeAddress = ZigbeeAddress(thing->paramValue("ieeeAddress").toString());
|
||||
ZigbeeNode *node = m_thingNodes.value(thing);
|
||||
if (!node) {
|
||||
node = hardwareManager()->zigbeeResource()->claimNode(this, networkUuid, zigbeeAddress);
|
||||
}
|
||||
|
||||
if (!node) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Zigbee node for" << info->thing()->name() << "not found.";
|
||||
info->finish(Thing::ThingErrorHardwareNotAvailable);
|
||||
return;
|
||||
}
|
||||
m_thingNodes.insert(thing, node);
|
||||
|
||||
// Update connected state
|
||||
thing->setStateValue("connected", node->reachable());
|
||||
connect(node, &ZigbeeNode::reachableChanged, thing, [thing](bool reachable){
|
||||
thing->setStateValue("connected", reachable);
|
||||
});
|
||||
|
||||
// Update signal strength
|
||||
thing->setStateValue("signalStrength", qRound(node->lqi() * 100.0 / 255.0));
|
||||
connect(node, &ZigbeeNode::lqiChanged, thing, [thing](quint8 lqi){
|
||||
uint signalStrength = qRound(lqi * 100.0 / 255.0);
|
||||
qCDebug(dcZigbeeRemotes()) << thing << "signal strength changed" << signalStrength << "%";
|
||||
thing->setStateValue("signalStrength", signalStrength);
|
||||
});
|
||||
|
||||
// Type specific setup
|
||||
if (thing->thingClassId() == instaThingClassId) {
|
||||
ZigbeeNodeEndpoint *endpoint = node->getEndpoint(0x01);
|
||||
|
||||
ZigbeeClusterOnOff *onOffCluster = endpoint->outputCluster<ZigbeeClusterOnOff>(ZigbeeClusterLibrary::ClusterIdOnOff);
|
||||
ZigbeeClusterLevelControl *levelControlCluster = endpoint->outputCluster<ZigbeeClusterLevelControl>(ZigbeeClusterLibrary::ClusterIdLevelControl);
|
||||
ZigbeeClusterScenes *scenesCluster = endpoint->outputCluster<ZigbeeClusterScenes>(ZigbeeClusterLibrary::ClusterIdScenes);
|
||||
if (!onOffCluster || !levelControlCluster || !scenesCluster) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Could not find all of the needed clusters for" << thing->name() << "in" << m_thingNodes.value(thing) << "on endpoint" << endpoint->endpointId();
|
||||
info->finish(Thing::ThingErrorHardwareNotAvailable);
|
||||
return;
|
||||
}
|
||||
connect(onOffCluster, &ZigbeeClusterOnOff::commandSent, this, [=](ZigbeeClusterOnOff::Command command, const QByteArray ¶meters){
|
||||
qCDebug(dcZigbeeRemotes()) << "OnOff command received:" << command << parameters;
|
||||
switch (command) {
|
||||
case ZigbeeClusterOnOff::CommandOn:
|
||||
thing->emitEvent(instaPressedEventTypeId, {Param(instaPressedEventButtonNameParamTypeId, "ON")});
|
||||
break;
|
||||
case ZigbeeClusterOnOff::CommandOffWithEffect:
|
||||
thing->emitEvent(instaPressedEventTypeId, {Param(instaPressedEventButtonNameParamTypeId, "OFF")});
|
||||
break;
|
||||
default:
|
||||
qCWarning(dcZigbeeRemotes()) << "Unhandled command from Insta Remote:" << command << parameters.toHex();
|
||||
}
|
||||
});
|
||||
connect(levelControlCluster, &ZigbeeClusterLevelControl::commandStepSent, this, [=](bool withOnOff, ZigbeeClusterLevelControl::StepMode stepMode, quint8 stepSize, quint16 transitionTime){
|
||||
qCDebug(dcZigbeeRemotes()) << "Level command received" << withOnOff << stepMode << stepSize << transitionTime;
|
||||
thing->emitEvent(instaPressedEventTypeId, {Param(instaPressedEventButtonNameParamTypeId, stepMode == ZigbeeClusterLevelControl::StepModeUp ? "+" : "-")});
|
||||
});
|
||||
connect(scenesCluster, &ZigbeeClusterScenes::commandSent, this, [=](ZigbeeClusterScenes::Command command, quint16 groupId, quint8 sceneId){
|
||||
qCDebug(dcZigbeeRemotes()) << "Scenes command received:" << command << groupId << sceneId;
|
||||
thing->emitEvent(instaPressedEventTypeId, {Param(instaPressedEventButtonNameParamTypeId, QString::number(sceneId))});
|
||||
});
|
||||
|
||||
|
||||
// The device also supports setting saturation, color and color temperature. However, it's quite funky to
|
||||
// actually get there on the device and that mode seems to be only enabled if there are bindings to
|
||||
// actual lamps. Once it's bound to lamps, pressing on and off simultaneously will start cycling through the bound
|
||||
// lights and during that mode, the color/saturation/temperature will act on the currently selected lamp only.
|
||||
// After some seconds without button press, it will revert back to the default mode where it sends all commands
|
||||
// to the coordinator *and* all the bound lights simultaneously.
|
||||
// So, in order to get that working we'd need to fake a like and somehow allow binding that via touch-link from a key-combo on the device.
|
||||
|
||||
// Not supporting that here... A user may still additionally bind the device to a lamp and use that feature with the remote....
|
||||
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
return;
|
||||
}
|
||||
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::thingRemoved(Thing *thing)
|
||||
{
|
||||
ZigbeeNode *node = m_thingNodes.take(thing);
|
||||
if (node) {
|
||||
QUuid networkUuid = thing->paramValue("networkUuid").toUuid();
|
||||
hardwareManager()->zigbeeResource()->removeNodeFromNetwork(networkUuid, node);
|
||||
}
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::createThing(const ThingClassId &thingClassId, const QUuid &networkUuid, ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint)
|
||||
{
|
||||
ThingDescriptor descriptor(thingClassId);
|
||||
ThingClass thingClass = supportedThings().findById(thingClassId);
|
||||
descriptor.setTitle(QString("%1 (%2 - %3)").arg(thingClass.displayName()).arg(endpoint->manufacturerName()).arg(endpoint->modelIdentifier()));
|
||||
|
||||
ParamList params;
|
||||
params.append(Param(thingClass.paramTypes().findByName("networkUuid").id(), networkUuid.toString()));
|
||||
params.append(Param(thingClass.paramTypes().findByName("ieeeAddress").id(), node->extendedAddress().toString()));
|
||||
descriptor.setParams(params);
|
||||
emit autoThingsAppeared({descriptor});
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::bindPowerConfigurationCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint)
|
||||
{
|
||||
ZigbeeDeviceObjectReply *bindPowerReply = node->deviceObject()->requestBindIeeeAddress(endpoint->endpointId(), ZigbeeClusterLibrary::ClusterIdPowerConfiguration,
|
||||
hardwareManager()->zigbeeResource()->coordinatorAddress(node->networkUuid()), 0x01);
|
||||
connect(bindPowerReply, &ZigbeeDeviceObjectReply::finished, node, [=](){
|
||||
if (bindPowerReply->error() != ZigbeeDeviceObjectReply::ErrorNoError) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Failed to bind power configuration cluster" << bindPowerReply->error();
|
||||
} else {
|
||||
qCDebug(dcZigbeeRemotes()) << "Binding power configuration cluster finished successfully";
|
||||
}
|
||||
|
||||
ZigbeeClusterLibrary::AttributeReportingConfiguration batteryPercentageConfig;
|
||||
batteryPercentageConfig.attributeId = ZigbeeClusterPowerConfiguration::AttributeBatteryPercentageRemaining;
|
||||
batteryPercentageConfig.dataType = Zigbee::Uint8;
|
||||
batteryPercentageConfig.minReportingInterval = 300;
|
||||
batteryPercentageConfig.maxReportingInterval = 2700;
|
||||
batteryPercentageConfig.reportableChange = ZigbeeDataType(static_cast<quint8>(1)).data();
|
||||
|
||||
qCDebug(dcZigbeeRemotes()) << "Configuring attribute reporting for power configuration cluster";
|
||||
ZigbeeClusterReply *reportingReply = endpoint->getInputCluster(ZigbeeClusterLibrary::ClusterIdPowerConfiguration)->configureReporting({batteryPercentageConfig});
|
||||
connect(reportingReply, &ZigbeeClusterReply::finished, this, [=](){
|
||||
if (reportingReply->error() != ZigbeeClusterReply::ErrorNoError) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Failed to configure power configuration cluster attribute reporting" << reportingReply->error();
|
||||
} else {
|
||||
qCDebug(dcZigbeeRemotes()) << "Attribute reporting configuration finished for power configuration cluster" << ZigbeeClusterLibrary::parseAttributeReportingStatusRecords(reportingReply->responseFrame().payload);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::bindOnOffCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint)
|
||||
{
|
||||
ZigbeeDeviceObjectReply *bindOnOffClusterReply = node->deviceObject()->requestBindIeeeAddress(endpoint->endpointId(), ZigbeeClusterLibrary::ClusterIdOnOff,
|
||||
hardwareManager()->zigbeeResource()->coordinatorAddress(node->networkUuid()), 0x01);
|
||||
connect(bindOnOffClusterReply, &ZigbeeDeviceObjectReply::finished, node, [=](){
|
||||
if (bindOnOffClusterReply->error() != ZigbeeDeviceObjectReply::ErrorNoError) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Failed to bind on/off cluster" << bindOnOffClusterReply->error();
|
||||
} else {
|
||||
qCDebug(dcZigbeeRemotes()) << "Bound on/off cluster successfully";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::bindLevelControlCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint)
|
||||
{
|
||||
ZigbeeDeviceObjectReply *bindLevelControlClusterReply = node->deviceObject()->requestBindIeeeAddress(endpoint->endpointId(), ZigbeeClusterLibrary::ClusterIdLevelControl,
|
||||
hardwareManager()->zigbeeResource()->coordinatorAddress(node->networkUuid()), 0x01);
|
||||
connect(bindLevelControlClusterReply, &ZigbeeDeviceObjectReply::finished, node, [=](){
|
||||
if (bindLevelControlClusterReply->error() != ZigbeeDeviceObjectReply::ErrorNoError) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Failed to bind level control cluster" << bindLevelControlClusterReply->error();
|
||||
} else {
|
||||
qCDebug(dcZigbeeRemotes()) << "Bound level control cluster successfully";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::bindScenesCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint)
|
||||
{
|
||||
ZigbeeDeviceObjectReply *bindScenesClusterReply = node->deviceObject()->requestBindIeeeAddress(endpoint->endpointId(), ZigbeeClusterLibrary::ClusterIdScenes,
|
||||
hardwareManager()->zigbeeResource()->coordinatorAddress(node->networkUuid()), 0x01);
|
||||
connect(bindScenesClusterReply, &ZigbeeDeviceObjectReply::finished, node, [=](){
|
||||
if (bindScenesClusterReply->error() != ZigbeeDeviceObjectReply::ErrorNoError) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Failed to bind on/off cluster" << bindScenesClusterReply->error();
|
||||
} else {
|
||||
qCDebug(dcZigbeeRemotes()) << "Bound on/off cluster successfully";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void IntegrationPluginZigbeeRemotes::connectToPowerConfigurationCluster(Thing *thing, ZigbeeNodeEndpoint *endpoint)
|
||||
{
|
||||
// Get battery level changes
|
||||
ZigbeeClusterPowerConfiguration *powerCluster = endpoint->inputCluster<ZigbeeClusterPowerConfiguration>(ZigbeeClusterLibrary::ClusterIdPowerConfiguration);
|
||||
if (powerCluster) {
|
||||
// If the power cluster attributes are already available, read values now
|
||||
if (powerCluster->hasAttribute(ZigbeeClusterPowerConfiguration::AttributeBatteryPercentageRemaining)) {
|
||||
thing->setStateValue("batteryLevel", powerCluster->batteryPercentage());
|
||||
thing->setStateValue("batteryCritical", (powerCluster->batteryPercentage() < 10.0));
|
||||
}
|
||||
// Refresh power cluster attributes in any case
|
||||
ZigbeeClusterReply *reply = powerCluster->readAttributes({ZigbeeClusterPowerConfiguration::AttributeBatteryPercentageRemaining});
|
||||
connect(reply, &ZigbeeClusterReply::finished, thing, [=](){
|
||||
if (reply->error() != ZigbeeClusterReply::ErrorNoError) {
|
||||
qCWarning(dcZigbeeRemotes()) << "Reading power configuration cluster attributes finished with error" << reply->error();
|
||||
return;
|
||||
}
|
||||
thing->setStateValue("batteryLevel", powerCluster->batteryPercentage());
|
||||
thing->setStateValue("batteryCritical", (powerCluster->batteryPercentage() < 10.0));
|
||||
});
|
||||
|
||||
// Connect to battery level changes
|
||||
connect(powerCluster, &ZigbeeClusterPowerConfiguration::batteryPercentageChanged, thing, [=](double percentage){
|
||||
thing->setStateValue("batteryLevel", percentage);
|
||||
thing->setStateValue("batteryCritical", (percentage < 10.0));
|
||||
});
|
||||
}
|
||||
}
|
||||
73
zigbeeremotes/integrationpluginzigbeeremotes.h
Normal file
73
zigbeeremotes/integrationpluginzigbeeremotes.h
Normal file
@ -0,0 +1,73 @@
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
*
|
||||
* Copyright 2013 - 2020, nymea GmbH
|
||||
* Contact: contact@nymea.io
|
||||
*
|
||||
* This file is part of nymea.
|
||||
* This project including source code and documentation is protected by
|
||||
* copyright law, and remains the property of nymea GmbH. All rights, including
|
||||
* reproduction, publication, editing and translation, are reserved. The use of
|
||||
* this project is subject to the terms of a license agreement to be concluded
|
||||
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
|
||||
* under https://nymea.io/license
|
||||
*
|
||||
* GNU Lesser General Public License Usage
|
||||
* Alternatively, this project may be redistributed and/or modified under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free
|
||||
* Software Foundation; version 3. This project is distributed in the hope that
|
||||
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this project. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For any further details and any questions please contact us under
|
||||
* contact@nymea.io or see our FAQ/Licensing Information on
|
||||
* https://nymea.io/license/faq
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#ifndef INTEGRATIONPLUGINZIGBEEREMOTES_H
|
||||
#define INTEGRATIONPLUGINZIGBEEREMOTES_H
|
||||
|
||||
#include "integrations/integrationplugin.h"
|
||||
#include "hardware/zigbee/zigbeehandler.h"
|
||||
#include "plugintimer.h"
|
||||
|
||||
#include "extern-plugininfo.h"
|
||||
|
||||
#include <QTimer>
|
||||
|
||||
class IntegrationPluginZigbeeRemotes: public IntegrationPlugin, public ZigbeeHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationpluginzigbeeremotes.json")
|
||||
Q_INTERFACES(IntegrationPlugin)
|
||||
|
||||
public:
|
||||
explicit IntegrationPluginZigbeeRemotes();
|
||||
|
||||
QString name() const override;
|
||||
bool handleNode(ZigbeeNode *node, const QUuid &networkUuid) override;
|
||||
void handleRemoveNode(ZigbeeNode *node, const QUuid &networkUuid) override;
|
||||
|
||||
void init() override;
|
||||
void setupThing(ThingSetupInfo *info) override;
|
||||
void thingRemoved(Thing *thing) override;
|
||||
|
||||
private:
|
||||
QHash<Thing*, ZigbeeNode*> m_thingNodes;
|
||||
|
||||
void createThing(const ThingClassId &thingClassId, const QUuid &networkUuid, ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
|
||||
|
||||
void bindPowerConfigurationCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
|
||||
void bindOnOffCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
|
||||
void bindLevelControlCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
|
||||
void bindScenesCluster(ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint);
|
||||
|
||||
void connectToPowerConfigurationCluster(Thing *thing, ZigbeeNodeEndpoint *endpoint);
|
||||
};
|
||||
|
||||
#endif // INTEGRATIONPLUGINZIGBEEREMOTES_H
|
||||
75
zigbeeremotes/integrationpluginzigbeeremotes.json
Normal file
75
zigbeeremotes/integrationpluginzigbeeremotes.json
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
"name": "ZigbeeRemotes",
|
||||
"displayName": "Zigbee remotes",
|
||||
"id": "d0184b49-6e6d-42fe-92e1-e2ede67ca7df",
|
||||
"vendors": [
|
||||
{
|
||||
"name": "jung",
|
||||
"displayName": "JUNG GmbH",
|
||||
"id": "521ade0c-fad5-49a9-99f5-e2bc124c01a5",
|
||||
"thingClasses": [
|
||||
{
|
||||
"id": "f81ad8c0-29e3-4284-ad3a-393e11c2cc37",
|
||||
"name": "insta",
|
||||
"displayName": "JUNG ZLL 5004",
|
||||
"createMethods": ["auto"],
|
||||
"interfaces": ["multibutton", "wirelessconnectable"],
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "93da9fd8-9068-476c-8ff3-53fe51a11808",
|
||||
"name": "ieeeAddress",
|
||||
"displayName": "IEEE adress",
|
||||
"type": "QString",
|
||||
"defaultValue": "00:00:00:00:00:00:00:00"
|
||||
},
|
||||
{
|
||||
"id": "4b425f78-0300-49bc-8c89-cdf651940da4",
|
||||
"name": "networkUuid",
|
||||
"displayName": "Zigbee network UUID",
|
||||
"type": "QString",
|
||||
"defaultValue": ""
|
||||
}
|
||||
],
|
||||
"stateTypes": [
|
||||
{
|
||||
"id": "bf6d6426-a967-4084-86bf-4edd2d074316",
|
||||
"name": "connected",
|
||||
"displayName": "Connected",
|
||||
"displayNameEvent": "Connected or disconnected",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"cached": false
|
||||
},
|
||||
{
|
||||
"id": "3859cc17-b534-4e00-be3b-6fbdb67ed0fe",
|
||||
"name": "signalStrength",
|
||||
"displayName": "Signal strength",
|
||||
"displayNameEvent": "Signal strength changed",
|
||||
"type": "uint",
|
||||
"minValue": 0,
|
||||
"maxValue": 100,
|
||||
"unit": "Percentage",
|
||||
"defaultValue": 0
|
||||
}
|
||||
],
|
||||
"eventTypes": [
|
||||
{
|
||||
"id": "407d2e3e-4aca-4021-a79b-4b896e9c2440",
|
||||
"name": "pressed",
|
||||
"displayName": "Pressed",
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "135a1871-ea74-45fd-ac26-5d8ca21586a3",
|
||||
"name": "buttonName",
|
||||
"displayName": "Button",
|
||||
"type": "QString",
|
||||
"allowedValues": ["OFF", "ON", "+", "-", "1", "2", "3", "4", "5", "6"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
13
zigbeeremotes/meta.json
Normal file
13
zigbeeremotes/meta.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"title": "ZigBee remotes",
|
||||
"tagline": "A plugin for various zigbee remotes.",
|
||||
"icon": "zigbee.svg",
|
||||
"stability": "consumer",
|
||||
"offline": true,
|
||||
"technologies": [
|
||||
"zigbee"
|
||||
],
|
||||
"categories": [
|
||||
"socket"
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,439 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1">
|
||||
<context>
|
||||
<name>ZigbeeGeneric</name>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="127"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="130"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="133"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="136"/>
|
||||
<source>Battery</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: doorLock, EventType: batteryLevel, ID: {568e5bdd-47f3-4ccb-a1d8-ff3a5ea87ad8})
|
||||
----------
|
||||
The name of the StateType ({568e5bdd-47f3-4ccb-a1d8-ff3a5ea87ad8}) of ThingClass doorLock
|
||||
----------
|
||||
The name of the ParamType (ThingClass: thermostat, EventType: batteryLevel, ID: {3a733e99-850b-4c56-b058-d39850ef2fee})
|
||||
----------
|
||||
The name of the StateType ({3a733e99-850b-4c56-b058-d39850ef2fee}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="139"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="142"/>
|
||||
<source>Battery changed</source>
|
||||
<extracomment>The name of the EventType ({568e5bdd-47f3-4ccb-a1d8-ff3a5ea87ad8}) of ThingClass doorLock
|
||||
----------
|
||||
The name of the EventType ({3a733e99-850b-4c56-b058-d39850ef2fee}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="145"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="148"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="151"/>
|
||||
<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>
|
||||
<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 ParamType (ThingClass: thermostat, EventType: batteryCritical, ID: {5cec4399-ba7c-4c78-8c30-c91040ad99cf})
|
||||
----------
|
||||
The name of the StateType ({5cec4399-ba7c-4c78-8c30-c91040ad99cf}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="163"/>
|
||||
<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>
|
||||
<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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="172"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="175"/>
|
||||
<source>Battery level</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: doorSensor, EventType: batteryLevel, ID: {3c120c1c-0093-4c5e-8d7e-8892e4ce21b3})
|
||||
----------
|
||||
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>
|
||||
<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 ParamType (ThingClass: powerSocket, EventType: connected, ID: {b5abd47e-95f1-4e35-94fa-be87c396073a})
|
||||
----------
|
||||
The name of the StateType ({b5abd47e-95f1-4e35-94fa-be87c396073a}) of ThingClass powerSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: thermostat, EventType: connected, ID: {e9fb2b10-96da-4b70-afda-46e948399af8})
|
||||
----------
|
||||
The name of the StateType ({e9fb2b10-96da-4b70-afda-46e948399af8}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="211"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="214"/>
|
||||
<source>Connected changed</source>
|
||||
<extracomment>The name of the EventType ({206b0508-b477-4aa2-b420-aba2259fb6e6}) of ThingClass doorLock
|
||||
----------
|
||||
The name of the EventType ({b5abd47e-95f1-4e35-94fa-be87c396073a}) of ThingClass powerSocket</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<extracomment>The name of the EventType ({e9fb2b10-96da-4b70-afda-46e948399af8}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</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="226"/>
|
||||
<source>Cooling on</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: thermostat, EventType: coolingOn, ID: {c77a3d3f-46c7-4026-b9ab-02ab88077cc4})
|
||||
----------
|
||||
The name of the StateType ({c77a3d3f-46c7-4026-b9ab-02ab88077cc4}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="229"/>
|
||||
<source>Cooling turned on</source>
|
||||
<extracomment>The name of the EventType ({c77a3d3f-46c7-4026-b9ab-02ab88077cc4}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</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="235"/>
|
||||
<source>Current temperature</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: thermostat, EventType: temperature, ID: {497af03a-a893-438c-aba2-1bf3ecfc66c5})
|
||||
----------
|
||||
The name of the StateType ({497af03a-a893-438c-aba2-1bf3ecfc66c5}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="238"/>
|
||||
<source>Current temperature changed</source>
|
||||
<extracomment>The name of the EventType ({497af03a-a893-438c-aba2-1bf3ecfc66c5}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="241"/>
|
||||
<source>Door lock</source>
|
||||
<extracomment>The name of the ThingClass ({34cb3d09-dd9f-4b95-95d0-30a1cd94adac})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="244"/>
|
||||
<source>Door sensor</source>
|
||||
<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>
|
||||
<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: thermostat, Type: thing, ID: {138a529d-1d85-410a-9d83-93ebc9a5f8ca})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</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="262"/>
|
||||
<source>Heating on</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: thermostat, EventType: heatingOn, ID: {88d5dda1-b8f6-49f1-a55a-20415f9157b3})
|
||||
----------
|
||||
The name of the StateType ({88d5dda1-b8f6-49f1-a55a-20415f9157b3}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="265"/>
|
||||
<source>Heating turned on</source>
|
||||
<extracomment>The name of the EventType ({88d5dda1-b8f6-49f1-a55a-20415f9157b3}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="268"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="271"/>
|
||||
<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>
|
||||
<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: thermostat, Type: thing, ID: {f38746d8-0084-43a3-b645-3ec743ea5fbc})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="280"/>
|
||||
<source>Identify</source>
|
||||
<extracomment>The name of the ActionType ({4e3b1430-d98e-4f05-bae6-301dac34bd4b}) of ThingClass powerSocket</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="283"/>
|
||||
<source>Lock door</source>
|
||||
<extracomment>The name of the ActionType ({c26e1908-25d0-4475-8f82-5aaf034640f1}) of ThingClass doorLock</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="286"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="289"/>
|
||||
<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>
|
||||
<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: thermostat, Type: thing, ID: {ae76acb0-40f4-440b-8ae7-16969fe6c91a})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</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="301"/>
|
||||
<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>
|
||||
<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: thermostat, Type: thing, ID: {4262cfc6-4b04-49fd-af2b-765afca53b0b})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="310"/>
|
||||
<source>Opened or closed</source>
|
||||
<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>
|
||||
<extracomment>The name of the ParamType (ThingClass: powerSocket, ActionType: power, ID: {2c8268b9-d76b-415a-b2e9-6bfeabd98a76})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: powerSocket, EventType: power, ID: {2c8268b9-d76b-415a-b2e9-6bfeabd98a76})
|
||||
----------
|
||||
The name of the StateType ({2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) of ThingClass powerSocket</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="322"/>
|
||||
<source>Power changed</source>
|
||||
<extracomment>The name of the EventType ({2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) of ThingClass powerSocket</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="325"/>
|
||||
<source>Power socket</source>
|
||||
<extracomment>The name of the ThingClass ({800a8df8-06cb-4d93-8334-944fcce9651a})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="328"/>
|
||||
<source>Set power</source>
|
||||
<extracomment>The name of the ActionType ({2c8268b9-d76b-415a-b2e9-6bfeabd98a76}) of ThingClass powerSocket</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="331"/>
|
||||
<source>Set target temperature</source>
|
||||
<extracomment>The name of the ActionType ({88ad3957-2912-4de1-b53d-b360565dd361}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</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="337"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="340"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="343"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="346"/>
|
||||
<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>
|
||||
<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 ParamType (ThingClass: powerSocket, EventType: signalStrength, ID: {21889797-32c0-4f1b-903d-8af71981882b})
|
||||
----------
|
||||
The name of the StateType ({21889797-32c0-4f1b-903d-8af71981882b}) of ThingClass powerSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: thermostat, EventType: signalStrength, ID: {8f0512ab-ced2-4dcb-90fe-aaa532efd0dd})
|
||||
----------
|
||||
The name of the StateType ({8f0512ab-ced2-4dcb-90fe-aaa532efd0dd}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="358"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="361"/>
|
||||
<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>
|
||||
<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 ({8f0512ab-ced2-4dcb-90fe-aaa532efd0dd}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="370"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="373"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="376"/>
|
||||
<source>Target temperature</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: thermostat, ActionType: targetTemperature, ID: {88ad3957-2912-4de1-b53d-b360565dd361})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: thermostat, EventType: targetTemperature, ID: {88ad3957-2912-4de1-b53d-b360565dd361})
|
||||
----------
|
||||
The name of the StateType ({88ad3957-2912-4de1-b53d-b360565dd361}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="379"/>
|
||||
<source>Target temperature changed</source>
|
||||
<extracomment>The name of the EventType ({88ad3957-2912-4de1-b53d-b360565dd361}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="382"/>
|
||||
<source>Unlock door</source>
|
||||
<extracomment>The name of the ActionType ({6e112e3b-080f-47e4-8e2b-453029f0eacb}) of ThingClass doorLock</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="385"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="388"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="391"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="394"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="397"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="400"/>
|
||||
<source>Version</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: doorLock, EventType: version, ID: {9e27850b-99d8-40df-9bc7-4b3c7c01faf8})
|
||||
----------
|
||||
The name of the StateType ({9e27850b-99d8-40df-9bc7-4b3c7c01faf8}) of ThingClass doorLock
|
||||
----------
|
||||
The name of the ParamType (ThingClass: powerSocket, EventType: version, ID: {41c74445-4d2d-46dc-8a63-c98f1df8e742})
|
||||
----------
|
||||
The name of the StateType ({41c74445-4d2d-46dc-8a63-c98f1df8e742}) of ThingClass powerSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: thermostat, EventType: version, ID: {c8bd12d2-b425-4422-9e0e-a65542a47b70})
|
||||
----------
|
||||
The name of the StateType ({c8bd12d2-b425-4422-9e0e-a65542a47b70}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="403"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="406"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="409"/>
|
||||
<source>Version changed</source>
|
||||
<extracomment>The name of the EventType ({9e27850b-99d8-40df-9bc7-4b3c7c01faf8}) of ThingClass doorLock
|
||||
----------
|
||||
The name of the EventType ({41c74445-4d2d-46dc-8a63-c98f1df8e742}) of ThingClass powerSocket
|
||||
----------
|
||||
The name of the EventType ({c8bd12d2-b425-4422-9e0e-a65542a47b70}) of ThingClass thermostat</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="412"/>
|
||||
<source>Zigbee Generic</source>
|
||||
<extracomment>The name of the plugin ZigbeeGeneric ({6a4343be-9fd6-4015-9ff5-38542651c534})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="415"/>
|
||||
<source>Zigbee Thermostat</source>
|
||||
<extracomment>The name of the ThingClass ({ca9af6cf-2d15-4d54-ba07-3d2ce03445b8})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="418"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="421"/>
|
||||
<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>
|
||||
<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: thermostat, Type: thing, ID: {4a92b536-de4c-4701-8117-9bb26dd51c3e})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/zigbeegeneric/plugininfo.h" line="430"/>
|
||||
<source>nymea</source>
|
||||
<extracomment>The name of the vendor ({2062d64d-3232-433c-88bc-0d33c0ba2ba6})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
179
zigbeeremotes/zigbee.svg
Normal file
179
zigbeeremotes/zigbee.svg
Normal file
@ -0,0 +1,179 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="96"
|
||||
height="96"
|
||||
id="svg4874"
|
||||
version="1.1"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
viewBox="0 0 96 96.000001"
|
||||
sodipodi:docname="zigbee_.svg">
|
||||
<defs
|
||||
id="defs4876" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="8.7812489"
|
||||
inkscape:cx="10.528112"
|
||||
inkscape:cy="41.064759"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g4780"
|
||||
showgrid="true"
|
||||
showborder="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:snap-intersection-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:snap-smooth-nodes="true"
|
||||
inkscape:snap-midpoints="true"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-center="true"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="2880"
|
||||
inkscape:window-height="1663"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="76"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid5451"
|
||||
empspacing="8" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="8,-8.0000001"
|
||||
id="guide4063"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="4,-8.0000001"
|
||||
id="guide4065"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="-8,88.000001"
|
||||
id="guide4067"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="-8,92.000001"
|
||||
id="guide4069"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="104,4"
|
||||
id="guide4071"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="-5,8.0000001"
|
||||
id="guide4073"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="92,-8.0000001"
|
||||
id="guide4075"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="88,-8.0000001"
|
||||
id="guide4077"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="-8,84.000001"
|
||||
id="guide4074"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="12,-8.0000001"
|
||||
id="guide4076"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="-5,12"
|
||||
id="guide4078"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="84,-9.0000001"
|
||||
id="guide4080"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="48,-8.0000001"
|
||||
orientation="1,0"
|
||||
id="guide4170"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="-8,48"
|
||||
orientation="0,1"
|
||||
id="guide4172"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata4879">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(67.857146,-78.50504)">
|
||||
<g
|
||||
transform="matrix(0,-1,-1,0,373.50506,516.50504)"
|
||||
id="g4845"
|
||||
style="display:inline">
|
||||
<g
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="next01.png"
|
||||
transform="matrix(-0.9996045,0,0,1,575.94296,-611.00001)"
|
||||
id="g4778"
|
||||
inkscape:label="Layer 1">
|
||||
<g
|
||||
transform="matrix(-1,0,0,1,575.99999,611)"
|
||||
id="g4780"
|
||||
style="display:inline">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 418.41067,377.27822 c -2.47698,-9.19 -6.3325,-9.76 -10.1,-11.048 -5.65022,5.45 -41.7365,40.432 -41.7365,40.432 0,0 -2.35494,-21.802 2.0068,-46.974 -0.058,0.002 -0.096,0.004 -0.152,0.006 6.22646,-3.99 13.61138,-6.332 21.55452,-6.332 22.10074,0 40.01582,17.908 40.01582,40 0,11.268 -4.67784,21.43 -12.17882,28.7 1.92676,-11.678 3.36934,-34.48 0.59024,-44.784 z"
|
||||
id="path2"
|
||||
style="fill:#808080;fill-opacity:1;stroke-width:2.00039554" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 363.40291,411.91422 c 0.69428,3.964 4.2637,8.424 10.6082,9.414 2.47898,-2.874 41.03022,-39.988 41.03022,-39.988 0.84834,14.016 0.93038,29.138 -1.72868,44.474 -6.5726,4.732 -14.61378,7.548 -23.32922,7.548 -22.10074,0 -40.01582,-17.908 -40.01582,-40 0,-12.346 5.6022,-23.378 14.39568,-30.716 -1.05042,7.744 -3.92954,32.202 -0.96038,49.268 z"
|
||||
id="path4"
|
||||
style="fill:#808080;fill-opacity:1;stroke-width:2.00039554" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
12
zigbeeremotes/zigbeeremotes.pro
Normal file
12
zigbeeremotes/zigbeeremotes.pro
Normal file
@ -0,0 +1,12 @@
|
||||
include(../plugins.pri)
|
||||
|
||||
PKGCONFIG += nymea-zigbee
|
||||
|
||||
SOURCES += \
|
||||
integrationpluginzigbeeremotes.cpp
|
||||
|
||||
HEADERS += \
|
||||
integrationpluginzigbeeremotes.h
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user