< >
Home » Ubuntu系统入门教程 » ubuntu系统入门教程-搭建traccar开源GPS服务器

ubuntu系统入门教程-搭建traccar开源GPS服务器

文章说明

  • 介绍如何搭建基于ubuntu版本的traccar开源GPS服务器,并通过python来使用
  • 环境:ubuntu22.04 + python3.10

Traccar简介

  • Traccar是一款开源的可以跟踪GPS设备位置的应用,服务端支持Windows-x64、Linux-x64、Linux-ARM。客户端支持GPS设备、Android设备、IOS设备。搭建Traccar服务器后,通过在客户端安装APP,实现位置的跟踪收集。可用于追踪手机、平板等移动设备,安装在安卓车机中,也可实现对汽车位置的追踪。
  • 放行端口:8082 web管理,5055 app传送位置信息
  • 注意:5055端口为Android、IOS客户端使用的端口,专业GPS设备对应的协议、端口请到官网查看

Traccar搭建

  • 使用rcm安装
#安装rcm
curl https://www.ncnynl.com/rcm.sh | bash -
#安装traccar
rcm -s install_traccar
  • 安装之后启动
sudo systemctl start traccar
  • 这里为了方便测试,使用官方的DEMO来测试,DEMO地址可以参考网址

  • 目前选择demo4.traccar.org,如果是本地,改为本地的IP地址即可。

  • 在浏览器输入“http://demo4.traccar.org:8082”,看到如下界面说明安装成功, 注册账号,即可登录。

  • 配置GPS,点击+号,如图

请输入图片描述

  • 输入名称和ID,指定GPS唯一ID和GPS名称

请输入图片描述

APP客户端使用

    1. 下载APP客户端
  • 手机客户端下载地址 //通过客户端,向Traccar服务器发送位置信息。

  • 手机管理端下载地址 //通过管理端,可在手机上管理Traccar服务器。

  • 不是所有手机都能使用。实测:鸿蒙系统不能使用,小米可以

    1. APP配置

请输入图片描述

  • 填写
设备编码:将此处的编码填入服务器端,也可以自定义编码,与服务端保持一致即可。比如上面填写的1991
服务器地址:http://demo4.traccar.org:5055
定位频率:设置发送位置信息的间隔时间(秒)
其他的按需配置。
  • 最后打开定位开关就可以了

TraccarDataPopulator库使用

  • 安装TraccarDataPopulator
pip3 install TraccarDataPopulator
  • 新建test_v2.py, 上传经纬度数据。
  • 根据2个坐标点来实现自动导航
  • 内容如下:
from TraccarDataPopulator.Populator import Populator
populator = Populator('http://demo4.traccar.org:5055','1991',5)
populator.populateData([[-8.2257,113.2190],[-8.2258,113.2190],[-8.1260,113.2190,10]])
populator.populateDataBetweenTwoLocationFollowingRoad(112.78532737805308,-7.38007105,105.4596077,-7.0249592)
  • 运行代码
$ python3 test_v2.py 
Send data to:http://demo4.traccar.org:5055
1734937665.797054
{'id': '1991', 'lat': -8.2257, 'lon': 113.219, 'timestamp': 1734937665, 'speed': 5}
1734937669.4624684
{'id': '1991', 'lat': -8.2258, 'lon': 113.219, 'timestamp': 1734937669, 'speed': 5}
1734937672.6165426
{'id': '1991', 'lat': -8.126, 'lon': 113.219, 'timestamp': 1734937672, 'speed': 10}
Send data to:http://demo4.traccar.org:5055
1734937678.4139194
{'id': '1991', 'lat': -7.384112, 'lon': 112.779105, 'timestamp': 1734937678, 'speed': 5}
1734937681.5399194
{'id': '1991', 'lat': -7.384127, 'lon': 112.778735, 'timestamp': 1734937681, 'speed': 5}
1734937684.7406375
{'id': '1991', 'lat': -7.383185, 'lon': 112.770204, 'timestamp': 1734937684, 'speed': 5}
1734937688.066534
{'id': '1991', 'lat': -7.383307, 'lon': 112.769204, 'timestamp': 1734937688, 'speed': 5}
1734937691.411532
{'id': '1991', 'lat': -7.3764, 'lon': 112.73263, 'timestamp': 1734937691, 'speed': 5}
1734937694.5750482
{'id': '1991', 'lat': -7.372408, 'lon': 112.728176, 'timestamp': 1734937694, 'speed': 5}
1734937698.021145
{'id': '1991', 'lat': -7.359048, 'lon': 112.729198, 'timestamp': 1734937698, 'speed': 5}
1734937701.2922642
{'id': '1991', 'lat': -7.355844, 'lon': 112.7291, 'timestamp': 1734937701, 'speed': 5}
1734937704.5118618
{'id': '1991', 'lat': -7.347686, 'lon': 112.727832, 'timestamp': 1734937704, 'speed': 5}
1734937708.209009
{'id': '1991', 'lat': -7.345663, 'lon': 112.728465, 'timestamp': 1734937708, 'speed': 5}
1734937711.5666258
{'id': '1991', 'lat': -7.318141, 'lon': 112.733508, 'timestamp': 1734937711, 'speed': 5}
1734937714.9296458
{'id': '1991', 'lat': -7.308202, 'lon': 112.73544, 'timestamp': 1734937714, 'speed': 5}
1734937718.118551
{'id': '1991', 'lat': -7.30283, 'lon': 112.736838, 'timestamp': 1734937718, 'speed': 5}
1734937721.7395358
  • 如图:

