diff options
Diffstat (limited to 'platformio/common/libs/mqtt/homekit/mqtt/mqtt.cpp')
-rw-r--r-- | platformio/common/libs/mqtt/homekit/mqtt/mqtt.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/platformio/common/libs/mqtt/homekit/mqtt/mqtt.cpp b/platformio/common/libs/mqtt/homekit/mqtt/mqtt.cpp index 9d96f9f..cb2cea7 100644 --- a/platformio/common/libs/mqtt/homekit/mqtt/mqtt.cpp +++ b/platformio/common/libs/mqtt/homekit/mqtt/mqtt.cpp @@ -25,7 +25,7 @@ using namespace espMqttClientTypes; Mqtt::Mqtt() { auto cfg = config::read(); - homeId = String(cfg.flags.node_configured ? cfg.node_id : wifi::NODE_ID); + nodeId = String(cfg.flags.node_configured ? cfg.node_id : wifi::NODE_ID); randomSeed(micros()); @@ -79,7 +79,7 @@ Mqtt::Mqtt() { PRINTF("mqtt: message received, topic=%s, qos=%d, dup=%d, retain=%d, len=%ul, index=%ul, total=%ul\n", topic, properties.qos, (int)properties.dup, (int)properties.retain, len, index, total); - const char *ptr = topic + homeId.length() + 10; + const char *ptr = topic + nodeId.length() + 10; String relevantTopic(ptr); auto it = moduleSubscriptions.find(relevantTopic); @@ -130,22 +130,24 @@ void Mqtt::disconnect() { void Mqtt::loop() { client.loop(); for (auto& module: modules) { - module->tick(*this); + if (module->getTickInterval() != 0) + module->tick(*this); } } uint16_t Mqtt::publish(const String& topic, uint8_t* payload, size_t length) { - String fullTopic = "hk/" + homeId + "/temphum/" + topic; + String fullTopic = "hk/" + nodeId + "/" + topic; return client.publish(fullTopic.c_str(), 1, false, payload, length); } uint16_t Mqtt::subscribe(const String& topic, uint8_t qos) { - String fullTopic = "hk/" + homeId + "/temphum/" + topic; + String fullTopic = "hk/" + nodeId + "/" + topic; PRINTF("mqtt: subscribing to %s...\n", fullTopic.c_str()); uint16_t packetId = client.subscribe(fullTopic.c_str(), qos); if (!packetId) PRINTF("error: failed to subscribe to %s\n", fullTopic.c_str()); + return packetId; } @@ -157,8 +159,9 @@ void Mqtt::addModule(MqttModule* module) { } } -void Mqtt::subscribeModule(String& topic, MqttModule* module) { +void Mqtt::subscribeModule(String& topic, MqttModule* module, uint8_t qos) { moduleSubscriptions[topic] = module; + subscribe(topic, qos); } } |