MTA6 protocol device

dehuu769 years ago

Good day! I have mta6 gps device (based on sim900). I configure it to send requests to traccar server, but in log i see:
...error - empty text - IllegalArgumentException (... < OsmAndProtocolDecoder:116 < ExtendedObjectDecoder:39 < ...)
Maybe, i think, traccar does not send ack (HTTP/1.1 100 Continue) to first packet from terminal.
How can i solve this problem?

dehuu769 years ago

I can see in log file string - HEX: 485454502f312e3120323030204f4b0d0a0d0a
(HTTP/1.1 200 OK), reply to mta6-device, but without ack "HTTP/1.1 100 Continue" terminal can not send data to server

dehuu769 years ago

i see in file mta6protocoldecoder.java following code

if (channel != null) {
sendContinue(channel);
sendResponse(channel, packetId, packetCount);
}

but, in reality, traccar does not send HTTP 1.1 continue response
"HTTP/1.1 100 Continue"
no this response in my log file.
very,very strange

Anton Tananaev9 years ago

Please provide HEX messages from the log.

dehuu769 years ago
2016-02-23 22:04:44  INFO: [951E8134] connected
2016-02-23 22:04:45 DEBUG: [951E8134: 5055 < 192.168.78.1] HEX: 504f5354202f475052532f4d6f6e436f6e436173682e646c6c3f6461746120485454502f312e310d0a486f73743a2038312e312e3137312e3234350d0a436f6e74656e742d547970653a206170706c69636174696f6e2f62696e6172790d0a436f6e74656e742d4c656e6774683a203134320d0a0d0a
2016-02-23 22:06:40 DEBUG: [951E8134: 5055 < 192.168.78.1] HEX: 504f5354202f475052532f4d6f6e436f6e436173682e646c6c3f6461746120485454502f312e310d0a486f73743a2038312e312e3137312e3234350d0a436f6e74656e742d547970653a206170706c69636174696f6e2f62696e6172790d0a436f6e74656e742d4c656e6774683a203134320d0a0d0a
2016-02-23 22:07:10 DEBUG: [951E8134: 5055 < 192.168.78.1] HEX: 504f5354202f475052532f4d6f6e436f6e436173682e646c6c3f6461746120485454502f312e310d0a486f73743a2038312e312e3137312e3234350d0a436f6e74656e742d547970653a206170706c69636174696f6e2f62696e6172790d0a436f6e74656e742d4c656e6774683a203134320d0a0d0a
2016-02-23 22:07:10 DEBUG: [951E8134: 5055 > 192.168.78.1] HEX: 485454502f312e3120323030204f4b0d0a0d0a
2016-02-23 22:07:10  INFO: [951E8134] disconnected
2016-02-23 22:07:10  WARN: [951E8134] error - empty text - IllegalArgumentException (... < OsmAndProtocolDecoder:116 < ExtendedObjectDecoder:39 < ...)
2016-02-23 22:07:10  WARN: Referential integrity constraint violation: "FK_POSITION_DEVICEID: PUBLIC.POSITIONS FOREIGN KEY(DEVICEID) REFERENCES PUBLIC.DEVICES(ID) (0)"; SQL statement:
INSERT INTO positions (deviceId, protocol, serverTime, deviceTime, fixTime, valid, latitude, longitude, altitude, speed, course, address, attributes)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); [23506-190] - JdbcSQLException (... < QueryBuilder:431 < DataManager:307 < DefaultDataHandler:27 < ...)
2016-02-23 22:07:10  INFO: [951E8134] id: 0, time: 2016-02-23 22:07:10, lat: 0.00000, lon: 0.00000, speed: 0.0, course: 0.0

напишу уже, наконец, по-русски. видно, что от сервера не приходит пресловутый пакет CONTINUE

dehuu769 years ago

У меня роутер, порт 5055 проброшен на нужный внутренний ip.

