Implement node changed notifications for zigbee JSONRPC API
This commit is contained in:
parent
eef44c78c6
commit
81f9889178
@ -252,6 +252,7 @@ ZigbeeHandler::ZigbeeHandler(ZigbeeManager *zigbeeManager, QObject *parent) :
|
|||||||
|
|
||||||
connect(m_zigbeeManager, &ZigbeeManager::nodeJoined, this, &ZigbeeHandler::onNodeJoined);
|
connect(m_zigbeeManager, &ZigbeeManager::nodeJoined, this, &ZigbeeHandler::onNodeJoined);
|
||||||
connect(m_zigbeeManager, &ZigbeeManager::nodeAdded, this, &ZigbeeHandler::onNodeAdded);
|
connect(m_zigbeeManager, &ZigbeeManager::nodeAdded, this, &ZigbeeHandler::onNodeAdded);
|
||||||
|
connect(m_zigbeeManager, &ZigbeeManager::nodeChanged, this, &ZigbeeHandler::onNodeChanged);
|
||||||
connect(m_zigbeeManager, &ZigbeeManager::nodeRemoved, this, &ZigbeeHandler::onNodeRemoved);
|
connect(m_zigbeeManager, &ZigbeeManager::nodeRemoved, this, &ZigbeeHandler::onNodeRemoved);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -497,6 +498,11 @@ void ZigbeeHandler::onNodeJoined(const QUuid &networkUuid, ZigbeeNode *node)
|
|||||||
void ZigbeeHandler::onNodeAdded(const QUuid &networkUuid, ZigbeeNode *node)
|
void ZigbeeHandler::onNodeAdded(const QUuid &networkUuid, ZigbeeNode *node)
|
||||||
{
|
{
|
||||||
// Note: we emit the node changed signal here, since the node has been added internally after initialization.
|
// Note: we emit the node changed signal here, since the node has been added internally after initialization.
|
||||||
|
onNodeChanged(networkUuid, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZigbeeHandler::onNodeChanged(const QUuid &networkUuid, ZigbeeNode *node)
|
||||||
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("networkUuid", networkUuid);
|
params.insert("networkUuid", networkUuid);
|
||||||
params.insert("zigbeeNode", packNode(node));
|
params.insert("zigbeeNode", packNode(node));
|
||||||
|
|||||||
@ -70,6 +70,7 @@ private:
|
|||||||
private slots:
|
private slots:
|
||||||
void onNodeJoined(const QUuid &networkUuid, ZigbeeNode *node);
|
void onNodeJoined(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
void onNodeAdded(const QUuid &networkUuid, ZigbeeNode *node);
|
void onNodeAdded(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
|
void onNodeChanged(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
void onNodeRemoved(const QUuid &networkUuid, ZigbeeNode *node);
|
void onNodeRemoved(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|||||||
@ -205,8 +205,8 @@ ZigbeeManager::ZigbeeError ZigbeeManager::removeZigbeeNetwork(const QUuid &netwo
|
|||||||
settings.beginGroup("ZigbeeNetworks");
|
settings.beginGroup("ZigbeeNetworks");
|
||||||
settings.beginGroup(network->networkUuid().toString());
|
settings.beginGroup(network->networkUuid().toString());
|
||||||
settings.remove("");
|
settings.remove("");
|
||||||
settings.endGroup();
|
settings.endGroup(); // networkUuid
|
||||||
settings.endGroup();
|
settings.endGroup(); // ZigbeeNetworks
|
||||||
|
|
||||||
qCDebug(dcZigbee()) << "Network removed successfully";
|
qCDebug(dcZigbee()) << "Network removed successfully";
|
||||||
return ZigbeeManager::ZigbeeErrorNoError;
|
return ZigbeeManager::ZigbeeErrorNoError;
|
||||||
@ -547,7 +547,9 @@ void ZigbeeManager::addNetwork(ZigbeeNetwork *network)
|
|||||||
connect(network, &ZigbeeNetwork::nodeJoined, this, [this, network](ZigbeeNode *node){
|
connect(network, &ZigbeeNetwork::nodeJoined, this, [this, network](ZigbeeNode *node){
|
||||||
// The node has joined but is still initializing. Once the node has been initialized by the stack, the node added signal will be emitted.
|
// The node has joined but is still initializing. Once the node has been initialized by the stack, the node added signal will be emitted.
|
||||||
qCDebug(dcZigbee()) << "Node joined the network" << network->networkUuid().toString() << node;
|
qCDebug(dcZigbee()) << "Node joined the network" << network->networkUuid().toString() << node;
|
||||||
|
|
||||||
emit nodeJoined(network->networkUuid(), node);
|
emit nodeJoined(network->networkUuid(), node);
|
||||||
|
setupNodeSignals(node);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(network, &ZigbeeNetwork::firmwareVersionChanged, this, [this, network](const QString &firmwareVersion){
|
connect(network, &ZigbeeNetwork::firmwareVersionChanged, this, [this, network](const QString &firmwareVersion){
|
||||||
@ -589,6 +591,10 @@ void ZigbeeManager::addNetwork(ZigbeeNetwork *network)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (ZigbeeNode *node, network->nodes()) {
|
||||||
|
setupNodeSignals(node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ZigbeeAdapter ZigbeeManager::convertUartAdapterToAdapter(const ZigbeeUartAdapter &uartAdapter)
|
ZigbeeAdapter ZigbeeManager::convertUartAdapterToAdapter(const ZigbeeUartAdapter &uartAdapter)
|
||||||
@ -634,5 +640,42 @@ void ZigbeeManager::evaluateZigbeeAvailable()
|
|||||||
emit availableChanged(m_available);
|
emit availableChanged(m_available);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ZigbeeManager::setupNodeSignals(ZigbeeNode *node)
|
||||||
|
{
|
||||||
|
// Connect signals while joining for initializing
|
||||||
|
|
||||||
|
connect(node, &ZigbeeNode::shortAddressChanged, this, [=](){
|
||||||
|
emit nodeChanged(node->networkUuid(), node);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(node, &ZigbeeNode::stateChanged, this, [=](){
|
||||||
|
emit nodeChanged(node->networkUuid(), node);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(node, &ZigbeeNode::manufacturerNameChanged, this, [=](){
|
||||||
|
emit nodeChanged(node->networkUuid(), node);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(node, &ZigbeeNode::modelNameChanged, this, [=](){
|
||||||
|
emit nodeChanged(node->networkUuid(), node);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(node, &ZigbeeNode::versionChanged, this, [=](){
|
||||||
|
emit nodeChanged(node->networkUuid(), node);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(node, &ZigbeeNode::lqiChanged, this, [=](){
|
||||||
|
emit nodeChanged(node->networkUuid(), node);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(node, &ZigbeeNode::lastSeenChanged, this, [=](){
|
||||||
|
emit nodeChanged(node->networkUuid(), node);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(node, &ZigbeeNode::reachableChanged, this, [=](){
|
||||||
|
emit nodeChanged(node->networkUuid(), node);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -114,6 +114,7 @@ private:
|
|||||||
|
|
||||||
ZigbeeAdapter convertUartAdapterToAdapter(const ZigbeeUartAdapter &uartAdapter);
|
ZigbeeAdapter convertUartAdapterToAdapter(const ZigbeeUartAdapter &uartAdapter);
|
||||||
void evaluateZigbeeAvailable();
|
void evaluateZigbeeAvailable();
|
||||||
|
void setupNodeSignals(ZigbeeNode *node);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void availableChanged(bool available);
|
void availableChanged(bool available);
|
||||||
@ -127,6 +128,7 @@ signals:
|
|||||||
|
|
||||||
void nodeJoined(const QUuid &networkUuid, ZigbeeNode *node);
|
void nodeJoined(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
void nodeAdded(const QUuid &networkUuid, ZigbeeNode *node);
|
void nodeAdded(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
|
void nodeChanged(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
void nodeRemoved(const QUuid &networkUuid, ZigbeeNode *node);
|
void nodeRemoved(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user