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];
|
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");
|
||||||
@@ -161,6 +175,7 @@ void NetworkOpener::publishBinaryState(NukiOpener::LockState lockState)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void NetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries)
|
void NetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::LogEntry>& logEntries)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user