json log for opener
This commit is contained in:
@@ -231,7 +231,7 @@ void NetworkLock::publishBinaryState(NukiLock::LockState lockState)
|
||||
}
|
||||
|
||||
|
||||
void NetworkLock::publishAuthorizationInfo(const std::list<Nuki::LogEntry>& logEntries)
|
||||
void NetworkLock::publishAuthorizationInfo(const std::list<NukiLock::LogEntry>& logEntries)
|
||||
{
|
||||
char str[50];
|
||||
|
||||
@@ -261,7 +261,7 @@ void NetworkLock::publishAuthorizationInfo(const std::list<Nuki::LogEntry>& logE
|
||||
|
||||
switch(log.loggingType)
|
||||
{
|
||||
case Nuki::LoggingType::LockAction:
|
||||
case NukiLock::LoggingType::LockAction:
|
||||
memset(str, 0, sizeof(str));
|
||||
NukiLock::lockactionToString((NukiLock::LockAction)log.data[0], str);
|
||||
json.concat("\"action\": \""); json.concat(str); json.concat("\",\n");
|
||||
@@ -274,7 +274,7 @@ void NetworkLock::publishAuthorizationInfo(const std::list<Nuki::LogEntry>& logE
|
||||
NukiLock::completionStatusToString((NukiLock::CompletionStatus)log.data[3], str);
|
||||
json.concat("\"completionStatus\": \""); json.concat(str); json.concat("\"\n");
|
||||
break;
|
||||
case Nuki::LoggingType::KeypadAction:
|
||||
case NukiLock::LoggingType::KeypadAction:
|
||||
memset(str, 0, sizeof(str));
|
||||
NukiLock::lockactionToString((NukiLock::LockAction)log.data[0], str);
|
||||
json.concat("\"action\": \""); json.concat(str); json.concat("\",\n");
|
||||
@@ -283,7 +283,7 @@ void NetworkLock::publishAuthorizationInfo(const std::list<Nuki::LogEntry>& logE
|
||||
NukiLock::completionStatusToString((NukiLock::CompletionStatus)log.data[2], str);
|
||||
json.concat("\"completionStatus\": \""); json.concat(str); json.concat("\"\n");
|
||||
break;
|
||||
case Nuki::LoggingType::DoorSensor:
|
||||
case NukiLock::LoggingType::DoorSensor:
|
||||
memset(str, 0, sizeof(str));
|
||||
NukiLock::lockactionToString((NukiLock::LockAction)log.data[0], str);
|
||||
json.concat("\"action\": \"");
|
||||
@@ -324,12 +324,7 @@ void NetworkLock::publishAuthorizationInfo(const std::list<Nuki::LogEntry>& logE
|
||||
json.concat("]");
|
||||
publishString(mqtt_topic_lock_log, json.c_str());
|
||||
}
|
||||
//uint16_t timeStampYear;
|
||||
//uint8_t timeStampMonth;
|
||||
//uint8_t timeStampDay;
|
||||
//uint8_t timeStampHour;
|
||||
//uint8_t timeStampMinute;
|
||||
//uint8_t timeStampSecond;
|
||||
|
||||
void NetworkLock::clearAuthorizationInfo()
|
||||
{
|
||||
publishString(mqtt_topic_lock_log, "");
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
|
||||
void publishKeyTurnerState(const NukiLock::KeyTurnerState& keyTurnerState, const NukiLock::KeyTurnerState& lastKeyTurnerState);
|
||||
void publishBinaryState(NukiLock::LockState lockState);
|
||||
void publishAuthorizationInfo(const std::list<Nuki::LogEntry>& logEntries);
|
||||
void publishAuthorizationInfo(const std::list<NukiLock::LogEntry>& logEntries);
|
||||
void clearAuthorizationInfo();
|
||||
void publishCommandResult(const char* resultStr);
|
||||
void publishBatteryReport(const NukiLock::BatteryReport& batteryReport);
|
||||
|
||||
@@ -142,10 +142,98 @@ void NetworkOpener::publishBinaryState(NukiOpener::LockState lockState)
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkOpener::publishAuthorizationInfo(const uint32_t authId, const char *authName)
|
||||
void NetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries)
|
||||
{
|
||||
publishUInt(mqtt_topic_lock_auth_id, authId);
|
||||
publishString(mqtt_topic_lock_auth_name, authName);
|
||||
char str[50];
|
||||
|
||||
String json = "[\n";
|
||||
|
||||
for(const auto& log : logEntries)
|
||||
{
|
||||
json.concat("{\n");
|
||||
|
||||
json.concat("\"index\": "); json.concat(log.index); json.concat(",\n");
|
||||
json.concat("\"authorizationId\": "); json.concat(log.authId); json.concat(",\n");
|
||||
|
||||
memset(str, 0, sizeof(str));
|
||||
memcpy(str, log.name, sizeof(log.name));
|
||||
json.concat("\"authorizationName\": \""); json.concat(str); json.concat("\",\n");
|
||||
|
||||
json.concat("\"timeYear\": "); json.concat(log.timeStampYear); json.concat(",\n");
|
||||
json.concat("\"timeMonth\": "); json.concat(log.timeStampMonth); json.concat(",\n");
|
||||
json.concat("\"timeDay\": "); json.concat(log.timeStampDay); json.concat(",\n");
|
||||
json.concat("\"timeHour\": "); json.concat(log.timeStampHour); json.concat(",\n");
|
||||
json.concat("\"timeMinute\": "); json.concat(log.timeStampMinute); json.concat(",\n");
|
||||
json.concat("\"timeSecond\": "); json.concat(log.timeStampSecond); json.concat(",\n");
|
||||
|
||||
memset(str, 0, sizeof(str));
|
||||
loggingTypeToString(log.loggingType, str);
|
||||
json.concat("\"type\": \""); json.concat(str); json.concat("\",\n");
|
||||
|
||||
switch(log.loggingType)
|
||||
{
|
||||
case NukiOpener::LoggingType::LockAction:
|
||||
memset(str, 0, sizeof(str));
|
||||
NukiLock::lockactionToString((NukiLock::LockAction)log.data[0], str);
|
||||
json.concat("\"action\": \""); json.concat(str); json.concat("\",\n");
|
||||
|
||||
memset(str, 0, sizeof(str));
|
||||
NukiLock::triggerToString((NukiLock::Trigger)log.data[1], str);
|
||||
json.concat("\"trigger\": \""); json.concat(str); json.concat("\",\n");
|
||||
|
||||
memset(str, 0, sizeof(str));
|
||||
NukiLock::completionStatusToString((NukiLock::CompletionStatus)log.data[3], str);
|
||||
json.concat("\"completionStatus\": \""); json.concat(str); json.concat("\"\n");
|
||||
break;
|
||||
case NukiOpener::LoggingType::KeypadAction:
|
||||
memset(str, 0, sizeof(str));
|
||||
NukiLock::lockactionToString((NukiLock::LockAction)log.data[0], str);
|
||||
json.concat("\"action\": \""); json.concat(str); json.concat("\",\n");
|
||||
|
||||
memset(str, 0, sizeof(str));
|
||||
NukiLock::completionStatusToString((NukiLock::CompletionStatus)log.data[2], str);
|
||||
json.concat("\"completionStatus\": \""); json.concat(str); json.concat("\"\n");
|
||||
break;
|
||||
case NukiOpener::LoggingType::DoorbellRecognition:
|
||||
json.concat("\"mode\": \"");
|
||||
switch(log.data[0] & 3)
|
||||
{
|
||||
case 0:
|
||||
json.concat("None");
|
||||
break;
|
||||
case 1:
|
||||
json.concat("RTO");
|
||||
break;
|
||||
case 2:
|
||||
json.concat("CM");
|
||||
break;
|
||||
default:
|
||||
json.concat("Unknown");
|
||||
break;
|
||||
}
|
||||
json.concat("\",\n");
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
json.concat("}");
|
||||
if(&log == &logEntries.back())
|
||||
{
|
||||
json.concat("\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
json.concat(",\n");
|
||||
}
|
||||
}
|
||||
|
||||
json.concat("]");
|
||||
publishString(mqtt_topic_lock_log, json.c_str());
|
||||
}
|
||||
|
||||
void NetworkOpener::clearAuthorizationInfo()
|
||||
{
|
||||
publishString(mqtt_topic_lock_log, "");
|
||||
}
|
||||
|
||||
void NetworkOpener::publishCommandResult(const char *resultStr)
|
||||
|
||||
@@ -20,7 +20,8 @@ public:
|
||||
|
||||
void publishKeyTurnerState(const NukiOpener::OpenerState& keyTurnerState, const NukiOpener::OpenerState& lastKeyTurnerState);
|
||||
void publishBinaryState(NukiOpener::LockState lockState);
|
||||
void publishAuthorizationInfo(const uint32_t authId, const char* authName);
|
||||
void publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries);
|
||||
void clearAuthorizationInfo();
|
||||
void publishCommandResult(const char* resultStr);
|
||||
void publishBatteryReport(const NukiOpener::BatteryReport& batteryReport);
|
||||
void publishConfig(const NukiOpener::Config& config);
|
||||
|
||||
@@ -126,7 +126,7 @@ void NukiOpenerWrapper::update()
|
||||
|
||||
if(_clearAuthData)
|
||||
{
|
||||
_network->publishAuthorizationInfo(0, "");
|
||||
_network->clearAuthorizationInfo();
|
||||
_clearAuthData = false;
|
||||
}
|
||||
|
||||
@@ -185,36 +185,23 @@ void NukiOpenerWrapper::updateAuthData()
|
||||
Nuki::CmdResult result = _nukiOpener.retrieveLogEntries(0, 0, 0, true);
|
||||
if(result != Nuki::CmdResult::Success)
|
||||
{
|
||||
_network->publishAuthorizationInfo(0, "");
|
||||
return;
|
||||
}
|
||||
delay(100);
|
||||
|
||||
result = _nukiOpener.retrieveLogEntries(_nukiOpener.getLogEntryCount() - 2, 1, 0, false);
|
||||
result = _nukiOpener.retrieveLogEntries(0, 10, 1, false);
|
||||
if(result != Nuki::CmdResult::Success)
|
||||
{
|
||||
_network->publishAuthorizationInfo(0, "");
|
||||
return;
|
||||
}
|
||||
delay(200);
|
||||
|
||||
std::list<Nuki::LogEntry> log;
|
||||
std::list<NukiOpener::LogEntry> log;
|
||||
_nukiOpener.getLogEntries(&log);
|
||||
|
||||
if(log.size() > 0)
|
||||
{
|
||||
const Nuki::LogEntry& entry = log.front();
|
||||
|
||||
if(entry.authId != _lastAuthId)
|
||||
{
|
||||
_network->publishAuthorizationInfo(entry.authId, (char *) entry.name);
|
||||
_lastAuthId = entry.authId;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_network->publishAuthorizationInfo(0, "");
|
||||
_lastAuthId = 0;
|
||||
_network->publishAuthorizationInfo(log);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,8 +59,6 @@ private:
|
||||
NukiOpener::OpenerState _lastKeyTurnerState;
|
||||
NukiOpener::OpenerState _keyTurnerState;
|
||||
|
||||
uint32_t _lastAuthId = 0xffff;
|
||||
|
||||
NukiOpener::BatteryReport _batteryReport;
|
||||
NukiOpener::BatteryReport _lastBatteryReport;
|
||||
|
||||
|
||||
@@ -225,7 +225,7 @@ void NukiWrapper::updateAuthData()
|
||||
}
|
||||
delay(200);
|
||||
|
||||
std::list<Nuki::LogEntry> log;
|
||||
std::list<NukiLock::LogEntry> log;
|
||||
_nukiLock.getLogEntries(&log);
|
||||
|
||||
if(log.size() > 0)
|
||||
|
||||
Submodule lib/nuki_ble updated: 10c99b04bd...9e95f5c9b3
Reference in New Issue
Block a user