dehuu769 years ago

Антон, для целей отладки я готов настроить отправку данных с gps-терминала на ваш сервер. терминал находится в рф, подмосковье

Anton Tananaev9 years ago

Не понял а почему вы используете OsmAnd протокол (порт 5055)?

dehuu769 years ago

Посмотрел на андроид-клиенте, там используется порт 5055. Решил поставить такой же

Anton Tananaev9 years ago

Для МТА6 нужно использовать порт 5028.

dehuu769 years ago

На 5028, к сожалению, что-то опять не понравилось ему

2016-02-24 14:50:08 DEBUG: [EFF871C0: 5028 < 192.168.78.1] HEX: 504f5354202f677072732f677072732e646c6c3f6461746120485454502f312e310d0a486f73743a2038312e312e3137312e3234350d0a436f6e74656e742d547970653a206170706c69636174696f6e2f62696e6172790d0a436f6e74656e742d4c656e6774683a203234380d0a0d0a
2016-02-24 14:52:03 DEBUG: [EFF871C0: 5028 < 192.168.78.1] HEX: 504f5354202f677072732f677072732e646c6c3f6461746120485454502f312e310d0a486f73743a2038312e312e3137312e3234350d0a436f6e74656e742d547970653a206170706c69636174696f6e2f62696e6172790d0a436f6e74656e742d4c656e6774683a203234380d0a0d0a
2016-02-24 14:52:33 DEBUG: [EFF871C0: 5028 < 192.168.78.1] HEX: 504f5354202f677072732f677072732e646c6c3f6461746120485454502f312e310d0a486f73743a2038312e312e3137312e3234350d0a436f6e74656e742d547970653a206170706c69636174696f6e2f62696e6172790d0a436f6e74656e742d4c656e6774683a203234380d0a0d0a
2016-02-24 14:53:02 DEBUG: [EFF871C0: 5028 < 192.168.78.1] HEX: 504f5354202f677072732f677072732e646c6c3f6461746120485454502f312e310d0a486f73743a2038312e312e3137312e3234350d0a436f6e74656e742d547970653a206170706c69636174696f6e2f62696e6172790d0a436f6e74656e742d4c656e6774683a203234380d0a0d0a
2016-02-24 14:53:02  WARN: [EFF871C0] error - IndexOutOfBoundsException (... < Mta6ProtocolDecoder:285 < ExtendedObjectDecoder:39 < ...)
2016-02-24 14:53:02  INFO: [EFF871C0] disconnected
2016-02-24 14:53:02  WARN: [EFF871C0] error - empty text - IllegalArgumentException (... < MainEventHandler:88 < *:77 < ... < ExtendedObjectDecoder:33 < ... < ReverseGeocoderHandler:48 < ...)
2016-02-24 14:53:02  WARN: [EFF871C0] error - empty text - IllegalArgumentException (...)
dehuu769 years ago

тут, как мне кажется, сервер просто не получил никаких данных от терминала, т.к. от сервера нет ни HTTP100 Continue, ни HTTP200 OK и, соответственно, данных в логе

dehuu769 years ago

На всякий случай проверил под линуксом. Поднял виртуалку (Mint 17), далее netbeans, git и т.п. по инструкции. В итоге, ситуация как на винде - после первого пакета от терминала сервер не отвечает HTTP CONTINUE. Терминал, соответственно, ничего не отсылает

Anton Tananaev9 years ago

На сколько я знаю если клиент (устройство) ожидает HTTP CONTINUE, то он должен отправлять заголовок "Expect: 100-continue". Этого не происходит.

dehuu769 years ago

Это, конечно, правильно. Но тут, по всей видимости, разработчики решили иначе. Я попробовал после первого пакета терминала принудительно послать ему HTTP Continue. И наконец-то терминал начинает посылать данные. Антон, скажите, в вашем коде, где что надо поправить под такую схему, я проверю под линуксом.