Mdv

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

Добрый день.
Это?
https://ral.ucar.edu/projects/IHL/RalHtml/protocols/mdvp/mdvx/index.html
или есть какое-то описание протокола?

Нет, наверное это не он. Пробовал звонить в сервис, они сказали что это закрытый протокол. Поэтому получается что ничего не получится.

Любой протокол можно изучить и отреверсить, достаточно как правило иметь устройство и официальный софт. Тут вопрос целесообразности. Многим ли нужно использовать его, оъем рынка.

По поводу целесообразности. Для этих факойлов и кондиционеров есть шлюз. Но он стоит от 180 тыс рублей. Если принимать во внимание что сам фанкойл стоит в 2, ато и в 3 раза дешевле чем сам шлюз, очень многие отказываются от идеи подключения к BMS данные устройства. Если на вашем контроллере будет этот протокол, и немного пошуметь на форумах, то ваш контроллер будут выбирать как шлюз более дешовый чем оригинал, но при этом он еще и гораздо функционален.
По поводу рынка - то в России этот бренд один из основных, плюс много других производителей использует электронику MDV, например - Lessar, Сhigo, Midea. Я понимаю что масово покупать WirenBoard не побегут, но этот протокол добавит желающих его купить для своих проектов.
Если вы возьметесь за это дело, то я могу сделать вам доступ к нашему оборудованию. У нас установлен один такой шлюз. Можно подключиться к моему ноуту удаленно, и собрать необходимую инфу.

Доброго времени суток. Я 2 года назад находил описание этого протокола, но я его потерял. Но вот сегодня я снова нашел инфу.
Вот ссылка - xye/xye: Reverse engineered information of protocol spoken on the XYE bus found on many AC indoor components of split VRF systems. Primary vendor seems to be Midea, but others vendors seem to sell rebanded versions (e.g. FrigoLine, Mundo Clima, Daikin, ...) - xye - Codeberg.org
X Y E - это так названы контакты на сетевых платах кондиционеров и фанкойлов. X и Y - это шина RS 485, а E - это естественно земля.
Сможете ли добавить этот протокол? Я его протестирую на своих устройствах. Midea является владельцем MDV, MDV в основном специализируется на поставках плат управления (мозгов). Такие бренды как MDV Midea и Lessar 100% работают по этому протоколу. Lessar - это дочерний бренд Midea, собственно выпускает ту же продукцию, только с другим именем. Есть еще например бренд NED, Это отверточная сборка в РФ. Они скорее всего тоже по такому протоколу работают.
Carrier вероятно тоже подойдет

1 лайк

Спасибо! У нас было в планах плотнее заняться кондиционерными протоколами, нужно только понять, насколько этот XYE распространён.

Кстати, шлюз в него есть у Intensis, стоят они обычно в районе 300-500 евро.

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

И еще один вопрос, возможно попросить вас сделать этот шаблон за деньги? У нас можно получить все данные, есть рабочая система из 30 фанкойлов которые подключены через шлюз к диспетчеризации. Сколько это может стоить?

Не шаблон, целый протокол. Завтра, думаю, обсудим.

Добрый день. Хотелось бы уточнить по этой теме, будет ли продвижение. Спасибо!

Здравствуйте! Записали данный запрос в список предложений к реализации. Будет ли данное предложение реализовано и в какие сроки пока сказать, к сожалению, не могу.

1 лайк

