MTA6 protocol device

dehuu76 10 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?

dehuu76 10 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

dehuu76 10 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 Tananaev 10 years ago

Please provide HEX messages from the log.

dehuu76 10 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

dehuu76 10 years ago

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

dehuu76 10 years ago

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

Anton Tananaev 10 years ago

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

dehuu76 10 years ago

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

Anton Tananaev 10 years ago

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

dehuu76 10 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 (...)
dehuu76 10 years ago

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

dehuu76 10 years ago

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

Anton Tananaev 10 years ago

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

dehuu76 10 years ago

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