diff --git a/MqttTopics.h b/MqttTopics.h index c2d4310..e79e95e 100644 --- a/MqttTopics.h +++ b/MqttTopics.h @@ -17,6 +17,7 @@ #define mqtt_topic_query_battery "/lock/query/battery" #define mqtt_topic_query_lockstate_command_result "/lock/query/lockstateCommandResult" #define mqtt_topic_lock_binary_state "/lock/binaryState" +#define mqtt_topic_lock_continous_mode "/lock/continousMode" #define mqtt_topic_lock_trigger "/lock/trigger" #define mqtt_topic_lock_last_lock_action "/lock/lastLockAction" #define mqtt_topic_lock_log "/lock/log" diff --git a/Network.cpp b/Network.cpp index bc13131..469a5b5 100644 --- a/Network.cpp +++ b/Network.cpp @@ -1084,6 +1084,30 @@ void Network::publishHASSConfigDoorSensor(char *deviceType, const char *baseTopi } } +void Network::publishHASSConfigContinuousMode(char *deviceType, const char *baseTopic, char *name, char *uidString) +{ + String discoveryTopic = _preferences->getString(preference_mqtt_hass_discovery); + + if (discoveryTopic != "") + { + publishHassTopic("binary_sensor", + "continuous_mode", + uidString, + "_continuous_mode", + "Continuous mode", + name, + baseTopic, + String("~") + mqtt_topic_lock_continous_mode, + deviceType, + "lock", + "", + "", + "", + {{"pl_on", "on"}, + {"pl_off", "off"}}); + } +} + void Network::publishHASSConfigRingDetect(char *deviceType, const char *baseTopic, char *name, char *uidString) { String discoveryTopic = _preferences->getString(preference_mqtt_hass_discovery); @@ -1108,7 +1132,6 @@ void Network::publishHASSConfigRingDetect(char *deviceType, const char *baseTopi } } - void Network::publishHASSConfigLedBrightness(char *deviceType, const char *baseTopic, char *name, char *uidString) { publishHassTopic("number", diff --git a/Network.h b/Network.h index d736eef..2df550b 100644 --- a/Network.h +++ b/Network.h @@ -48,6 +48,7 @@ public: void publishHASSConfigBatLevel(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigDoorSensor(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigRingDetect(char* deviceType, const char* baseTopic, char* name, char* uidString); + void publishHASSConfigContinuousMode(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigLedBrightness(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigSoundLevel(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigAccessLog(char* deviceType, const char* baseTopic, char* name, char* uidString); diff --git a/NetworkOpener.cpp b/NetworkOpener.cpp index cde655f..d917077 100644 --- a/NetworkOpener.cpp +++ b/NetworkOpener.cpp @@ -266,9 +266,12 @@ void NetworkOpener::publishState(NukiOpener::OpenerState lockState) { publishString(mqtt_topic_lock_ha_state, "unlocked"); publishString(mqtt_topic_lock_binary_state, "unlocked"); + publishString(mqtt_topic_lock_continous_mode, "on"); } else { + publishString(mqtt_topic_lock_continous_mode, "off"); + switch (lockState.lockState) { case NukiOpener::LockState::Locked: @@ -511,6 +514,7 @@ void NetworkOpener::publishHASSConfig(char* deviceType, const char* baseTopic, c _network->publishHASSConfig(deviceType, baseTopic, name, uidString, availabilityTopic.c_str(), false, lockAction, unlockAction, openAction); _network->publishHASSConfigRingDetect(deviceType, baseTopic, name, uidString); + _network->publishHASSConfigContinuousMode(deviceType, baseTopic, name, uidString); _network->publishHASSConfigSoundLevel(deviceType, baseTopic, name, uidString); _network->publishHASSBleRssiConfig(deviceType, baseTopic, name, uidString); }