Нужна помощь по приводу NICE RD400

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Возможно, соответствие есть, после преобразования того, что я вижу по псевдоUart в правильный вид. Этот документ я листал пару лет назад и тоже мечтал о расшифровке протокола. Даже железяку попробовал тогда заказать TTPCI у Найс, но мне ответили что ни разу не поставляли её в Россию, ибо дорого и непонятно зачем нужна обычным людям.
 

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
IT4WIFI - оно использует STM32F415RGT6, a тaм 2 × CAN interfaces (2.0B Active)
 

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
IBT4ZWAVE было бы неплохо увидеть схему
 

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
Возможно, соответствие есть, после преобразования того, что я вижу по псевдоUart в правильный вид. Этот документ я листал пару лет назад и тоже мечтал о расшифровке протокола. Даже железяку попробовал тогда заказать TTPCI у Найс, но мне ответили что ни разу не поставляли её в Россию, ибо дорого и непонятно зачем нужна обычным людям.
IBT4ZWAVE может у тебя есть? :)
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Его в России вроде нет пока. Да и незачем особо. У нас чаще ZigBee гаджеты используют, Zwave не особо распространенные координаторы.
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Что-то я в ступоре. Не могу подобрать параметры для UART. Если есть кто опытный в логическом анализе протоколов, выкладываю лог от Logic 2. На первом канале команда Stop из Oview в контроллер. На нулевом канале ответ контроллера.
 

Вложения

  • StopFromOview.zip
    4.2 KB · Просмотры: 25

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Ситуация проясняется. Это uart 19200 8n1, только перед пакетами есть лишний импульс.

Общается оборудование через запрос - ответ.
В запросе содержится сетевая идентификация получателя в виде ряда и адреса. Эти данные можно произвольно настраивать через oview для любого устройства. Кроме того, запрос может быть широковещательным, если ряд и адрес это FF.
В ответе содержатся данные на запрос, сетевая идентификация ответившего, сетевая идентификация спросившего и что-то ещё. Пока разбираюсь.
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Как мне подсказал adnega, импульс - это стандартный break для uart.
Я не смог найти библиотеку Arduino, способную послать uart.break.
Но попался лайфхак с отправкой в uart 0x00 на другой скорости, который выглядит как break.
Подбором удалось сделать импульс длиной 522us, что очень близко к оригинальному 519us.
Это соответствует 0x00 отправленному на бодрэйте 17400.
Дальше переключаю скорость обратно на 19200 и отправляю основной пакет с командой.
В итоге получил сигнал, похожий на оригинальную команду Open, но сформированный Arduino.

uart_open_mega.png

Пока пробовал на Arduino Mega и её быстродействие вызывает задержку между импульсом break и основной командой в 122us против 52us в оригинальном сигнале. Но контроллеру мотора эта разница не критична и он съедает команду Open, открывая ворота. Фокус удался.

C++:
/*
  Открывает ворота при старте Ардуино. Открывает снова при нажатии Reset)
*/
#define baudwork 19200
#define baudbreak 17400

/* Формируем и отправляем импульс break перед основным пакетом с командой */
void sendBreak() {
  Serial2.end();
  Serial2.begin(baudbreak);
  Serial2.write(0x00);
 Serial2.end();
 Serial2.begin(baudwork); // reopen 19200bps
}

void setup() {
  Serial2.begin(baudwork);
  sendBreak(); // шлём импульс
  
  /*шлём команду Open  */
  byte x[15] = {0x55, 0x0c,0x00, 0x03, 0x05, 0x81, 0x01, 0x05, 0x83, 0x01, 0x82, 0x03, 0x64, 0xe4, 0x0c};
  Serial2.write(x, 15);
  
}

void loop() {

}
 

passkal

Эксперт
Регистрация
20 Мар 2012
Сообщения
5,660
Реакции
6,538
Адрес
Санкт-Петербург
Нельзя ли просто сформировать на Выходе TX низкий уровень сигнала нужной длительности?
Как я понял, BREAK - это просто длинный ноль, т.е. длиннее ожидаемого не нулевого сигнала, после которого приёмник принимает ошибку break.
Или это аппаратный не управляемый TX ?
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Да, BREAK - длинный ноль.
На Arduino если мы включаем вывод в режим uart, то не можем больше дёргать этим выводом, прижимая его программно к земле. Но можем выключить uart, и прижать вывод, подождать, отпустить вывод, снова включить uart, послать команду uart. Работу с Nice этого алгоритма формирования посылки я не проверил, может и заработает. Предполагаю, что при программном дерганьи ноги задержка между break и пакетом будет намного больше 122us.
 

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
Ситуация проясняется. Это uart 19200 8n1, только перед пакетами есть лишний импульс.

