Seperate ring from lockstate

This commit is contained in:
iranl
2024-03-05 21:00:29 +01:00
parent a35a0b89ba
commit 4ba0501244
4 changed files with 11 additions and 11 deletions

View File

@@ -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"

View File

@@ -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 }}\" }"}});

View File

@@ -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)

View File

@@ -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];