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 телевизора. И если равно, то переключаем одно из реле процессора.