• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь передача кода на ИК светодиод по MQTT

sega6549

New member
Добрый день, вторые сутки мучаюсь и не могу вкурить как правильно преобразовать данные полученные от брокера в формат понимаемый функцией irsend, имею код
Код:
void callback(char* topic, byte* payload, unsigned int length)
{
  Serial.println();
  Serial.print(topic);   // выводим в сериал порт название топика
  Serial.print(" => ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  } // выводим в сериал порт значение полученных данных

  String strTopic = String(topic); //получаем название топика
 
  if (strTopic == "ESPirsend/irr") //проверяем из нужного ли топика пришли данные
  {
    payload[length] = 0; //чистим от мусора, длинна строки
    String strPayload = String((char*)payload);  //считываем значение топика
    unsigned long val = strPayload.toInt(); //конвертируем
    Serial.println(strPayload); //выводит то что присылали
    Serial.println(val);   //выводит 0
    irsend.sendNEC(val, 32); //собственно тоже 0 на выходе
   
  }
}
помогите допилить, если надо то могу полный код выложить, но с ним проблем нет, только с функцией callback
 

Izzm

New member
А что вы отправляешь и в каком формате?
Пробовали переводить код из шестнадцатеричного формата в десятичный перед отправкой?
 

sega6549

New member
А что вы отправляешь и в каком формате?
Пробовали переводить код из шестнадцатеричного формата в десятичный перед отправкой?
пытаюсь отправить команды типа 0x20DFFF00, сканировал примером из ардуино, если прямо прописать irsend.sendNEC(0x20DFFF00, 32); то все отрабатывает а вот по mqtt не могу передать этот код
 

tretyakov_sa

Moderator
Команда форума
пытаюсь отправить команды типа 0x20DFFF00, сканировал примером из ардуино, если прямо прописать irsend.sendNEC(0x20DFFF00, 32); то все отрабатывает а вот по mqtt не могу передать этот код
Используйте код в десятичной системе и преобразования будут не нужны.
 
Сверху Снизу