Don't log all states by default any more

This commit is contained in:
Michael Zanetti 2020-09-21 00:13:55 +02:00
parent eaaf2e0188
commit 5f1855ff44
37 changed files with 109 additions and 36 deletions

View File

@ -660,7 +660,17 @@ ZigbeeManager *NymeaCore::zigbeeManager() const
void NymeaCore::gotEvent(const Event &event)
{
m_logger->logEvent(event);
Thing *thing = m_thingManager->findConfiguredThing(event.thingId());
ThingClass thingClass = thing ? thing->thingClass() : ThingClass();
EventType eventType = thingClass.eventTypes().findById(event.eventTypeId());
foreach (const QString &interfaceName, thingClass.interfaces()) {
Interface iface = m_thingManager->supportedInterfaces().findByName(interfaceName);
if (iface.eventTypes().findByName(eventType.name()).logged()) {
m_logger->logEvent(event);
break;
}
}
emit eventTriggered(event);
QList<RuleAction> actions;

View File

@ -200,6 +200,7 @@ Interface ThingUtils::loadInterface(const QString &name)
stateType.setMinValue(stateVariant.toMap().value("minValue"));
stateType.setMaxValue(stateVariant.toMap().value("maxValue"));
stateType.setOptional(stateVariant.toMap().value("optional", false).toBool());
stateType.setLogged(stateVariant.toMap().value("logged", false).toBool());
if (stateVariant.toMap().contains("unit")) {
QMetaEnum unitEnum = QMetaEnum::fromType<Types::Unit>();
int enumValue = unitEnum.keyToValue("Unit" + stateVariant.toMap().value("unit").toByteArray());
@ -214,6 +215,7 @@ Interface ThingUtils::loadInterface(const QString &name)
InterfaceEventType stateChangeEventType;
stateChangeEventType.setName(stateType.name());
stateChangeEventType.setOptional(stateType.optional());
stateChangeEventType.setLogged(stateType.logged());
ParamType stateChangeEventParamType;
stateChangeEventParamType.setName(stateType.name());
stateChangeEventParamType.setType(stateType.type());
@ -254,6 +256,7 @@ Interface ThingUtils::loadInterface(const QString &name)
InterfaceEventType eventType;
eventType.setName(eventVariant.toMap().value("name").toString());
eventType.setOptional(eventVariant.toMap().value("optional").toBool());
eventType.setLogged(eventVariant.toMap().value("logged").toBool());
ParamTypes paramTypes;
foreach (const QVariant &eventParamVariant, eventVariant.toMap().value("params").toList()) {
ParamType paramType;

View File

@ -2,7 +2,8 @@
"states": [
{
"name": "batteryCritical",
"type": "bool"
"type": "bool",
"logged": true
}
]
}

View File

@ -2,7 +2,8 @@
"description": "The base for all buttons that emit a pressed event.",
"events": [
{
"name": "pressed"
"name": "pressed",
"logged": true
}
]
}

View File

@ -4,7 +4,8 @@
"states": [
{
"name": "closed",
"type": "bool"
"type": "bool",
"logged": true
}
]
}

View File

@ -5,7 +5,8 @@
{
"name": "co2",
"type": "double",
"unit": "PartsPerMillion"
"unit": "PartsPerMillion",
"logged": true
}
]
}

View File

@ -4,7 +4,8 @@
{
"name": "conductivity",
"type": "double",
"unit": "MicroSiemensPerCentimeter"
"unit": "MicroSiemensPerCentimeter",
"logged": true
}
]
}

View File

@ -3,7 +3,8 @@
{
"name": "connected",
"type": "bool",
"defaultValue": false
"defaultValue": false,
"logged": true
}
]
}

View File

@ -4,7 +4,8 @@
"states": [
{
"name": "daylight",
"type": "bool"
"type": "bool",
"logged": true
},
{
"name": "sunriseTime",

View File

@ -2,7 +2,8 @@
"description": "An interface for doorbells. Emits \"doorbellPressed\" when the doorbell is pressed.",
"events": [
{
"name": "doorbellPressed"
"name": "doorbellPressed",
"logged": true
}
]
}

View File

@ -4,7 +4,8 @@
"states": [
{
"name": "moving",
"type": "bool"
"type": "bool",
"logged": true
},
{
"name": "percentage",

View File

@ -5,7 +5,8 @@
{
"name": "currentPower",
"type": "double",
"unit": "Watt"
"unit": "Watt",
"logged": true
}
]
}

View File

@ -4,7 +4,9 @@
"states": [
{
"name": "currentPower",
"type": "double"
"type": "double",
"unit": "Watt",
"logged": true
}
]
}

View File

@ -24,7 +24,8 @@
"PinkyRight"
]
}
]
],
"logged": true
}
],
"actions": [

View File

@ -5,7 +5,8 @@
{
"name": "state",
"type": "QString",
"allowedValues": ["open", "closed", "opening", "closing"]
"allowedValues": ["open", "closed", "opening", "closing"],
"logged": true
},
{
"name": "intermediatePosition",

View File

@ -5,7 +5,8 @@
"name": "humidity",
"type": "double",
"minValue": 0,
"maxValue": 100
"maxValue": 100,
"logged": true
}
]
}

