Merge pull request #321 from iranl/add-missing-actions-to-home-assistant

Add query and config actions to Home Assistant discovery
This commit is contained in:
Jan-Ole Schümann
2024-03-08 17:10:56 +07:00
committed by GitHub
2 changed files with 168 additions and 8 deletions

View File

@@ -1073,6 +1073,81 @@ void Network::publishHASSConfig(char* deviceType, const char* baseTopic, char* n
{ { "enabled_by_default", "false" }, { { "enabled_by_default", "false" },
{ "pl_prs", openAction }}); { "pl_prs", openAction }});
// Query Lock State
publishHassTopic("button",
"query_lockstate",
uidString,
"_query_lockstate_button",
"Query lock state",
name,
baseTopic,
"",
deviceType,
"",
"",
"diagnostic",
String("~") + mqtt_topic_query_lockstate,
{ { "enabled_by_default", "false" },
{ "pl_prs", "1" }});
// Query Config
publishHassTopic("button",
"query_config",
uidString,
"_query_config_button",
"Query config",
name,
baseTopic,
"",
deviceType,
"",
"",
"diagnostic",
String("~") + mqtt_topic_query_config,
{ { "enabled_by_default", "false" },
{ "pl_prs", "1" }});
if(hasKeypad)
{
// Query Battery
publishHassTopic("button",
"query_keypad",
uidString,
"_query_keypad_button",
"Query keypad",
name,
baseTopic,
"",
deviceType,
"",
"",
"diagnostic",
String("~") + mqtt_topic_query_keypad,
{ { "enabled_by_default", "false" },
{ "pl_prs", "1" }});
}
else
{
removeHassTopic("button", "query_keypad", uidString);
}
// Query Lock State Command result
publishHassTopic("button",
"query_commandresult",
uidString,
"_query_commandresult_button",
"Query lock state command result",
name,
baseTopic,
"",
deviceType,
"",
"",
"diagnostic",
String("~") + mqtt_topic_query_lockstate_command_result,
{ { "enabled_by_default", "false" },
{ "pl_prs", "1" }});
} }
} }
@@ -1112,6 +1187,83 @@ void Network::publishHASSConfigAdditionalButtons(char *deviceType, const char *b
String("~") + mqtt_topic_lock_action, String("~") + mqtt_topic_lock_action,
{ { "enabled_by_default", "false" }, { { "enabled_by_default", "false" },
{ "pl_prs", "lockNgoUnlatch" }}); { "pl_prs", "lockNgoUnlatch" }});
// Query Battery
publishHassTopic("button",
"query_battery",
uidString,
"_query_battery_button",
"Query battery",
name,
baseTopic,
"",
deviceType,
"",
"",
"diagnostic",
String("~") + mqtt_topic_query_battery,
{ { "enabled_by_default", "false" },
{ "pl_prs", "1" }});
// Auto Lock
publishHassTopic("switch",
"auto_lock",
uidString,
"_auto_lock",
"Auto lock",
name,
baseTopic,
String("~") + mqtt_topic_config_auto_lock,
deviceType,
"",
"",
"config",
String("~") + mqtt_topic_config_auto_lock,
{ { "enabled_by_default", "false" },
{ "pl_on", "1" },
{ "pl_off", "0" },
{ "state_on", "1" },
{ "state_off", "0" }});
// Auto Unlock
publishHassTopic("switch",
"auto_unlock",
uidString,
"_auto_unlock",
"Auto unlock",
name,
baseTopic,
String("~") + mqtt_topic_config_auto_unlock,
deviceType,
"",
"",
"config",
String("~") + mqtt_topic_config_auto_unlock,
{ { "enabled_by_default", "false" },
{ "pl_on", "1" },
{ "pl_off", "0" },
{ "state_on", "1" },
{ "state_off", "0" }});
// Double lock
publishHassTopic("switch",
"double_lock",
uidString,
"_double_lock",
"Double lock",
name,
baseTopic,
String("~") + mqtt_topic_config_single_lock,
deviceType,
"",
"",
"config",
String("~") + mqtt_topic_config_single_lock,
{ { "enabled_by_default", "false" },
{ "pl_on", "0" },
{ "pl_off", "1" },
{ "state_on", "0" },
{ "state_off", "1" }});
} }
void Network::publishHASSConfigBatLevel(char *deviceType, const char *baseTopic, char *name, char *uidString) void Network::publishHASSConfigBatLevel(char *deviceType, const char *baseTopic, char *name, char *uidString)
@@ -1460,6 +1612,14 @@ void Network::removeHASSConfig(char* uidString)
removeHassTopic("sensor", "bluetooth_signal_strength", uidString); removeHassTopic("sensor", "bluetooth_signal_strength", uidString);
removeHassTopic("binary_sensor", "continuous_mode", uidString); removeHassTopic("binary_sensor", "continuous_mode", uidString);
removeHassTopic("switch", "continuous_mode", uidString); removeHassTopic("switch", "continuous_mode", uidString);
removeHassTopic("button", "query_lockstate", uidString);
removeHassTopic("button", "query_config", uidString);
removeHassTopic("button", "query_keypad", uidString);
removeHassTopic("button", "query_battery", uidString);
removeHassTopic("button", "query_commandresult", uidString);
removeHassTopic("switch", "auto_lock", uidString);
removeHassTopic("switch", "auto_unlock", uidString);
removeHassTopic("switch", "double_lock", uidString);
} }
} }

View File

@@ -191,7 +191,7 @@ In a browser navigate to the IP address assigned to the ESP32.
- configuration/buttonEnabled: enable or disable the button on the lock (0 = disabled; 1 = enabled). - configuration/buttonEnabled: enable or disable the button on the lock (0 = disabled; 1 = enabled).
- configuration/ledBrightness: Set the brightness of the LED on the lock (0=min; 5=max). - configuration/ledBrightness: Set the brightness of the LED on the lock (0=min; 5=max).
- configuration/ledEnabled: enable or disable the LED on the lock (0 = disabled; 1 = enabled). - configuration/ledEnabled: enable or disable the LED on the lock (0 = disabled; 1 = enabled).
- configuration/singleLock: configures wether to single- or double-lock the door (1 = single; 2 = double). - configuration/singleLock: configures wether to single- or double-lock the door (0 = double; 1 = single).
### Opener ### Opener