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

pruwait

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

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
Всё объяснимо. Настоящий пакет 55 0c 00 ff 00 0a 01 05 f1 0a 82 01 80 09 0c, а последние нули - это BREAK следующего пакета, который пытается понять Нинзя.
55 0e ff ff 00 03 01 07 05 04 02 83 19 00 00 9с 0e - твой
55 0c 00 ff 00 0a 01 05 f1 0a 82 01 80 09 0c - мой улов, BREAK после 80 ? 80 00 00 09 0c ?
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
не...
Пакет на логанализаторе выглядит так:
break (который терминал хочет показать как 00) 55 CRC.......CRC

Два пакета друг за другом:
break 55 crc .........crc break (вот здесь терминал рисует лишний ноль ноль, ведь break это слишком длинный 00) break 55 crc .........crc
За последним пакетом нет break, поэтому нет и лишних нулей.


55 0e ff ff 00 03 01 07 05 04 02 02 00 00 00 04 U...............
0e 00 ..
Этот ответ один в один как мой. Значит мои запросы OPEN CLOSE итд у тебя заработают. Подай их через Ардуино.
Адрес контроллера как и у меня 00 03

55 0c 00 ff 00 0a 01 05 f1 0a 82 00 00 88 0c 00
А это пакет от другого устройства. Предполагаю, что приемник для пультов. У меня он не подключен. Вынь его из разъема и пакетов поубавится.
Скорее всего приемник - это 00 0a
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
55 0c 00 ff 00 0a 01 05 f1 0a 82 01 80 09 0c
Это команда Open с твоего пульта. Я подал ее через Ардуино и мои ворота послушно открылись даже без приемника с адресом 00 0a
byte x[15] = {0x55, 0x0c, 0x00, 0xff, 0x00, 0x0a, 0x01, 0x05, 0xf1, 0x0a, 0x82, 0x01, 0x80, 0x09, 0x0c};

Поправка. Похоже, это не Open, а Step-by-Step
 

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
hmmm, может это поможет? просто догадываюсь :)
1 = 0x01, 2 = 0x02 .....
0x55, 0x0c, 0x00, 0xff, 0x00, 0x0a, 0x01, 0x05, 0xf1, 0x0a, 0x82, 0x01, 0x80, 0x09, 0x0c}
1 "MDAx", "Step by Step"



# 1 "MDAx", "Step by Step" # 2 "MDAy", "Stop" # 3 "MDAz", "Open" # 4 "MDA0", "Close" # 5 "MDA1", "Partial opening 1" # 6 "MDA2", "Partial opening 2" # 7 "MDA3", "Partial opening 3" # 11 "MDBi", "Apartment Step by Step" # 12 "MDBj", "Step by Step high priority" # 13 "MDBk", "Open + Block" # 14 "MDBl", "Close + Block" # 15 "MDBm", "Block" # 16 "MDEw", "Release" # 17 "MDEx", "Courtesy light timer on" # 18 "MDEy", "Courtesy light On-Off" # 19 "MDEz", "Step by Step master door" # 20 "MDE0", "Open master door" # 21 "MDE1", "Close master door"), # 22 "MDE2", "Step by Step slave door" # 23 "MDE3", "Open slave door" # 24 "MDE4", "Close slave door" # 25 "MDE5", "Release + Open" # 26 "MDFh", "Release + Close"
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
может это поможет? просто догадываюсь
Красава! Первые пять команд совпали, дальше не проверял. Это оно!

Теперь вижу ещё один CRC. Девятый байт пакета зависит от адресов и рядов. Но формулу пока найти не удалось.
Одна и та же команда SBS c разными адресами и рядами заставляет меняться и 9й байт.

55 0с 00 ff 00 0a 01 05 f1 0a 82 01 80 09 0c
55 0c 00 03 05 81 01 05 83 01 82 01 64 e6 0c
55 0c 00 03 00 90 01 05 97 01 82 01 64 e6 0c
55 0c 00 03 01 90 01 05 96 01 82 01 64 e6 0c
55 0c 01 03 01 90 01 05 97 01 82 01 64 e6 0c
55 0c 01 04 01 90 01 05 90 01 82 01 64 e6 0c
55 0c 02 04 02 90 01 05 90 01 82 01 64 e6 0c
55 0c 00 01 00 81 01 05 84 01 82 01 64 e6 0c
55 0c 00 02 00 81 01 05 87 01 82 01 64 e6 0c
55 0c 00 03 00 81 01 05 86 01 82 01 64 e6 0c
55 0c 00 04 00 81 01 05 81 01 82 01 64 e6 0c
55 0c 00 05 00 81 01 05 80 01 82 01 64 e6 0c
55 0c 00 06 00 81 01 05 83 01 82 01 64 e6 0c
 

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
Красава! Первые пять команд совпали, дальше не проверял. Это оно!

Теперь вижу ещё один CRC. Девятый байт пакета зависит от адресов и рядов. Но формулу пока найти не удалось.
Одна и та же команда SBS c разными адресами и рядами заставляет меняться и 9й байт.

