- PVSM.RU - https://www.pvsm.ru -

Реверс-инжиниринг протокола обмена в оборудовании EOS

Реверс-инжиниринг протокола обмена в оборудовании EOS - 1

Сразу скажу, заголовок, возможно, несколько громковат. Мне реально потребовалось выдернуть из протокола всего одну команду для управления диммером. О том, как это было сделано и что получилось в итоге, читайте дальше в статье.

Итак, есть такая немецкая фирма EOS Premium SPA Technology [1]. Она производит большой спектр оборудования для саун. У них довольно интересные пульты управления, с сенсорными экранами, качественным силовым блоком. Стоят, правда, довольно дорого, но, вроде как, себя оправдывают.

Однако есть в их оборудовании один большой минус. Силовые блоки могут управлять многокиловаттными электропечами, но при этом имеют очень слабый канал управления освещением. Всего до 150 Вт! Освещением можно удобно управлять непосредственно с пульта, включать/выключать его, регулировать яркость. Но вот 150 Вт это ОЧЕНЬ мало! В продаже имеются дополнительные блоки для управления освещением, но ценник там очень негуманный.
В связи с этим появилась задача сделать свой диммер, который бы управлял нагрузкой с большей мощностью и, кроме того, низковольтной нагрузкой (светодиодные ленты на 12/24В или галогеновые лампы на 24В).

Галогенки хоть и потребляют больше и склонные к перегораниям, но на мой взгляд, освещение от них более приятное. Хотя это уже вопрос вкуса. В общем, вот такая задача созрела. Для чего именно нужно такое освещение, хорошо проиллюстрировано на этой картинке:

Реверс-инжиниринг протокола обмена в оборудовании EOS - 2

EOS выпускает много пультов управления, но наиболее распространённые сейчас Emotec и Emotouch III. С ними мы будем разбираться.

Реверс-инжиниринг протокола обмена в оборудовании EOS - 3

Реверс-инжиниринг протокола обмена в оборудовании EOS - 4

Надо сказать, что панель управления в оборудовании EOS соединяется с силовым блоком посредством обычного 4-контактного телефонного кабеля:

Реверс-инжиниринг протокола обмена в оборудовании EOS - 5

Беглый осмотр платы показал, что два провода отведены под питание 24В, а два других по линии интерфейса RS-485. В общем, стандартная реализация. Линии A и B находятся посередине:

Реверс-инжиниринг протокола обмена в оборудовании EOS - 6

Подключившись к линии при помощи преобразователя USB – RS-485 и настроив от балды скорость 9600 бит/сек, мы увидели бегущие байты, но назначение их, понятное дело, было неизвестно. Протокол обмена в свободном доступе найти не удалось, а сама фирма-производитель его предоставить отказалась, хотя соответствующий запрос им отправляли.
Пришлось заниматься декодированием самостоятельно :-)

Да, сразу отмечу один нюанс. Управление диммером работает только после перевода силового блока в рабочий режим. Это хорошо видно при подключённой лампе к выходу встроенного диммера. Она начинает светиться только после запуска сауны на нагрев.

Вначале стали перебирать скорости от 9600 до 115200 бит/сек из стандартного ряда.
И вот на скорости 38400 в глаза бросилось то, что команды разделяются двумя стандартными байтами 0x0A, 0x0D.

Что ж, это уже что-то. Сделаем следующий трюк. Поищем нужную нам команду по значению яркости. Вдруг оно передаётся в открытом виде.

Задаём на пульте управление значение 73 (0x49):

Реверс-инжиниринг протокола обмена в оборудовании EOS - 7

Далее снимаем лог и тупо ищем там этот байт:

Реверс-инжиниринг протокола обмена в оборудовании EOS - 8

Вуаля! Находим его, просматриваем вправо и влево до байтов 0x0A, 0x0D, пытаясь выделить нужный нам пакет. И в результате получаем вот такую структуру:

0x0E 0x04 0x04 0x49 0x49 0x00 0x00 0xD1 0x0A 0x0D

В ходе экспериментов было установлено, что 2 и 3 байты всегда равны 0x04, 4 и 5 задают яркость в процентах, 6 и 7 равны 0, 8 — меняется, что означает пока не понятно, 9 и 10 — 0x0A, 0xD.

Как показали эксперименты, первый байт является адресом. Он задаёт так называемый номер комнаты. Дело в том, что пульты EOS могут управлять несколькими силовыми блоками одновременно. Для каждого задаётся свой адрес, который и передаётся в этом байте.

Адреса следующие:
Для пультов управления печью:
01 — первая комната
21 — вторая комната
41 — третья комната
61 — четвертая комната
81 — пятая комната
A1 — шестая комната
C1 — седьмая комната
E1 — восьмая комната

Для пультов управления парогенератором:
0E — первая комната
2E — вторая комната
4E — третья комната
6E — четвертая комната
8E — пятая комната
AE — шестая комната
CE — седьмая комната
EE — восьмая комната

Собственно, это и всё декодирование.

Для проверки, так сказать в «динамике» мы быстренько накидали программку на Delphi для вывода значения яркости и покрутили ползунок. Всё отрабатывает чётко.

После этого разработали на Си несложную программу по декодированию этих пакетов и запустили всё в «железе». Само устройство довольно простое. Там реализован обычный ШИМ на силовом ключе, но если интересно, могу потом отдельную статью про это написать.

Автор: FDA847

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/eos/319264

Ссылки в тексте:

[1] EOS Premium SPA Technology: https://www.eos-sauna.com/en/home

[2] Источник: https://habr.com/ru/post/453234/?utm_campaign=453234