reflect continuous mode in state mode
This commit is contained in:
@@ -97,15 +97,23 @@ void NetworkOpener::publishKeyTurnerState(const NukiOpener::OpenerState& keyTurn
|
||||
{
|
||||
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));
|
||||
lockstateToString(keyTurnerState.lockState, str);
|
||||
publishString(mqtt_topic_lock_state, str);
|
||||
|
||||
if(keyTurnerState.nukiState == NukiOpener::State::ContinuousMode)
|
||||
{
|
||||
publishString(mqtt_topic_lock_state, "ContinuousMode");
|
||||
}
|
||||
else
|
||||
{
|
||||
lockstateToString(keyTurnerState.lockState, str);
|
||||
publishString(mqtt_topic_lock_state, str);
|
||||
}
|
||||
|
||||
if(_haEnabled)
|
||||
{
|
||||
publishBinaryState(keyTurnerState.lockState);
|
||||
publishBinaryState(keyTurnerState);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,20 +153,27 @@ void NetworkOpener::publishRing()
|
||||
_resetLockStateTs = millis() + 2000;
|
||||
}
|
||||
|
||||
void NetworkOpener::publishBinaryState(NukiOpener::LockState lockState)
|
||||
void NetworkOpener::publishBinaryState(NukiOpener::OpenerState lockState)
|
||||
{
|
||||
switch(lockState)
|
||||
if(lockState.nukiState == NukiOpener::State::ContinuousMode)
|
||||
{
|
||||
case NukiOpener::LockState::Locked:
|
||||
publishString(mqtt_topic_lock_binary_state, "locked");
|
||||
break;
|
||||
case NukiOpener::LockState::RTOactive:
|
||||
case NukiOpener::LockState::Open:
|
||||
case NukiOpener::LockState::Opening:
|
||||
publishString(mqtt_topic_lock_binary_state, "unlocked");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
publishString(mqtt_topic_lock_binary_state, "unlocked");
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (lockState.lockState)
|
||||
{
|
||||
case NukiOpener::LockState::Locked:
|
||||
publishString(mqtt_topic_lock_binary_state, "locked");
|
||||
break;
|
||||
case NukiOpener::LockState::RTOactive:
|
||||
case NukiOpener::LockState::Open:
|
||||
case NukiOpener::LockState::Opening:
|
||||
publishString(mqtt_topic_lock_binary_state, "unlocked");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
|
||||
void publishKeyTurnerState(const NukiOpener::OpenerState& keyTurnerState, const NukiOpener::OpenerState& lastKeyTurnerState);
|
||||
void publishRing();
|
||||
void publishBinaryState(NukiOpener::LockState lockState);
|
||||
void publishBinaryState(NukiOpener::OpenerState lockState);
|
||||
void publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries);
|
||||
void clearAuthorizationInfo();
|
||||
void publishCommandResult(const char* resultStr);
|
||||
|
||||
@@ -181,7 +181,10 @@ void NukiOpenerWrapper::updateKeyTurnerState()
|
||||
{
|
||||
_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"));
|
||||
_network->publishRing();
|
||||
@@ -190,7 +193,11 @@ void NukiOpenerWrapper::updateKeyTurnerState()
|
||||
{
|
||||
_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];
|
||||
lockstateToString(_keyTurnerState.lockState, lockStateStr);
|
||||
|
||||
Reference in New Issue
Block a user