Инициализация MQTT
- Войдите на сайт для отправки комментариев
Ср, 20/05/2020 - 19:03
Общий вопрос - как забить адрес mqtt сервера из переменной? НЕ из константы.
Это работает:
const char *MQTT_SERVER ="192.168.21.4"; #define MQTT_PORT 1883 client.setServer(MQTT_SERVER, MQTT_PORT);
Это не работает:
temp14=(int)mqtt1; temp14=temp14+"."; temp14=temp14+(int)mqtt2; temp14=temp14+"."; temp14=temp14+(int)mqtt3; temp14=temp14+"."; temp14=temp14+(int)mqtt4; Serial.print("mqtt address="); Serial.println(temp14); unsigned char* buf = new unsigned char[32]; temp14.getBytes(buf, 32, 0); const char *MQTT_SERVER = (const char*)buf; client.setServer(MQTT_SERVER, MQTT_PORT);
Причём во всех остальных конструкциях с константами всё работает. А вот с IP MQTT сервера споткнулся. Оба варианта компилируются, естественно. Но во втором случае коннекта нет.
char
MQTT_SERVER[] =
"192.168.21.4"
;
char
MQTT_SERVER[] =
"192.168.21.4"
;
Не конектит.
Работает только вот так: (((
Ну хз, должон, судя по кишкам. И так должон.
Ну хз, должон, судя по кишкам. И так должон.
Да. Заработало.
Спасибо. Плюс вам в карму.
Общий вопрос - как забить адрес mqtt сервера из переменной? НЕ из константы.
Это работает:
Это не работает:
Причём во всех остальных конструкциях с константами всё работает. А вот с IP MQTT сервера споткнулся. Оба варианта компилируются, естественно. Но во втором случае коннекта нет.
Нафига столько извращений с getBytes и т.п.? Достаточно:
И.... всё.
Да. c_str() отличное решение. Благодарю.
Да. c_str() отличное решение. Благодарю.
Да, только надо учесть, что переменная, которая содержит адрес сервера - должна быть глобальная, потому что при выходе из области видимости переменная уничтожится и указатель, возвращаемый c_str(), будет указывать уже на мусор.
Да. c_str() отличное решение. Благодарю.
Да, только надо учесть, что переменная, которая содержит адрес сервера - должна быть глобальная, потому что при выходе из области видимости переменная уничтожится и указатель, возвращаемый c_str(), будет указывать уже на мусор.
Напоролся на эти грабли. Не могу что-то победить.
Слушаем эфир callback
Как сравнить строки?
strncasecmp_P сравнивает строки, которые лежат одна в ОЗУ, другая во флэш. У тебя обе строки лежат в ОЗУ, используй strncasecmp(), или поставь F("on")
Как сравнить строки?
В вашем примере - просто:
У класса String переопределён оператор ==, который унутре делает strcmp сам.
Как сравнить строки?
В вашем примере - просто:
У класса String переопределён оператор ==, который унутре делает strcmp сам.
Да. Работает. Спасибо.
Как сравнить строки?
В вашем примере - просто:
У класса String переопределён оператор ==, который унутре делает strcmp сам.
Компилируется, но сравнение нифига не видит. If не пускает.
topic - локальная переменная типа char (массив)
cmndTopic - глобальная переменная типа String.
Можно конечно циклы крутить, но может есть красивый способ их сравнить?
Была ошибка при сборке cmndTopic1. Вопрос закрыт.
Всем спасибо за участие.