HAss Discovery LWT

This commit is contained in:
Federico Leoni 2020-08-14 17:02:55 -03:00
parent 612e2be2db
commit 6a40222db9
2 changed files with 30 additions and 3 deletions

View File

@ -368,8 +368,10 @@
#define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic
// -- MQTT - Home Assistant Discovery -------------
#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+4.1k code, +6 bytes mem)
#define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix
#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+4.1k code, +6 bytes mem)
#define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix
#define HOME_ASSISTANT_LWT_TOPIC "homeassistant/status" // homeassistant Birth and Last Will Topic (default = homeassistant/status)
#define HOME_ASSISTANT_LWT_SUBSCRIBE true // Subscribe to Home Assistant Birth and Last Will Topic (default = true)
// -- MQTT - TLS - AWS IoT ------------------------
// Using TLS starting with version v6.5.0.16 compilation will only work using Core 2.4.2 and 2.5.2. No longer supported: 2.3.0

View File

@ -823,7 +823,7 @@ void HAssAnnounceDeviceInfoAndStatusSensor(void)
MqttPublish(stopic, true);
if (!Settings.flag.hass_discovery) {
masterlog_level = 0;
AddLog_P2(LOG_LEVEL_INFO, PSTR("LOG: Home Assistant Discovery disabled"));
AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_LOG "Home Assistant Discovery disabled"));
}
}
@ -925,6 +925,18 @@ void HAssAnyKey(void)
MqttPublish(stopic);
}
bool HAssMqttLWT(void)
{
if (strncasecmp_P(XdrvMailbox.topic, PSTR(HOME_ASSISTANT_LWT_TOPIC), strlen(HOME_ASSISTANT_LWT_TOPIC)) != 0) {
return false;
}
if ((strncasecmp_P(XdrvMailbox.data, PSTR("online"), strlen("online")) == 0) && (XdrvMailbox.data_len == 6)) {
MqttPublishTeleState();
return true;
}
}
/*********************************************************************************************\
* Interface
\*********************************************************************************************/
@ -932,6 +944,7 @@ void HAssAnyKey(void)
bool Xdrv12(uint8_t function)
{
bool result = false;
bool hasslwt = HOME_ASSISTANT_LWT_SUBSCRIBE;
if (Settings.flag.mqtt_enabled)
{ // SetOption3 - Enable MQTT
switch (function)
@ -963,10 +976,22 @@ bool Xdrv12(uint8_t function)
case FUNC_MQTT_INIT:
hass_mode = 0; // Discovery only if Settings.flag.hass_discovery is set
hass_init_step = 2; // Delayed discovery
break;
// if (!Settings.flag.hass_discovery) {
// AddLog_P2(LOG_LEVEL_INFO, PSTR("MQT: homeassistant/49A3BC/Discovery = {\"dev\":{\"ids\":[\"49A3BC\"]},\"cmd_t\":\"cmnd/test1/\",\"Discovery\":0}"));
// }
case FUNC_MQTT_SUBSCRIBE:
if (hasslwt) {
char htopic[TOPSZ];
snprintf_P(htopic, sizeof(htopic), PSTR(HOME_ASSISTANT_LWT_TOPIC));
MqttSubscribe(htopic);
AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MQT: subscribed to " HOME_ASSISTANT_LWT_TOPIC));
}
break;
case FUNC_MQTT_DATA:
if (hasslwt) { result = HAssMqttLWT(); }
break;
}
}
return result;