diff --git a/CMakeLists.txt b/CMakeLists.txt index fd4e1c1..c63ab3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,9 +41,14 @@ file(GLOB SRCFILES lib/WiFiManager/WiFiManager.cpp lib/Crc16/Crc16.h lib/nuki_ble/src/NukiBle.cpp + lib/nuki_ble/src/NukiOpener.cpp lib/nuki_ble/src/NukiConstants.h + lib/nuki_ble/src/NukiOpenerConstants.h + lib/nuki_ble/src/NukiLockConstants.h lib/nuki_ble/src/NukiDataTypes.h lib/nuki_ble/src/NukiUtils.cpp + lib/nuki_ble/src/NukiLockUtils.cpp + lib/nuki_ble/src/NukiOpenerUtils.cpp lib/BleScanner/src/BleInterfaces.h lib/BleScanner/src/BleScanner.cpp lib/pubsubclient/src/PubSubClient.cpp @@ -61,7 +66,7 @@ add_executable(${PROJECT_NAME} main.cpp ${SRCFILES} ${SRCFILESREC} -) + ) target_compile_definitions(${PROJECT_NAME} PRIVATE diff --git a/Network.cpp b/Network.cpp index 9a28484..6bef9ef 100644 --- a/Network.cpp +++ b/Network.cpp @@ -253,11 +253,11 @@ void Network::onMqttDataReceived(char *&topic, byte *&payload, unsigned int &len } } -void Network::publishKeyTurnerState(const Nuki::KeyTurnerState& keyTurnerState, const Nuki::KeyTurnerState& lastKeyTurnerState) +void Network::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyTurnerState, const NukiLock::KeyTurnerState& lastKeyTurnerState) { char str[50]; - if((_firstTunerStatePublish || keyTurnerState.lockState != lastKeyTurnerState.lockState) && keyTurnerState.lockState != Nuki::LockState::Undefined) + if((_firstTunerStatePublish || keyTurnerState.lockState != lastKeyTurnerState.lockState) && keyTurnerState.lockState != NukiLock::LockState::Undefined) { memset(&str, 0, sizeof(str)); lockstateToString(keyTurnerState.lockState, str); @@ -274,14 +274,14 @@ void Network::publishKeyTurnerState(const Nuki::KeyTurnerState& keyTurnerState, if(_firstTunerStatePublish || keyTurnerState.lastLockActionCompletionStatus != lastKeyTurnerState.lastLockActionCompletionStatus) { memset(&str, 0, sizeof(str)); - completionStatusToString(keyTurnerState.lastLockActionCompletionStatus, str); + NukiLock::completionStatusToString(keyTurnerState.lastLockActionCompletionStatus, str); publishString(mqtt_topic_lock_completionStatus, str); } if(_firstTunerStatePublish || keyTurnerState.doorSensorState != lastKeyTurnerState.doorSensorState) { memset(&str, 0, sizeof(str)); - doorSensorStateToString(keyTurnerState.doorSensorState, str); + NukiLock::doorSensorStateToString(keyTurnerState.doorSensorState, str); publishString(mqtt_topic_door_sensor_state, str); } @@ -309,7 +309,7 @@ void Network::publishCommandResult(const char *resultStr) publishString(mqtt_topic_lock_action_command_result, resultStr); } -void Network::publishBatteryReport(const Nuki::BatteryReport& batteryReport) +void Network::publishBatteryReport(const NukiLock::BatteryReport& batteryReport) { publishFloat(mqtt_topic_battery_voltage, (float)batteryReport.batteryVoltage / 1000.0); publishInt(mqtt_topic_battery_drain, batteryReport.batteryDrain); // milliwatt seconds @@ -317,14 +317,14 @@ void Network::publishBatteryReport(const Nuki::BatteryReport& batteryReport) publishInt(mqtt_topic_battery_lock_distance, batteryReport.lockDistance); // degrees } -void Network::publishConfig(const Nuki::Config &config) +void Network::publishConfig(const NukiLock::Config &config) { publishBool(mqtt_topic_config_button_enabled, config.buttonEnabled == 1); publishBool(mqtt_topic_config_led_enabled, config.ledEnabled == 1); publishInt(mqtt_topic_config_led_brightness, config.ledBrightness); } -void Network::publishAdvancedConfig(const Nuki::AdvancedConfig &config) +void Network::publishAdvancedConfig(const NukiLock::AdvancedConfig &config) { publishBool(mqtt_topic_config_auto_unlock, config.autoUnLockDisabled == 0); publishBool(mqtt_topic_config_auto_lock, config.autoLockEnabled == 1); diff --git a/Network.h b/Network.h index 5d9e49d..bbc0284 100644 --- a/Network.h +++ b/Network.h @@ -8,6 +8,7 @@ #include #include "NukiConstants.h" #include "SpiffsCookie.h" +#include "NukiLockConstants.h" enum class NetworkDeviceType { @@ -28,12 +29,12 @@ public: bool isMqttConnected(); - void publishKeyTurnerState(const Nuki::KeyTurnerState& keyTurnerState, const Nuki::KeyTurnerState& lastKeyTurnerState); + void publishKeyTurnerState(const NukiLock::KeyTurnerState& keyTurnerState, const NukiLock::KeyTurnerState& lastKeyTurnerState); void publishAuthorizationInfo(const uint32_t authId, const char* authName); void publishCommandResult(const char* resultStr); - void publishBatteryReport(const Nuki::BatteryReport& batteryReport); - void publishConfig(const Nuki::Config& config); - void publishAdvancedConfig(const Nuki::AdvancedConfig& config); + void publishBatteryReport(const NukiLock::BatteryReport& batteryReport); + void publishConfig(const NukiLock::Config& config); + void publishAdvancedConfig(const NukiLock::AdvancedConfig& config); void publishPresenceDetection(char* csv); void setLockActionReceivedCallback(bool (*lockActionReceivedCallback)(const char* value)); diff --git a/NukiWrapper.cpp b/NukiWrapper.cpp index 502fea4..7f4dc14 100644 --- a/NukiWrapper.cpp +++ b/NukiWrapper.cpp @@ -2,7 +2,7 @@ #include #include "PreferencesKeys.h" #include "MqttTopics.h" -#include +#include NukiWrapper* nukiInst; @@ -14,11 +14,11 @@ NukiWrapper::NukiWrapper(const std::string& deviceName, uint32_t id, Network* ne { nukiInst = this; - memset(&_lastKeyTurnerState, sizeof(Nuki::KeyTurnerState), 0); - memset(&_lastBatteryReport, sizeof(Nuki::BatteryReport), 0); - memset(&_batteryReport, sizeof(Nuki::BatteryReport), 0); - memset(&_keyTurnerState, sizeof(Nuki::KeyTurnerState), 0); - _keyTurnerState.lockState = Nuki::LockState::Undefined; + memset(&_lastKeyTurnerState, sizeof(NukiLock::KeyTurnerState), 0); + memset(&_lastBatteryReport, sizeof(NukiLock::BatteryReport), 0); + memset(&_batteryReport, sizeof(NukiLock::BatteryReport), 0); + memset(&_keyTurnerState, sizeof(NukiLock::KeyTurnerState), 0); + _keyTurnerState.lockState = NukiLock::LockState::Undefined; network->setLockActionReceivedCallback(nukiInst->onLockActionReceivedCallback); network->setConfigUpdateReceivedCallback(nukiInst->onConfigUpdateReceivedCallback); @@ -111,19 +111,19 @@ void NukiWrapper::update() updateConfig(); } - if(_nextLockAction != (Nuki::LockAction)0xff) + if(_nextLockAction != (NukiLock::LockAction)0xff) { Nuki::CmdResult cmdResult = _nukiBle.lockAction(_nextLockAction, 0, 0); char resultStr[15] = {0}; - Nuki::cmdResultToString(cmdResult, resultStr); + NukiLock::cmdResultToString(cmdResult, resultStr); _network->publishCommandResult(resultStr); Serial.print(F("Lock action result: ")); Serial.println(resultStr); - _nextLockAction = (Nuki::LockAction)0xff; + _nextLockAction = (NukiLock::LockAction)0xff; if(_intervalLockstate > 10) { _nextLockStateUpdateTs = ts + 10 * 1000; @@ -136,7 +136,7 @@ void NukiWrapper::update() _clearAuthData = false; } - memcpy(&_lastKeyTurnerState, &_keyTurnerState, sizeof(Nuki::KeyTurnerState)); + memcpy(&_lastKeyTurnerState, &_keyTurnerState, sizeof(NukiLock::KeyTurnerState)); } void NukiWrapper::setPin(const uint16_t pin) @@ -221,23 +221,23 @@ void NukiWrapper::updateAuthData() } } -Nuki::LockAction NukiWrapper::lockActionToEnum(const char *str) +NukiLock::LockAction NukiWrapper::lockActionToEnum(const char *str) { - if(strcmp(str, "unlock") == 0) return Nuki::LockAction::Unlock; - else if(strcmp(str, "lock") == 0) return Nuki::LockAction::Lock; - else if(strcmp(str, "unlatch") == 0) return Nuki::LockAction::Unlatch; - else if(strcmp(str, "lockNgo") == 0) return Nuki::LockAction::LockNgo; - else if(strcmp(str, "lockNgoUnlatch") == 0) return Nuki::LockAction::LockNgoUnlatch; - else if(strcmp(str, "fullLock") == 0) return Nuki::LockAction::FullLock; - else if(strcmp(str, "fobAction2") == 0) return Nuki::LockAction::FobAction2; - else if(strcmp(str, "fobAction1") == 0) return Nuki::LockAction::FobAction1; - else if(strcmp(str, "fobAction3") == 0) return Nuki::LockAction::FobAction3; - return (Nuki::LockAction)0xff; + if(strcmp(str, "unlock") == 0) return NukiLock::LockAction::Unlock; + else if(strcmp(str, "lock") == 0) return NukiLock::LockAction::Lock; + else if(strcmp(str, "unlatch") == 0) return NukiLock::LockAction::Unlatch; + else if(strcmp(str, "lockNgo") == 0) return NukiLock::LockAction::LockNgo; + else if(strcmp(str, "lockNgoUnlatch") == 0) return NukiLock::LockAction::LockNgoUnlatch; + else if(strcmp(str, "fullLock") == 0) return NukiLock::LockAction::FullLock; + else if(strcmp(str, "fobAction2") == 0) return NukiLock::LockAction::FobAction2; + else if(strcmp(str, "fobAction1") == 0) return NukiLock::LockAction::FobAction1; + else if(strcmp(str, "fobAction3") == 0) return NukiLock::LockAction::FobAction3; + return (NukiLock::LockAction)0xff; } bool NukiWrapper::onLockActionReceivedCallback(const char *value) { - Nuki::LockAction action = nukiInst->lockActionToEnum(value); + NukiLock::LockAction action = nukiInst->lockActionToEnum(value); nukiInst->_nextLockAction = action; return (int)action != 0xff; } @@ -294,7 +294,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *topic, const char *value) } } -const Nuki::KeyTurnerState &NukiWrapper::keyTurnerState() +const NukiLock::KeyTurnerState &NukiWrapper::keyTurnerState() { return _keyTurnerState; } diff --git a/NukiWrapper.h b/NukiWrapper.h index a62376b..122cee6 100644 --- a/NukiWrapper.h +++ b/NukiWrapper.h @@ -19,7 +19,7 @@ public: void unpair(); - const Nuki::KeyTurnerState& keyTurnerState(); + const NukiLock::KeyTurnerState& keyTurnerState(); const bool isPaired(); BleScanner::Scanner* bleScanner(); @@ -39,10 +39,10 @@ private: void readConfig(); void readAdvancedConfig(); - Nuki::LockAction lockActionToEnum(const char* str); // char array at least 14 characters + NukiLock::LockAction lockActionToEnum(const char* str); // char array at least 14 characters std::string _deviceName; - Nuki::NukiBle _nukiBle; + NukiLock::NukiBle _nukiBle; BleScanner::Scanner* _bleScanner; Network* _network; Preferences* _preferences; @@ -52,16 +52,16 @@ private: bool _publishAuthData = false; bool _clearAuthData = false; - Nuki::KeyTurnerState _lastKeyTurnerState; - Nuki::KeyTurnerState _keyTurnerState; + NukiLock::KeyTurnerState _lastKeyTurnerState; + NukiLock::KeyTurnerState _keyTurnerState; uint32_t _lastAuthId = 0xffff; - Nuki::BatteryReport _batteryReport; - Nuki::BatteryReport _lastBatteryReport; + NukiLock::BatteryReport _batteryReport; + NukiLock::BatteryReport _lastBatteryReport; - Nuki::Config _nukiConfig = {0}; - Nuki::AdvancedConfig _nukiAdvancedConfig = {0}; + NukiLock::Config _nukiConfig = {0}; + NukiLock::AdvancedConfig _nukiAdvancedConfig = {0}; bool _nukiConfigValid = false; bool _nukiAdvancedConfigValid = false; @@ -71,5 +71,5 @@ private: unsigned long _nextBatteryReportTs = 0; unsigned long _nextConfigUpdateTs = 0; unsigned long _nextPairTs = 0; - Nuki::LockAction _nextLockAction = (Nuki::LockAction)0xff; + NukiLock::LockAction _nextLockAction = (NukiLock::LockAction)0xff; }; diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index 1d65999..6cf4d31 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -258,7 +258,7 @@ void WebCfgServer::buildHtml(String& response) version.concat(nuki_hub_version); char lockstateArr[20]; - Nuki::lockstateToString(_nuki->keyTurnerState().lockState, lockstateArr); + NukiLock::lockstateToString(_nuki->keyTurnerState().lockState, lockstateArr); String lockState = " "; lockState.concat(lockstateArr);