Страница 1 из 13 12311 ... ПоследняяПоследняя
Показано с 1 по 10 из 125
Like Tree8Likes

Тема: ADSBSender - прием/передача RAW AVR данных по TCP для Linux

  1. #1
    МегаПрофи
    Регистрация
    29.05.2011
    Город
    Novosibirsk
    Аэропорт
    UNNT
    Сообщений
    2,348
    В Блоге
    1
    Downloads
    35
    Uploads
    12

    ADSBSender - прием/передача RAW AVR данных по TCP для Linux

    Идея создать программный пакет родилась из задачи получать RAW данные от приемника, удаленно расположенного от основной станции и имеющего сетевое подключение. Причем он может быть доступен напрямую по сети (с реальным IP) или нет.
    Выбор пал на Unix серверное решение, так как "крутить" бесцельно на удаленном компьютере GUI не хотелось.

    Программа написана на Python 2.7 с применением Twisted - фреймворка для написания сетевых приложений на Python.
    Представляет собой пакет из запускаемого модуля adsb_sender.py, пяти функциональных библиотек: client.py, daemon.py, decoder.py, listener.py,avrbeastbin.py и файла конфигурации adsb_sender.conf.sample.

    Возможности программы определяются в файле adsb_sender.conf. Программа позволяет:
    По входу [Input] - забирать (Pull) или слушать (Listen) данные по указанному в файле конфигурации IP-адресу (Addr) и порту (Port).
    По выходу [Output] - отсылать (Push) или слушать (Listen) обращения за данными по указанному в файле конфигурации IP-адресу (Addr) и порту (Port).
    Перекодировать on-line AVR BIN данные в AVR ASCII.
    Накладывать фильтр для проверки соответствия сообщений AVR ASCII допустимому формату и выводить на [Output] либо только "правильные" DF, либо ошибочные.
    Программа может запускаться в режиме демона (daemon) - основной режим работы, или с выводом на консоль лога для настройки и/или проверки работоспособности.
    При работе в качестве клиента, в случае возникшей недоступности по TCP ответной стороны, программа выполняет попытки реконнекта с задаваемым интервалом. Если в качестве ответной используется тоже Adsbsender, соединение восстанавливается автоматически вне зависимости от длительности перерыва.

    Все настройки, определяющие функции задаются в текстовом файле adsb_sender.conf. Рассмотрим его пример:
    Включение той или иной функции производится установкой после знака равенства значения <True>. Отключение - <False>.

    Код:
    [Main]
    #Режим работы daemon/console: True/False
    daemon = True
    syslog_ident = adsb-sender
    #Директория и имя файла процесса (pid)
    pidfile = /tmp/adsb-sender.pid
    #Периодичность попыток восстановить tcp соединение, сек 
    reconnect_timeout = 600
    
    [Decode]
    #Перекодировать из BIN в ASCII
    avr_decode = True
    #Наложить фильтр соответствия допустимому шаблону DF сообщений
    filter = True
    #Выводить только ошибочные сообщения
    filter_erronly = False
    
    [Input]
    # Mode pull or listen - забирать (pull) или слушать (listen) входные данные по адресу и порту
    mode = pull
    addr = 127.0.0.1
    port = 30003
    
    [Output]
    # Mode push or listen - инициативно отсылать (push) выходные данные получателю или слушать (listen), когда за ними обратиться внешняя программа-клиент 
    mode = listen
    addr = server.domain.com
    port = 30005
    Испытана в реальной работе в Linux Ubuntu. Пакет Python v. 2.7 обычно уже стоит в системе, либо ставится командой: "sudo apt-get install python".
    Дополнительно в систему нужно установить фреймворк twisted командой: "sudo apt-get install python-twisted". Он входит в стандартный репозитарий Ubuntu.

    выложил на добрый ADSBSender - Downloads - Radarspotters Team Forum (radarspotters.ru). Размер архива ~5 кБ.

    Надеюсь, программа будет полезна и рассчитываю услышать мнения коллег.
    Версию одиночного сендера, работающего с COM (/dev/tty*) портом, опубликую тоже чуть позже.
    Liveatc and andm like this.

  2. 2 пользователя(ей) сказали cпасибо:
    andm (09.04.2012)
  3. ADSBRADAR ADS

  4. #2
    МегаПрофи
    Регистрация
    29.05.2011
    Город
    Novosibirsk
    Аэропорт
    UNNT
    Сообщений
    2,348
    В Блоге
    1
    Downloads
    35
    Uploads
    12
    А теперь отдельные скрипты для более узкого применения.
    1. sender_com2tcp.tgz - забирает данные из COM порта, на котором находится приемник. Для microADSB это - /dev/ttyACM и скорость 115200 б/с. И тут же инициативно отсылает полученные данные в сеть принимающему серверу по TCP. Этот вариант может быть использован для удаленного компьютера с приемником без возможности доступа к нему по сети из-вне, когда IP фейковые. В этом случае удаленный компьютер сам устанавливает TCP соединение с базовой станцией и отсылает ей RAW AVR данные.

    2. server_com2tcp.tgz - с приемником работает аналогично, забирая данные из COM порта. Но, при этом, сам же является и сервером. То есть слушает на назначенных в конфиге IP:Port внешние запросы и отдает данные в сеть.

    Выложил одним rar-архивом http://forum.adsbradar.ru/downloads.php?do=file&id=109
    Liveatc likes this.

  5. Пользователь сказал cпасибо:
  6. #3
    ADS-B
    Регистрация
    11.11.2011
    Сообщений
    5,083
    В Блоге
    20
    Downloads
    41
    Uploads
    127
    закачка по неизвестным причинам снова заработала, перезалил к нам
    Ракета выпускается без предупреждения. 73!

  7. 2 пользователя(ей) сказали cпасибо:
    sergsero (10.04.2012)
  8. #4
    МегаПрофи
    Регистрация
    17.08.2011
    Город
    Саратов
    Аэропорт
    UWSS
    Flightradar24
    UWSS2
    Сообщений
    1,289
    Downloads
    37
    Uploads
    5
    а случайно портировать питоновскую программку в винду не было желания? мне кажется программка такого рода решит проблемму подключения приёмников с моде-а и с бестовским протоколом к adsbscope с maylog

  9. Пользователь сказал cпасибо:
  10. #5
    МегаПрофи
    Регистрация
    29.05.2011
    Город
    Novosibirsk
    Аэропорт
    UNNT
    Сообщений
    2,348
    В Блоге
    1
    Downloads
    35
    Uploads
    12
    Новая версия пакета ADSBSender. Выложил на Форуме в разделе Сервисные программы.
    Теперь в пакете два функционально разнесенных исполняемых скрипта:
    - adsb_sender.py - собственно программа для получения и приема/передачи по сети RAW данных;
    - adsb_mixer.py - миксер текстовых строковых данных AVR RAW от/из нескольких источников в объединенный сетевой поток.
    Файлы конфигурации adsb_sender.conf.sample и adsb_mixer.conf.sample, а также набор вспомогательных функциональных библиотек: daemon.py, cache.py, stat_collector.py, decoder.py, sbsprotocol.py, avrbeastbin.py.

    Возможности каждой из программ раскрываются в конфигурационных файлах, которые я снабдил избыточными комментариями. Теперь программа работает с любыми источниками: как по сети через TCP-соединения, так и с устройствами в (USB)порту на самом компьютере. Способна как принимать данные, так и сама их забирать.

    ADSB_SENDER
    Код:
    [Main]
    # Запуск программы в фоновом режиме, как daemon. Возможные значения: <true> или <false>. Если указан <false>, программа запускается в режиме отладки (с выводом на консоль)
    daemon = true
    # Имя программы в системном журнале SysLog
    syslog_ident = adsb-sender
    # Путь к файлу с номером запущенного процесса
    pidfile = /tmp/adsb-sender.pid
    # Максимальный интервал времени в секундах, через который программа будет пытаться восстановить разорванное TCP-соединение
    reconnect_timeout = 600
    [Decode]
    # Декодирование бинарного формата BEAST в текстовый AVR. Возможные значения: <true> или <false>
    avr_decode = true
    # Проверка и фильтрация данных на соответствие DF-шаблону ICAO. Выдача только соответствующих. Возможные значения: <true> или <false>
    filter = true
    # Выдача только ошибочных (режим для оценки наличия в потоке сбойных AVR пакетов). Возможные значения: <true> или <false>
    filter_erronly = false
    # Сбор статистики DF-типов пакетов с потоке бинарного формата BEAST. Возможные значения: <true> или <false>
    collect_stat = true
    [Stat]
    # Выдача по запросу на указанных [addr] и [port] данных статистики о DF-типах пакетов с потоке бинарного формата BEAST 
    addr = 192.168.0.1
    port = 30099
    [Input]
    # Поддерживаются <listen>, <pull> для соединений по сети и <serial> - для устройств, подключенных в порт компьютера
    # Включение режима listen сервера. Программа ожидает на указанных [addr] и [port] входящий запрос на TCP-соединение от единственного клиента-поставщика данных. Поддерживается единственное входящее TCP-соединение от одного клиента. [addr] - один из существующих IP-адресов на компьютере, где работает adsb_sender
    # Включение режима pull сервера. Программа устанавливает единственное TCP-соединение на указанные [addr]:[port] и самостоятельно забирает данные у одного клиента-поставщика. Поддерживается единственное исходящее TCP-соединение к одному клиенту
    # Включение режима serial сервера. Программа устанавливает соединение с указанным сериальным устройством device компьютера /dev/tty* на заданной скорости обмена speed и забирает данные
    # device = /dev/ttyUSB0
    # speed = 115200
    mode = listen
    addr = 192.168.0.1
    port = 30003
    # Ограничение на установление соединений только с конкретных IP-адресов внешних клиентов-поставщиков, попеременно. В текущий момент времени должно существовать только одно внешнее подключение
    #allowonly =
    #   123.123.123.123
    #   223.223.233.212
    [Output]
    # Возможные значения mode: <listen> или <push>
    # В режиме <listen> программа ожидает на указанных [addr] и [port] входящие запросы на TCP-соединения извне от клиентов-получателей данных. Поддерживаются одновременные TCP-соединения от нескольких клиентов
    # [addr] - один из существующих IP-адресов на компьютере, где работает adsb_sender
    # В режиме <push> программа устанавливает TCP-соединение на указанные [addr] и [port] внешнего клиента-получателя данных. Поддерживается единственное TCP-соединение с одним клиентом
    mode = listen
    addr = server.domain.com
    port = 30005
    # Ограничение на установление соединений только к конкретным IP-адресам внешних клиентов-получателей, попеременно. В текущий момент времени должно существовать только одно внешнее подключение
    #allowonly =
    #   123.123.123.123
    #   223.223.233.212
    (Продолжение в ниже)

  11. Пользователь сказал cпасибо:
  12. ADSBRADAR ADS

  13. #6
    МегаПрофи
    Регистрация
    29.05.2011
    Город
    Novosibirsk
    Аэропорт
    UNNT
    Сообщений
    2,348
    В Блоге
    1
    Downloads
    35
    Uploads
    12
    (Продолжение)
    ADSB_MIXER
    Код:
    [Main]
    # Запуск программы в фоновом режиме, как daemon
    # Возможные значения: <true> или <false>
    # Если указан <false>, программа запускается в режиме отладки (с выводом на консоль)
    daemon = false
    # Имя программы в системном журнале SysLog 
    syslog_ident = adsb-mixer
    # Путь к файлу с номером запущенного процесса 
    pidfile = /tmp/adsb-mixer.pid
    # Максимальный интервал времени в секундах, через который программа будет пытаться восстановить разорванное TCP-соединение
    reconnect_timeout = 600
    [Input]
    # Включение режима listen сервера. Программа ожидает на указанных [addr] и [port] входящие запросы на TCP-соединения извне от клиентов-поставщиков данных. Поддерживаются одновременные TCP-соединения от нескольких клиентов. [addr] - один из существующих IP адресов на компьютере, где работает adsb_mixer. Возможные значения listen: <true> или <false>
    listen = true
    addr = 192.168.0.1
    port = 30003
    # Включение режима pull сервера. Программа устанавливает TCP-соединения на указанные [addr]:[port] и самостоятельно забирает данные у клиентов-поставщиков. Поддерживаются одновременные TCP-соединения к нескольким клиентам
    pull =
        one.addr.com:30041
        two.addr.com:30042
        ...
        ten.addr.com:30050
    [Output]
    # Возможные значения mode: <listen> или <push>. В режиме <listen> программа ожидает на указанных [addr] и [port] входящие запросы на TCP-соединения извне от клиентов-получателей данных. Поддерживаются одновременные TCP-соединения от нескольких клиентов. [addr] - один из существующих IP-адресов на компьютере, где работает adsb_mixer. В режиме <push> программа устанавливает TCP соединение на указанные [addr] и [port] внешнего клиента-получателя данных. Поддерживается единственное TCP соединение с одним клиентом
    mode = listen
    addr = server.domain.com
    port = 30005
    # Ограничение на прием данных только с конкретных IP-адресов внешних клиентов-поставщиков
    #allowonly =
    #   123.123.123.123
    #   223.223.233.212
    # Фильтровать одинаковые строки. При поступлении на вход одинаковых строк данных, используется первая, остальные отбрасываются. Возможные значения: <true> или <false>
    filter_unique = true
    # Размер буфера пакетов. Накапливаемое количество строк, по которым происходит сравнение на уникальность
    max_keys = 2000
    Пакет используется в реальных условиях в составе нескольких adsb-станций под Ubuntu 12.04.
    Для работы программы нужны установленные в систему пакеты: Python v.2.7 и python-twisted. Оба есть в стандартном репозитарии "Ubuntu Main Repository" и устанавливаются по "apt-get install"

    Предложения и замечания по возможностям программы приветствуются .
    andm likes this.

  14. Пользователь сказал cпасибо:
  15. #7
    ADS-B
    Регистрация
    11.11.2011
    Сообщений
    5,083
    В Блоге
    20
    Downloads
    41
    Uploads
    127
    я так понимаю, на основе этой проги можно создать нечто типа сети ADS-B??
    Ракета выпускается без предупреждения. 73!

  16. Пользователь сказал cпасибо:
  17. #8
    МегаПрофи
    Регистрация
    29.05.2011
    Город
    Novosibirsk
    Аэропорт
    UNNT
    Сообщений
    2,348
    В Блоге
    1
    Downloads
    35
    Uploads
    12
    Наверное, да - код открытый. Но такой цели публикация пакета ADSBSender не ставит. "Сеть", на мой взгляд, все же - более сложное предприятие и софт здесь важен, но не главный, с чего надо начинать...
    Скорее это - вариант ПО для автономной станции 24/7 "у дедушки в деревне"

    Кстати, adsb_sender.py работает с любыми сериальными устройствами - вот, например, как выглядят получаемые им данные от USB GPS-приемника в консоли и принятые уже по tcp на другом компьютере nmea-0183 (слева - консоль, справа - прием по сети):

  18. Пользователь сказал cпасибо:
  19. #9
    МегаПрофи
    Регистрация
    17.08.2011
    Город
    Саратов
    Аэропорт
    UWSS
    Flightradar24
    UWSS2
    Сообщений
    1,289
    Downloads
    37
    Uploads
    5
    попробовал чудо программу на малине (Raspberry Pi)

    с первого захода не получилось

    компоненты питона установил. программа запускается.

    пример запуска если есть ошибка в конфигурации

    Код:
    root@raspberrypi:/home/pi/adsb# ./adsb_sender.py
    Traceback (most recent call last):
      File "./adsb_sender.py", line 75, in <module>
        exit(main())
      File "./adsb_sender.py", line 48, in main
        config.get('Input', 'device'), reactor, baudrate=config.getint('Input', 'speed'))
      File "/usr/lib/python2.7/dist-packages/twisted/internet/_posixserialport.py", line 38, in __init__
        xonxoff=xonxoff, rtscts=rtscts)
      File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 260, in __init__
        self.open()
      File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 276, in open
        raise SerialException("could not open port %s: %s" % (self._port, msg))
    serial.serialutil.SerialException: could not open port /dev/ttyACM0: [Errno 2] No such file or directory: '/dev/ttyACM0'
    а вот если конфигурация правильная намертво зависает. зависает малина. вообще не дышит.
    приёмник подключен к USB, определяется как /dev/ttyUSB0

    Код:
    Sep 26 20:21:42 raspberrypi kernel: [  226.253708] usb 1-1.2: USB disconnect, device number 4
    Sep 26 20:21:42 raspberrypi kernel: [  226.254098] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
    Sep 26 20:21:42 raspberrypi kernel: [  226.254152] ftdi_sio 1-1.2:1.0: device disconnected
    Sep 26 20:21:44 raspberrypi kernel: [  228.279450] usb 1-1.2: new full-speed USB device number 5 using dwc_otg
    Sep 26 20:21:45 raspberrypi kernel: [  228.381510] usb 1-1.2: New USB device found, idVendor=0403, idProduct=6001
    Sep 26 20:21:45 raspberrypi kernel: [  228.381529] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    Sep 26 20:21:45 raspberrypi kernel: [  228.381541] usb 1-1.2: Product: USB <-> Serial
    Sep 26 20:21:45 raspberrypi kernel: [  228.381550] usb 1-1.2: Manufacturer: FTDI
    Sep 26 20:21:45 raspberrypi kernel: [  228.382955] ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected
    Sep 26 20:21:45 raspberrypi kernel: [  228.383066] usb 1-1.2: Detected FT232BM
    Sep 26 20:21:45 raspberrypi kernel: [  228.383079] usb 1-1.2: Number of endpoints 2
    Sep 26 20:21:45 raspberrypi kernel: [  228.383088] usb 1-1.2: Endpoint 1 MaxPacketSize 64
    Sep 26 20:21:45 raspberrypi kernel: [  228.383098] usb 1-1.2: Endpoint 2 MaxPacketSize 64
    Sep 26 20:21:45 raspberrypi kernel: [  228.383107] usb 1-1.2: Setting MaxPacketSize 64
    Sep 26 20:21:45 raspberrypi kernel: [  228.383852] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0

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

  20. Пользователь сказал cпасибо:
  21. #10
    МегаПрофи
    Регистрация
    17.08.2011
    Город
    Саратов
    Аэропорт
    UWSS
    Flightradar24
    UWSS2
    Сообщений
    1,289
    Downloads
    37
    Uploads
    5
    отбой....это глюк малины.
    вылечивается, если вдруг кому пригодится, добавлением в /boot/cmdline.txt
    dwc_otg.microframe_schedule=1 dwc_otg.fiq_fix_enable=1 dwc_otg.speed=1

  22. 2 пользователя(ей) сказали cпасибо:
    kosmos (01.03.2013)
  23. ADSBRADAR ADS

 

 

Похожие темы

  1. Программа KG-VDL (Частота 136.975 VDL)
    от Liveatc в разделе Радиосвязь
    Ответов: 34
    Последнее сообщение: 10.06.2018, 15:35
  2. Ответов: 18
    Последнее сообщение: 14.09.2015, 14:53
  3. Ответов: 22
    Последнее сообщение: 03.02.2014, 16:11
  4. Программа обработки базы данных ПО RadarBox NavData.db3
    от Netcop22 в разделе AirnavSystems RadarBox
    Ответов: 0
    Последнее сообщение: 04.12.2011, 10:52
  5. Ответов: 0
    Последнее сообщение: 30.09.2011, 23:33

Что искали прежде чем попасть на этот форум:

adsb raspberry fr24feed

adsb linux

t-uwss2

AVR ASCII RAW

raspberry

programa peredachi prime

forum.adsbradar.ru ads-b avr raw

cmdline.txt raspberry pi

http:192.168.1.78:8080

adsbsender

TCP Raw Mode

avr adsb linux

ADSBRADAR.ru

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
©® ADSBRADAR 2011
Текущее время: 04:56. Часовой пояс GMT +4.