diff --git a/src/Config.h b/src/Config.h index 9fc0337..690e95d 100644 --- a/src/Config.h +++ b/src/Config.h @@ -5,8 +5,8 @@ #define NUKI_HUB_VERSION "9.13" #define NUKI_HUB_VERSION_INT (uint32_t)913 #define NUKI_HUB_BUILD "unknownbuildnr" -#define NUKI_HUB_DATE "2025-10-05" -#define NUKI_HUB_DATE "2025-10-05" +#define NUKI_HUB_DATE "2025-10-06" +#define NUKI_HUB_DATE "2025-10-06" #define GITHUB_LATEST_RELEASE_URL (char*)"https://github.com/technyon/nuki_hub/releases/latest" #define GITHUB_OTA_MANIFEST_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/manifest.json" diff --git a/src/Gpio.cpp b/src/Gpio.cpp index deca13b..b456b25 100644 --- a/src/Gpio.cpp +++ b/src/Gpio.cpp @@ -181,6 +181,7 @@ void Gpio::setPins() case PinRole::OutputHighMqttConnected: case PinRole::OutputHighNetworkConnected: case PinRole::OutputHighBluetoothCommError: + case PinRole::OutputHighBluetoothComm: pinMode(entry.pin, OUTPUT); break; case PinRole::Ethernet: @@ -504,6 +505,8 @@ String Gpio::getRoleDescription(const PinRole& role) const return "Output: High when MQTT connected"; case PinRole::OutputHighNetworkConnected: return "Output: High when network connected"; + case PinRole::OutputHighBluetoothComm: + return "Output: High on bluetooth communication active"; case PinRole::OutputHighBluetoothCommError: return "Output: High on bluetooth communication error"; default: @@ -554,6 +557,7 @@ GpioAction Gpio::getGpioAction(const PinRole &role) const case PinRole::OutputHighRtoOrCmActive: case PinRole::OutputHighMqttConnected: case PinRole::OutputHighNetworkConnected: + case PinRole::OutputHighBluetoothComm: case PinRole::OutputHighBluetoothCommError: default: return GpioAction::None; diff --git a/src/Gpio.h b/src/Gpio.h index 513b1ca..4f2b0ed 100644 --- a/src/Gpio.h +++ b/src/Gpio.h @@ -31,7 +31,8 @@ enum class PinRole Ethernet, OutputHighMqttConnected, OutputHighNetworkConnected, - OutputHighBluetoothCommError + OutputHighBluetoothCommError, + OutputHighBluetoothComm }; enum class GpioAction @@ -128,6 +129,7 @@ private: PinRole::InputDeactivateCM, PinRole::OutputHighMqttConnected, PinRole::OutputHighNetworkConnected, + PinRole::OutputHighBluetoothComm, PinRole::OutputHighBluetoothCommError, PinRole::OutputHighLocked, PinRole::OutputHighUnlocked, diff --git a/src/NukiOpenerWrapper.cpp b/src/NukiOpenerWrapper.cpp index 01aef05..4f38548 100644 --- a/src/NukiOpenerWrapper.cpp +++ b/src/NukiOpenerWrapper.cpp @@ -46,9 +46,6 @@ NukiOpenerWrapper::NukiOpenerWrapper(const std::string& deviceName, NukiDeviceId network->setAuthCommandReceivedCallback(nukiOpenerInst->onAuthCommandReceivedCallback); _gpio->addCallback(NukiOpenerWrapper::gpioActionCallback); -#ifndef NUKI_HUB_UPDATER - _pinsCommError = _gpio->getPinsWithRole(PinRole::OutputHighBluetoothCommError); -#endif } @@ -76,7 +73,7 @@ void NukiOpenerWrapper::initialize() _hassEnabled = _preferences->getBool(preference_mqtt_hass_enabled, false); readSettings(); #ifndef NUKI_HUB_UPDATER - _nukiRetryHandler = new NukiRetryHandler("Opener", _gpio, _gpio->getPinsWithRole(PinRole::OutputHighBluetoothCommError), _nrOfRetries, _retryDelay); + _nukiRetryHandler = new NukiRetryHandler("Opener", _gpio, _gpio->getPinsWithRole(PinRole::OutputHighBluetoothComm), _gpio->getPinsWithRole(PinRole::OutputHighBluetoothCommError), _nrOfRetries, _retryDelay); #endif } @@ -3658,14 +3655,6 @@ const std::string NukiOpenerWrapper::hardwareVersion() const return _hardwareVersion; } -void NukiOpenerWrapper::setCommErrorPins(const uint8_t& value) -{ - for (uint8_t pin : _pinsCommError) - { - _gpio->setPinOutput(pin, value); - } -} - void NukiOpenerWrapper::disableWatchdog() { _restartBeaconTimeout = -1; diff --git a/src/NukiOpenerWrapper.h b/src/NukiOpenerWrapper.h index b019e7f..ed7e1ac 100644 --- a/src/NukiOpenerWrapper.h +++ b/src/NukiOpenerWrapper.h @@ -43,8 +43,6 @@ public: const std::string firmwareVersion() const; const std::string hardwareVersion() const; - void setCommErrorPins(const uint8_t& value); - const BleScanner::Scanner* bleScanner(); void notify(NukiOpener::EventType eventType) override; @@ -88,8 +86,6 @@ private: Gpio* _gpio = nullptr; NukiRetryHandler* _nukiRetryHandler = nullptr; - std::vector _pinsCommError; - int _intervalLockstate = 0; // seconds int _intervalBattery = 0; // seconds int _intervalConfig = 60 * 60; // seconds diff --git a/src/NukiWrapper.cpp b/src/NukiWrapper.cpp index 41b9c0f..541be62 100644 --- a/src/NukiWrapper.cpp +++ b/src/NukiWrapper.cpp @@ -80,7 +80,7 @@ void NukiWrapper::initialize() readSettings(); #ifndef NUKI_HUB_UPDATER - _nukiRetryHandler = new NukiRetryHandler("Lock", _gpio, _gpio->getPinsWithRole(PinRole::OutputHighBluetoothCommError), _nrOfRetries, _retryDelay); + _nukiRetryHandler = new NukiRetryHandler("Lock", _gpio, _gpio->getPinsWithRole(PinRole::OutputHighBluetoothComm), _gpio->getPinsWithRole(PinRole::OutputHighBluetoothCommError), _nrOfRetries, _retryDelay); #endif } diff --git a/src/util/NukiRetryHandler.cpp b/src/util/NukiRetryHandler.cpp index 3fceb4e..ed1cc7d 100644 --- a/src/util/NukiRetryHandler.cpp +++ b/src/util/NukiRetryHandler.cpp @@ -1,9 +1,10 @@ #include "NukiRetryHandler.h" #include "Logger.h" -NukiRetryHandler::NukiRetryHandler(std::string reference, Gpio* gpio, std::vector pinsCommError, int nrOfRetries, int retryDelay) +NukiRetryHandler::NukiRetryHandler(std::string reference, Gpio* gpio, std::vector pinsComm, std::vector pinsCommError, int nrOfRetries, int retryDelay) : _reference(reference), _gpio(gpio), + _pinsComm(pinsComm), _pinsCommError(pinsCommError), _nrOfRetries(nrOfRetries), _retryDelay(retryDelay) @@ -16,6 +17,8 @@ const Nuki::CmdResult NukiRetryHandler::retryComm(std::functionsetPinOutput(pin, value); + } +} + void NukiRetryHandler::setCommErrorPins(const uint8_t& value) { for (uint8_t pin : _pinsCommError) diff --git a/src/util/NukiRetryHandler.h b/src/util/NukiRetryHandler.h index dde60b1..046bd12 100644 --- a/src/util/NukiRetryHandler.h +++ b/src/util/NukiRetryHandler.h @@ -6,17 +6,19 @@ class NukiRetryHandler { public: - NukiRetryHandler(std::string reference, Gpio* gpio, std::vector pinsCommError, int nrOfRetries, int retryDelay); + NukiRetryHandler(std::string reference, Gpio* gpio, std::vector pinsComm, std::vector pinsCommError, int nrOfRetries, int retryDelay); const Nuki::CmdResult retryComm(std::function func); private: + void setCommPins(const uint8_t& value); void setCommErrorPins(const uint8_t& value); std::string _reference; Gpio* _gpio = nullptr; int _nrOfRetries = 0; int _retryDelay = 0; + std::vector _pinsComm; std::vector _pinsCommError; };