mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-24 11:16:34 +00:00
HAss Discovery LWT
This commit is contained in:
parent
612e2be2db
commit
6a40222db9
@ -368,8 +368,10 @@
|
|||||||
#define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic
|
#define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic
|
||||||
|
|
||||||
// -- MQTT - Home Assistant Discovery -------------
|
// -- MQTT - Home Assistant Discovery -------------
|
||||||
#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+4.1k code, +6 bytes mem)
|
#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_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 ------------------------
|
// -- 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
|
// 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
|
||||||
|
@ -823,7 +823,7 @@ void HAssAnnounceDeviceInfoAndStatusSensor(void)
|
|||||||
MqttPublish(stopic, true);
|
MqttPublish(stopic, true);
|
||||||
if (!Settings.flag.hass_discovery) {
|
if (!Settings.flag.hass_discovery) {
|
||||||
masterlog_level = 0;
|
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);
|
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
|
* Interface
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
@ -932,6 +944,7 @@ void HAssAnyKey(void)
|
|||||||
bool Xdrv12(uint8_t function)
|
bool Xdrv12(uint8_t function)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
bool hasslwt = HOME_ASSISTANT_LWT_SUBSCRIBE;
|
||||||
if (Settings.flag.mqtt_enabled)
|
if (Settings.flag.mqtt_enabled)
|
||||||
{ // SetOption3 - Enable MQTT
|
{ // SetOption3 - Enable MQTT
|
||||||
switch (function)
|
switch (function)
|
||||||
@ -963,10 +976,22 @@ bool Xdrv12(uint8_t function)
|
|||||||
case FUNC_MQTT_INIT:
|
case FUNC_MQTT_INIT:
|
||||||
hass_mode = 0; // Discovery only if Settings.flag.hass_discovery is set
|
hass_mode = 0; // Discovery only if Settings.flag.hass_discovery is set
|
||||||
hass_init_step = 2; // Delayed discovery
|
hass_init_step = 2; // Delayed discovery
|
||||||
|
break;
|
||||||
// if (!Settings.flag.hass_discovery) {
|
// if (!Settings.flag.hass_discovery) {
|
||||||
// AddLog_P2(LOG_LEVEL_INFO, PSTR("MQT: homeassistant/49A3BC/Discovery = {\"dev\":{\"ids\":[\"49A3BC\"]},\"cmd_t\":\"cmnd/test1/\",\"Discovery\":0}"));
|
// 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;
|
break;
|
||||||
|
case FUNC_MQTT_DATA:
|
||||||
|
if (hasslwt) { result = HAssMqttLWT(); }
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user