/ESP8266_IR_to_TCP

ESP8266 принимает ИК сигналы и посылает HEX в TCP сокет

Primary LanguageC++

ESP8266_IR_to_TCP

ESP8266 принимает ИК сигналы и посылает HEX в TCP сокет

Краткое описание функционала:

Настраиваем подключение ESP к WiFi, поднимаем TCP сокет, принимаем ИК команду и посылаем её в TCP сокет.

Подробнее:

Подключаем наверно любой ИК приёмник, похожий как на фото.

При помощи библиотеки IRrecv, принимаем ИК команду с любого пульта и получаем в переменную results.value значение в uint64. И по идее её надо отправить в TCP сокет при помощи команды client.write(value), но эта функция не кушает данные типа long long integer.

Пробовал по всякому, но наиболее приемлемый способ оказался такой:

    Получаем ИК команду E0E020DF (11100000 11100000 00100000 11011111) - 4 байта.

    Забираем каждые пол байта каждый в свою переменную: 

        1110 0000 1110 0000 0010 0000 1101 1111

        E      0        E      0      2        0       D      F 

    Создаём функцию, где сравниваем полученные пол байта с цифрами 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. И если равно, то возвращаем результат в char.

    Например: если полученное = 1, то вернуть '1'; если полученное = 13, то вернуть '13'.

    Важно писать в одинарных кавычках, что означает "вернуть значение в char, а не в string".

    Складываем все сконвертированные char'ы в переменную hex3.

    И шлём в TCP сокет client.write(hex3).

Дальше я в Крестрон всё это пробрасывал.

В Crestron настраиваем TCP клиент на IP адрес ESP, на порт, указанный в скетче.

Сравниваем полученную команду с той которая нам нужна. Например E0E020DF - кнопка "1" пульта от Samsung телевизора. И если равно, то переключаем одно из реле процессора.