diff --git a/MqttTopics.h b/MqttTopics.h index 7e4a327..3ed9c47 100644 --- a/MqttTopics.h +++ b/MqttTopics.h @@ -20,6 +20,7 @@ #define mqtt_topic_lock_binary_state "/lock/binaryState" #define mqtt_topic_lock_continuous_mode "/lock/continuousMode" #define mqtt_topic_lock_ring "/lock/ring" +#define mqtt_topic_lock_binary_ring "/lock/binaryRing" #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 dd261d3..49a657b 100644 --- a/Network.cpp +++ b/Network.cpp @@ -1219,14 +1219,14 @@ void Network::publishHASSConfigRingDetect(char *deviceType, const char *baseTopi "Ring detect", name, baseTopic, - String("~") + mqtt_topic_lock_state, + String("~") + mqtt_topic_lock_binary_ring, deviceType, "sound", "", "", "", {{"pl_on", "ring"}, - {"pl_off", "locked"}}); + {"pl_off", "standby"}}); DynamicJsonDocument json(_bufferSize); json = createHassJson(uidString, "_ring_event", "Ring", name, baseTopic, String("~") + mqtt_topic_lock_ring, deviceType, "doorbell", "", "", "", {{"value_template", "{ \"event_type\": \"{{ value }}\" }"}}); diff --git a/NetworkOpener.cpp b/NetworkOpener.cpp index 42c7703..04817be 100644 --- a/NetworkOpener.cpp +++ b/NetworkOpener.cpp @@ -49,6 +49,7 @@ void NetworkOpener::initialize() _network->initTopic(_mqttPath, mqtt_topic_query_config, "0"); _network->initTopic(_mqttPath, mqtt_topic_query_lockstate, "0"); _network->initTopic(_mqttPath, mqtt_topic_query_battery, "0"); + _network->initTopic(_mqttPath, mqtt_topic_lock_binary_ring, "standby"); _network->subscribe(_mqttPath, mqtt_topic_query_config); _network->subscribe(_mqttPath, mqtt_topic_query_lockstate); _network->subscribe(_mqttPath, mqtt_topic_query_battery); @@ -77,13 +78,10 @@ void NetworkOpener::initialize() void NetworkOpener::update() { - if(_resetLockStateTs != 0 && millis() >= _resetLockStateTs) + if(_resetRingStateTs != 0 && millis() >= _resetRingStateTs) { - char str[50]; - memset(str, 0, sizeof(str)); - _resetLockStateTs = 0; - lockstateToString(_currentLockState, str); - publishString(mqtt_topic_lock_state, str); + _resetRingStateTs = 0; + publishString(mqtt_topic_lock_binary_ring, "standby"); } } @@ -278,14 +276,15 @@ void NetworkOpener::publishRing(const bool locked) { if (locked) { - publishString(mqtt_topic_lock_state, "ring"); publishString(mqtt_topic_lock_ring, "ringlocked"); - _resetLockStateTs = millis() + 2000; } else { publishString(mqtt_topic_lock_ring, "ring"); } + + publishString(mqtt_topic_lock_binary_ring, "ring"); + _resetRingStateTs = millis() + 2000; } void NetworkOpener::publishState(NukiOpener::OpenerState lockState) diff --git a/NetworkOpener.h b/NetworkOpener.h index ac85004..ec84dc7 100644 --- a/NetworkOpener.h +++ b/NetworkOpener.h @@ -80,7 +80,7 @@ private: String _keypadCommandCode = ""; uint _keypadCommandId = 0; int _keypadCommandEnabled = 1; - unsigned long _resetLockStateTs = 0; + unsigned long _resetRingStateTs = 0; uint8_t _queryCommands = 0; uint32_t authId = 0; char authName[33];