N

netAIS

Темы: AIS maps chart
+ ещё 5
Обмен AIS-подобными сообщениями с координатами и сопутствующей информацией через Интрнет между участниками выделенной группы. Для взаимодействия не требуется интернет-сервер с реальным адресом.

In English

netAIS License: CC BY-NC-SA 4.0

v.2

Обмен AIS-подобными сообщениями с координатами и сопутствующей информацией через Интрнет между участниками выделенной закрытой группы. Для взаимодействия не требуется интернет-сервер с реальным адресом.

Удобно для организации коллективного плавания, соревнований, рыбалки.

scheme

Программное обеспечение представляет собой набор демонов (серверов), функционирующих на компьютере под управлением Linux. Используется TOR как среда коммуникации, и обмен информацией происходит и через мобильный интернет и через публичные точки доступа wi-fi без дополнительных настроек.
Собственные координаты программное обеспечение получает от gpsd, gpsdPROXY или SignalK.

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

Этот код написан без использования ИИ, "лучших практик", ООП и ИСР.

Возможности

  • Создание одной выделенной группы
  • Участие в любом количестве выделенных групп
  • Рассылается в группу: положение, стандартная информация о состоянии (в движении, на якоре, и т.п.), произвольная информация о состоянии, цель следования и время прибытия, аварийная ситуация и ситуация "человек за бортом". Разумеется, обычные средства отображения AIS не смогут отобразить нестандартную информацию, но GaladrielMap показывает всё.
  • Веб-интерфейс на русском, английском или другом языке

Технические детали

Комплект программного обеспечения содержит клиентскую часть -- собственно для обмена сообщениями, и серверную часть, обеспечивающую эту возможность. Один сервер обслуживает одну выделенную группу и обычно является скрытым сервисом TOR. Если вы хотите организовать собственную группу, .onion адрес этого сервиса надо передать потенциальным членам группы каким-нибудь сторонним способом -- в sms, электронной или голубиной почтой. Каждый член вашей группы указывает этот адрес в своём клиенте, и клиент получает возможность обмениваться информацией с сервером через сеть TOR. В адресах обычного интернета нет необходимости.

Клиент сохраняет полученные от сервера сведения обо всех членах группы в файл. Файл может независимо считываться каким-то другим программным обеспечением для отображения на экране. Кроме файла, информацию можно получить из tcp socket по протоколу gpsd или в виде потока сообщений AIS.
Информация в файле представляет собой закодированный в JSON ассоциированный массив, где ключ -- это mmsi плавсредства, а значение -- ассоциированный массив AIS характеристик, как они описаны в gpsd/www/AIVDM.adoc (если у вас установлен gpsd) или на сайте e-Navigation Netherlands, за исключением:

  • Все единицы измерения приведены к общепринятым
  • Метка времени является временем Unix

Картплотер GaladrielMap получает информацию netAIS через gpsdPROXY, который обращается за ней через сетевой соктет по протоколу gpsd. Другое программное и аппаратное обеспечение может просто получать поток стандартных сообщений AIS.

Использования TOR в качестве транспорта даёт простоту использования и защищённость. Однако, система может работать и через mesh-сеть (типа Yggdrasil), и через реальный Интернет, при наличии реальных адресов. В этом случае следует предусмотреть обычные меры по защите приватности.

Демо

Общедоступная группа netAIS для тестовых целей:
eqavt5cdur7vbzoejquiwviok4tfexy32sggxdxujm75uiljqi5g27ad.onion
Все активные участники группы видны в демонстрационной версии](http://130.61.159.53/map/) GaladrielMap.
К сожалению, Oracle Inc оказались жуликами, поэтому демо не работает.

Можно ознакомиться с функционированием приложения, запустив один из демонстрационных образов виртуальных машин. Интерфейс netAIS обычно находится по адресу /netAIS/.

Совместимость

Linux, PHP7.

Зависимости

Требуется библиотека cURL и расширение php-curl.

Установка и конфигурирование:

На машине под управлением Linux должен быть установлен и сконфигурирован web сервер с поддержкой PHP и сервис TOR service.
Скопируйте файлы проекта в желаемый каталог web сервера и соответствующим образом исправьте пути в файле params.php.
Установите права на запись в каталоги data/ и server/ для пользователя и/или группы web сервера (обычно это www-data).
Настройте скрытый сервис TOR на каталог server/, если вы предполагаете держать свою выделенную группу. Если нет -- поднимать скрытый сервис нет необходимости.
Адрес скрытого сервиса находится в файле 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, то координаты можно получать от gpsdPROXY: укажите те же адрес и порт, что в файле конфигурации GaladrielMap.
Если в локальной сети есть служба SignalK, то получение координат можно, в принципе, вообще не настраивать. Клиент netAIS попробует обнаружить SignalK и получить от неё координаты, если в файле конфигурации не указаны никакие источники геопозиционирования.
Но лучше указать адрес SignalK в файле params.php

Использование

Данные netAIS сторонними потребителями могут быть получены:

  • Непосредственно из файла с именем $netAISJSONfilesDir/group_address.onion. Параметр $netAISJSONfilesDir указывается в params.php. Вся передаваемая информация, включая пользовательский текст в данных статуса, имеется в этом файле.
  • Через сервис 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.
netAIS

Настройка 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.

Настройка SignalK

Просто добавьте источник данных "Server -> Data Connections" со следующими параметрами:
Data Type: NMEA0183
NMEA 0183 Source: TCP Client
Host: {адрес, указанный в переменной $netAISdHost в файле params.php, по умолчанию -- localhost}
Port: {порт, указанный в переменной $netAISdPort в файле params.php, по умолчанию -- 3838}
Однако, для SignalK имеется полнофункциональный вариант сервиса в виде дополнения.

Веб-интерфейс

доступен по адресу http://you-web-server/netAIS/: screen
Веб-интерфейс позволяет:

  • Включить - выключить обслуживание вашей выделенной группы (верхняя секция). Если обслуживание выключено, обращения к скрытому сервису TOR не приведут ни к какому результату. Но быть членом других групп вы сможете.
  • Подключение к другим группам и создание нового подключения (средняя секция). Подключение к своей группе будет создано автоматически. Левая кнопка каждого подключения включает - выключает видимость группы для вас и вас для группы.
  • Указать свой собственный статус, как он будет транслироваться участникам группы (нижняя секция). Не забывайте обновлять статус не реже, чем указано в параметре $selfStatusTimeOut в файле конфигурации params.php Если статус не будет обновлён в течение указанного времени, netAIS отключится.

Веб-интерфейс оптимизирован для мобильный устройств и устройств с экраном на электронных чернилах (e-Inc), в том числе и старых. Производительности от устройств не требуется.
Если не используется TOR, то в настройках веб-сервера следует предусмотреть запрет доступа к интерфейсу снаружи.

Благодарности

Поддержка

Форум

Форум будет живее, если вы сделаете пожертвование на ЮМани.

Вы можете получить индивидуальную платную консультацию по вопросам установки и использования netAIS.