55 0с 00 ff 00 0a 01 05 f1 0a 82 01 80 09 0c
55 0c 00 03 05 81 01 05 83 01 82 01 64 e6 0c
55 0c 00 03 00 90 01 05 97 01 82 01 64 e6 0c
55 0c 00 03 01 90 01 05 96 01 82 01 64 e6 0c
55 0c 01 03 01 90 01 05 97 01 82 01 64 e6 0c
55 0c 01 04 01 90 01 05 90 01 82 01 64 e6 0c
55 0c 02 04 02 90 01 05 90 01 82 01 64 e6 0c
55 0c 00 01 00 81 01 05 84 01 82 01 64 e6 0c
55 0c 00 02 00 81 01 05 87 01 82 01 64 e6 0c
55 0c 00 03 00 81 01 05 86 01 82 01 64 e6 0c
55 0c 00 04 00 81 01 05 81 01 82 01 64 e6 0c
55 0c 00 05 00 81 01 05 80 01 82 01 64 e6 0c
55 0c 00 06 00 81 01 05 83 01 82 01 64 e6 0c

def get_chksum(packet):
chksum = 0
for i in packet:
chksum ^= ord(i)
return hex(chksum)

print(get_chksum('\x00\xff\x00\x0a\x01\x05')) # 0xF1
print(get_chksum('\x00\x03\x05\x81\x01\x05')) # 0x83
print(get_chksum('\x00\x03\x00\x90\x01\x05')) # 0x97
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Неужели и это поддалось? Как бы теперь на с++ ардуиновский переписать!?
 

pruwait

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


И закончил собирать. Пора уже esphome компонент сделать.
IMG_20211229_225533.jpg
 

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
Что-то у меня этот алгоритм не взлетел...
Возводим в степень Юникод значения каждого символа, начиная с нуля?
^= это XOR ;)
преобразовать все значения в двоичные и выполнить операцию XOR
('\x00\x03\x05\x81\x01\x05')) = 0x83


Код:
         0000 (x00)
         0011 (x03)
         -----
         0011
         0101 (x05)
        -----
        0110
    10000001 (x81)
       ------
    10000111
        0001 (x01)
    ---------
    10000110
        0101 (x05)
     --------                 
    10000011 = x83
 

pruwait

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

Vaikis

Новичок
Регистрация
18 Сен 2021
Сообщения
22
Реакции
15
Адрес
Aba
Вопрос к сообществу, кому-то это интересно с профессиональной точки зрения?
для людей которые хотят управлять автоматикой ворот с телефона и не хотят платить сотни евро за официальные дополнения
+ гораздо более простая интеграция с системами домашней автоматизации с открытым исходным кодом, такими как Home Assitance, Openhab ant и т. д.
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
Если внимательно вчитаться в этот мануал и мануал nice_dmbm_integration_protocol.pdf, приходит понимание наличия в протоколе разного типа пакетов (POS, INF, CMD, LST итд) и разных ответов на запросы от этих типов.

Команда Open формирует пакет:
55 0c 0 3 5 81 1 5 83 1 82 3 64 e4 0c

55 - начало пакета
0С - CRC, количество байт в пакете минус 3
00 - ряд кому запрос(0xFF для всех)
03 - адрес кому запрос (0xFF для всех)
05 - ряд от кого запрос
81 - адрес от кого запрос, для OVIEW адрес всегда больше на 80, похоже признак программатора
01 - возможно, признак команды CMD
05 - возможно, признак запроса SET
83 - CRC2
01 - пока не знаю
82 - пока не знаю
03 - команда Open, поле xx из команды CMD, для закрытия будет 04
64 - пока не знаю
e4 - пока не знаю
0С - CRC, количество байт в пакете минус 3


Ответ контроллера состоит из нескольких пакетов. Первый пакет ответа, предположительно RSP:
55 0e ff ff 0 3 1 7 5 4 2 83 19 0 0 9с 0e
55 -начало пакета
0e - CRC, количество байт в пакете минус 3
FF - ряд кому отвечаем(0xFF для всех)
FF - адрес кому отвечаем (0xFF для всех)
0 - ряд от кого ответ
3 - адрес от кого ответ
01 - возможно, признак команды CMD
07 - возможно, признак ответа интерфейса, RSP или EVT
5 - CRC2
4 - пока не знаю
2 - пока не знаю
83 - возможно, здесь контроллер подтверждает что принял команду 3 Open, при закрытии тут 84
19 - возможно, признак пакета RSP
0 - пока не знаю
0 - пока не знаю
9c - пока не знаю
0e - CRC, количество байт в пакете минус 3

Второй пакет ответа контроллера, предположительно response of the interface (EVT), sending the requested information
55 0e ff ff 0 3 1 7 5 4 2 2 0 0 0 4 0e
55 -начало пакета
0e - CRC, количество байт в пакете минус 3
FF - ряд кому отвечаем(0xFF для всех)
FF - адрес кому отвечаем (0xFF для всех)
0 - ряд от кого ответ
3 - адрес от кого ответ
01 - возможно, признак команды CMD
07 - возможно, признак ответа интерфейса, RSP или EVT
5 - CRC2
4 - пока не знаю
2 - пока не знаю
2 - возможно, здесь контроллер подтверждает что никакой команды не было
0 - возможно, признак пакета EVT
0 - пока не знаю
0 - пока не знаю
4 - статус. Поле x для EVT ответа.
<1> automation locked
<2> automation unlocked
<3> automation moving
<4> automation opening
<5> automation closeing
<6> no limits set
<7> automation malfunction/error
<f> no additional information
0e - CRC, количество байт в пакете минус 3
 

pruwait

Активный
Регистрация
27 Дек 2019
Сообщения
114
Реакции
101
Адрес
Майкоп
кому-то это интересно с профессиональной точки зрения?
Неужели нет запросов от клиентов: "Хочу с телефона открывать и чтоб недорого"
"Хочу открывать ворота из приложения умного дома, а не звонком"

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