[RF] Improve Home Assistant auto discoverability (#2057)

* add '-DvalueAsATopic=true' to RF based environments
add '-DvalueAsATopic=true' to RF based environments. Required to support changes in zgatewayRF.ino for Home Assistant discoverability

* Modify gatewayRF to improve Home Assistant auto discoverability
Pass "recieved" as the type argument and switchRF[0] as the subtype argument to announceDeviceTrigger() which will cause recieved codes to be picked up by home assistant as triggers, i.e. When setting up automations in Home Assistant, selecting a `device` trigger and an OMG device will allow the user to select a code picked up during the autoDiscover window as the trigger for the automation, for example "1394004" recieved. In order to support this, the `'-DvalueAsATopic=true'` argument must be added to all environments using the RF Library

Also change getUniqueId() call to remove leading '-' which will prevent MQTT topics having '--' in them

---------

Co-authored-by: James Carey <james.carey@uws.ac.uk>
This commit is contained in:
JamesandJames Carey authored and GitHub committed 2024-11-07 07:54:50 -06:00
1 parent ac1ad10240
commit f5bca0054e
2 files changed
+7 -2

No files matched your search

+3
View File
@@ -277,6 +277,7 @@ build_flags =
${com-esp32.build_flags}
'-DZgatewayRF="RF"'
'-DGateway_Name="OMG_ESP32_RF"'
'-DvalueAsATopic=true'
custom_description = RF gateway using RCSwitch library
[env:esp32dev-pilight]
@@ -1436,6 +1437,7 @@ build_flags =
${com-esp.build_flags}
'-DZgatewayRF="RF"'
'-DGateway_Name="OMG_ESP8266_RF"'
'-DvalueAsATopic=true'
board_build.flash_mode = dout
custom_description = The historic RF gateway using RCSwitch library
@@ -1453,6 +1455,7 @@ build_flags =
'-DZgatewayRF="RF"'
'-DZradioCC1101="CC1101"'
'-DGateway_Name="OMG_ESP8266_RF-CC1101"'
'-DvalueAsATopic=true'
board_build.flash_mode = dout
custom_description = RF gateway using RCSwitch library with CC1101
+4 -2
View File
@@ -95,12 +95,14 @@ void RFtoMQTTdiscovery(uint64_t MQTTvalue) {
String discovery_topic = String(subjectRFtoMQTT);
# endif
String theUniqueId = getUniqueId("-" + String(switchRF[0]), "-" + String(switchRF[1]));
String theUniqueId = getUniqueId(String(switchRF[0]), "-" + String(switchRF[1]));
String subType = String(switchRF[0]);
announceDeviceTrigger(
false,
(char*)discovery_topic.c_str(),
"", "",
"received",
(char*)subType.c_str(),
(char*)theUniqueId.c_str(),
"", "", "", "");
}