Make opener lock/unlock action configurable

This commit is contained in:
iranl
2024-02-09 20:01:32 +01:00
parent ceacdcafb3
commit cc252f6e8b
3 changed files with 19 additions and 3 deletions

View File

@@ -740,7 +740,16 @@ void NukiOpenerWrapper::setupHASS()
String baseTopic = _preferences->getString(preference_mqtt_opener_path); String baseTopic = _preferences->getString(preference_mqtt_opener_path);
char uidString[20]; char uidString[20];
itoa(_nukiConfig.nukiId, uidString, 16); itoa(_nukiConfig.nukiId, uidString, 16);
if (_preferences->getBool(preference_opener_continuous_mode))
{
_network->publishHASSConfig("Opener",baseTopic.c_str(),(char*)_nukiConfig.name,uidString, "deactivateCM","activateCM","electricStrikeActuation");
}
else
{
_network->publishHASSConfig("Opener",baseTopic.c_str(),(char*)_nukiConfig.name,uidString, "deactivateRTO","activateRTO","electricStrikeActuation"); _network->publishHASSConfig("Opener",baseTopic.c_str(),(char*)_nukiConfig.name,uidString, "deactivateRTO","activateRTO","electricStrikeActuation");
}
_hassSetupCompleted = true; _hassSetupCompleted = true;
Log->println("HASS setup for opener completed."); Log->println("HASS setup for opener completed.");

View File

@@ -13,6 +13,7 @@
#define preference_lock_enabled "lockena" #define preference_lock_enabled "lockena"
#define preference_mqtt_lock_path "mqttpath" #define preference_mqtt_lock_path "mqttpath"
#define preference_opener_enabled "openerena" #define preference_opener_enabled "openerena"
#define preference_opener_continuous_mode "openercont"
#define preference_mqtt_opener_path "mqttoppath" #define preference_mqtt_opener_path "mqttoppath"
#define preference_lock_max_keypad_code_count "maxkpad" #define preference_lock_max_keypad_code_count "maxkpad"
#define preference_opener_max_keypad_code_count "opmaxkpad" #define preference_opener_max_keypad_code_count "opmaxkpad"
@@ -63,7 +64,7 @@ private:
{ {
preference_started_before, preference_device_id_lock, preference_device_id_opener, preference_mqtt_broker, preference_mqtt_broker_port, preference_started_before, preference_device_id_lock, preference_device_id_opener, preference_mqtt_broker, preference_mqtt_broker_port,
preference_mqtt_user, preference_mqtt_password, preference_mqtt_log_enabled, preference_lock_enabled, preference_mqtt_user, preference_mqtt_password, preference_mqtt_log_enabled, preference_lock_enabled,
preference_mqtt_lock_path, preference_opener_enabled, preference_mqtt_opener_path, preference_mqtt_lock_path, preference_opener_enabled, preference_opener_continuous_mode, preference_mqtt_opener_path,
preference_lock_max_keypad_code_count, preference_opener_max_keypad_code_count, preference_mqtt_ca, preference_lock_max_keypad_code_count, preference_opener_max_keypad_code_count, preference_mqtt_ca,
preference_mqtt_crt, preference_mqtt_key, preference_mqtt_hass_discovery, preference_mqtt_hass_cu_url, preference_mqtt_crt, preference_mqtt_key, preference_mqtt_hass_discovery, preference_mqtt_hass_cu_url,
preference_ip_dhcp_enabled, preference_ip_address, preference_ip_subnet, preference_ip_gateway, preference_ip_dns_server, preference_ip_dhcp_enabled, preference_ip_address, preference_ip_subnet, preference_ip_gateway, preference_ip_dns_server,
@@ -85,7 +86,7 @@ private:
}; };
std::vector<char*> _boolPrefs = std::vector<char*> _boolPrefs =
{ {
preference_started_before, preference_mqtt_log_enabled, preference_lock_enabled, preference_opener_enabled, preference_started_before, preference_mqtt_log_enabled, preference_lock_enabled, preference_opener_enabled, preference_opener_continuous_mode,
preference_restart_on_disconnect, preference_keypad_control_enabled, preference_register_as_app, preference_ip_dhcp_enabled, preference_restart_on_disconnect, preference_keypad_control_enabled, preference_register_as_app, preference_ip_dhcp_enabled,
preference_publish_authdata, preference_has_mac_saved, preference_publish_debug_info, preference_network_wifi_fallback_disabled preference_publish_authdata, preference_has_mac_saved, preference_publish_debug_info, preference_network_wifi_fallback_disabled
}; };

View File

@@ -352,6 +352,11 @@ bool WebCfgServer::processArgs(String& message)
configChanged = true; configChanged = true;
} }
} }
else if(key == "OPENERCONT")
{
_preferences->putBool(preference_opener_continuous_mode, (value == "1"));
configChanged = true;
}
else if(key == "HASSCUURL") else if(key == "HASSCUURL")
{ {
_preferences->putString(preference_mqtt_hass_cu_url, value); _preferences->putString(preference_mqtt_hass_cu_url, value);
@@ -770,6 +775,7 @@ void WebCfgServer::buildMqttConfigHtml(String &response)
response.concat("<table>"); response.concat("<table>");
printInputField(response, "HASSDISCOVERY", "Home Assistant discovery topic (empty to disable; usually homeassistant)", _preferences->getString(preference_mqtt_hass_discovery).c_str(), 30); printInputField(response, "HASSDISCOVERY", "Home Assistant discovery topic (empty to disable; usually homeassistant)", _preferences->getString(preference_mqtt_hass_discovery).c_str(), 30);
printInputField(response, "HASSCUURL", "Home Assistant device configuration URL (empty to use http://LOCALIP; fill when using a reverse proxy for example)", _preferences->getString(preference_mqtt_hass_cu_url).c_str(), 261); printInputField(response, "HASSCUURL", "Home Assistant device configuration URL (empty to use http://LOCALIP; fill when using a reverse proxy for example)", _preferences->getString(preference_mqtt_hass_cu_url).c_str(), 261);
if(_nukiOpener != nullptr) printCheckBox(response, "OPENERCONT", "Set Nuki Opener Lock/Unlock action in Home Assistant to Continuous mode", _preferences->getBool(preference_opener_continuous_mode));
printTextarea(response, "MQTTCA", "MQTT SSL CA Certificate (*, optional)", _preferences->getString(preference_mqtt_ca).c_str(), TLS_CA_MAX_SIZE, _network->encryptionSupported(), true); printTextarea(response, "MQTTCA", "MQTT SSL CA Certificate (*, optional)", _preferences->getString(preference_mqtt_ca).c_str(), TLS_CA_MAX_SIZE, _network->encryptionSupported(), true);
printTextarea(response, "MQTTCRT", "MQTT SSL Client Certificate (*, optional)", _preferences->getString(preference_mqtt_crt).c_str(), TLS_CERT_MAX_SIZE, _network->encryptionSupported(), true); printTextarea(response, "MQTTCRT", "MQTT SSL Client Certificate (*, optional)", _preferences->getString(preference_mqtt_crt).c_str(), TLS_CERT_MAX_SIZE, _network->encryptionSupported(), true);
printTextarea(response, "MQTTKEY", "MQTT SSL Client Key (*, optional)", _preferences->getString(preference_mqtt_key).c_str(), TLS_KEY_MAX_SIZE, _network->encryptionSupported(), true); printTextarea(response, "MQTTKEY", "MQTT SSL Client Key (*, optional)", _preferences->getString(preference_mqtt_key).c_str(), TLS_KEY_MAX_SIZE, _network->encryptionSupported(), true);