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客户端使用
- 下载APP客户端
手机客户端下载地址 //通过客户端,向Traccar服务器发送位置信息。
手机管理端下载地址 //通过管理端,可在手机上管理Traccar服务器。
不是所有手机都能使用。实测:鸿蒙系统不能使用,小米可以
- 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
- 正常可以查看到服务器接收的数据
参考:
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号