Общается оборудование через запрос - ответ.
В запросе содержится сетевая идентификация получателя в виде ряда и адреса. Эти данные можно произвольно настраивать через oview для любого устройства. Кроме того, запрос может быть широковещательным, если ряд и адрес это FF.
В ответе содержатся данные на запрос, сетевая идентификация ответившего, сетевая идентификация спросившего и что-то ещё. Пока разбираюсь.
когда вы например отправляете команду Open, как я знаю должен быть ответ "Opening" и когда ворота открываются должнo отправить еще один ответ ворота открылись.
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Команда на открытие такая:
550c0003058101058301820364e40c
55 -начало пакета
0С - CRC, количество байт в пакете минус 3
00 - ряд кому запрос(0xFF для всех)
03 - адрес кому запрос (0xFF для всех)
05 - ряд от кого запрос
81 - адрес от кого запрос, для OVIEW адрес всегда больше на 80, похоже признак программатора
01 - пока не знаю
05 - пока не знаю
83 - пока не знаю
01 - пока не знаю
82 - пока не знаю
03 - возможно, команда Open
64 - пока не знаю, обычно здесь данные в ответах на запросы
e4 - пока не знаю, обычно здесь данные в ответах на запросы
0С - CRC, количество байт в пакете минус 3


Дальше контроллер отвечает всем адресам и всем рядам, что всё понял и исполняет двумя пакетами:
550effff00030107050402831900000e

Тут 83 похоже на статус Opening. Но это не точно.
Второй пакет ответа:
550effff0003010705040202000000040e

Через время Oview спрашивает у контроллера что-то:
550c0003058101058301820064e70c

Контроллер отвечает всем, что остановил двигатели по таймауту. Ведь я их не подключал, блок на столе лежит.
550effff0003010705040201000000070e

Перед каждым пакетом Break.
 
Последнее редактирование:

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Вроде как в рамках нашей задачи нет необходимости разбираться во всех дебрях протокола, изобретая аналог OVIEW со всеми его возможностями.
Достаточно:
1. посылать по адресу привода либо всем устройствам команды OPEN, CLOSE, STOP, SBS, может режим калитки
2. получать в пакете байт со статусом (OPENING, CLOSING, OPENED, CLOSED и может положение в процентах).
 

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
55 -начало пакета
0С - CRC, количество байт в пакете минус 3
00 - ряд кому запрос(0xFF для всех)
03 - адрес кому запрос (0xFF для всех)
05 - ряд от кого запрос
81 - адрес от кого запрос, для OVIEW адрес всегда больше на 80, похоже признак программатора
01 - пока не знаю - может быть тип автоматики (<01> sliding. )
83 - пока не знаю
01 - пока не знаю
82 - пока не знаю
03 - возможно, команда Open
64 - пока не знаю, обычно здесь данные в ответах на запросы
e4 - пока не знаю, обычно здесь данные в ответах на запросы
0С - CRC, количество байт в пакете минус 3

Indicates the type of automation for the RSP response or the GET filter: <00> not used; available for future expansions <01> sliding. Not implemented <02> sectional. Not implemented <03>. swing. Not implemented <04> barrier. Not implemented <05> up-and-over. Not implemented <06> - <69> not used; available for future expansions <70> shutters <71> rolling blinds <72> sun shades <73> projection screens <74> dampers <75> mosquito nets <76> venetian blinds <77> orientable shutters <78> patio/pergola <79> curtains for interiors <7A> roman blinds <7B> - not used; available for future expansions no filter active
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
только вот wingo 5000 явно не Sliding

При подключении Oview контроллер сообщает ему, кто он таким пакетом:
550e0081000308078d0400190100031f0e
Если догадка Vaikisа верна, одна из троек говорит про SWING

Думаю, нужно больше тестов с разными типами приводов.
 
Последнее редактирование:

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
только вот wingo 5000 явно не Sliding

При подключении Oview контроллер сообщает ему, кто он таким пакетом:
550e0081000308078d0400190100031f0e
Если догадка Vaikisа верна, одна из троек говорит про SWING

Думаю, нужно больше тестов с разными типами приводов.

