tretyakovsa / Sonoff_WiFi_switch

Прошивка для ESP8266 (Умный дом)-Firmware for ESP8266 (Smart Home)
GNU General Public License v3.0
178 stars 40 forks source link

IR передатчик SendRaw. #164

Open multiminik opened 5 years ago

multiminik commented 5 years ago

Есть проблема с пультом от ресивера Yamaha. Протокол передачи Nec. С частью кнопок проблем нет, т.к. их коды не выходят за пределы максимально возможного целого числа(0х7fffffff) для 32 битной переменной. Но есть кнопки с кодами, которые преодолевают этот предел в 2 раза (например: 0хFE80DA24). При отправке таких кодов с esp8266 всегда на выходе получим код - 0x7fffffff. Отсюда вопрос? Есть ли в вашей прошивке возможность использовать SendRaw() из библиотеки irremote, не прибегая к ковыряниям в исходниках? Иначе проще будет подправить SendNec и перекомпмлировать прошивку.

multiminik commented 5 years ago

Отвечу сам себе. Функция SendRaw() не задействована в вашей прошивке. Пришлось всё же заглянуть в исходный код. Что касается предела в "0x7fffffff", - оказалось библиотека irremote не причём. Проблема была в 21 строчке скетча IR.ino. Необходимо в присвоении переменной "code" сменить функцию "strtol()" (string to long) на "strtoul()" (string to unsigned long). Эта замена позволит работать только с беззнаковыми целыми числами и расширит диапазон до заветных "0xffffffff".

tretyakovsa commented 5 years ago

@multiminik Огромное спасибо за сообщение.