diff --git a/MqttTopics.h b/MqttTopics.h index 42e052d..755f586 100644 --- a/MqttTopics.h +++ b/MqttTopics.h @@ -23,5 +23,6 @@ #define mqtt_topic_config_auto_unlock "/configuration/autoUnlock" #define mqtt_topic_config_auto_lock "/configuration/autoLock" #define mqtt_topic_config_single_lock "/configuration/singleLock" +#define mqtt_topic_config_sound_level "/configuration/soundLevel" #define mqtt_topic_presence "/presence/devices" diff --git a/NetworkOpener.cpp b/NetworkOpener.cpp index 408c67f..2b32f8f 100644 --- a/NetworkOpener.cpp +++ b/NetworkOpener.cpp @@ -10,11 +10,11 @@ NetworkOpener::NetworkOpener(Network* network, Preferences* preferences) _network(network) { _configTopics.reserve(5); -// _configTopics.push_back(mqtt_topic_config_button_enabled); -// _configTopics.push_back(mqtt_topic_config_led_enabled); -// _configTopics.push_back(mqtt_topic_config_led_brightness); -// _configTopics.push_back(mqtt_topic_config_auto_unlock); -// _configTopics.push_back(mqtt_topic_config_auto_lock); + _configTopics.push_back(mqtt_topic_config_button_enabled); + _configTopics.push_back(mqtt_topic_config_led_enabled); + _configTopics.push_back(mqtt_topic_config_sound_level); + + _network->registerMqttReceiver(this); } void NetworkOpener::initialize() @@ -35,7 +35,10 @@ void NetworkOpener::initialize() } _network->subscribe(_mqttPath, mqtt_topic_lock_action); - _network->registerMqttReceiver(this); + for(const auto& topic : _configTopics) + { + _network->subscribe(_mqttPath, topic); + } } void NetworkOpener::onMqttDataReceived(char *&topic, byte *&payload, unsigned int &length) @@ -139,8 +142,7 @@ void NetworkOpener::publishConfig(const NukiOpener::Config &config) void NetworkOpener::publishAdvancedConfig(const NukiOpener::AdvancedConfig &config) { -// publishBool(mqtt_topic_config_auto_unlock, config.autoUnLockDisabled == 0); -// publishBool(mqtt_topic_config_auto_lock, config.autoLockEnabled == 1); + publishUInt(mqtt_topic_config_sound_level, config.soundLevel); } void NetworkOpener::publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState) diff --git a/NukiOpenerWrapper.cpp b/NukiOpenerWrapper.cpp index ea3ae38..fb17262 100644 --- a/NukiOpenerWrapper.cpp +++ b/NukiOpenerWrapper.cpp @@ -260,6 +260,13 @@ void NukiOpenerWrapper::onConfigUpdateReceived(const char *topic, const char *va _nukiOpener.enableLedFlash(newValue); _nextConfigUpdateTs = millis() + 300; } + if(strcmp(topic, mqtt_topic_config_sound_level) == 0) + { + uint8_t newValue = atoi(value); + if(!_nukiAdvancedConfigValid || _nukiAdvancedConfig.soundLevel == newValue) return; + _nukiOpener.setSoundLevel(newValue); + _nextConfigUpdateTs = millis() + 300; + } } const NukiOpener::OpenerState &NukiOpenerWrapper::keyTurnerState() diff --git a/Version.h b/Version.h index 154e513..be34da5 100644 --- a/Version.h +++ b/Version.h @@ -1,3 +1,3 @@ #pragma once -#define nuki_hub_version "5.2" \ No newline at end of file +#define nuki_hub_version "5.3" \ No newline at end of file