у меня есть Robus 500HS + SPY650HS, интересно если получится с UART TTL USB на CP2102 подключенo к ноутбуку поймать ответ.
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Получится. Только ответ будет на команды, выполняемые контроллером по кнопкам на его корпусе, либо с пульта.

Можно попробовать подключить Ардуино к Tx контроллера и поотправлять первый пакет при подключении OVIEW. Наверняка в нём команда "Отзовись кто слышит и доложи свой статус"
550dffff081868f4099009d0d
Здесь команда всем адресам всем рядам от OVIEW c нулевого ряда первого адреса (00 81).

В ответе на команду что-нибудь да поймём.
 
Последнее редактирование:

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
нa SPY650HS получил много шума, может потому что не подключен BlueBus + CRC выглядит странно... hmmmm. использовал IONinja
OPEN:

Session started
[+] Opened port COM5 baud: 19200 bps DTR: off RTS: off DSR: off CTS: off
00 .
Line error detected: BREAK
55 0c 00 ff 00 0a 01 05 f1 0a 82 01 80 09 0c 00 U...............
Line error detected: BREAK
55 0c 00 ff 00 0a 01 05 f1 0a 82 00 00 88 0c 00 U...............
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 02 02 00 00 00 04 U...............
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 00 48 00 0e U.........@..H..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 01 81 00 c6 U.........@.....
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 03 bb 00 fe U.........@.....
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 06 1a 00 5a U.........@....Z
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 08 76 00 38 U.........@..v.8
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 0a b6 00 fa U.........@.....
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 0d 0f 00 44 U.........@....D
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 0f ac 00 e5 U.........@.....
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 12 28 00 7c U.........@..(.|
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 14 53 00 01 U.........@..S..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 16 cf 00 9f U.........@..π..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 19 bb 00 e4 U.........@.....
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 1c 63 00 39 U.........@..c.9
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 1e ec 00 b4 U.........@..쀴..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 20 65 00 03 U.........@. e..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 21 80 00 e7 U.........@.!...
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 22 cb 00 af U.........@."ˀ..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 24 11 00 73 U.........@.$..s
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 02 24 38 00 5a U.........@.$8.Z
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 02 04 00 00 00 02 U...............
0e .


CLOSE:

Session started
[+] Opened port COM5 baud: 19200 bps DTR: off RTS: off DSR: off CTS: off
Line error detected: BREAK
Port closed
Session started
[+] Opened port COM5 baud: 19200 bps DTR: off RTS: off DSR: off CTS: off
Line error detected: BREAK
f8 .
Line error detected: BREAK
00 .
Line error detected: BREAK
e0 ff 1e 00 ....
Line error detected: BREAK
Line error detected: BREAK
00 .
Line error detected: BREAK
Port closed
Session started
[+] Opened port COM5 baud: 19200 bps DTR: off RTS: off DSR: off CTS: off
Port closed
Session started
[+] Opened port COM5 baud: 19200 bps DTR: off RTS: off DSR: off CTS: off
00 .
Line error detected: BREAK
55 0c 00 ff 00 0a 01 05 f1 0a 82 01 80 09 0c 00 U...............
Line error detected: BREAK
55 0c 00 ff 00 0a 01 05 f1 0a 82 00 00 88 0c 00 U...............
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 02 03 00 00 00 05 U...............
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 24 b8 00 db U.........@.$...
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 23 42 00 26 U.........@.#B.&
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 21 45 00 23 U.........@.!E.#
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 1e ea 00 b3 U.........@..ꀳ..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 1c 50 00 0b U.........@..P..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 19 f3 00 ad U.........@.....
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 17 a8 00 f8 U.........@.....
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 15 10 00 42 U.........@....B
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 12 74 00 21 U.........@..t.!
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 10 00 00 57 U.........@....W
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 0d 6b 00 21 U.........@..k.!
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 0a cb 00 86 U.........@..ˀ..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 08 24 00 6b U.........@..$.k
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 05 93 00 d1 U.........@.....
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 03 db 00 9f U.........@..ۀ..
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 02 77 00 32 U.........@..w.2
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 01 12 00 54 U.........@....T
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 00 00 00 47 U.........@....G
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 40 03 00 00 00 47 U.........@....G
0e 00 ..
Line error detected: BREAK
55 0e ff ff 00 03 01 07 05 04 02 05 00 00 00 03 U...............
0e .
 
Сверху Снизу