Skip to content

Commit

Permalink
only send device update info when it is extractable
Browse files Browse the repository at this point in the history
  • Loading branch information
john30 committed Dec 18, 2022
1 parent 240af58 commit 5d3c6f0
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 6 deletions.
4 changes: 2 additions & 2 deletions contrib/etc/ebusd/mqtt-hassio.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -355,14 +355,14 @@ def_global_updatecheck-payload = %global_prefix,
}


# optional secondary update check for the eBUS device (consuming the same topic though!)
# optional secondary update check for the enhanced eBUS device (consuming the same topic though!)
def_global_updatecheck_device-topic = %haprefix/update/%{TOPIC}_device/config
def_global_updatecheck_device-payload = {
"unique_id":"%{TOPIC}_device",
"device":{
"identifiers":"%{PREFIXN}_device",
"manufacturer":"ebusd.eu",
"name":"%prefixn device",
"name":"%prefixn eBUS device",
"via_device":"%PREFIXN",
"suggested_area":"%area"
},
Expand Down
4 changes: 2 additions & 2 deletions contrib/etc/ebusd/mqtt-integration.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,8 @@ def_global-payload = {
#def_global-retain = 0

# individual global running, version, signal, uptime, updatecheck, and scan config topic, payload, and retain setting.
# a secondary update check for the eBUS device (consuming the same updatecheck topic) can be set up additionally, which
# does not use the common global defaults.
# a secondary update check for the eBUS device (consuming the same updatecheck topic) can be set up, which will only be
# used if an enhanced eBUS device supporting extra info is present (does not make use of the common global defaults).
#def_global_running-...
#def_global_version-...
#def_global_signal-...
Expand Down
5 changes: 5 additions & 0 deletions src/ebusd/bushandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,11 @@ class BusHandler : public WaitThread {
}
}

/**
* @return the @a Device instance for accessing the bus.
*/
const Device* getDevice() const { return m_device; }

/**
* Clear stored values (e.g. scan results).
*/
Expand Down
6 changes: 4 additions & 2 deletions src/ebusd/mqtthandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -952,8 +952,10 @@ void MqttHandler::run() {
publishDefinition(m_replacers, "def_global_uptime-", uptimeTopic, "global", "uptime", "def_global-");
publishDefinition(m_replacers, "def_global_updatecheck-", m_globalTopic.get("", "updatecheck"), "global",
"updatecheck", "def_global-");
publishDefinition(m_replacers, "def_global_updatecheck_device-", m_globalTopic.get("", "updatecheck"), "global",
"updatecheck_device", "");
if (m_busHandler->getDevice()->supportsEnhancedInfos()) {
publishDefinition(m_replacers, "def_global_updatecheck_device-", m_globalTopic.get("", "updatecheck"),
"global", "updatecheck_device", "");
}
publishDefinition(m_replacers, "def_global_scan-", m_globalTopic.get("", "scan"), "global", "scan",
"def_global-");
}
Expand Down
5 changes: 5 additions & 0 deletions src/lib/ebus/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,11 @@ class Device {
*/
bool isEnhancedProto() const { return m_enhancedProto; }

/**
* @return whether the device supports the ebusd enhanced protocol and supports querying extra infos.
*/
bool supportsEnhancedInfos() const { return m_enhancedProto && m_extraFatures & 0x01; }

/**
* Set the @a DeviceListener.
* @param listener the @a DeviceListener.
Expand Down

0 comments on commit 5d3c6f0

Please sign in to comment.