View File

@ -3,7 +3,8 @@
"description": "This interface is for the simplest form of garage doors which can be controlled only via an impulse. Triggering the impulse will start moving the door, triggering it again will stop the movement. Triggering it yet another time will start movement in the reverse direction. Note that there is no feedback channel on such devices. The system has no chance of knowing the current state this device is actually in.",
"actions": [
{
"name": "triggerImpulse"
"name": "triggerImpulse",
"logged": true
}
]
}

View File

@ -1,7 +1,8 @@
{
"events": [
{
"name": "triggered"
"name": "triggered",
"logged": true
}
]
}

View File

@ -4,7 +4,8 @@
{
"name": "lightIntensity",
"type": "double",
"unit": "Lux"
"unit": "Lux",
"logged": true
}
]
}

View File

@ -3,7 +3,8 @@
"extends": "button",
"events": [
{
"name": "longPressed"
"name": "longPressed",
"logged": true
}
]
}

View File

@ -9,7 +9,8 @@
"name": "buttonName",
"type": "QString"
}
]
],
"logged": true
}
]
}

View File

@ -3,7 +3,8 @@
"states": [
{
"name": "moisture",
"type": "double"
"type": "double",
"logged": true
}
]
}

View File

@ -9,7 +9,8 @@
"name": "buttonName",
"type": "QString"
}
]
],
"logged": true
}
]
}

View File

@ -5,7 +5,8 @@
{
"name": "noise",
"type": "double",
"unit": "Dezibel"
"unit": "Dezibel",
"logged": true
}
]
}

View File

@ -11,8 +11,8 @@
"name": "body",
"type": "QString"
}
]
],
"logged": true
}
]
}

View File

@ -3,7 +3,8 @@
{
"name": "power",
"type": "bool",
"writable": true
"writable": true,
"logged": true
}
]
}

View File

@ -4,7 +4,8 @@
"states": [
{
"name": "isPresent",
"type": "bool"
"type": "bool",
"logged": true
},
{
"name": "lastSeenTime",

View File

@ -4,7 +4,8 @@
{
"name": "pressure",
"type": "double",
"unit": "MilliBar"
"unit": "MilliBar",
"logged": true
}
]
}

View File

@ -4,7 +4,8 @@
{
"name": "state",
"type": "QString",
"allowedValues": ["locked", "locking", "unlocked", "unlocking", "unlatched", "unlatching"]
"allowedValues": ["locked", "locking", "unlocked", "unlocking", "unlatched", "unlatching"],
"logged": true
}
],
"actions": [

View File

@ -5,7 +5,8 @@
{
"name": "state",
"type": "QString",
"allowedValues": ["open", "closed", "opening", "closing", "intermediate"]
"allowedValues": ["open", "closed", "opening", "closing", "intermediate"],
"logged": true
}
]
}

View File

@ -4,7 +4,8 @@
{
"name": "temperature",
"type": "double",
"unit": "DegreeCelsius"
"unit": "DegreeCelsius",
"logged": true
}
]
}

View File

@ -14,7 +14,8 @@
"name": "userId",
"type": "QString"
}
]
],
"logged": true
}
],
"actions": [
@ -25,8 +26,8 @@
"name": "userId",
"type": "QString"
}
]
],
"logged": true
},
{
"name": "removeUser",
@ -36,7 +37,8 @@
"type": "QString"
}
]
],
"logged": true
}
]
}

View File

@ -5,7 +5,8 @@
{
"name": "windSpeed",
"type": "double",
"unit": "MeterPerSecond"
"unit": "MeterPerSecond",
"logged": true
}
]
}

View File

@ -15,6 +15,16 @@ void InterfaceEventType::setOptional(bool optional)
m_optional = optional;
}
bool InterfaceEventType::logged() const
{
return m_logged;
}
void InterfaceEventType::setLogged(bool logged)
{
m_logged = logged;
}
InterfaceEventTypes::InterfaceEventTypes(const QList<InterfaceEventType> &other):
QList<InterfaceEventType>(other)
{

View File

@ -11,8 +11,12 @@ public:
bool optional() const;
void setOptional(bool optional);
bool logged() const;
void setLogged(bool logged);
private:
bool m_optional = false;
bool m_logged = false;
};
class InterfaceEventTypes: public QList<InterfaceEventType>

View File

@ -15,6 +15,16 @@ void InterfaceStateType::setOptional(bool optional)
m_optional = optional;
}
bool InterfaceStateType::logged() const
{
return m_logged;
}
void InterfaceStateType::setLogged(bool logged)
{
m_logged = logged;
}
InterfaceStateTypes::InterfaceStateTypes(const QList<InterfaceStateType> &other):
QList<InterfaceStateType>(other)
{

View File

@ -11,8 +11,12 @@ public:
bool optional() const;
void setOptional(bool optional);
bool logged() const;
void setLogged(bool logged);
private:
bool m_optional = false;
bool m_logged = false;
};
class InterfaceStateTypes: public QList<InterfaceStateType>