Это протокол GT06. Порт - 5023.
Порт в предыдущем комментарии - это для Traccar. Для OpenGTS не знаю. Но в крайнем случае всегда можно интегрировать Traccar с OpenGTS.
Вчера целый день пытался сдружить traccar c opengts никак не могу подключится к SQL
перепробовал все драйвера с сайта Microsoft
tracker-server.log
2016-01-11 15:43:22 WARN: Недопустимое имя объекта "server". - SQLServerException (... < QueryBuilder:376 < *:275 < DataManager:327 < PermissionsManager:55 < ...) 2016-01-11 15:43:22 WARN: Недопустимое имя объекта "positions". - SQLServerException (... < QueryBuilder:376 < DataManager:322 < ConnectionManager:55 < ...) 2016-01-11 15:43:22 INFO: Starting server... 2016-01-11 15:43:24 INFO: [9A946014] connected 2016-01-11 15:43:24 DEBUG: [9A946014: 5023 < 192.168.1.253] HEX: 2a48512c3335353438383032303131333437342c56312c3132343332332c412c353731372e39323435392c4e2c30343735312e33383537332c452c302e30312c302c3131303131362c46464646464646462c66612c31342c313065662c65626134230d0a 2016-01-11 15:43:38 INFO: [2D9D9C90] connected 2016-01-11 15:43:38 DEBUG: [2D9D9C90: 5023 < 192.168.1.253] HEX: 78780d01035288707188432800063c1c0d0a 2016-01-11 15:43:38 WARN: Недопустимое имя объекта "devices". - SQLServerException (... < QueryBuilder:376 < DataManager:230 < *:118 < *:138 < BaseProtocolDecoder:47 < ...)
Антон, помогите мне в этой проблеме пожалуйста.
У вас OpenGTS на MS SQL работает?
config
<!-- DATABASE CONFIG --> . . . <entry key='database.createSchema'> CREATE TABLE [user] ( id INT PRIMARY KEY IDENTITY(1,1), name VARCHAR(1024) NOT NULL, email VARCHAR(256) NOT NULL UNIQUE, hashedPassword VARCHAR(1024) NOT NULL, salt VARCHAR(1024) DEFAULT '' NOT NULL, readonly BIT DEFAULT 0 NOT NULL, admin BIT DEFAULT 0 NOT NULL, map VARCHAR(1024) DEFAULT 'osm' NOT NULL, language VARCHAR(1024) DEFAULT 'en' NOT NULL, distanceUnit VARCHAR(1024) DEFAULT 'km' NOT NULL, speedUnit VARCHAR(1024) DEFAULT 'kmh' NOT NULL, latitude FLOAT DEFAULT 0 NOT NULL, longitude FLOAT DEFAULT 0 NOT NULL, zoom INT DEFAULT 0 NOT NULL); CREATE TABLE [device] ( id INT PRIMARY KEY IDENTITY(1,1), name VARCHAR(1024) NOT NULL, uniqueId VARCHAR(256) NOT NULL UNIQUE, status VARCHAR(1024), lastUpdate DATETIME, positionId INT, dataId INT); CREATE TABLE user_device ( userId INT NOT NULL, deviceId INT NOT NULL, [read] BIT DEFAULT 1 NOT NULL, write BIT DEF nId) REFERENCES position(id); ALTER TABLE device ADD FOREIGN KEY (dataId) REFERENCES data(id); CREATE TABLE server ( id INT PRIMARY KEY IDENTITY(1,1), registration BIT NOT NULL, latitude FLOAT NOT NULL, longitude FLOAT NOT NULL, zoom INT NOT NULL); CREATE TABLE traccar ( id INT PRIMARY KEY IDENTITY(1,1)); </entry> <entry key='database.selectServers'> SELECT * FROM server; </entry> <entry key='database.insertServer'> INSERT INTO server (registration, latitude, longitude, zoom) VALUES (:registration, :latitude, :longitude, :zoom); </entry> <entry key='database.updateServer'> UPDATE server SET registration = :registration WHERE id = :id; </entry> <entry key='database.loginUser'> SELECT * FROM [user] WHERE email = :email; </entry> <entry key='database.selectUsersAll'> SELECT * FROM "user"; </entry> <entry key='database.insertUser'> INSERT INTO [user] (name, email, hashedPassword, salt, admin) VALUES (:name, :email, :hashedPassword, :salt, :admin); AULT 1 NOT NULL, FOREIGN KEY (userId) REFERENCES [user](id) ON DELETE CASCADE, FOREIGN KEY (deviceId) REFERENCES device(id) ON DELETE CASCADE); CREATE INDEX user_device_user_id ON user_device(userId); CREATE TABLE position ( id INT PRIMARY KEY IDENTITY(1,1), protocol VARCHAR(1024), deviceId INT NOT NULL, serverTime DATETIME NOT NULL, deviceTime DATETIME NOT NULL, fixTime DATETIME NOT NULL, valid BIT NOT NULL, latitude FLOAT NOT NULL, longitude FLOAT NOT NULL, altitude FLOAT NOT NULL, speed FLOAT NOT NULL, course FLOAT NOT NULL, address VARCHAR(1024), other VARCHAR(MA NOT NULL, FOREIGN KEY (deviceId) REFERENCES device(id) ON DELETE CASCADE); CREATE TABLE data ( id INT PRIMARY KEY IDENTITY(1,1), protocol VARCHAR(1024), deviceId INT NOT NULL, serverTime DATETIME NOT NULL, deviceTime DATETIME NOT NULL, other VARCHAR(MA NOT NULL, FOREIGN KEY (deviceId) REFERENCES device(id)); ALTER TABLE device ADD FOREIGN KEY (positio 'database.linkDevice'> INSERT INTO user_device (userId, deviceId) VALUES (:userId, eviceId); </entry> <entry key='database.selectPositions'> SELECT * FROM position WHERE deviceId = eviceId AND fixTime BETWEEN :from AND :to; </entry> <entry key='database.insertPosition'> INSERT INTO position (deviceId, serverTime, deviceTime, fixTime, valid, latitude, longitude, altitude, speed, course, address, other) VALUES (eviceId, GETDATE(), :time, :time, :valid, :latitude, :longitude, :altitude, :speed, :course, :address, :other); </entry> <entry key='database.selectLatestPositions'> SELECT * FROM position WHERE id IN (SELECT positionId FROM device); </entry> <entry key='database.updateLatestPosition'> UPDATE device SET positionId = :id WHERE id = eviceId; </entry> </entry> <entry key='database.updateUser'> UPDATE [user] SET name = :name, email = :email, admin = :admin WHERE id = :id; </entry> <entry key='database.updateUserPassword'> UPDATE [user] SET hashedPassword = :hashedPassword, salt = :salt WHERE id = :id; </entry> <entry key='database.deleteUser'> DELETE FROM [user] WHERE id = :id; </entry> <entry key='database.getPermissionsAll'> SELECT userId, deviceId FROM user_device; </entry> <entry key='database.selectDevicesAll'> SELECT * FROM device; </entry> <entry key='database.selectDevices'> SELECT * FROM device d INNER JOIN user_device ud ON d.id = ud.deviceId WHERE ud.userId = :userId; </entry> <entry key='database.insertDevice'> INSERT INTO device (name, uniqueId) VALUES (:name, :uniqueId); </entry> <entry key='database.updateDevice'> UPDATE device SET name = :name, uniqueId = :uniqueId WHERE id = :id; </entry> <entry key='database.deleteDevice'> DELETE FROM device WHERE id = :id; </entry> <entry key=
sql 2008 r2
traccar 3.3
Не понял что это за конфигурация и откуда она взялась в версии 3.3.
испробовал кучу вариантов, в том числе официальный, не получалось. этот вариант нашел на каком-то форуме. как правильно прописать все
Я советую переустановить все и использовать официальный вариант. Если что-то не работает, давайте разберемся. То что вы взяли с форума либо некорректно либо уже не актуально.
в официальном варианте mySQL а у меня mssql, вы советуете перейти на mySQL?
Значит нужно сделать следующее:
Сначала выполнить инструции по играции с OpenGTS (https://www.traccar.org/opengts/)
Потом выполнить инструции для MS SQL кроме изменения SQL запросов (https://www.traccar.org/ms-sql/)
Первая инструкция предполагает, что OpenGTS Работает на MySQL, верно? Но у меня OpenGTS работает на MSSQL. Соответственно по этой инструкции я могу в настройках добавить только запросы?
Мои шаги слудующие:
Есть работающий сервер OpenGTS на MSSQL
В настройках Traccar я добавляю подключение к серверу MSSQL
<entry key='database.driverFile'>C:\Program Files (x86)\Traccar\lib\sqljdbc41.jar</entry>
<entry key='database.driver'>com.microsoft.sqlserver.jdbc.SQLServerDriver</entry>
<entry key='database.url'>jdbc:sqlserver://localhost;database=gts;user=***;password=***;</entry>
<entry key='database.user'>***</entry>
<entry key='database.password'>***</entry>
Дальше? Делать как в первой инструкции?
Remove all SQL queries from the config (from database.createSchema to database.updateLatestPosition)
Add OpenGTS-specific SQL queries
Да, из первой инструкции берите все за исключением всего что касается подключения к базе данных. Из второй берите настройки для соединения с базой.
Антон, подскажите по поводу инструкции по интеграции с OpenGTS
По инструкции, необходимо удалить из конфигурационного файла все SQL запросы, начиная database.createSchema и заканчивая database.updateLatestPosition
Вот мой конфиг, он идет по умолчанию, не измененный. В нем нет database.createSchema. Что именно в нем удалить?
<entry key='database.changelog'>C:\Program Files (x86)\Traccar\data\db.changelog-master.xml</entry>
<entry key='database.selectServers'>
SELECT * FROM server;
</entry>
<entry key='database.updateServer'>
UPDATE server SET
registration = :registration,
readonly = :readonly,
map = :map,
bingKey = :bingKey,
mapUrl = :mapUrl,
language = :language,
distanceUnit = :distanceUnit,
speedUnit = :speedUnit,
latitude = :latitude,
longitude = :longitude,
zoom = :zoom
WHERE id = :id;
</entry>
<entry key='database.loginUser'>
SELECT * FROM users
WHERE email = :email;
</entry>
<entry key='database.selectUser'>
SELECT * FROM users
WHERE id = :id;
</entry>
<entry key='database.selectUsersAll'>
SELECT * FROM users;
</entry>
<entry key='database.insertUser'>
INSERT INTO users (name, email, hashedPassword, salt, admin)
VALUES (:name, :email, :hashedPassword, :salt, :admin);
</entry>
<entry key='database.updateUser'>
UPDATE users SET
name = :name,
email = :email,
admin = :admin,
map = :map,
language = :language,
distanceUnit = :distanceUnit,
speedUnit = :speedUnit,
latitude = :latitude,
longitude = :longitude,
zoom = :zoom
WHERE id = :id;
</entry>
<entry key='database.updateUserPassword'>
UPDATE users SET hashedPassword = :hashedPassword, salt = :salt WHERE id = :id;
</entry>
<entry key='database.deleteUser'>
DELETE FROM users WHERE id = :id;
</entry>
<entry key='database.getPermissionsAll'>
SELECT userId, deviceId FROM user_device;
</entry>
<entry key='database.selectDevicesAll'>
SELECT * FROM devices;
</entry>
<entry key='database.selectDevices'>
SELECT * FROM devices d INNER JOIN user_device ud ON d.id = ud.deviceId WHERE ud.userId = :userId;
</entry>
<entry key='database.insertDevice'>
INSERT INTO devices (name, uniqueId) VALUES (:name, :uniqueId);
</entry>
<entry key='database.updateDevice'>
UPDATE devices SET name = :name, uniqueId = :uniqueId WHERE id = :id;
</entry>
<entry key='database.updateDeviceStatus'>
UPDATE devices SET status = :status, lastUpdate = :lastUpdate WHERE id = :id;
</entry>
<entry key='database.deleteDevice'>
DELETE FROM devices WHERE id = :id;
</entry>
<entry key='database.linkDevice'>
INSERT INTO user_device (userId, deviceId) VALUES (:userId, :deviceId);
</entry>
<entry key='database.unlinkDevice'>
DELETE FROM user_device WHERE userId = :userId AND deviceId = :deviceId;
</entry>
<entry key='database.selectPositions'>
SELECT * FROM positions WHERE deviceId = :deviceId AND fixTime BETWEEN :from AND :to ORDER BY fixTime;
</entry>
<entry key='database.insertPosition'>
INSERT INTO positions (deviceId, protocol, serverTime, deviceTime, fixTime, valid, latitude, longitude, altitude, speed, course, address, attributes)
VALUES (:deviceId, :protocol, :now, :time, :time, :valid, :latitude, :longitude, :altitude, :speed, :course, :address, :attributes);
</entry>
<entry key='database.selectLatestPositions'>
SELECT * FROM positions WHERE id IN (SELECT positionId FROM devices);
</entry>
<entry key='database.updateLatestPosition'>
UPDATE devices SET positionId = :id WHERE id = :deviceId;
</entry>
Здравствуйте, извините что пишу сюда.
у меня поднят сервер OpenGTS, с английским у меня беда, поэтому там вопросы задавать, проблемно
бес попутал купить вот эту китайскую хрень, в количестве 3 шт.
http://www.aliexpress.com/item/Factory-Price-Vehicle-Car-GPS-SMS-GPRS-Tracker-Real-Time-Tracking-Device-Syatem-Remote-TK103B-51026/32512667554.html
у меня такое подозрение - это кастрат, (работает только через СМС)
что делал:
пакеты на сервер идут
но не один НЕХ редактор не декодирует
помогите советом...