请输入图片描述

  • 打开DEMO网址,可以看到坐标点再不断移动。

pytraccar库使用

  • 安装pytraccar
pip3 install pytraccar
  • 新建test_v4.py, 内容如下:
"""Example usage of pytraccar."""
#for pytraccar-2.0.0

import asyncio
import logging
import os

import aiohttp

from pytraccar.pytraccar import ApiClient

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
    handlers=[logging.StreamHandler()],
)

os.environ["TRACCAR_HOST"]="demo4.traccar.org"
os.environ["TRACCAR_PORT"]="80"
os.environ["TRACCAR_USERNAME"]="用自己注册的用户名替代"
os.environ["TRACCAR_PASSWORD"]="自己密码替代"

async def test() -> None:
    """Example usage of pytraccar."""
    async with aiohttp.ClientSession(
        cookie_jar=aiohttp.CookieJar(unsafe=True)
    ) as client_session:
        client = ApiClient(
            host=os.environ["TRACCAR_HOST"],
            port=os.environ.get("TRACCAR_PORT", 8082),
            username=os.environ["TRACCAR_USERNAME"],
            password=os.environ["TRACCAR_PASSWORD"],
            client_session=client_session,
        )
        print(client)

        server = await client.get_server()

        logging.info(
            "Connected to Traccar server (%s:%s) which is running version %s",
            os.environ["TRACCAR_HOST"],
            os.environ.get("TRACCAR_PORT", 8082),
            server["version"],
        )


asyncio.run(test())
  • 运行测试
$ python3 test_v4.py 
<pytraccar.pytraccar.client.ApiClient object at 0x721733fe5f90>
2024-12-23 14:25:19 [INFO] Connected to Traccar server (demo4.traccar.org:80) which is running version 6.5
  • 登录网址,并获取服务器版本信息

php使用

  • 新建代码test.php
  • 内容如下:
<?php
// 设置 URL
$url = 'http://demo4.traccar.org:5055';

// 待发送的数据(例如多个坐标点)
$dataArray = [
    ['id' => '1991', 'lat' => '-8.2257', 'lon' => '113.219', 'timestamp' => '1735006610', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.2258', 'lon' => '113.219', 'timestamp' => '1735006613', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    ['id' => '1991', 'lat' => '-8.1260', 'lon' => '113.219', 'timestamp' => '1735006616', 'speed' => '5'],
    // 可以继续添加更多的数据
];

// 使用循环发送请求
foreach ($dataArray as $data) {
    $ch = curl_init();

    // 设置 cURL 请求的选项
    curl_setopt($ch, CURLOPT_URL, $url);  // 目标 URL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  // 返回响应而不是直接输出
    curl_setopt($ch, CURLOPT_POST, true);  // 设置为 POST 请求
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));  // 表单数据
    
    // 启用调试信息
    curl_setopt($ch, CURLOPT_VERBOSE, true);

    // 执行 cURL 请求并获取响应
    $response = curl_exec($ch);

    // 检查是否有错误
    if(curl_errno($ch)) {
        echo 'Error: ' . curl_error($ch) . "\n";
    } else {
        // 输出返回的响应内容
        echo "Response: " . $response . "\n";

        // 获取更多的调试信息
        $info = curl_getinfo($ch);
        echo "Request Info: \n";
        print_r($info);
    }

    // 延时设置,避免请求过快
    sleep(2);  // 延时 2 秒

    // 关闭 cURL 句柄
    curl_close($ch);
}
?>
  • 运行代码
php test.php
  • 可以在网址查看日志信息https://demo4.traccar.org/reports/logs
  • 正常可以查看到服务器接收的数据

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ubuntu系统入门教程, 开源gpsfu'wu'qi, traccar gps