Покажусь немного наглым, но сначала хотел узнать - может у кого есть уже посылала, чтобы не изобретать велосипед дважды
Давай порассуждаем:
1. У каждого кондиционера свой протокол управления. Простой пример, DAIKIN разных моделей имеет разное количество пересылаемой информации. Это факт, потому что я сейчас этим занимаюсь. В моем это две посылки по 64 бита и одна в 152 бита. В других моделях - другое количество.
2. В твоем сообщении нет названия/модели кондиционера/сплит-системы.
Выводы (мои, разумеется): Для какой модели нужна посылалка не указано. Значит и ответ дать нереально.
PS И да, у меня нет посылалки, мой DAIKIN пока еще в доме только появился и я еще не занимался софтом. Пока что отлаживаю плагин для Saleae LLC, который будет это протокол распознавать по частям. И уже потом что то появится для управления. Не факт, что на Ардуине, скорее на арме, но это еще когда будет, даже я не знаю :)
Надесь мой ответ будет понят правильно, как попытка помочь, т.е. призыв сформулировать вопрос более корректно и понятно. А то в последнее время появилось множество гопоты, которая на любой ответ сразу даёт в зубы. Потому терять впустую время на пустые разговоры - нет никакого желания.
Для моих целей я не хотел расшифровывать протокол передачи, ограничившись 4 сигналами (вкл/выкл с установленными настройками и вкл/выкл турбо режима).
Но при этом не учел размер сигналов, так как не знал точно их длину.
Поэтому возник - вопрос как другие люди решают эту проблему?
Если обязательно расшифровать протокол передачи и писать свою программу для определенной модели кондиционера, тогда придется это делать.
Но я думал есть варианты по проще, например использование другой библиотеки для отправки raw сигнала, кодировка значений интервалов в двоичный код для разгрузки динамической памяти не расшифровывая сам протокол или что-то в этом роде.
Думаю не суть в модели кондиционера и его протоколе. Если есть рабочий вариант для другого кондиционера - будет легче его переделать, чем делать все с нуля.
А можно в двух словах схему таких манипуляций с разными кодировками? Есть raw коды считанные с пульта, их я так понял нужно перекодировать в бинарные и зашить в программу передатчика?
Продолжу в этой теме.
Если у кого то есть еще вопросы по считыванию длинных сигналов с кондиционеров - мне помогла эта страница ссылка
Но столкнулся я с такой проблемой - у меня 349 интервалов для одной команды.
Когда загружаю хотя бы 2 команды в скетч - при проверке предупреждает, что не хватает памяти:
/******************************************************************************************************************************* Pin 6 IR-led (ИК-светодиод. Пин можно выбрать в файле IRremoteInt.h между 5,6,9,11,46 для Arduino Mega) *******************************************************************************************************************************/ #include <IRremote.h> // Подключение библиотеки для работы с IR-светодиодом IRsend irsend; unsigned int ConditionerOff[349] = {500,17840,3000,9000,500,500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,1500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,3000,3000,9000,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,3000,3000,9000,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,500,500,1500,500,500,500,500,500,500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500 }; unsigned int ConditionerON[349] = {500,17932,3000,9000,500,500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500,3000,3000,9000,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,3000,3000,9000,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,500,500,1500,500,500,500,500,500,500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500 }; unsigned int ConditionerTurboOff[349] = {500,17212,3000,9000,500,500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500,3000,3000,9000,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,500,500,1500,500,500,500,500,500,500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500 }; unsigned int ConditionerTurboON[349] = {500,17228,3000,9000,500,500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500,3000,3000,9000,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,500,500,500,500,500,500,1500,500,500,500,1500,500,500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,1500,500,500,500,1500,500,1500,500,1500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,500,500,1500,500,500,500,500,500,500,500,1500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,1500,500,1500,500,1500,500,1500,500 }; void setup(){ }; void loop(){ irsend.sendRaw(ConditionerOff, 349, 38); delay (5000); irsend.sendRaw(ConditionerON, 349, 38); delay (5000); irsend.sendRaw(ConditionerTurboON, 349, 38); delay (5000); irsend.sendRaw(ConditionerTurboOff, 349, 38); delay (5000); };Написать свою посылалку и хранить не в raw, а в виде бинарных данных.
Покажусь немного наглым, но сначала хотел узнать - может у кого есть уже посылала, чтобы не изобретать велосипед дважды
Давай порассуждаем:
1. У каждого кондиционера свой протокол управления. Простой пример, DAIKIN разных моделей имеет разное количество пересылаемой информации. Это факт, потому что я сейчас этим занимаюсь. В моем это две посылки по 64 бита и одна в 152 бита. В других моделях - другое количество.
2. В твоем сообщении нет названия/модели кондиционера/сплит-системы.
Выводы (мои, разумеется): Для какой модели нужна посылалка не указано. Значит и ответ дать нереально.
PS И да, у меня нет посылалки, мой DAIKIN пока еще в доме только появился и я еще не занимался софтом. Пока что отлаживаю плагин для Saleae LLC, который будет это протокол распознавать по частям. И уже потом что то появится для управления. Не факт, что на Ардуине, скорее на арме, но это еще когда будет, даже я не знаю :)
Надесь мой ответ будет понят правильно, как попытка помочь, т.е. призыв сформулировать вопрос более корректно и понятно. А то в последнее время появилось множество гопоты, которая на любой ответ сразу даёт в зубы. Потому терять впустую время на пустые разговоры - нет никакого желания.
Спасибо за уделено внимание.
Кондиционер Samsung.
Для моих целей я не хотел расшифровывать протокол передачи, ограничившись 4 сигналами (вкл/выкл с установленными настройками и вкл/выкл турбо режима).
Но при этом не учел размер сигналов, так как не знал точно их длину.
Поэтому возник - вопрос как другие люди решают эту проблему?
Если обязательно расшифровать протокол передачи и писать свою программу для определенной модели кондиционера, тогда придется это делать.
Но я думал есть варианты по проще, например использование другой библиотеки для отправки raw сигнала, кодировка значений интервалов в двоичный код для разгрузки динамической памяти не расшифровывая сам протокол или что-то в этом роде.
Думаю не суть в модели кондиционера и его протоколе. Если есть рабочий вариант для другого кондиционера - будет легче его переделать, чем делать все с нуля.
А можно в двух словах схему таких манипуляций с разными кодировками? Есть raw коды считанные с пульта, их я так понял нужно перекодировать в бинарные и зашить в программу передатчика?
Mariev посмотри, может пригодится. http://pastebin.com/8A5SGAfB