publish keypad command result
This commit is contained in:
@@ -32,6 +32,7 @@
|
|||||||
#define mqtt_topic_keypad_command_name "/keypad/command/name"
|
#define mqtt_topic_keypad_command_name "/keypad/command/name"
|
||||||
#define mqtt_topic_keypad_command_code "/keypad/command/code"
|
#define mqtt_topic_keypad_command_code "/keypad/command/code"
|
||||||
#define mqtt_topic_keypad_command_enabled "/keypad/command/enabled"
|
#define mqtt_topic_keypad_command_enabled "/keypad/command/enabled"
|
||||||
|
#define mqtt_topic_keypad_command_enabled "/keypad/command/commandResult"
|
||||||
|
|
||||||
#define mqtt_topic_presence "/presence/devices"
|
#define mqtt_topic_presence "/presence/devices"
|
||||||
|
|
||||||
|
|||||||
@@ -286,6 +286,11 @@ void NetworkLock::publishKeypad(const std::list<NukiLock::KeypadEntry>& entries,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NetworkLock::publishKeypadCommandResult(const char* result)
|
||||||
|
{
|
||||||
|
publishString(mqtt_topic_keypad_command_enabled, result);
|
||||||
|
}
|
||||||
|
|
||||||
void NetworkLock::setLockActionReceivedCallback(bool (*lockActionReceivedCallback)(const char *))
|
void NetworkLock::setLockActionReceivedCallback(bool (*lockActionReceivedCallback)(const char *))
|
||||||
{
|
{
|
||||||
_lockActionReceivedCallback = lockActionReceivedCallback;
|
_lockActionReceivedCallback = lockActionReceivedCallback;
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public:
|
|||||||
void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
||||||
void removeHASSConfig(char* uidString);
|
void removeHASSConfig(char* uidString);
|
||||||
void publishKeypad(const std::list<NukiLock::KeypadEntry>& entries, uint maxKeypadCodeCount);
|
void publishKeypad(const std::list<NukiLock::KeypadEntry>& entries, uint maxKeypadCodeCount);
|
||||||
|
void publishKeypadCommandResult(const char* result);
|
||||||
|
|
||||||
void setLockActionReceivedCallback(bool (*lockActionReceivedCallback)(const char* value));
|
void setLockActionReceivedCallback(bool (*lockActionReceivedCallback)(const char* value));
|
||||||
void setConfigUpdateReceivedCallback(void (*configUpdateReceivedCallback)(const char* path, const char* value));
|
void setConfigUpdateReceivedCallback(void (*configUpdateReceivedCallback)(const char* path, const char* value));
|
||||||
|
|||||||
@@ -358,6 +358,8 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NukiLock::CmdResult result = (NukiLock::CmdResult)-1;
|
||||||
|
|
||||||
if(strcmp(command, "add") == 0)
|
if(strcmp(command, "add") == 0)
|
||||||
{
|
{
|
||||||
if(name == "")
|
if(name == "")
|
||||||
@@ -370,14 +372,14 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c
|
|||||||
size_t nameLen = name.length();
|
size_t nameLen = name.length();
|
||||||
memcpy(&entry.name, name.c_str(), nameLen > 20 ? 20 : nameLen);
|
memcpy(&entry.name, name.c_str(), nameLen > 20 ? 20 : nameLen);
|
||||||
entry.code = code.toInt();
|
entry.code = code.toInt();
|
||||||
const auto r = _nukiLock.addKeypadEntry(entry);
|
result = _nukiLock.addKeypadEntry(entry);
|
||||||
Serial.print("Add keypad code: "); Serial.println((int)r);
|
Serial.print("Add keypad code: "); Serial.println((int)result);
|
||||||
updateKeypad();
|
updateKeypad();
|
||||||
}
|
}
|
||||||
else if(strcmp(command, "delete") == 0)
|
else if(strcmp(command, "delete") == 0)
|
||||||
{
|
{
|
||||||
const auto r = _nukiLock.deleteKeypadEntry(id);
|
result = _nukiLock.deleteKeypadEntry(id);
|
||||||
Serial.print("Delete keypad code: "); Serial.println((int)r);
|
Serial.print("Delete keypad code: "); Serial.println((int)result);
|
||||||
updateKeypad();
|
updateKeypad();
|
||||||
}
|
}
|
||||||
if(strcmp(command, "update") == 0)
|
if(strcmp(command, "update") == 0)
|
||||||
@@ -394,10 +396,21 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c
|
|||||||
memcpy(&entry.name, name.c_str(), nameLen > 20 ? 20 : nameLen);
|
memcpy(&entry.name, name.c_str(), nameLen > 20 ? 20 : nameLen);
|
||||||
entry.code = code.toInt();
|
entry.code = code.toInt();
|
||||||
entry.enabled = enabled == 0 ? 0 : 1;
|
entry.enabled = enabled == 0 ? 0 : 1;
|
||||||
const auto r = _nukiLock.updateKeypadEntry(entry);
|
result = _nukiLock.updateKeypadEntry(entry);
|
||||||
Serial.print("Update keypad code: "); Serial.println((int)r);
|
Serial.print("Update keypad code: "); Serial.println((int)result);
|
||||||
updateKeypad();
|
updateKeypad();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((int)result != -1)
|
||||||
|
{
|
||||||
|
char resultStr[15];
|
||||||
|
memset(&resultStr, 0, sizeof(resultStr));
|
||||||
|
NukiLock::cmdResultToString(result, resultStr);
|
||||||
|
_network->publishKeypadCommandResult(resultStr);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
_network->publishKeypadCommandResult("UnknownCommand");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const NukiLock::KeyTurnerState &NukiWrapper::keyTurnerState()
|
const NukiLock::KeyTurnerState &NukiWrapper::keyTurnerState()
|
||||||
|
|||||||
Submodule lib/nuki_ble updated: 822fd645af...1d78e91750
Reference in New Issue
Block a user