MQTT subscribe to devices - Refactor MQTT subscriptions and API calls #173

This commit is contained in:
proddy
2021-11-03 22:12:21 +01:00
parent 3e0f6f55fb
commit 452921d198
2 changed files with 8 additions and 7 deletions

View File

@@ -985,10 +985,10 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, std::
auto flags = device_p->flags;
// empty reply to version, read a generic device from database
if (product_id == 0) {
if (product_id == 0) {
// check for known device IDs
if (device_id == 0x40) {
name = "rf room temperature sensor";
name = "rf room temperature sensor";
} else if (device_id == 0x17) {
name = "generic thermostat";
device_type = DeviceType::THERMOSTAT;
@@ -1006,7 +1006,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, std::
name = "modem";
device_type = DeviceType::CONNECT;
} else if (device_id == 0x0E) {
name = "converter";
name = "converter";
} else {
return false;
}
@@ -1049,9 +1049,10 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, std::
[device_type](const char * value, const int8_t id, JsonObject & output) { return command_entities(device_type, output, id); },
F_(entities_cmd));
// MQTT subscribe to the device top-level, e.g. "ems-esp/boiler" and subs
// MQTT subscribe to the device
Mqtt::subscribe(device_type, EMSdevice::device_type_2_device_name(device_type), nullptr); // e.g. "ems-esp/boiler"
std::string topic = EMSdevice::device_type_2_device_name(device_type) + "/#";
Mqtt::subscribe(device_type, topic, nullptr); // use empty function callback
Mqtt::subscribe(device_type, topic, nullptr); // e.g. "ems-esp/boiler/#"
// Print to LOG showing we've added a new device
LOG_INFO(F("Recognized new %s with device ID 0x%02X"), EMSdevice::device_type_2_device_name(device_type).c_str(), device_id);

View File

@@ -699,9 +699,9 @@ void System::commands_init() {
Command::add(EMSdevice::DeviceType::SYSTEM, F("test"), System::command_test, F("run tests"));
#endif
// MQTT subscribe "ems-esp/system/#"
// There is no need to subscribe only to 'ems-esp/system' as the commands send and pin require the fullpath for security
// MQTT subscribe "ems-esp/system/#" and "ems-esp/system"
Mqtt::subscribe(EMSdevice::DeviceType::SYSTEM, "system/#", nullptr); // use empty function callback
Mqtt::subscribe(EMSdevice::DeviceType::SYSTEM, "system", nullptr); // use empty function callback
}
// flashes the LED