151

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Запрещены только запятые и точки с запятой, т.к. эти символы являются разделителями частей сообщения.
Сейчас мы разрабатываем бинарный протокол, в котором эти ограничения будут отсутствовать.

kalaschnikow wrote:
kvdm wrote:

Если же нужно передать произвольный текст с запятыми и точками с запятой, то можно использоват сообщение типа M (#M#msg\r\n), страница 6 протокола.

Я не имел в виду текстовые сообщения. Речь идет именно о параметрах с оборудования. А оборудование не мое, т.е. теоретически может выдать что угодно. Как раз это и случилось smile Что собственно и привело к моему вопросу.
Поэтому хотелось бы иметь ПОЛНОЕ описание того, что текущая реализация Wialon IPS в качестве параметра жрет, а чего не жрет. По-человечески надо чтоб протокол (и собственно его реализация на сервере Wialon) определил какой-нибудь знак в качестве 'эскейпа'. Например, ту же обратную косую черту. 
Но как минимум все-таки нужно точно знать что запрещено в текущей реализации.  Для того чтобы это хотя бы сообщить клиенту. Чтоб он в случае проблем знал в чем дело и к Gurtam обращался.

Итак, запятые и точки с запятой запрещены. Это все? Или еще что-то? Кавычки? Апостроф?

152

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

kvdm wrote:

Запрещены только запятые и точки с запятой, т.к. эти символы являются разделителями частей сообщения.
Сейчас мы разрабатываем бинарный протокол, в котором эти ограничения будут отсутствовать.

Спасибо, ясно.  Что касается нового протокола, это конечно хорошо, но старый надо бы тоже почистить. Что делать тем, кто уже "подсел" на Wialon IPS? Да и кроме моей есть еще несколько реализаций клиентов базирующихся на Wialon IPS. И даже есть пара железок. Вот как раз тем, кто делает железки это очень пригодилось бы. Т.к. железки чаще всего привязывают к внешнему оборудованию.
Как вы считаете, стоит подать хотелку в соответствующий раздел форума?

153

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Приветствую!
Решил надосуге поэксперементировать с протоколом используя gps tag под андроид. Натравил его на собственный "сервер" (обычный netcat), и обнаружил, что первым сообщением приходит не "#L#....", а "#VL#15292;861353022694252;NA". В документации, которую удалось найти такая команда не описана. Использую документацию по протоколу версии 1.1, она устарела или протокол сменился?

154

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

dtoch, это специальная команда для авторизации GPSTag именно на сервере Wialon (а не на любом ином), она не документируется.

At the dark side of telematics...
155

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

shal wrote:

dtoch, это специальная команда для авторизации GPSTag именно на сервере Wialon (а не на любом ином), она не документируется.

Это вы зря. Недокументированные штучки подрывают доверие. Все равны, но некоторые "равнее". Пользователю, конечно, поровну, но вот разработчику смежных продуктов (как например мне) совсем не поровну. В итоге это выливается в специфическое отношение к системе. Некоторое недоверие, я бы сказал. Хотя, конечно, хозяин - барин. Ваш трекер, ваш портал. Вполне имеете право. Но вот это специфическое отношение оно потом так или иначе и пользователям передается. Это, конечно, чисто мое личное мнение.

Кстати, shal, если вы уже здесь smile На мой предыдущий вопрос насчет "эскейпинга" ответьте, пожалуйста. Куда написать, чтоб включили эту фичу в протокол?

156

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

kalaschnikow wrote:

Хотя, конечно, хозяин - барин. Ваш трекер, ваш портал. Вполне имеете право.

Конечно, нам совершенно неинтересно чтобы отличный бесплатный смартфонный трекер GPSTag использовался с другими системами мониторинга, отличными от Wialon.

kalaschnikow wrote:

Кстати, shal, если вы уже здесь smile На мой предыдущий вопрос насчет "эскейпинга" ответьте, пожалуйста. Куда написать, чтоб включили эту фичу в протокол?

Пишите на hw@gurtam.com и вообще пора перейти на бинарный протокол.

At the dark side of telematics...
157

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

shal wrote:

Конечно, нам совершенно неинтересно чтобы отличный бесплатный смартфонный трекер GPSTag использовался с другими системами мониторинга, отличными от Wialon.

Со своей колокольни я б сказал: "А не хрен его бесплатным было делать" smile Это, кстати, стоило мне кучу клиентов. А уж сколько потенциальных... Впрочем, это вид с моей колокольни, так сказать.

shal wrote:

Пишите на hw@gurtam.com и вообще пора перейти на бинарный протокол.

Спасибо за адрес и за ссылку (сразу подписался на тему). Насчет бинарного протокола, то я готов поспорить о преимуществах. Мне кажется, что разницы нет текстовый или бинарный протокол. Да, формат накладывает ограничения, но если все сконструировано правильно, то эти ограничения убираются и никаких проблем не должно быть. ( Но вот с текстовым протоколом зато удобнее отлаживать программу smile )
Кстати, я пробежал глазами по спецификации и нашел как минимум две вещи решенные в Wialon Binary по сравнению с Wialon IPS. Верной дорогой идете товарищи smile

158

Все вопросы по Wialon IPS

(edited by srvsub 12/03/2015 13:58:09)

Re: Все вопросы по Wialon IPS

Хотел бы задать вопрос по протоколу.
Интересуют параметры сообщения.
Мне приходят по протоколу WialonIPS от сервера wialon ряд названий параметров, которые я не знаю как сопоставить в моем ПО с бизнес логикой. Можно узнать, у вас уникальные параметры (названия параметров) в рамках всей системы, или они к каждому виду оборудования индивидуально заводятся.
Например, протокол Нависет имеет такой список параметров , а Телтоника другой и т.д.
В приведенных примерах есть одинаковые названия, для примера, "pwr_ext" - это параметр во всех протоколах будет обозначать напряжение бортовой сети или тот же "temp1" или "fuel1" - во всех протоколах будет обозначать одно и то же, т.е. температуру и уровень топлива?

Дело в том, что я не знаю тип прибора, который мне приходит в протоколе WialonIPS, а приходит много чего. Как мне сопоставить параметры с бизнес логикой. Может есть сквозное описание всех параметров в рамках всех протоколов, если они на вашей стороне уникальные или отправьте в документацию, где это можно уточнить. На сервере Wialon есть более 700 разных протоколов, выбирать и сопоставлять можно долго, хотелось бы упростить задачу.

Вот к примеру то, что я на данный момент не знаю с чем сопоставить и список постоянно меняется:

stats adc0 action accZ acc bat_voltage accY accX acc_trigger c0 current_profile battery granit_alarm_info
c1 gsm company_code gsm_status c2 gsm_signal delta_msg pwr_int  c3 height gsm_operator soft_version call
io_caused odometer temp1 GLX movement_sens power temp2 gprs_state msg_code soft temp3 gsm_power odometr
temp_int track odo packet_src valid vib  odo_track parking vib_count sos pcb_temp

и т.д.
В этом списке неопознанных параметрах есть 4 интересных: "odometer" и "odometr" и "odo" и еще "odo_track parking"
Сколько таких вариантов может быть и как их распознать?

159

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Считаю что задал вполне конкретный вопрос.
Неужели сложно ответить?!

Если Gurtam не отвечает, то кто-нибудь из сообщества поделитесь вашими подходами.

160

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

srvsub wrote:

Считаю что задал вполне конкретный вопрос.
Неужели сложно ответить?!

Если Gurtam не отвечает, то кто-нибудь из сообщества поделитесь вашими подходами.

Выскажу своё IMHO.
WialonIPS как ретранслятор просто передаёт вам то, что принял от блока. Один к одному. Просто из кучи протоколов унифицируется в один, чтобы вам кучу приёмников не писать. Но раскладыванием по полочкам входящих параметров ретранслятор не занимается. На своей приёмной стороне по ID прибора вы должны сопоставить его тип и распарсивание параметров по назначению.

161

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Я это прекрасно понимаю.
Вопрос в основном был в понимании параметров. Как я уже выше говорил, я не знаю тип прибора. В этом моя основная проблема.
Планирую сделать парсинг всех протоколов на сайте в разделе оборудование. и собрать все настройки, какие только могут быть для всех протоколов. Интересует пересечение параметров для разных протоколов, т.е. ситуации, когда они одинаковые. Я могу полагаться на допущение, что они выполняют одну и ту же роль или значения.
И еще надеялся узнать "кухню" gurtam, как у них эти параметры формируются, т.е. это уникальный список в рамках всех протоколов, или индивидуальный для каждого.

В любом случае спасибо, что поделились своими мыслями.

162

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Учитывая историческую совместимость все параметры и их значения уникальны для каждого.
С предыдущего Вашего сообщения появилась идея сделать возможность опцию ретрансляции датчиков, не параметров. То есть слать заранее известные имена параметров с единым значением независимо от типа исходного трекера, а согласно его настройкам в Wialon. По срокам реализации - пока сообщить не могу, в плане работ пока нет.

At the dark side of telematics...
163

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Всем доброго времени суток. На досуге пишу приемник по протоколу Wialon IPS. Отрабатываю на эмуляторе и все замечательно: прибор залогинился, передал параметры в пакете, получил ответ. А вот с ретранслятором протокола беда, на сообщения об отклонении авторизации или что структура пакета не верна он не реагирует, сыпет все пакеты. При том, он шлет в одном сообщении несколько пакетов одновременно, бывает пакеты оторваны, а следующая посылка начинается с куска предыдущего пакета. Как реагировать на такие моменты. Такое особенно возникает, если включить передачу истории за предыдущий период...

164

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

shal wrote:

появилась идея сделать возможность опцию ретрансляции датчиков, не параметров

Параметры тоже оставьте: не все они обрабатываются датчиками, а конечному потребителю могут быть нужны.

165

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

nichollascarter wrote:

Всем доброго времени суток. На досуге пишу приемник по протоколу Wialon IPS. Отрабатываю на эмуляторе и все замечательно: прибор залогинился, передал параметры в пакете, получил ответ. А вот с ретранслятором протокола беда, на сообщения об отклонении авторизации или что структура пакета не верна он не реагирует, сыпет все пакеты. При том, он шлет в одном сообщении несколько пакетов одновременно, бывает пакеты оторваны, а следующая посылка начинается с куска предыдущего пакета. Как реагировать на такие моменты. Такое особенно возникает, если включить передачу истории за предыдущий период...

Где-то уже писалось, что ретранслятор не пытается перепослать непринятые пакеты. В первой посылке после установления TCP-коннекта отправляется команда логина и от одного до нескольких пакетов данных. По принципу "отправил и забыл". Если вы логин приняли, то сессия остаётся живой и последующие данные пуляются в ней-же. Если вы логин не приняли, коннект рвётся (вами, с потерей того куска данных, которые были в этой посылке), но данные на передачу есть ещё, поэтому сразу устанавливается новый коннект, в котором опять команда логина и ещё кусочек данных.
Разрыва сообщения на несколько коннектов не встречал. Ищите где-то софтовую ошибку. Разбиение пакета на куски внутри одного коннекта может быть обусловлено особенностями реализации сокета в применённом вами языке (особенно под трассировкой такое бывает). Это надо обрабатывать. Например, накапливать принимаемое в некий буфер и проверять наличие в нём символов 0D0A.

166

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

BoolAB wrote:

Ищите где-то софтовую ошибку. Разбиение пакета на куски внутри одного коннекта может быть обусловлено особенностями реализации сокета в применённом вами языке (особенно под трассировкой такое бывает). Это надо обрабатывать. Например, накапливать принимаемое в некий буфер и проверять наличие в нём символов 0D0A.

Похоже на мою ошибку, я впервые с такой задачей столкнулся.  Размер буфера 1024 байт, не знаю как выравнять размер пакетов...

167

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

nichollascarter wrote:

Похоже на мою ошибку, я впервые с такой задачей столкнулся.  Размер буфера 1024 байт, не знаю как выравнять размер пакетов...

Дописывайте приходящий буфер к другому, более крупному, и ищите в нём байты 0x0D 0x0A, если найдены - обрабатывайте крупный буфер и очищайте до найденных байтов.
Крупный буфер должен работать как очередь. Лимит размера можно подобрать опытным путём

Developer
flespi team
168

Все вопросы по Wialon IPS

(edited by nichollascarter 26/03/2015 12:23:41)

Re: Все вопросы по Wialon IPS

kial wrote:

Дописывайте приходящий буфер к другому, более крупному, и ищите в нём байты 0x0D 0x0A, если найдены - обрабатывайте крупный буфер и очищайте до найденных байтов.
Крупный буфер должен работать как очередь. Лимит размера можно подобрать опытным путём

Попытался интерпретировать ваши слова, можете сказать, я двигаюсь в правильном направлении?
data = new byte[1024];
                        string message = "";
                            while ((recv = ns.Read(data, 0, data.Length)) > 0)
                            {
                                message += Encoding.ASCII.GetString(data, 0, recv);
                                if (message.IndexOf("\r\n") >= 0 || message.Length > 4096)
                                {
                                    break;
                                }
                            }

169

Все вопросы по Wialon IPS

(edited by kial 26/03/2015 12:57:12)

Re: Все вопросы по Wialon IPS

nichollascarter wrote:

Попытался интерпретировать ваши слова, можете сказать, я двигаюсь в правильном направлении?
data = new byte[1024];
                        string message = "";
                            while ((recv = ns.Read(data, 0, data.Length)) > 0)
                            {
                                message += Encoding.ASCII.GetString(data, 0, recv);
                                if (message.IndexOf("\r\n") >= 0 || message.Length > 4096)
                                {
                                    break;
                                }
                            }

Да, можно так. Только разделите ситуации, когда длина строки вышла за лимит и когда найден концевик \r\n

Когда длина превысила лимит - лучше всего наверно сделать дисконнект. Только размер буфера сделайте хотя бы 30 килобайт, и в идеале надо работать с byte[] вместо string.

А когда найден концевик - из message нужно вырезать начало до концевика, обработать и повторить пока концевик встречается

Developer
flespi team
170

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

nichollascarter wrote:

я двигаюсь в правильном направлении?

Да, как-то так.
Вылетев из цикла разбираете всю message пока в ней встречаются "\r\n": не забываем, что в одном послании могут пройти несколько команд. И возвращаетесь к вашему while ((recv = ns.Read(data, 0, data.Length)) > 0)....

171

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

BoolAB wrote:

не забываем, что в одном послании могут пройти несколько команд.

Имеете ввиду, я должен отправить столько ответов транслятору, сколько в итоге получилось пакетов из message?

172

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

nichollascarter wrote:
BoolAB wrote:

не забываем, что в одном послании могут пройти несколько команд.

Имеете ввиду, я должен отправить столько ответов транслятору, сколько в итоге получилось пакетов из message?

Конечно! И в том порядке, в котором сообщения были в пакете.
Ну, это если "по-правильному". В нашем случае: http://forum.gurtam.com/viewtopic.php?pid=78018#p78018

173

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Спасибо Вам за помощь, очень помогли. Но хотел бы еще уточнить, есть ли какой то максимальный размер сообщения, который может отправить ретранслятор, если включить ретрансляцию истории?

174

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

nichollascarter wrote:

есть ли какой то максимальный размер сообщения, который может отправить ретранслятор, если включить ретрансляцию истории

Из ограничений нашел только такие цифры:
>>За один пакет #B# можно передать до 500 сообщений. - где-то в этой ветке форума. Про размер одного сообщения не говорится.
и
>>Рекомендуемый размер блока - до 50 килобайт. - Это про передачу изображения, из мануала.

175

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

BoolAB wrote:

>>Рекомендуемый размер блока - до 50 килобайт. - Это про передачу изображения, из мануала.

Я к чему задал этот вопрос: тестирую снова же на истории и получаю оборванный пакет, а ошибку так и не могу найти, массив хранения имеет достаточный размер, стринговая переменная, куда строки складирую,  должна хранить такой объем...