MQTT обработка топиков
- Войдите на сайт для отправки комментариев
Сб, 13/04/2019 - 12:45
Приветствую. Есть две задекларированных переменных float a и float b. Используются в проекте в качестве set point.
В сетапе:
void setup() { Serial.begin(115200); setup_wifi(); //Init MQTT Client client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); }
Есть рабочий код функции callback:
void callback(char* topic, byte* payload, unsigned int length) { if(strcmp(topic, "a") != 0) return; String str_a = String(); for (int i = 0; i < length; i++) { str_a += (char)payload[i]; } Serial.println("a=" + str_a); a = str_a.toFloat(); }
По отдельности топики а или b в коде работают, но не могу подружить a и b для совместной работы, что бы в итог был такой:
Serial.println("a=" + str_a); a = str_a.toFloat(); Serial.println("b=" + str_b); b = str_b.toFloat();
Ну покажите, как вы их "дружите" - выкладывайте полный код. А мы будем вам пальцами с строчки тыкать, ну в которых вы ошиблись. Или вы как себе помощь представляете ?
sadman41, спасибо!
Добился положительного результата. Добавил условие, т.к. с брокера приходит любой топик, вне зависимости изменил ли я "a" или "b". В моём случае у "a" диапазон 0-30, у "b" - 35-65.
В предыдущем коде топики "a" и "b" работают, но завися друг от друга по условию. Кому интересно привожу пример как избавиться от этого.
Ещё раз спасибо откликнувшимся и давшим удочку вместо рыбы :-)
(strTopic == "a") -> (0 == strcmp(strTopic, "a"))
strPayload.toFloat() -> atof((char*)payload)