diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h index c87f925c..890173d5 100644 --- a/include/classes/IoTItem.h +++ b/include/classes/IoTItem.h @@ -51,6 +51,7 @@ class IoTItem { // хуки для системных событий virtual void onRegEvent(IoTItem* item); + virtual void onMqttRecive(char* topic, uint8_t* payload, size_t length); //методы для графиков virtual void publishValue(); diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index e86131ce..77a89e6f 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -117,6 +117,11 @@ void mqttSubscribe() { } void mqttCallback(char* topic, uint8_t* payload, size_t length) { + // распространяем принятое сообщение через хуки + for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { + (*it)->onMqttRecive(topic, payload, length); + } + String topicStr = String(topic); // SerialPrint("i", "=>MQTT", topicStr); String payloadStr; @@ -188,7 +193,7 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) { // loadScenario(); // SerialPrint("i", F("=>MQTT"), F("Scenario received")); // } - //} + //} } boolean publish(const String& topic, const String& data) { diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index 095e6c18..063ae3cb 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -175,6 +175,8 @@ void IoTItem::checkIntFromNet() { void IoTItem::onRegEvent(IoTItem* item) {} +void IoTItem::onMqttRecive(char* topic, uint8_t* payload, size_t length) {} + void IoTItem::publishValue() {} void IoTItem::clearValue() {}