new trigger and action system
This commit is contained in:
parent
f4b6a70735
commit
1addaaf638
@ -7,7 +7,8 @@
|
|||||||
class Action
|
class Action
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Action(const QUuid &id = QUuid(), const QUuid &deviceId = QUuid());
|
explicit Action(const QUuid &deviceId, const QUuid &id = QUuid::createUuid());
|
||||||
|
|
||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
|
|
||||||
QUuid id() const;
|
QUuid id() const;
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
#include "trigger.h"
|
#include "trigger.h"
|
||||||
|
|
||||||
Trigger::Trigger(const QUuid &deviceClassid, const QVariantMap ¶ms):
|
Trigger::Trigger(const QUuid &triggerTypeId, const QVariantMap ¶ms):
|
||||||
m_deviceClassId(deviceClassid),
|
m_triggerTypeId(triggerTypeId),
|
||||||
m_params(params)
|
m_params(params)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid Trigger::deviceClassId() const
|
QUuid Trigger::triggerTypeId() const
|
||||||
{
|
{
|
||||||
return m_deviceClassId;
|
return m_triggerTypeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap Trigger::params() const
|
QVariantMap Trigger::params() const
|
||||||
|
|||||||
@ -8,15 +8,15 @@
|
|||||||
class Trigger
|
class Trigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Trigger(const QUuid &deviceClassid, const QVariantMap ¶ms);
|
Trigger(const QUuid &triggerTypeId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
QUuid deviceClassId() const;
|
QUuid triggerTypeId() const;
|
||||||
|
|
||||||
QVariantMap params() const;
|
QVariantMap params() const;
|
||||||
void setParams(const QVariantMap ¶ms);
|
void setParams(const QVariantMap ¶ms);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QUuid m_deviceClassId;
|
QUuid m_triggerTypeId;
|
||||||
QVariantMap m_params;
|
QVariantMap m_params;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -103,7 +103,7 @@ void JsonRPCServer::handleRulesMessage(int clientId, int commandId, const QStrin
|
|||||||
foreach (const Rule &rule, HiveCore::instance()->ruleEngine()->rules()) {
|
foreach (const Rule &rule, HiveCore::instance()->ruleEngine()->rules()) {
|
||||||
QVariantMap ruleMap;
|
QVariantMap ruleMap;
|
||||||
ruleMap.insert("id", rule.id());
|
ruleMap.insert("id", rule.id());
|
||||||
ruleMap.insert("triggerId", rule.triggerId());
|
// ruleMap.insert("triggerId", rule.triggerId());
|
||||||
ruleMap.insert("action", packAction(rule.action()));
|
ruleMap.insert("action", packAction(rule.action()));
|
||||||
rulesList.append(ruleMap);
|
rulesList.append(ruleMap);
|
||||||
}
|
}
|
||||||
@ -111,9 +111,12 @@ void JsonRPCServer::handleRulesMessage(int clientId, int commandId, const QStrin
|
|||||||
rspParams.insert("rules", rulesList);
|
rspParams.insert("rules", rulesList);
|
||||||
sendResponse(clientId, commandId, rspParams);
|
sendResponse(clientId, commandId, rspParams);
|
||||||
} else if (method == "AddRule") {
|
} else if (method == "AddRule") {
|
||||||
QUuid triggerId = params.value("triggerId").toUuid();
|
QUuid triggerTypeId = params.value("triggerTypeId").toUuid();
|
||||||
QUuid actionId = params.value("actionId").toUuid();
|
Action action(params.value("deviceId").toString());
|
||||||
switch(HiveCore::instance()->ruleEngine()->addRule(triggerId, actionId)) {
|
action.setName(params.value("name").toString());
|
||||||
|
action.setParams(params.value("actionParams").toList());
|
||||||
|
|
||||||
|
switch(HiveCore::instance()->ruleEngine()->addRule(triggerTypeId, action)) {
|
||||||
case RuleEngine::RuleErrorNoError:
|
case RuleEngine::RuleErrorNoError:
|
||||||
sendResponse(clientId, commandId);
|
sendResponse(clientId, commandId);
|
||||||
break;
|
break;
|
||||||
@ -133,7 +136,7 @@ void JsonRPCServer::handleActionMessage(int clientId, int commandId, const QStri
|
|||||||
QUuid deviceId = QUuid(params.value("deviceId").toUuid());
|
QUuid deviceId = QUuid(params.value("deviceId").toUuid());
|
||||||
QVariantList actionParams = params.value("params").toList();
|
QVariantList actionParams = params.value("params").toList();
|
||||||
|
|
||||||
Action action(QUuid::createUuid(), deviceId);
|
Action action(deviceId);
|
||||||
action.setParams(actionParams);
|
action.setParams(actionParams);
|
||||||
|
|
||||||
HiveCore::instance()->deviceManager()->executeAction(action);
|
HiveCore::instance()->deviceManager()->executeAction(action);
|
||||||
|
|||||||
@ -17,9 +17,16 @@ RuleEngine::RuleEngine(QObject *parent) :
|
|||||||
qDebug() << "loading rules from" << rulesFileName;
|
qDebug() << "loading rules from" << rulesFileName;
|
||||||
foreach (const QString &idString, settings.childGroups()) {
|
foreach (const QString &idString, settings.childGroups()) {
|
||||||
qDebug() << "found rule" << idString;
|
qDebug() << "found rule" << idString;
|
||||||
|
|
||||||
settings.beginGroup(idString);
|
settings.beginGroup(idString);
|
||||||
Rule rule = Rule(QUuid(idString), settings.value("triggerId").toUuid(), settings.value("actionId").toUuid());
|
settings.beginGroup("action");
|
||||||
|
Action action = Action(settings.value("deviceId").toUuid(), settings.value("id").toUuid());
|
||||||
|
action.setName(settings.value("name").toString());
|
||||||
|
action.setParams(settings.value("params").toList());
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
Rule rule = Rule(QUuid(idString), settings.value("triggerTypeId").toUuid(), action);
|
||||||
m_rules.append(rule);
|
m_rules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,9 +36,9 @@ QList<Action> RuleEngine::evaluateTrigger(const Trigger &trigger)
|
|||||||
{
|
{
|
||||||
QList<Action> actions;
|
QList<Action> actions;
|
||||||
for (int i = 0; i < m_rules.count(); ++i) {
|
for (int i = 0; i < m_rules.count(); ++i) {
|
||||||
if (m_rules.at(i).triggerTypeId() == trigger.) {
|
// if (m_rules.at(i).triggerTypeId() == trigger.) {
|
||||||
actions << m_rules.at(i).action();
|
// actions << m_rules.at(i).action();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
@ -44,7 +51,7 @@ RuleEngine::RuleError RuleEngine::addRule(const QUuid &triggerTypeId, const Acti
|
|||||||
|
|
||||||
QSettings settings(rulesFileName);
|
QSettings settings(rulesFileName);
|
||||||
settings.beginGroup(rule.id().toString());
|
settings.beginGroup(rule.id().toString());
|
||||||
settings.setValue("triggerId", rule.triggerId());
|
settings.setValue("triggerTypeId", rule.triggerTypeId());
|
||||||
|
|
||||||
settings.beginGroup("action");
|
settings.beginGroup("action");
|
||||||
settings.setValue("id", rule.action().id());
|
settings.setValue("id", rule.action().id());
|
||||||
|
|||||||
Reference in New Issue
Block a user