Реверс-инжиниринг протокола и контрольной суммы (CRC) для Bonaire Comfort Control
Статейка эта, по сути, сводится к паре довольно полезных утилит, которые я обнаружил в процессе разбора протокола связи, имеющегося у меня пульта дистанционного управления. Одна (reveng) из них позволяет, путем хитромудрого перебора подобрать подходящий алгоритм контрольной суммы. Другая (pycrc) генерирует готовый С код, реализующий конкретный алгоритм, задаваемый пользователем.
Но, обо всем по порядку. Есть у меня дома система центрального испарительного кондиционирования воздуха, весьма популярная в Австралии. Управлению ею производится с помощью пульта по радиочастоте. Пульт один, часто теряется. Кроме того, как я упоминал в своих статьях про умный дом, я постепенно делаю «умными» все «не-умные» устройства, для централизованного управления всем и вся через смартфоны. Настала очередь испарительного кондиционера.
Итак, есть вот такой вот симпатичный пульт Bonaire Comfort Control, которому ни много ни мало 20 лет.
Вопрос в том, как наладить взаимодействие между кондиционером и openHab’ом, который управляет домом. Путей, в принципе, существует три. Первый, и самый простой, это припаяться к кнопкам имеющегося пульта, и «нажимать» их цифровым, так сказать, способом. Но тогда пульту каюк. Второй путь, это не курочить имеющийся пульт, а купить еще один, и припаяться к нему. Но покупка еще одного обошлась бы по меньшей мере в 300-400 баксов. Эти пульты давно не выпускают, они в большом дефиците, поэтому и продаются весьма недешево.
А вот третий вариант, а именно, попытаться разобраться в радио-протоколе, или на худой конец, просто воспроизводить копии радиотрансляций оригинального пульта, обещал не только решить проблемы первых двух подходов, но и порадовать интересным процессом реверсивного инжиниринга.
Для начала нужно было разобраться, на какой частоте происходит трансляция и насколько там все защищено. Понятное дело, что в случае использования всяких плавающих кодов, криптографий и т.п., расшифровка протокола потребовала бы серьезного оборудования, знаний и времени — ничего этого у меня нет и не предвидится. Но логика подсказывала, что использование всех этих технологий на пульте от кондиционера по меньшей мере не рационально. А по большей… Пожалуй, потянет на психический диагноз.