Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Teltonika avl data Help needed

Help
2012-03-26
2013-06-19
  • Hi all, I am trying to build server for Teltonika FM1100 in python.
    I managed to send back "01" and now device sends me avl data array. in every documentation they say that request should be

    080400000113fc208dff000f14f650209cca80006f00d60400040403010115
    0316030001460000015d0000000113fc17610b000f14ffe0209cc580006e00c705
    000104030101150316010001460000015e0000000113fc284945000f150f00209c
    d2000095010804000004030101150016030001460000015d0000000113fc267c5b
    000f150a50209cccc00093006804000004030101150016030001460000015b0004

    but  I receive

    \x00\x00\x00\x00\x00\x00\x07o\x082\x00\x00\x016Nx\xe6\xc0\x00\x0e\xc3\x12\xf0\x19\x1d\x8d\x00\x00\x9e\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Nx\x85\x18\x00\x0e\xc3\x13\x10\x19\x1d\x8c\x80\x00\x9d\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xaa\x00\x00\x00\x00\x016Nx#p\x00\x0e\xc3\x12\xa0\x19\x1d\x8b\xe0\x00\x9e\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xbd\x00\x00\x00\x00\x016Nw\xc1\xc8\x00\x0e\xc3\x13`\x19\x1d\x8c\x80\x00\xa3\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\nB.\xbd\x00\x00\x00\x00\x016Nw` \x00\x0e\xc3\x13\xc0\x19\x1d\x8d`\x00\xa7\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xbd\x00\x00\x00\x00\x016Nv\xfex\x00\x0e\xc3\x13\xc0\x19\x1d\x8d\xe0\x00\xa7\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Nv\x9c\xd0\x00\x0e\xc3\x13\xd0\x19\x1d\x8e`\x00\xa9\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x0cB.\xb3\x00\x00\x00\x00\x016Nv;(\x00\x0e\xc3\x13\xc0\x19\x1d\x8d\xe0\x00\xa7\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xaa\x00\x00\x00\x00\x016Nu\xd9\x80\x00\x0e\xc3\x13\xb0\x19\x1d\x8e \x00\xa8\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xa0\x00\x00\x00\x00\x016Nuw\xd8\x00\x0e\xc3\x13P\x19\x1d\x8e \x00\xa9\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Nu\x160\x00\x0e\xc3\x130\x19\x1d\x8e \x00\xa9\x00\x00\t\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xaa\x00\x00\x00\x00\x016Nt\xb4\x88\x00\x0e\xc3\x12\xb0\x19\x1d\x8d\xc0\x00\xab\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016NtR\xe0\x00\x0e\xc3\x12`\x19\x1d\x8d@\x00\xab\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xc6\x00\x00\x00\x00\x016Ns\xf18\x00\x0e\xc3\x12\xb0\x19\x1d\x8d\xa0\x00\xaa\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xd0\x00\x00\x00\x00\x016Ns\x8f\x90\x00\x0e\xc3\x12\xc0\x19\x1d\x8d\xe0\x00\xa8\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\x96\x00\x00\x00\x00\x016Ns-\xe8\x00\x0e\xc3\x13\xb0\x19\x1d\x8f@\x00\xab\x00\x00\t\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xb3\x00\x00\x00\x00\x016Nr\xcc@\x00\x0e\xc3\x14\x10\x19\x1d\x8e\xc0\x00\xac\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Nrj\x98\x00\x0e\xc3\x13\xf0\x19\x1d\x8e`\x00\xad\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Nr\x08\xf0\x00\x0e\xc3\x13\xc0\x19\x1d\x8e\x00\x00\xae\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Nq\xa7H\x00\x0e\xc3\x130\x19\x1d\x8d\xc0\x00\xaf\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xaa\x00\x00\x00\x00\x016NqE\xa0\x00\x0e\xc3\x120\x19\x1d\x8c@\x00\xae\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\nB.\xbd\x00\x00\x00\x00\x016Np\xe3\xf8\x00\x0e\xc3\x11\xe0\x19\x1d\x8c \x00\xae\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xc6\x00\x00\x00\x00\x016Np\x82P\x00\x0e\xc3\x11\xf0\x19\x1d\x8c \x00\xae\x00\x00\t\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xd0\x00\x00\x00\x00\x016Np \xa8\x00\x0e\xc3\x120\x19\x1d\x8d\xc0\x00\xaf\x00\x00\t\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xbd\x00\x00\x00\x00\x016No\xbf\x00\x00\x0e\xc3\x12p\x19\x1d\x8e\xa0\x00\xae\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016No]X\x00\x0e\xc3\x12\xb0\x19\x1d\x8d\xe0\x00\xae\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\nB.\xbd\x00\x00\x00\x00\x016Nn\xfb\xb0\x00\x0e\xc3\x13\x10\x19\x1d\x8d \x00\xad\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Nn\x9a\x08\x00\x0e\xc3\x13P\x19\x1d\x8c\xe0\x00\xac\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xbd\x00\x00\x00\x00\x016Nn8`\x00\x0e\xc3\x13\xc0\x19\x1d\x8c@\x00\xac\x00\x00\t\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xaa\x00\x00\x00\x00\x016Nm\xd6\xb8\x00\x0e\xc3\x13\xd0\x19\x1d\x8c@\x00\xae\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x0bB.\xb3\x00\x00\x00\x00\x016Nmu\x10\x00\x0e\xc3\x14\xa0\x19\x1d\x8c\xe0\x00\xb0\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xbd\x00\x00\x00\x00\x016Nm\x13h\x00\x0e\xc3\x14\x10\x19\x1d\x8d\x00\x00\xb1\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xbd\x00\x00\x00\x00\x016Nl\xb1\xc0\x00\x0e\xc3\x13\xe0\x19\x1d\x8d\x00\x00\xaa\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xa0\x00\x00\x00\x00\x016NlP\x18\x00\x0e\xc3\x14`\x19\x1d\x8e\x00\x00\xa4\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x0bB.\xaa\x00\x00\x00\x00\x016Nk\xeep\x00\x0e\xc3\x14\xf0\x19\x1d\x8d \x00\xb0\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xbd\x00\x00\x00\x00\x016Nk\x8c\xc8\x00\x0e\xc3\x14\xc0\x19\x1d\x8c\x80\x00\xb6\x00\x00\x0c\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Nk+ \x00\x0e\xc3\x14P\x19\x1d\x8c`\x00\xb4\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xbd\x00\x00\x00\x00\x016Nj\xc9x\x00\x0e\xc3\x140\x19\x1d\x8c@\x00\xb3\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\rB.\xaa\x00\x00\x00\x00\x016Njg\xd0\x00\x0e\xc3\x13\xb0\x19\x1d\x8b\xc0\x00\xb3\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xd0\x00\x00\x00\x00\x016Nj\x06(\x00\x0e\xc3\x14@\x19\x1d\x8b\xa0\x00\xb0\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xb3\x00\x00\x00\x00\x016Ni\xa4\x80\x00\x0e\xc3\x14P\x19\x1d\x8a@\x00\xae\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\rB.\xbd\x00\x00\x00\x00\x016NiB\xd8\x00\x0e\xc3\x14\x90\x19\x1d\x89\xe0\x00\xad\x00\x00\x0c\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xc6\x00\x00\x00\x00\x016Nh\xe10\x00\x0e\xc3\x14 \x19\x1d\x89`\x00\xae\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xa0\x00\x00\x00\x00\x016Nh\x7f\x88\x00\x0e\xc3\x13\x90\x19\x1d\x8b\x80\x00\xaf\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\tB.\xb3\x00\x00\x00\x00\x016Nh\x1d\xe0\x00\x0e\xc3\x13`\x19\x1d\x8a\x80\x00\xb4\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\nB.\xb3\x00\x00\x00\x00\x016Ng\xbc8\x00\x0e\xc3\x13p\x19\x1d\x8c@\x00\xad\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xbd\x00\x00\x00\x00\x016NgZ\x90\x00\x0e\xc3\x14\x80\x19\x1d\x8b\xc0\x00\xad\x00\x00\n\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xc6\x00\x00\x00\x00\x016Nf\xf8\xe8\x00\x0e\xc3\x140\x19\x1d\x8c@\x00\xad\x00\x00\n\x00\x01\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xbd\x00\x00\x00\x00\x016Nf\xd1\xd8\x00\x0e\xc3\x14P\x19\x1d\x8c \x00\xae\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xbd\x00\x00\x00\x00\x016Nf\xaa\xc8\x00\x0e\xc3\x14\x80\x19\x1d\x8b\xe0\x00\xae\x00\x00\x0b\x00\x00\x00\x03\x01E\x01\x02\xb6\x00\x08B.\xbd\x00\x002\x00\x00i\xe2

    I tried to unpack this with struct but without success.

     
  • trung
    trung
    2012-03-31

    08040000  is for FM2200, FM4200. Are you sure this can use for FM1100?
    You can use SmartSniff to direct capture TCP packet in hex format.
    x00\x00\x00\x00\x00\x00\x07o\x082\x00\x00\x016Nx is not understandable, from your own codes.

     
  • tea4two
    tea4two
    2012-03-31

    The FM series share the same protocol across 1xxx to 4xxx.

    BTW the template for Teltonika is quite complicated to create.
    You can use the module for Enterprise version or use my installation for a limited time of time for free to test your device.

    Best regards
    - Pierluigi

     
  • Alex
    Alex
    2013-02-04

    How can you send the string "01" to the device?
    i'm writing the code in c++ but the only thing that i receive managing the stream buffer is the IMEI code!
    thank you

     
  • trung
    trung
    2013-02-16

    you need to send byte '01' instead of string '01'

     
  • Alex
    Alex
    2013-02-18

    yeah, i'm trying to send the byte 01 but nothing happens!

     
  • Kiattichai
    Kiattichai
    2013-05-12

    Hi, I have the same problem with you. Have anyone found the cause of this problem please help ……

     
  • FAVus
    FAVus
    2013-05-17

    Do you too lazy to look through the protocol?

     
  • FAVus
    FAVus
    2013-05-17

    Read FMXXXX Protocols v2.7.pdf. See page 7….

     
    • Dmitry
      Dmitry
      2013-06-19

      Hello.
      could you give me description of this protocol in pdf?
      thanks in advance.

       
  • FAVus
    FAVus
    2013-05-20

    Example pieces of code, my server….

    class pktAutorization {
    int len = 0;
    String imei = "";
    String inum = "";
    boolean rezult = false;

    private String ZERO = "(.{2})";
    private String LEN = "(.{2})";
    private String IMEI = "(.{30})";
    private Pattern pLogin = Pattern.compile(ZERO + LEN + IMEI);

    public pktAutorization (String str) {

    if (str.length() <= 34) {
    Matcher m = pLogin.matcher(str);
    while (m.find()) {
    MatchResult mr = m.toMatchResult();
    len = Integer.parseInt(mr.group(2),16);
    imei = HexUtil.toHexFormat(HexUtil.toByteArray(mr.group(3)));
    rezult = CheckAuthorization();
    if (rezult)
    inum = tPoint.Get_iNum(db.getConnect(), imei);
    }
    }
    }

    public boolean CheckAuthorization() {
    boolean rezult = false;
    if (tPoint.Get_iNum(db.getConnect(), imei) != null)
    rezult=true;
    return rezult;
    }
    }

    class pktData {
    int len = 0;
    int codec_id = 0;
    int num_data = 0;
    String inum = "";
    List<tPoint> points = new ArrayList<tPoint>();

    String reply = "";
    boolean rezult = false;
    public int num_err = 0;

    private String ZERO              = "(.{8})";
    private String LEN                = "(.{8})";
    private String CODEC_ID           = "(.{2})";
    private String NUMBER_OF_DATA     = "(.{2})";
    private String TIMESTAMP = "(.{16})";
    private String PRIORITY     = "(.{2})";
    private String LONGITUDE     = "(.{8})";
    private String LATITUDE     = "(.{8})";
    private String ALTITUDE     = "(.{4})";
    private String ANGLE     = "(.{4})";
    private String SATELLITES     = "(.{2})";
    private String SPEED     = "(.{4})";
    private String CRC = "(.{8})";

    public pktData(String imei, String str) {
         long crc_contr = HexUtil.getCrc16(HexUtil.toByteArray(str.substring(16, str.length()-8)));

    if (Integer.parseInt(str.substring(str.length()-8),16) == crc_contr) {
    String point_list = null;
    Pattern pData = Pattern.compile(ZERO + LEN + CODEC_ID + NUMBER_OF_DATA + "(.{" + (str.length()-30) + "})"+ NUMBER_OF_DATA + CRC);
    Matcher m = pData.matcher(str);
    while (m.find()) {
    MatchResult mr = m.toMatchResult();
    len = Integer.parseInt(mr.group(2),16);
    codec_id = Integer.parseInt(mr.group(3),16);
    num_data = Integer.parseInt(mr.group(4),16);
    point_list = splitInParts(mr.group(5), ((len-3)/num_data)*2);
    }

    pData = Pattern.compile(TIMESTAMP + PRIORITY + LONGITUDE + LATITUDE + ALTITUDE + ANGLE + SATELLITES + SPEED + "(.{" + (((len-3)/num_data)*2-49) + "})");
    for(String point: point_list) {
    m = pData.matcher(point);
    while (m.find()) {
    MatchResult mr = m.toMatchResult();
    tPoint tek_point = new tPoint();

    tek_point.type_device = id_type_device;
    tek_point.imei = imei;
    tek_point.inum = inum;
    tek_point.date_receiv = new Date();
    tek_point.date = new Date(Long.parseLong(mr.group(1), 16));
    tek_point.lat = (double)Integer.parseInt(mr.group(3),16)/10000000;
    tek_point.lon = (double)Integer.parseInt(mr.group(4),16)/10000000;
    tek_point.altitude = (float)Integer.parseInt(mr.group(5),16);
    tek_point.course = (float)Integer.parseInt(mr.group(6),16);
    tek_point.sats = Integer.parseInt(mr.group(7),16);
    tek_point.speed = Integer.parseInt(mr.group(8),16);

    // System.out.println(tek_point.toString());
    points.add(tek_point);
    }
    }
    } else {
    num_err = 1; //  error CRC
    }
    }