snstac / adsbcot

Display Aircraft in TAK - ADS-B to TAK Gateway
https://adsbcot.rtfd.io
Apache License 2.0
86 stars 22 forks source link

pyModeS and generic install issues #33

Open tstechnologies opened 1 year ago

tstechnologies commented 1 year ago

Just wanted to post this but I think you are already aware;

for ubuntu users (20.04, 22.04) some additional packages need to be installed. I ran:

sudo apt install python3-pip -y sudo python3 -m pip install --upgrade toml sudo python3 -m pip install --upgrade pip sudo python3 -m pip install pymodes>=2.8 (also tried with out the '>=2.8' but had mixed results saw that versions noted in the source code)

The default python version is 3.8

Also installed it from source via the latest in releases (zip file)

Functions otherwise via that method did not have much luck with installing via pip (with pyModeS)

When reading a feed from dump1090-fa get the error:

2023-08-03 00:17:38,647 pytak INFO - COT_URL: tcp://192.168.1.10:8093
2023-08-03 00:17:38,648 pytak INFO - COT_URL: tcp://192.168.1.10:8093
2023-08-03 00:17:38,648 pytak INFO - Using KNOWN_CRAFT: /home/admin/adsbcot/known_craft.csv
2023-08-03 00:17:38,648 pytak INFO - Run: <class 'pytak.classes.CLITool'>
2023-08-03 00:17:38,649 pytak INFO - Run: <class 'pytak.classes.TXWorker'>
2023-08-03 00:17:38,649 pytak INFO - Run: <class 'pytak.classes.RXWorker'>
2023-08-03 00:17:38,650 pytak INFO - Running <class 'adsbcot.classes.ADSBNetWorker'> for data_type: beast
2023-08-03 00:17:38,650 pytak INFO - Running <class 'adsbcot.classes.ADSBNetReceiver'> for tcp+beast://192.168.1.11:30005
2023-08-03 00:17:38,864 pytak INFO - Complete: <Task finished name='Task-4' coro=<ADSBNetWorker.run() done, defined at /usr/local/lib/python3.8/dist-packages/adsbcot-6.2.0b5-py3.8.egg/adsbcot/classes.py:248> exception=ValueError('too many values to unpack (expected 2)')>
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-4' coro=<ADSBNetWorker.run() done, defined at /usr/local/lib/python3.8/dist-packages/adsbcot-6.2.0b5-py3.8.egg/adsbcot/classes.py:248> exception=ValueError('too many values to unpack (expected 2)')>
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/adsbcot-6.2.0b5-py3.8.egg/adsbcot/classes.py", line 305, in run
    decoder.process_raw(
  File "/usr/local/lib/python3.8/dist-packages/pyModeS/streamer/decode.py", line 170, in process_raw
    ac["HVE"], ac["VVE"] = pms.adsb.nuc_v(msg)
ValueError: too many values to unpack (expected 2)

Seems to be an issue with pyModeS reading beast or raw feeds. The source machine is the latest version of dump1090-fa. Reading beats via 30005 with VRS and TAR1090.

JSON is not suitable in my application as it does not provide close to realtime data.

Test pyModeS it with:

modeslive --source net --connect 192.168.1.11 30005 beast

output shows no aircraft

any thoughts or pointers are appreciated! Can post more detail if needed.

ampledata commented 1 year ago

I believe there is a mismatch between what I interpreted as 'raw' vs 'beast' and what dump1090 puts out, so try to switch the flags from 'tcp+beast' to 'tcp+raw' across the different ports and see which works (and report back which works).

Separately, the newest version of adsbcot will read the JSON file directly from the filesystem w/o need for polling.

-g

On Wed, Aug 2, 2023 at 7:05 PM TSTECH @.***> wrote:

Just wanted to post this but I think you are already aware;

for ubuntu users (20.04, 22.04) some additional packages need to be installed. I ran:

sudo apt install python3-pip -y sudo python3 -m pip install --upgrade toml sudo python3 -m pip install --upgrade pip sudo python3 -m pip install pymodes>=2.8 (also tried with out the '>=2.8' but had mixed results saw that versions noted in the source code)

The default python version is 3.8

Also installed it from source via the latest in releases (zip file)

Functions otherwise via that method did not have much luck with installing via pip (with pyModeS)

When reading a feed from dump1090-fa get the error:

2023-08-03 00:17:38,647 pytak INFO - COT_URL: tcp://192.168.1.10:8093 2023-08-03 00:17:38,648 pytak INFO - COT_URL: tcp://192.168.1.10:8093 2023-08-03 00:17:38,648 pytak INFO - Using KNOWN_CRAFT: /home/dadmin/masstak-adsbcot/production/known_craft.csv 2023-08-03 00:17:38,648 pytak INFO - Run: <class 'pytak.classes.CLITool'> 2023-08-03 00:17:38,649 pytak INFO - Run: <class 'pytak.classes.TXWorker'> 2023-08-03 00:17:38,649 pytak INFO - Run: <class 'pytak.classes.RXWorker'> 2023-08-03 00:17:38,650 pytak INFO - Running <class 'adsbcot.classes.ADSBNetWorker'> for data_type: beast 2023-08-03 00:17:38,650 pytak INFO - Running <class 'adsbcot.classes.ADSBNetReceiver'> for tcp+beast://192.168.1.11:30005 2023-08-03 00:17:38,864 pytak INFO - Complete: <Task finished name='Task-4' coro=<ADSBNetWorker.run() done, defined at /usr/local/lib/python3.8/dist-packages/adsbcot-6.2.0b5-py3.8.egg/adsbcot/classes.py:248> exception=ValueError('too many values to unpack (expected 2)')> ERROR:asyncio:Task exception was never retrieved future: <Task finished name='Task-4' coro=<ADSBNetWorker.run() done, defined at /usr/local/lib/python3.8/dist-packages/adsbcot-6.2.0b5-py3.8.egg/adsbcot/classes.py:248> exception=ValueError('too many values to unpack (expected 2)')> Traceback (most recent call last): File "/usr/local/lib/python3.8/dist-packages/adsbcot-6.2.0b5-py3.8.egg/adsbcot/classes.py", line 305, in run decoder.process_raw( File "/usr/local/lib/python3.8/dist-packages/pyModeS/streamer/decode.py", line 170, in process_raw ac["HVE"], ac["VVE"] = pms.adsb.nuc_v(msg) ValueError: too many values to unpack (expected 2)

Seems to be an issue with pyModeS reading beast or raw feeds. The source machine is the latest version of dump1090-fa. Reading beats via 30005 with VRS and TAR1090.

JSON is not suitable in my application as it does not provide close to realtime data.

Test pyModeS it with:

modeslive --source net --connect 192.168.1.11 30005 beast

output shows no aircraft

and thoughts or pointers are appreciated! Can post more detail if needed.

— Reply to this email directly, view it on GitHub https://github.com/snstac/adsbcot/issues/33, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAWIXSEIX6KFJISMOB64M3XTMBOJANCNFSM6AAAAAA3CCICQE . You are receiving this because you are subscribed to this thread.Message ID: @.***>

-- Greg Albrecht @.***> W2GMD Public Safety Hacker & EMT Signal: +1-310-621-9598 https://ampledata.org/ http://ampledata.org/ https://github.com/ampledata

tstechnologies commented 1 year ago

Gave this a shot both on the beast output port and the raw output port and got some mixed results.

On the beast output '30005' using the tcp+raw flag the script will run but it doesn't process any data

On dump1090-fa's defined raw output port 30002 I get this error:

........(left out to obfuscate IPS in use).......
2023-08-11 02:00:00,665 pytak INFO - Running <class 'adsbcot.classes.ADSBNetWorker'> for data_type: raw
2023-08-11 02:00:01,213 pytak INFO - Complete: <Task finished name='Task-5' coro=<ADSBNetWorker.run() done, defined at /usr/local/lib/python3.8/dist-packages/adsbcot/classes.py:248> exception=AttributeError("'NoneType' object has no attribute 'replace'")>
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-5' coro=<ADSBNetWorker.run() done, defined at /usr/local/lib/python3.8/dist-packages/adsbcot/classes.py:248> exception=AttributeError("'NoneType' object has no attribute 'replace'")>
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/adsbcot/classes.py", line 319, in run
    "flight": val.get("call", key).replace("_", ""),
AttributeError: 'NoneType' object has no attribute 'replace'

Took your advice on the usage of the JSON method and seems to work decently now that I commented out the poll interval. Ill stick with that for now. I see it updating about every 3 seconds now by default.