reflect continuous mode in state mode

This commit is contained in:
technyon
2023-01-10 22:23:34 +01:00
parent de34e1a78e
commit f21dc0d722
3 changed files with 41 additions and 19 deletions

View File

@@ -97,15 +97,23 @@ void NetworkOpener::publishKeyTurnerState(const NukiOpener::OpenerState& keyTurn
{ {
char str[50]; char str[50];
if((_firstTunerStatePublish || keyTurnerState.lockState != lastKeyTurnerState.lockState) && keyTurnerState.lockState != NukiOpener::LockState::Undefined) if((_firstTunerStatePublish || keyTurnerState.lockState != lastKeyTurnerState.lockState || keyTurnerState.nukiState != lastKeyTurnerState.nukiState) && keyTurnerState.lockState != NukiOpener::LockState::Undefined)
{ {
memset(&str, 0, sizeof(str)); memset(&str, 0, sizeof(str));
if(keyTurnerState.nukiState == NukiOpener::State::ContinuousMode)
{
publishString(mqtt_topic_lock_state, "ContinuousMode");
}
else
{
lockstateToString(keyTurnerState.lockState, str); lockstateToString(keyTurnerState.lockState, str);
publishString(mqtt_topic_lock_state, str); publishString(mqtt_topic_lock_state, str);
}
if(_haEnabled) if(_haEnabled)
{ {
publishBinaryState(keyTurnerState.lockState); publishBinaryState(keyTurnerState);
} }
} }
@@ -145,9 +153,15 @@ void NetworkOpener::publishRing()
_resetLockStateTs = millis() + 2000; _resetLockStateTs = millis() + 2000;
} }
void NetworkOpener::publishBinaryState(NukiOpener::LockState lockState) void NetworkOpener::publishBinaryState(NukiOpener::OpenerState lockState)
{ {
switch(lockState) if(lockState.nukiState == NukiOpener::State::ContinuousMode)
{
publishString(mqtt_topic_lock_binary_state, "unlocked");
}
else
{
switch (lockState.lockState)
{ {
case NukiOpener::LockState::Locked: case NukiOpener::LockState::Locked:
publishString(mqtt_topic_lock_binary_state, "locked"); publishString(mqtt_topic_lock_binary_state, "locked");
@@ -160,6 +174,7 @@ void NetworkOpener::publishBinaryState(NukiOpener::LockState lockState)
default: default:
break; break;
} }
}
} }
void NetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries) void NetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries)

View File

@@ -21,7 +21,7 @@ public:
void publishKeyTurnerState(const NukiOpener::OpenerState& keyTurnerState, const NukiOpener::OpenerState& lastKeyTurnerState); void publishKeyTurnerState(const NukiOpener::OpenerState& keyTurnerState, const NukiOpener::OpenerState& lastKeyTurnerState);
void publishRing(); void publishRing();
void publishBinaryState(NukiOpener::LockState lockState); void publishBinaryState(NukiOpener::OpenerState lockState);
void publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries); void publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries);
void clearAuthorizationInfo(); void clearAuthorizationInfo();
void publishCommandResult(const char* resultStr); void publishCommandResult(const char* resultStr);

View File

@@ -181,7 +181,10 @@ void NukiOpenerWrapper::updateKeyTurnerState()
{ {
_nukiOpener.requestOpenerState(&_keyTurnerState); _nukiOpener.requestOpenerState(&_keyTurnerState);
if(_statusUpdated && _keyTurnerState.lockState == NukiOpener::LockState::Locked && _lastKeyTurnerState.lockState == NukiOpener::LockState::Locked) if(_statusUpdated &&
_keyTurnerState.lockState == NukiOpener::LockState::Locked &&
_lastKeyTurnerState.lockState == NukiOpener::LockState::Locked &&
_lastKeyTurnerState.nukiState == _keyTurnerState.nukiState)
{ {
Log->println(F("Nuki opener: Ring detected")); Log->println(F("Nuki opener: Ring detected"));
_network->publishRing(); _network->publishRing();
@@ -190,7 +193,11 @@ void NukiOpenerWrapper::updateKeyTurnerState()
{ {
_network->publishKeyTurnerState(_keyTurnerState, _lastKeyTurnerState); _network->publishKeyTurnerState(_keyTurnerState, _lastKeyTurnerState);
if(_keyTurnerState.lockState != _lastKeyTurnerState.lockState) if(_keyTurnerState.nukiState == NukiOpener::State::ContinuousMode)
{
Log->println(F("Nuki opener state: Continuous Mode"));
}
else if(_keyTurnerState.lockState != _lastKeyTurnerState.lockState)
{ {
char lockStateStr[20]; char lockStateStr[20];
lockstateToString(_keyTurnerState.lockState, lockStateStr); lockstateToString(_keyTurnerState.lockState, lockStateStr);