Добрый день, реализовал данный протокол сам. Отправляю и получаю данные с помощью Node-red. По той ссылке которой я раньше отправлял, данные не совсем точные.
Шина использует RS-485 в качестве физического уровня, X - это A, Y - B, а E - GND. С 4800 бод, 8n1 (8 бит, без четности, 1 стоп-бит)., это без изменений.
временной интервал 130 мс (30 мс для отправки запроса, затем тайм-аут в 100 мс, ожидающий ответа от устройства).
Запрос -
00 - 0xAA преамбула
01 - команда - 0xC0 - запрос, 0xC3 - Установка, 0xCC - блокировка, 0xCD - разблокировка
02 - 0x00 … 0x3F - Адрес устройства, широковещательная передача 0xFF
03 - 0x00 … 0x3F - идентификатор главного устройства (Я установил 0x00).
04 - Всегда - 0x80
05 - 0x00 … 0x3F - идентификатор главного устройства (Я установил 0x00).
Полезная нагрузка
06 - режим работы и ON Off. bit6-bit0 - Каждый бит взаимоисключающий.
bit0 - режим вентилятора, 1 вкл, 0 выкл.
bit1 - режим осушения, 1 вкл, 0 выкл.
bit2 - режим обогрева, 1 вкл, 0 выкл.
bit3 - режим охлаждения, 1 вкл, 0 выкл.
bit4 - режим авто, 1 вкл, 0 выкл.
bit5 - Блокировка режимов
bit6 - Резерв.
bit7 - 1 Включено, 0 выключено.
07 - скорость вентилятора - bit7-bit0 - Каждый бит взаимоисключающий.
bit0 - Высокая скорость, 1 вкл, 0 выкл.
bit1 - Средняя скорость, 1 вкл, 0 выкл.
bit2 - Низкая скорость, 1 вкл, 0 выкл.
bit3 - bit6 - резерв
bit7 - режим авто вентилятора, 1 вкл, 0 выкл.
08 - уставка температуры - 16 - 32 градуса
09 - дополнительные функции -
bit15 - bit4 Резерв
bit0 - режим эко, 1 вкл, 0 выкл.
bit1 - Дополнительный электрический нагреватель, 1 вкл, 0 выкл.
bit2 - Жалюзи, 1 вкл, 0 выкл.
bit3 - Вентилятор, 1 вкл, 0 выкл.
10 - Включение таймера - тут я не разбирался. У меня всегда 0x00.
11 - Выключение таймера - тут я тоже не разбирался. У меня всегда 0x00.
12 - ???
13 - проверка команды (255 - код команды)
14 - CRC - 255 - сумма (данные) % 256
15 - пролог - 0x55
При запросе данных 06 - 12 нули.

