From ae389b770e9687f1946ab99c25659c98090dc97d Mon Sep 17 00:00:00 2001 From: biver Date: Fri, 25 Nov 2022 13:45:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=85=D1=83=D0=BA=20=D0=B4=D0=BB=D1=8F=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BD=D0=B0=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=B7=20Mqtt=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D0=BB=D1=8E=D0=B1=D0=BE=D0=B3=D0=BE=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BB=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/classes/IoTItem.h | 1 + src/MqttClient.cpp | 7 ++++++- src/classes/IoTItem.cpp | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) 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() {}