Как рассчитать эту контрольную сумму? - PullRequest
1 голос
/ 10 марта 2012

У меня есть система сигнализации, которую я настроил для отправки SMS-сообщений на телефон, а также через Ethernet.

Вот несколько SMS-сообщений, которые я получаю:

5522 18 1137 00 003 1C76
5522 18 3137 00 003 3278
5522 18 1130 00 002 E36E
5522 18 1401 00 001 ED6E
5522 18 1302 00 003 ED70
5522 18 1302 00 004 EE71
5522 18 1302 00 009 F376
5522 18 3147 00 009 417F
5522 18 1137 00 004 1D77
5522 18 3137 00 009 3379
5522 18 1602 00 000 0870

Первые 4 байта - это номер счета, следующие 2 - всегда 18, следующие 4 - коды событий, 2 групповых байта и 3 номера зоны. В конце есть 4 байта, которые, как я подозреваю, являются некой контрольной суммой.

Это какой-то формат идентификатора контакта Ademco. Однако я не узнаю контрольную сумму. Это не отметка времени, так как последнее сообщение (0870) отправляется периодически и всегда одинаково.

При отправке через DTMF 0 должно иметь значение 10, но я не знаю, так ли это с SMS-сообщениями. Скорее всего, нет.

Ответы [ 3 ]

0 голосов
/ 03 февраля 2014

Формула контрольной суммы в идентификаторе контакта Адемко рассчитывается по формуле:

S = HEX Контрольная сумма, состоящая из одной цифры.

(сумма всех цифр сообщения + S) MOD 15 = 0

и если значение равно 10, контрольная сумма равна 0. Официальная спецификация Contact ID здесь: http://li0r.files.wordpress.com/2012/07/sia-dc-05-1999-09_contact_id.pdf

Итак, используя 5522 18 1602 00 000 0870 в качестве примера:

LET C = checksum

5+5+2+2+1+8+1+6+2=32

(32+S) modulo 15 is congruent to 0

Затем нам нужно ближайшее кратное 15, идущее выше 32, что будет 45.

45-32=13

Давайте проверим это.

45 modulo 15 is congruent to 0

Однако это правильно, так как Contact ID имеет 16 цифр, а у вас 19. Я подозреваю, что ваша панель использует другую запатентованную реализацию Contact ID. Если вы опубликуете марку / модель панели, из которой она получена, я смогу объяснить вам кое-что дальше.

Надеюсь, это ответит на ваш вопрос!

1024 * для -Alex- *

P.S .: Для расчета мода используйте знак процента в Google P.P.S: Документ, который описывает Contact ID, на самом деле: DC-05-1999.09 документ, на который вы ссылались, фактически является спецификацией протокола связи компьютерного интерфейса.

0 голосов
/ 11 сентября 2014

Я просто хочу исправить расчет AdemcoGuy, так как он кажется неверным: Итак, пример был 5522 18 1602 00 000 0870 Нам нужно заменить каждый 0 на 10. Так: 5 + 5 + 2 + 2 + 1 + 8 + 1 + 6 + 10 + 2 + 10 + 10 + 10 + 10 + 10 = 92

чем 100-92 = 8

Итак, чексум 8

В любом случае в вопросе контрольная сумма, кажется, отсутствует, и какая последняя 4 цифра знает только, кто изготовил панель, которая ее отправила :)

0 голосов
/ 14 сентября 2012

#ACCT MT QXYZ GG CCC где:

  • ACCT: 4-значный номер счета (0-9, B-F)

  • MT: тип сообщения - всегда 18

  • Q: квалификатор события, который предоставляет конкретную информацию о событии:

    • 1: новое событие или открытие

    • 3: новое восстановление или закрытие

    • 6: ранее сообщенное состояние все еще присутствует (отчет о состоянии)

  • XYZ: код события (3 шестнадцатеричных цифры 0-9, B-F)

  • GG: номер группы или раздела (2 шестнадцатеричных цифры 0-9, B-F). Используйте 00, чтобы указать, что никакая конкретная информация о группе или разделе не применяется.

  • CCC: номер зоны (отчеты о событиях) или пользователь (отчеты открытия / закрытия) (3 шестнадцатеричных числа 0-9, B-F). Используйте 000, чтобы указать, что никакая конкретная зона или пользовательская информация не применяются.

Чтобы посмотреть коды событий, см. этот документ (pdf).

...