Ответ -
00 - 0xAA преамбула
01 - код ответа - 0xC0 - запрос, 0xC3 - Установка, 0xCC - блокировка, 0xCD - разблокировка
02 - Всегда - 0x80
03 - 0x00 … 0x3F - идентификатор главного устройства.
04 - 0 … 0x3f - идентификатор устройства
05 - 0x00 … 0x3F - идентификатор главного устройства
06 - ???
07 - возможности 0x80 - повышенная температура (16 … 32 ° C), 0x10 имеет КОЛЕБАНИЕ
08 - Рабочий режим -
bit0 - режим вентилятора, 1 вкл, 0 выкл.
bit1 - режим осушения, 1 вкл, 0 выкл.
bit2 - режим обогрева, 1 вкл, 0 выкл.
bit3 - режим охлаждения, 1 вкл, 0 выкл.
bit4 - режим авто, 1 вкл, 0 выкл.
bit5 - Блокировка режимов
bit6 - Резерв.
bit7 - 1 Включено, 0 выключено.
09 - - скорость вентилятора
bit0 - Высокая скорость, 1 вкл, 0 выкл.
bit1 - Средняя скорость, 1 вкл, 0 выкл.
bit2 - Низкая скорость, 1 вкл, 0 выкл.
bit3 - bit6 - резерв
bit7 - режим авто вентилятора, 1 вкл, 0 выкл.
10 - Уставка температуры - 16 32 градуса
11 - Температура воздуха (T1)
12 - Температура испарителя (T2A)
13 - температура средней точки испарителя (Т2В)
14 - Температура конденсаторов (Т3)
15 - энергопотребление - 0-99 Ампер
16 - ???
17 - Запуск таймера
18 - Остановка таймера
19 - ???
20 - дополнительные функции -
bit15 - bit4 Резерв
bit0 - режим эко, 1 вкл, 0 выкл.
bit1 - Дополнительный электрический нагреватель, 1 вкл, 0 выкл.
bit2 - Жалюзи, 1 вкл, 0 выкл.
bit3 - Вентилятор, 1 вкл, 0 выкл.
21 - Статус
bit0 - Жалюзи, 1 вкл, 0 выкл.
bit1 - Увлажнение, 1 вкл, 0 выкл.
bit2 - Помпа, 1 вкл, 0 выкл.
bit3 - Резерв, 1 вкл, 0 выкл.
bit4 - Заблокирован режим охлаждения, 1 да, 0 нет.
bit5 - Заблокирован режим обогрева, 1 да, 0 нет.
bit6 - Заблокирован центральный пульт, 1 да, 0 нет.
bit7 - Заблокирован локальный пульт, 1 да, 0 нет.
22 - Ошибки
bit0 - E0 - Перефазировка или отсутствие фазы
bit1 - E1 Ошибка связи
bit2 - Е2 Ошибка датчика Т1
bit3 - Е3 Ошибка датчика Т2А
bit4 - Е4 Ошибка датчика Т2В
bit5 - Е5 Ошибка датчика температуры нагнетателя компрессора Т3/Т4
bit6 - Е6 Ошибка несущей частоты (ошибка связи)
bit7 - Е7 Ошибка EEPROM
23 - Ошибки
bit0 - E8 - Ошибка вентилятора, нет определения скорости вентилятора
bit1 - E9 Ошибка связи между платой управления и платой индикации
bit2 - ЕA Перегрузка компрессора
bit3 - ЕB Защита модуля инвертора
bit4 - ЕC Ошибка очистки
bit5 - ЕD Защита наружного блока
bit6 - ЕE Защита от протечки конденсатора
bit7 - ЕF Прочие ошибки
24 - Блокировки -
bit0 - P0 - Защита по температуре испарителя
bit1 - P1 Защита по подачи холодного воздуха
bit2 - P2 Защита по высокой температуре конденсатора
bit3 - P3 Защита по перегреву компрессора
bit4 - P4 Защита по температуре нагревателя
bit5 - P5 Зашита по высокому давлению
bit6 - P6 Зашита по низкому давлению
bit7 - P7 Защита по напряжению питания
25 - Блокировки -
bit0 - P8 - Защита по перегрузке компрессора (по току)
bit7 - PF Прочие защиты
26 - Ошибки связи -
bit0 - 0# Ошибка связи между основной платой и платой сетевого модуля
bit1 - 1# Ошибка связи между центральным контроллером и сетевым модулем
bit2 - 2# Ошибка связи между центральным пультом и функциональным модулем
bit3 - 3# Ошибка связи между центральным пультом и шлюзом
bit4 - 4# Достигнут предел команд
bit5 - 5# Таймаут команды не выполнено
bit6 - 6# Адрес не доступен
bit7 - 7# - Неизвестная, не подтверждаемая команда.
27 - ???
28 - ???
29 - ???
30 - CRC - 255 - сумма (данные) % 256
31 - пролог - 0x55

1 лайк

Можете подсказать в чем отличия? У меня канальный кондиционер “Kentatsu KSKS70HFAN1”, есть выход на данный протокол. Пробовал на питоне сделать чтение статуса, работает. С включением включается всегда режим охлаждения почему-то, хотя отправляю 0x80 (auto? по ссылке на анализ протокола).

Планируете добавить в wb-mqtt-serial?

Пока - нет, решение не принято еще. Сейчас все заняты переходом на bullseye.

Может подскажете какое устройство взять за основу для написания кода, сам хочу попробовать как время будет.
Смотрю тут: wb-mqtt-serial/src/devices at master · wirenboard/wb-mqtt-serial · GitHub
И может быть есть “мануал” как собрать свою версию?

Пожалуй можно шторы. Но сейчас я бы этим не занимался совсем. В процессе рефакторинг, который сделает из wb-mqtt-serial RPC сервер. То есть диспетчер шины, к которому модули “протоколов” будут обращаться.

То есть, читаем тут: GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver
И пишем свой обработчик протокола на чем угодно. Например на штатном JS в wb-rules.
Публикуем через publish, ответы читаем через trackmqtt.

Вот чуть выше написал как надежнее и точно будет работать. Для того чтобы хорошо написать в сам serial - нужно весьма в него погрузиться.

Почитал как сделано на примере штор, в принципе понятно все.

Это уже работает или только в планах? Хотел бы через MQTT попробовать, чтобы не переделывать в последствии.

В testing.

Понял, это надо все же на “bullseye” переползать, вроде docker починили, буду пробовать еще раз.