В том то и дело что нет … как раз обмен между пиками Вам не нужен…(ну почти , может потом когда разадаете протокол пик-сим)
Интерес для клонирования представляет именно пик-сим..
. т.к кодирование кода между брелком и гсм модулем именно делает пик в модуле… он же и формирует гсм посылку определенного формата , т.о Вам нужно иммулировать именно его, а то что Вы делаете , можно использовать только если у Вас есть прошитый гсм модуль, а Вы к нему свою сигналку пихаете , тогда да … но это Вы эмулируете не гсм модуль, а именно модуль сигналки
!!! Вот я об этом и говорю …именно пик-сим
основное (если ВЫ конечно собираетесь общаться с миром , а не с самим блоком сигналки), а потом пик-пик
уже , что кстати не составляет особого труда - просто время и терпенье
я собираюсь общаться как раз с пиком сигналки)) Мир мне не нужен) У меня будет вместо приложения старлайн. Приложение MQTT. и я хочу эту городьбу прикрутить для управления сигналкой старлайн, ну и обратная связь также нужна. Т.е. с эмулировать пикGSM нужно не для сим800 а для пика сигналки.
ТОгда смысл теряется… Вы ничего не иммулируете , просто создате платку с котроллером которая просто будет отвечать на вопросы сигналки ничего не делая…(Смысла тут вообще я не вижу , разве , что при ремонте проверить адекватность работы блока с гсм блоком…ну или размять мозги … ну как говориться дело Ваше…
Ну разве что так…
про это не понял от чего обратная связь ?
состояние охраны, двери , капот , багажник, зажигание, состояние работы двс, t двс , t салона, напряжение акб. Вот это и есть обратная связь
смысл в том , что мое устройство будет повторять функционал ори GSM . то есть управление сигналкой и получение от нее инфы, выше которую написал
да нет, это то я как раз понял . Вы хотите планшета или ноута получать состояние сигналки и управлять ее без брелков и пультов…
Я не понял для чего… ЕСли это Ваша сигналка , тогда да интерес какой-то есть , Если нет
у меня есть проект для управения вебасто. Я хочу ему добавить функционал управлять сигналками старлайн. Чтобы все с одного приложения. Тем более ори GSM модуль сейчас 6500р стоит.
Понятно …Я к тому , что если это дополнение к чему-то , тогда да смысл есть , если просто свое управление сигналками очень сомнительно - клиенты очень неохотно соглашаются , что бы лезли курочить их работающий блок , причем как правило с потерей его обслуживания у тех у кого ставили …( им проще заплатить 6500 , тем боле что Вы то тоже это не бесплатно будете делать и не факт что цена примерно таже не выйдет )
Кстати а возращаемая посылка одна и таже если несколько раз делать одно и тоже действие
допустим снять с охраны?
вот более правильный лог . по сути при снятии или постановке на охрану летит 4 кадра .
Первый кадр одиночный от GSM до Starline
Второй и третий кадр сдвоенный, т.е идут друг за другом
(Starline to GSM и сразу GSMto Starline)
и последний кадр одиночный Starline to GSM
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
50 01 00 00 FF 00 00 00 00 91
0
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
0
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
50 00 00 10 FF 00 00 00 00 88
0
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
50 01 00 10 FF 00 00 00 00 89
0
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
50 01 00 00 FF 00 00 00 00 91
0
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
0
Send SMS Ohrana ON:
GSM to Starline: 00010000110001011000110000010001111111110000000000000000000000000000000010110111
10 C5 8C 11 FF 00 00 00 00 B7
0
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
90 87 15 81 FF 00 00 00 00 90
1
GSM to Starline: 10010000100001110001010110000001111111110000000000000000000000000000000010000100
90 87 15 81 FF 00 00 00 00 84
0
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
50 06 00 00 FF 00 00 00 00 96
0
Send SMS Ohrana OFF:
GSM to Starline: 00010000011010000011000010001100111111100000000000000000000000000000000000000110
10 68 30 8C FE 00 00 00 00 06
0
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
10 52 40 9C FF 00 00 00 00 96
1
GSM to Starline: 00010000010100100100000010011100111111100000000000000000000000000000000000000001
10 52 40 9C FE 00 00 00 00 01
0
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
0
Send SMS Ohrana ON:
GSM to Starline: 00010000100000011101100101000101111111110000000000000000000000000000000011000011
10 81 D9 45 FF 00 00 00 00 C3
0
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
10 AC 3F 23 FF 00 00 00 00 90
1
GSM to Starline: 00010000101011000011111100100011111111110000000000000000000000000000000011111110
10 AC 3F 23 FF 00 00 00 00 FE
0
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
50 06 00 00 FF 00 00 00 00 96
0
Send SMS Ohrana OFF:
GSM to Starline: 01000000100001111100111001000011111111110000000000000000000000000000000011100101
40 87 CE 43 FF 00 00 00 00 E5
0
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
10 70 6A F4 FF 00 00 00 00 96
1
GSM to Starline: 00010000011100000110101011110100111111110000000000000000000000000000000000110111
10 70 6A F4 FF 00 00 00 00 37
0
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
0
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
50 00 00 10 FF 00 00 00 00 88
0
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
50 01 00 10 FF 00 00 00 00 89
0
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
50 01 00 00 FF 00 00 00 00 91
0
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
0
в момент сдвоенного кадра в лупе не успевает нормально распечатать в HEX, данные уже меняются в прерывании, надо модернизировать сниффер.
Вот скетч, на котором получен лог выше постом
#define RX 3
#define TX 2
volatile bool data[80] = {0};
enum states {WAIT, GSMtoSTARL, STARLtoGSM};
volatile byte state = WAIT ;
volatile byte bitNumber = 0 ;
enum statesPrint {GSMtoSTARL_P, STARLtoGSM_P};
volatile bool printFlag = 0;
volatile bool statePrint = 0;
void setup()
{
Serial.begin (250000);
pinMode (TX, INPUT_PULLUP);
pinMode (RX, INPUT_PULLUP);
attachInterrupt(0, GSM_TX, FALLING);
attachInterrupt(1, GSM_RX, FALLING);
}
void loop() {
if (Serial.available()){
Serial.println();
byte inbyte = Serial.read();
if (inbyte == 'z') {Serial.println (F(" Send SMS Zapros Sostoyanya: ")); }
else if (inbyte == 'o') {Serial.println (F(" Ignition OFF"));}
else if (inbyte == 'i') {Serial.println(F(" Ignition ON"));}
else if (inbyte == '1') {Serial.println (F(" Send SMS Ohrana ON: ")); }
else if (inbyte == '0') {Serial.println (F(" Send SMS Ohrana OFF: ")); }
}
if (printFlag){
if (statePrint==GSMtoSTARL_P) {Serial.print ("GSM to Starline: ");}
else {Serial.print (" Starline to GSM: ");}
for (int i=0; i<80; i++) {Serial.print (data[i]);}Serial.println();
for (int i=0; i<10; i++) {
byte A= 0;
for (int b = 0 ; b<8; b++){bitWrite(A, 7-b, data[(8*i)+b]);}
if (A<=0xF)Serial.print("0"); Serial.print(A, HEX); Serial.print(" ");
}
Serial.println(); Serial.println(state); printFlag = 0 ;
}
}
void GSM_TX () {
if (state == STARLtoGSM){
bitNumber++;
if (bitNumber > 1) {data[bitNumber-2]= digitalRead(RX);}
if (bitNumber==81)
{
detachInterrupt(0);detachInterrupt(1);
attachInterrupt(0, GSM_TX, FALLING);
attachInterrupt(1, GSM_RX, FALLING);
bitNumber=0; state = WAIT; printFlag = 1; statePrint=STARLtoGSM_P;}
}
else if (state == WAIT)
{
if (digitalRead(RX))return;
else {state = STARLtoGSM;
detachInterrupt(0);detachInterrupt(1);
attachInterrupt(0, GSM_TX, CHANGE);
attachInterrupt(1, GSM_RX, CHANGE);}}
}
void GSM_RX () {
if (state == GSMtoSTARL){
bitNumber++;
if (bitNumber > 1) {data[bitNumber-2]= digitalRead(TX);}
if (bitNumber==81)
{
detachInterrupt(0);detachInterrupt(1);
attachInterrupt(0, GSM_TX, FALLING);
attachInterrupt(1, GSM_RX, FALLING);
bitNumber=0; state = WAIT; printFlag = 1; statePrint=GSMtoSTARL_P;}
}
else if (state == WAIT)
{if (!digitalRead(TX)) {state = GSMtoSTARL;
detachInterrupt(0);detachInterrupt(1);
attachInterrupt(0, GSM_TX, CHANGE);
attachInterrupt(1, GSM_RX, CHANGE);}}
}
- приходящие байты или складировать в буфер, потом обрабатывать его и искать строки
- пока в uart входящим есть что принимать, категорически не рекомендуется использовать вывод в Serial логов, т е сохраняем в некую таблицу/переменные что пришло, а только по окончании приема выводим полезную инфу
- если команды входящие короткие, можно не использовать буфер для поиска команд, а натравливать на входящий байт из UART функции/функцию поиска подходящей команды, типа так:
unsigned char findOKRNfromModem(const unsigned char inByte /*входной байт из модема*/) { // Поиск во входящих из модема данных OK
const unsigned char strOK[] = "OK\r\n"; // строка поиска
static constexpr unsigned char lenOK = 4; // длина строки поиска // можно strlen использовать, но константой быстрее
static unsigned char foundPosOK = 0; // число найденных символов в строке OK\r\n
if (strOK[foundPosOK] == inByte) { // нашелся символ
if ((++foundPosOK) == lenOK) { // увеличиваем счетчик найденых символов и заодно сдвигаем позицию поиска // нашлась вся строка
foundPosOK = 0; // обнуляем поиск
return 1; // успешно выходим
}
}
else { // не совпадает
foundPosOK = 0; // обнуляем поиск
}
return 0;
}
спасибо, посмотрю. Короче я сделал раздельные буферы для приема с GSM и приема с сигналки и проблема ушла. Вот правильный лог
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
50 00 00 10 FF 00 00 00 00 88
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
50 01 00 10 FF 00 00 00 00 89
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
50 01 00 00 FF 00 00 00 00 91
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
Send SMS Ohrana ON:
GSM to Starline: 01010000100100011100100101010101111111110000000000000000000000000000000011110011
50 91 C9 55 FF 00 00 00 00 F3
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
GSM to Starline: 01010000111111010110111111110011111111110000000000000000000000000000000010110001
50 FD 6F F3 FF 00 00 00 00 B1
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
50 06 00 00 FF 00 00 00 00 96
Send SMS Ohrana OFF:
GSM to Starline: 01010000010011110001011110001011111111110000000000000000000000000000000000101101
50 4F 17 8B FF 00 00 00 00 2D
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
50 06 00 00 FF 00 00 00 00 96
GSM to Starline: 01000000011001000111011011101010111111110000000000000000000000000000000000111111
40 64 76 EA FF 00 00 00 00 3F
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
Send SMS Ohrana OFF:
GSM to Starline: 01010000111000011011100100100101111111110000000000000000000000000000000010001011
50 E1 B9 25 FF 00 00 00 00 8B
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
50 06 00 00 FF 00 00 00 00 96
GSM to Starline: 01010000001111010010111110110011111111110000000000000000000000000000000001100001
50 3D 2F B3 FF 00 00 00 00 61
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
Send SMS Ohrana ON:
GSM to Starline: 01010000010011110001011110001011111111110000000000000000000000000000000000101101
50 4F 17 8B FF 00 00 00 00 2D
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
GSM to Starline: 01010000011001001111011001101010111111110000000000000000000000000000000000101111
50 64 F6 6A FF 00 00 00 00 2F
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
50 06 00 00 FF 00 00 00 00 96
Send SMS Ohrana OFF:
GSM to Starline: 01010000110110101000001000011110111111110000000000000000000000000000000010111000
50 DA 82 1E FF 00 00 00 00 B8
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
50 06 00 00 FF 00 00 00 00 96
GSM to Starline: 01010000000010010001101110000111111111110000000000000000000000000000000001001010
50 09 1B 87 FF 00 00 00 00 4A
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
50 00 00 10 FF 00 00 00 00 88
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
50 01 00 10 FF 00 00 00 00 89
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
50 01 00 00 FF 00 00 00 00 91
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
50 00 00 00 FF 00 00 00 00 90
поглядел на лог . Последний байт, похоже это КС
при процедуре привязки GSM модуля от блока в GSM модуль идет всего один кадр
Register GSM module
Starline to GSM: 11010000000110101000011000000000000000000000000000000000000000000000000000100011
D0 1A 86 00 00 00 00 00 00 23
изучив лог, становится вроде бы понятно, что обмен нифига не диалоговый. Сигнализация на любые команды от GSM модуля отвечает просто своим состоянием. Кстати также было и в предыдущем старом протоколе. состояние это сообщение типа 50 00 00 00 FF 00 00 00 00 90. 4й байт всегда FFh, после него четыре байта всегда 00h, последний байт контрольная сумма. 0й байт всегда 50h, за исключением процедуры привязки, там нулевой байт D0 (добавился старший бит к привычному 50h). также при привязке модуля 4й байт не FFh, а 00h.
При снятии с охраны или постановке на охрану GSM передает два кадра, после каждого дожидаясь ответа состояния от блока сигналки . по сути смысловую нагрузку в каждом кадре при этом несут всего три байта после нулевого (50h).
Эти три байта всё время разные при нескольких постановках на охрану или снятии с охраны.
Интересным увидел момент что первый кадр команды GSM модуля может быть прям одинаковый как при постановке на охрану , так и при снятии. смотри строку 25 и 46 выше в логе. Может первый кадр как раз есть запрос Свой я или чужой? Кстати при этом и второй кадр очень похож . смотри строки 29 и 50 . Значит Скорее всего оба кадра команды както связаны .
Короче и с контролькой я разобрался В общем биты всех байт надо задом наперед записать, и тогда последний байт контролька = просто сумма предыдущих байт . Завтра скетч поправлю и лог пересниму . Продвигаемся потихоньку
вот заменил все байты вручную , теперь изучаю более правильный лог
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
0A 00 00 08 FF 00 00 00 00 11
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
0A 80 00 08 FF 00 00 00 00 91
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
0A 80 00 00 FF 00 00 00 00 89
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 00 00 FF 00 00 00 00 09
Send SMS Ohrana ON:
GSM to Starline: 01010000100100011100100101010101111111110000000000000000000000000000000011110011
0A 89 93 AA FF 00 00 00 00 CF
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 00 00 FF 00 00 00 00 09
GSM to Starline: 01010000111111010110111111110011111111110000000000000000000000000000000010110001
0A BF F6 CF FF 00 00 00 00 8D
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 60 00 00 FF 00 00 00 00 69
Send SMS Ohrana OFF:
GSM to Starline: 01010000010011110001011110001011111111110000000000000000000000000000000000101101
0A F2 E8 D1 FF 00 00 00 00 B4
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 60 00 00 FF 00 00 00 00 69
GSM to Starline: 01000000011001000111011011101010111111110000000000000000000000000000000000111111
12 26 6E 57 FF 00 00 00 00 FC
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 00 00 FF 00 00 00 00 09
Send SMS Ohrana OFF:
GSM to Starline: 01010000111000011011100100100101111111110000000000000000000000000000000010001011
0A 87 9D A4 FF 00 00 00 00 D1
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 60 00 00 FF 00 00 00 00 69
GSM to Starline: 01010000001111010010111110110011111111110000000000000000000000000000000001100001
0A BC F4 CD FF 00 00 00 00 86
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 00 00 FF 00 00 00 00 09
Send SMS Ohrana ON:
GSM to Starline: 01010000010011110001011110001011111111110000000000000000000000000000000000101101
0A F2 E8 D1 FF 00 00 00 00 B4
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 00 00 FF 00 00 00 00 09
GSM to Starline: 01010000011001001111011001101010111111110000000000000000000000000000000000101111
0A 26 6F 56 FF 00 00 00 00 F4
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 60 00 00 FF 00 00 00 00 69
Send SMS Ohrana OFF:
GSM to Starline: 01010000110110101000001000011110111111110000000000000000000000000000000010111000
0A 5B 41 78 FF 00 00 00 00 1D
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 60 00 00 FF 00 00 00 00 69
GSM to Starline: 01010000000010010001101110000111111111110000000000000000000000000000000001001010
0A 90 D8 E1 FF 00 00 00 00 52
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 00 00 FF 00 00 00 00 09
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
0A 00 00 08 FF 00 00 00 00 11
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
0A 80 00 08 FF 00 00 00 00 91
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
0A 80 00 00 FF 00 00 00 00 89
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 00 00 FF 00 00 00 00 09
Register GSM module
Starline to GSM: 11010000000110101000011000000000000000000000000000000000000000000000000000100011
0B 58 61 00 00 00 00 00 00 C4