netAIS
v. 1.5
Обмен AIS-подобными сообщениями с координатами и сопутствующей информацией через Интрнет между участниками выделенной группы. Для взаимодействия не требуется интернет-сервер с реальным адресом.
Удобно для организации коллективного плавания, соревнований, рыбалки.
Программное обеспечение использует TOR как среду коммуникации, и функционирует и через мобильный интернет и через публичные точки доступа wi-fi без дополнительных настроек.
Координаты программное обеспечение получает от gpsd или Signal K.
Сообщения netAIS могут быть восприняты любым оборудованием или программным обеспечением, принимающим сообщения AIS по локальной сети.
Возможности
- Создание одной выделенной группы
- Участие в любом количестве выделенных групп
- Веб-интерфейс на русском и английском языках
Технические детали
Комплект программного обеспечения содержит клиентскую часть -- собственно для обмена сообщениями, и серверную часть, обеспечивающую эту возможность. Один сервер обслуживает одну выделенную группу и является скрытым сервисом TOR. Если вы хотите организовать собственную группу, .onion адрес этого сервиса надо передать потенциальным членам группы каким-нибудь сторонним способом -- в sms, электронной или голубиной почтой. Каждый член вашей группы указывает этот адрес в своём клиенте, и клиент получает возможность обмениваться информацией с сервером через сеть TOR. В адресах обычного интернета нет необходимости.
Клиент сохраняет полученные от сервера сведения обо всех членах группы в файл. Файл может независимо считываться каким-то другим программным обеспечением для отображения на экране.
Информация в файле представляет собой закодированный в JSON ассоциированный массив, где ключ -- это mmsi плавсредства, а значение -- ассоциированный массив AIS характеристик, как они описаны в gpsd/www/AIVDM.adoc (если у вас установлен gpsd) или на сайте e-Navigation Netherlands, за исключением:
- Все единицы измерения приведены к общепринятым
- Метка времени является временем Unix
Картплотер GaladrielMap читает информацию netAIS непосредственно из этого файла. Для взаимодействия с другим программным обеспечением имеется средство сетевого вещания, выдающее поток стандартных сообщений AIS.
Демо
Общедоступная группа netAIS для тестовых целей:
2q6q4phwaduy4mly2mrujxlhpjg7el7z2b4u6s7spghylcd6bv3eqvyd.onion
Все активные участники группы видны вдемонстрационной версии GaladrielMap.
К сожалению, Oracle Inc оказались жуликами, поэтому демо не работает.
Совместимость
Linux.
Зависимости
Требуется библиотека cURL и расширение php-curl -- для работы через TOR. К сожалению, замечательная функция file_get_contents() не умеет socs proxy... (позднейшее замечание: Зато с тех пор TOR умеет http proxy, но не переделывать же...)
Установка и конфигурирование:
На машине под управлением Linux должен быть установлен и сконфигурирован web сервер с поддержкой PHP и сервис TOR service.
Скопируйте файлы проекта в желаемый каталог web сервера и соответствующим образом исправьте пути в файле params.php.
Установите права на запись в каталоги data/
и server/
для пользователя и/или группы web сервера (обычно это www-data).
Настройте скрытый сервис TOR на каталог server/
, если вы предполагаете держать свою выделенную группу. Если нет -- поднимать скрытый сервис нет необходимости.
Если скрытый сервис сконфигурирован, укажите его адрес .onion в переменной $onion файла params.php. Адрес находится в файле hostname
по пути, указанном в файле конфигурации TOR torrs
. (Например, в Ubuntu .onion адрес можно узнать, сказав: # cat /var/lib/tor/hidden_service_netAIS/hostname
, если скрытый сервис описан в torrc
именно как hidden_service_netAIS)
Если вы хотите новый .onion адрес для скрытого сервиса -- удалите содержимое каталога скрытого сервиса и перезапустите TOR. Во вновь появившемся файле hostname
будет новый адрес.
Укажите адрес и порт для службы AIS вещания, если предполагается использовать netAIS не только с GaladrielMap в переменных $netAISdHost и $netAISdPort.
Информация о судне
Информация о вашем судне, передаваемая участникам группы, содержится в файле boatInfo.ini. Лучше заполнить его содержательно.
Геопозиционирование
Информацию о положении клиент netAIS обычно должен получать от демона gpsd, работающего на сервере. Установка и настройка gpsd описана на сайте проекта. При необходимости в файле params.php можно указать фактический адрес и порт gpsd, если они отличаются от умолчальных. Если у вас уже установлен и настроен картплотер GaladrielMap -- укажите те же адрес и порт gpsd.
Если в локальной сети есть служба Signal K, то получение координат можно, в принципе, вообще не настраивать. Клиент netAIS попробует обнаружить Signal K и получить от неё координаты, если в файле конфигурации не указаны никакие источники геопозиционирования.
Но лучше указать адрес Signal K в файле params.php
Использование
Данные netAIS сторонними потребителями могут быть получены:
- Непосредственно из файла. Так работает GaladrielMap. Вся передаваемая информация, включая пользовательский текст в данных статуса, доступна.
- Через сервис gpsdPROXY. Самый простой способ. Нужно указать в переменных $netAISgpsdHost $netAISgpsdPort в файле params.php хост и порт gpsdPROXY, а не gpsd. Тогда gpsdPROXY будет отдавать информацию netAIS вместе с остальными данными AIS. Также доступны все данные, включая нестандартные.
- Через сетевой ресурс по протоколу gpsd:// Кроме стандартной информации AIS передаются пользовательские текстовые поля.
- Через сетевой ресурс как поток стандартных сообщений AIS № 18, 24 и 27. Так могут быть подключены OpenCPN, OruxMaps, Signal K и специализированные картплотеры. В этом случае доступны только стандартные возможности AIS.
Сетевой ресурс обслуживается отдельным демоном, отключенным по умолчанию. Включите его в params.php и откройте веб-интерфейс.
Настройка OpenCPN
Для отображения целей netAIS в OpenCPN сделайте следующее:
Создайте сетевое подключение, как описано в руководстве к OpenCPN.
Укажите "Протокол" -- TCP
Укажите "Адрес" и "Порт связи" в соответствии с указанными в файле params.php.
Настройка OruxMaps
Для отображения целей netAIS в OruxMaps сделайте следующее:
В верхнем меню выберите крайний справа пункт "Ещё".
Пройдите по пунктам меню Global settings -> Sensors -> AIS (nautical)
В разделе AIS (nautical):
Отметьте пункт Enable AIS.
Установите в GPS-AIS-NMEA source значение IP.
Установите в AIS IP address адрес и порт в соответствии с файлом params.php
После этого надо включить отображение целей AIS. Закройте меню настроек, и в верхнем меню главного экрана выберите пункт "Маршруты".
Откройте меню Sensors и выберите Start AIS.
Настройка Signal K
Просто добавьте источник данных "Server -> Data Connections" со следующими параметрами:
Data Type: NMEA0183
NMEA 0183 Source: TCP Client
Host: {адрес, указанный в переменной $netAISdHost в файле params.php, по умолчанию -- localhost}
Port: {порт, указанный в переменной $netAISdPort в файле params.php, по умолчанию -- 3838}
Веб-интерфейс
- Включить - выключить обслуживание вашей выделенной группы (верхняя секция). Если обслуживание выключено, обращения к скрытому сервису TOR не приведут ни к какому результату. Но быть членом других групп вы сможете.
- Подключение к другим группам и создание нового подключения (средняя секция). Подключение к своей группе будет создано автоматически. Левая кнопка каждого подключения включает - выключает видимость группы для вас и вас для группы.
- Указать свой собственный статус, как он будет транслироваться участникам группы (нижняя секция). Не забывайте обновлять статус не реже, чем указано в параметре $selfStatusTimeOut в файле конфигурации params.php Если статус не будет обновлён в течение указанного времени, netAIS отключится.
Веб-интерфейс оптимизирован для мобильный устройств и устройств с экраном на электронных чернилах (e-Inc), в том числе и старых. Производительности от устройств не требуется.
Благодарности
- Aaron Gong Hsien-Joen за код создания сообщений AIS.
- Metrize Icons by Alessio Atzeni за значки.
Поддержка
Индивидуальная платная консультация
Вы можете сделать пожертвование через ЮМани.