sdr-enthusiasts / docker-acarshub Goto Github PK
View Code? Open in Web Editor NEWDocker container to utilize RTLSDR dongle(s) to view/stream ACARS/VDLM2 aircraft data transmissions
License: GNU General Public License v3.0
Docker container to utilize RTLSDR dongle(s) to view/stream ACARS/VDLM2 aircraft data transmissions
License: GNU General Public License v3.0
Hi @fredclausen,
Just FYI, I've found that there's a problem with the x86_64 version of the image when built by GitHub.
acarsdec
and vdlm2dec
both segfault when started.
I think that this is due to compiler optimisations being too aggressive, and I'm experimenting with reducing them.
I've created the branch troubleshoot_segfault
for the troubleshooting works.
-Mike
Cool Stuff
acars/vdlm_decoder
log messagesNerd stuff
Bug Fixes:
Airline link
Rather than a super-long discord message I thought it would be easier to just put this on GitHub. I've been hard at work on version 2 and it is finally time to let it out of the nest for testing. I expect, considering the huge amount of code that has been changed on the website that this will be a little buggy and require some time to get back to the stable standard that we've enjoyed with 1.x. If you find you have too many issues there are no breaking changes that will preclude you from jumping back to :latest
.
The main goal for v2.0 has been to make the website more cohesive, usable on mobile, within the limits of my abilities improve the appearance, and implement "Project Eagle". More on that below.
debian-slim
to debian-sid
, which means we have Python 3.9 and newer packages all aroundurl/adsb
ADSB_URL
is malformed nginx won't start up and ACARS Hub web interface won't be accessible.Now that you've made it this far....lets talk about Project Eagle. Why that name...dunno, just liked it and went with it :)
Project Eagle is the start of adding in ADSB and message paring with ADSB targets. This is NOT meant to be a tar1090 replacement, and as such may feel a little...bare, compared to tar1090. There will be more stuff added to it, but keep in mind the goal here.
To enable this feature
- ENABLE_ADSB=true
- ADSB_URL=http://tar1090/data/aircraft.json
- ADSB_LAT=0
- ADSB_LON=0
Default values for each variable are
Please make sure you set the appropriate IP address and port for ADSB_URL
. Most users should be fine with setting ENABLE_ADSB ADSB_LAT ADSB_LON
provided you are running ACARS Hub on the same machine as you are running tar1090. If not, set ADSB_URL
to the aircraft.json file from your tar1090 and ACARS Hub takes care of the rest.
You can hover over a plane and get some basic information such as the callsign. If a plane has ACARS Messages the plane is shown with a circle around it, and if you click on the target you'll get a popup that shows those messages.
A valid source of readsb aircraft.json ADSB data is required. I recommend using Mike Nye's tar1090 to make it easy, although other methods of providing that are possible.
In order to make ACARS Hub ADSB matching with ACARS Messages the best it can be, your aircraft.json source needs to include tail numbers for planes, which it doesn't by default. If you do see a registration number in the callsign of an ADSB target right now it's because that is the "callsign" the plane is using. If the plane is operating under a company callsign or anything else, the registration will not be included by default in the ADSB data. To change this, please ensure your aircraft.json source has this information.
To configure Mike's tar1090 to provide this extra information, please make sure you are using an up-to-date version of his container (anything after 17 June 21 should do), and add the following to your tar1090 env variables:
- TAR1090_ENABLE_AC_DB=true
There is a downside to enabling this feature, though, you need to keep in mind. tar1090 will use more RAM, so on RAM constrained systems you will not want to turn this on.
The main focus for v2.0 is to take what has been done and "de-bug" it. I am more than happy to log down feature requests (and I imagine there is going to be a boat load of them for Project Eagle) but it's super important to take what we've got here and make it stable before moving on.
v2.0 Build 1018
11 June 21
v2.0 Build 1019
13 June 21
v2.0 Build 1020
15 June 21
v2.0 Build 1021
Internal Build
v2.0 Build 1022
17 June 21
ADSB_URL
formatting changed again. Sorry. Last time. If you are running tar1090 on the same machine as ACARS Hub you can remove ADSB_URL
from your docker-compose file entirely. If you are not running tar1090 on the same machine as you are running ACARS Hub on you need to format the URL like a normal http URL in your browser, and it should be the full path to aircraft.json. http://192.168.31.28/data/aircraft.json
for instance.v2.0 Build 1023
17 June 21
ADSB_URL
is checked early in startup and if malformed will cause container startup failurev2.0 Build 1024
17 June 21
docker restart acarshub
v2.0 Build 1025
18 June 21
debian:stable-slim
to fix Raspbian 32 Bit issuesv2.0 Build 1026
18 June 21
// @ts-expect-error
Will it be possible to to expose acarsdec options to send acars messages to addr:port via UDP?
This would allow docker-acarshub to send acars messages to programs like FlightAirMap
This is for #33
New features
Nerd stuff
Bug fixes
We are currently using bootstrap version 3.4.1
but the current public version is 5.1.3
. Currently if we update to v5 it breaks all of the CSS in considerable ways and will require a complete re-think of all of the CSS used in the site.css
file.
It would be nice to be on current versions of all dependencies so that dependabot:
a) doesn't bug us about outdated packages
b) incorporate feature enhancements and security issues (not that CSS has security issues, but, as a general rule) are included
Current ACARS/VDLM stats are displayed in the web_improvement branch. I find the generated graphs to be good, but the resolution on it is fairly blocky. Before officially merging this looking at the RRD database setup and how we feed it data should probably be improved:
Right now I am grabbing the data from the acars/vdlm_stats scripts, which run at five minute intervals, and updating the appropriate rrd database. There is a timing issue where (at least on my pis) the script that runs to generate the image tends to run just before the most recent stats are fed in to the database, which causes the generated images to lag by five minutes.
I am considering using python and application.py to update the data. The python rrdtool looks like the ticket, but I had trouble getting it installed in the container. I didn't look in to it hard but it was causing me grief which is why I went down the road of using shell scripts. We could count messages/minute, update the rrd databases, and then generate new images.
Before bothering though, the real issue I haven't fully wrapped my mind around is the resolution in the database needed, and if more frequent updates really solve anything. Before merging to main the database resolution/setup should be finalized so we don't run in to needed to deal with an upgraded db at some point.
12 and 24 hour graphs are identical, I think it is in /docker-acarshub-main/rootfs/etc/services.d/rrd-images/
Under regular graphs should the line be:
rrdtool graph "${OUTPUT_DIR}/12hour.png" --title "12 Hours" --start "-12h" "${ARGS_ALL[@]}" >/dev/null 2>&1
Not a dev so I have no idea how to change it in my local container.
Fritz
Decide what to change the coloring to.
FF and Chrome work fine....
I'm running on ACARS Hub Version: v2.0 Build 1027 and it seems, that searching for tail numbers does not work as expected. I wanted to look for all messages originating from Tail A7-BFS. So I went to search-database -> search for mesages and c&p the tail number at the corresponding field.
That yielded no results - but there must be something, as I got an alert from this tail. Entering the tail manually into the field indicated, that the selector works until I enter the dash. That means, I get everything on A or A7 but nothing for A7-
There are no results for A7BFS as well but: A7 BFS does work (space instead of -).
Update / rewrite helppage.md with a focus on the ADSB stuff
This issue will be the roadmap and discussion area for ACARS Hub NextGen and it is a living document as the idea fully materializes. The current state of ACARS Hub, version v2, is a bit of a mixed bag. Functionally, it works well, but the code-base is very messy and difficult to continue improving the code and adding new features. Additionally, container setup is exceptionally difficult for new users and even experienced users re-setting up their system. Finally, development for anyone playing in the code is very slow because (re)building the container takes a very long time because of the non-layered approach under-taken so far.
At the very beginning of this project none of what it has morphed in to was envisioned. I had no idea so many people would download and enjoy ACARS Hub. I was a novice programmer (well, still am mostly, but I'm less green I suppose), and combined with the massive feature increase, design decisions were not thought out in a way that ensured it was "future proof". By having a "clean-slate" approach all of the above issues can be addressed.
At the conclusion of this project ACARS Hub v2 and prior will be End of Life with no further support or bug fixes.
acarshub-ng
tagVersion 2.2.0 changes the database structure slightly in two ways:
These changes are part of a process necessary to improve database and startup performance.
Please read the intro :)
By upgrading to 2.2.0
or later you will NOT be able to downgrade to any ACARS Hub build lower than 1045
or version 2.1.4
. If the upgrade fails and you back up the database (method below) we can recover the data and give it another try. Otherwise, nuking the database and starting fresh will be your only option.
I've tested this out to ensure it works but there is a possibility I've messed up somewhere and your database will be corrupted. If you want to ensure continuity of data in case it doesn't work, like your saved messages, alert counts, frequency counts, etc, please do one or both of the following:
Add the following to your ACARS Hub docker-compose.yaml configuration
environment:
- BACKUP_THE_DB=True
This will cause the container to create a backup of your current database file before modifying it. Additionally, or if you prefer a manual backup instead of letting the container do it:
sudo su -
cd /var/lib/docker/volumes/ubuntu_acars_data/_data
cp messages.db messages-backup.db
You might need to change the path to the docker volume containing your ACARS Hub data, but it will be in /var/lib/docker/volumes/
.
docker pull fredclausen/acarshub:test-pr
docker-compose up -d
docker logs -f acarshub
Please watch the logs. This process may take more than 10 minutes depending on different factors. You are looking for something like the following:
[cont-init.d] 02-database: executing...
[02-database] 2021/07/10 20:48:01 Checking to see if database needs upgrades
[02-database] 2021/07/10 20:48:02 Converting time from string to number
[02-database] 2021/07/10 20:48:02 Renaming current tables
[02-database] 2021/07/10 20:48:02 Creating new tables
[02-database] 2021/07/10 20:48:02 Copying old data
[02-database] 2021/07/10 20:48:04 Dropping old tables
[02-database] 2021/07/10 20:54:38 Updating FTS cache. May take a while
[02-database] 2021/07/10 20:58:31 Ensuring no columns contain NULL values
[02-database] 2021/07/10 20:58:33 done with de-nulling
[02-database] 2021/07/10 20:58:33 Adding text index
[02-database] 2021/07/10 20:58:46 Adding icao index
[02-database] 2021/07/10 20:58:47 Adding flight index
[02-database] 2021/07/10 20:58:49 Adding tail index
[02-database] 2021/07/10 20:58:50 Adding depa index
[02-database] 2021/07/10 20:58:55 Adding dsta index
[02-database] 2021/07/10 20:58:56 Adding msgno index
[02-database] 2021/07/10 20:58:58 Adding freq index
[02-database] 2021/07/10 20:59:00 Adding label index
[02-database] 2021/07/10 21:00:52 Completed upgrading database structure
[cont-init.d] 02-database: exited 0.
Once you see the completed message that means the upgrade was successful. Please wait until you see
[webapp] 2021/07/10 21:03:23 [database]: Pruned main database of x records
[webapp] 2021/07/10 21:03:23 [database]: Pruned alerts database of x records
You might see a couple of CRITICAL WORKER TIMEOUTS
. I think I've figured out the cause, but in case you do see them PLEASE BE PATIENT; it will start up. Also, please copy the startup log with the critical worker timeouts and open an issue here on GitHub or let me know about it on Discord.
Once you see the Pruned messages that means everything started up properly. If you added BACKUP_THE_DB
to your yaml file, please remove it at this time.
Subsequent restarts of the container should not do any upgrading of the database and should be very quick. My test container went from more than a minute from the time the container started up until the startup process was done to doing it in less than 15 seconds with these (and other) improvements made to the startup sequence.
Most users this will not apply to. If you don't know what DB_BACKUP
is you can skip this.
You will need to manually update your backup database BEFORE running the update in your container. Update the msg_time
column type to INTEGER
or whatever is appropriate for your type of database. SQLite, used in the container, is using INTEGER
.
Remove the "strobe" affect
Watching szpajder/dumphfdl#21 and will implement when feature is complete
[vdlm2dec] 2020/12/08 17:01:58 {"timestamp":1607446918.0912049,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":10580652,"toaddr":1057098,"is_response":1,"is_onground":2}
[webapp] 2020/12/08 17:01:58 [vdlm2 data] b'{"timestamp":1607446918.0912049,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":10580652,"toaddr":1057098,"is_response":1,"is_onground":2}\n'
[webapp] 2020/12/08 17:02:00 Exception in thread Thread-4:
[webapp] 2020/12/08 17:02:00 Traceback (most recent call last):
[webapp] 2020/12/08 17:02:00 File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
[webapp] 2020/12/08 17:02:00 self.run()
[webapp] 2020/12/08 17:02:00 File "/usr/lib/python3.7/threading.py", line 865, in run
[webapp] 2020/12/08 17:02:00 self._target(*self._args, **self._kwargs)
[webapp] 2020/12/08 17:02:00 File "/webapp/application.py", line 333, in acarsGenerator
[webapp] 2020/12/08 17:02:00 acars_json = json.loads(data)
[webapp] 2020/12/08 17:02:00 File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
[webapp] 2020/12/08 17:02:00 return _default_decoder.decode(s)
[webapp] 2020/12/08 17:02:00 File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
[webapp] 2020/12/08 17:02:00 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
[webapp] 2020/12/08 17:02:00 File "/usr/lib/python3.7/json/decoder.py", line 353, in raw_decode
[webapp] 2020/12/08 17:02:00 obj, end = self.scan_once(s, idx)
[webapp] 2020/12/08 17:02:00 json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 218 (char 217)
[webapp] 2020/12/08 17:02:00 Invalid session 52a6914f421048ceb70871b73bca5779 (further occurrences of this error will be logged with level INFO)
[vdlm2dec] 2020/12/08 17:02:01 {"timestamp":1607446921.0073659,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"fromaddr":2132536,"icao":16777215,"is_response":0,"is_onground":2}
[webapp] 2020/12/08 19:37:36 [vdlm2 data] b'{"timestamp":1607456256.529736,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11269048,"toaddr":1053386,"is_response":0,"is_onground":0,"mode":"2","label":"H1","block_id":"5","ack":"!","tail":"N8698B","flight":"WN3630","msgno":"F03A","text":"#M1B/B6 QXHADS2.ADS.N8698B034E07193B5D963A8762633C0FD553"}\n'
[vdlm2dec] 2020/12/08 19:37:38 {"timestamp":1607456258.4958191,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11269048,"toaddr":1053386,"is_response":1,"is_onground":0}
[webapp] 2020/12/08 19:37:38 [vdlm2 data] b'{"timestamp":1607456258.4958191,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11269048,"toaddr":1053386,"is_response":1,"is_onground":0}\n'
[vdlm2dec] 2020/12/08 19:37:41 {"timestamp":1607456261.020283,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":10618714,"toaddr":1057098,"is_response":1,"is_onground":0}
[webapp] 2020/12/08 19:37:41 [vdlm2 data] b'{"timestamp":1607456261.020283,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":10618714,"toaddr":1057098,"is_response":1,"is_onground":0}\n'
[webapp] 2020/12/08 19:37:45 Exception in thread Thread-4:
[webapp] 2020/12/08 19:37:45 Traceback (most recent call last):
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
[webapp] 2020/12/08 19:37:45 self.run()
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3.7/threading.py", line 865, in run
[webapp] 2020/12/08 19:37:45 self._target(*self._args, **self._kwargs)
[webapp] 2020/12/08 19:37:45 File "/webapp/application.py", line 358, in acarsGenerator
[webapp] 2020/12/08 19:37:45 acars_json = json.loads(data)
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
[webapp] 2020/12/08 19:37:45 return _default_decoder.decode(s)
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
[webapp] 2020/12/08 19:37:45 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3.7/json/decoder.py", line 353, in raw_decode
[webapp] 2020/12/08 19:37:45 obj, end = self.scan_once(s, idx)
[webapp] 2020/12/08 19:37:45 json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 217 (char 216)
[webapp] 2020/12/08 19:37:45 [2020-12-08 19:37:45 +0000] [370] [ERROR] Socket error processing request.
[webapp] 2020/12/08 19:37:45 Traceback (most recent call last):
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3/dist-packages/gunicorn/workers/sync.py", line 134, in handle
[webapp] 2020/12/08 19:37:45 req = six.next(parser)
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3/dist-packages/gunicorn/http/parser.py", line 41, in __next__
[webapp] 2020/12/08 19:37:45 self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3/dist-packages/gunicorn/http/message.py", line 181, in __init__
[webapp] 2020/12/08 19:37:45 super(Request, self).__init__(cfg, unreader)
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3/dist-packages/gunicorn/http/message.py", line 54, in __init__
[webapp] 2020/12/08 19:37:45 unused = self.parse(self.unreader)
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3/dist-packages/gunicorn/http/message.py", line 230, in parse
[webapp] 2020/12/08 19:37:45 self.headers = self.parse_headers(data[:idx])
[webapp] 2020/12/08 19:37:45 File "/usr/lib/python3/dist-packages/gunicorn/http/message.py", line 74, in parse_headers
[webapp] 2020/12/08 19:37:45 remote_addr = self.unreader.sock.getpeername()
[webapp] 2020/12/08 19:37:45 OSError: [Errno 107] Transport endpoint is not connected
[vdlm2dec] 2020/12/08 19:37:55 {"timestamp":1607456275.2244761,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11264117,"toaddr":1066154,"is_response":0,"is_onground":0,"mode":"2","label":"_d","block_id":"2","ack":"C","tail":"N8643A","flight":"WN4667","msgno":"S35A"}
[webapp] 2020/12/08 19:37:55 [vdlm2 data] b'{"timestamp":1607456275.2244761,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11264117,"toaddr":1066154,"is_response":0,"is_onground":0,"mode":"2","label":"_d","block_id":"2","ack":"C","tail":"N8643A","flight":"WN4667","msgno":"S35A"}\n'
[vdlm2dec] 2020/12/08 21:05:16 {"timestamp":1607461516.184175,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":10512364,"toaddr":1053386,"is_response":1,"is_onground":0}
[webapp] 2020/12/08 21:05:16 [vdlm2 data] b'{"timestamp":1607461516.184175,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":10512364,"toaddr":1053386,"is_response":1,"is_onground":0}\n'
[vdlm2dec] 2020/12/08 21:05:17 {"timestamp":1607461517.118571,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11269048,"toaddr":1053386,"is_response":1,"is_onground":0}
[webapp] 2020/12/08 21:05:17 [2020-12-08 21:05:17 +0000] [370] [ERROR] Error handling request /socket.io/?EIO=3&transport=polling&t=1607461517079-11&sid=e813bbeb08cc4fa9b29eb19d95b2b817
[webapp] 2020/12/08 21:05:17 Traceback (most recent call last):
[webapp] 2020/12/08 21:05:17 File "/usr/lib/python3/dist-packages/gunicorn/workers/sync.py", line 135, in handle
[webapp] 2020/12/08 21:05:17 self.handle_request(listener, req, client, addr)
[webapp] 2020/12/08 21:05:17 File "/usr/lib/python3/dist-packages/gunicorn/workers/sync.py", line 176, in handle_request
[webapp] 2020/12/08 21:05:17 respiter = self.wsgi(environ, resp.start_response)
[webapp] 2020/12/08 21:05:17 File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 2464, in __call__
[webapp] 2020/12/08 21:05:17 return self.wsgi_app(environ, start_response)
[webapp] 2020/12/08 21:05:17 File "/usr/local/lib/python3.7/dist-packages/flask_socketio/__init__.py", line 46, in __call__
[webapp] 2020/12/08 21:05:17 start_response)
[webapp] 2020/12/08 21:05:17 File "/usr/local/lib/python3.7/dist-packages/engineio/middleware.py", line 60, in __call__
[webapp] 2020/12/08 21:05:17 return self.engineio_app.handle_request(environ, start_response)
[webapp] 2020/12/08 21:05:17 File "/usr/local/lib/python3.7/dist-packages/socketio/server.py", line 563, in handle_request
[webapp] 2020/12/08 21:05:17 return self.eio.handle_request(environ, start_response)
[webapp] 2020/12/08 21:05:17 File "/usr/local/lib/python3.7/dist-packages/engineio/server.py", line 416, in handle_request
[webapp] 2020/12/08 21:05:17 socket = self._get_socket(sid)
[webapp] 2020/12/08 21:05:17 File "/usr/local/lib/python3.7/dist-packages/engineio/server.py", line 609, in _get_socket
[webapp] 2020/12/08 21:05:17 raise KeyError('Session is disconnected')
[webapp] 2020/12/08 21:05:17 KeyError: 'Session is disconnected'
[webapp] 2020/12/08 21:05:17 [vdlm2 data] b'{"timestamp":1607461517.118571,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11269048,"toaddr":1053386,"is_response":1,"is_onground":0}\n'
[webapp] 2020/12/08 21:05:17 Invalid session e813bbeb08cc4fa9b29eb19d95b2b817 (further occurrences of this error will be logged with level INFO)
[vdlm2dec] 2020/12/08 21:05:17 {"timestamp":1607461517.5771129,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11261371,"toaddr":1066154,"is_response":0,"is_onground":0,"mode":"2","label":"H1","block_id":"3","ack":"!","tail":"N8616C","flight":"WN2395","msgno":"F42A","text":"#M1B/BA USADCXA.DR1.N8616C9CD9"}
[webapp] 2020/12/08 22:05:05 [vdlm2 data] b'{"timestamp":1607465105.8807731,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":11139997,"toaddr":1053386,"is_response":1,"is_onground":0}\n'
[webapp] 2020/12/08 22:05:07 [2020-12-08 22:05:07 +0000] [370] [ERROR] Error handling request /socket.io/?EIO=3&transport=polling&t=1607465107061-19826&sid=0aa97f0859f544418608c01dde259875
[webapp] 2020/12/08 22:05:07 Traceback (most recent call last):
[webapp] 2020/12/08 22:05:07 File "/usr/lib/python3/dist-packages/gunicorn/workers/sync.py", line 135, in handle
[webapp] 2020/12/08 22:05:07 self.handle_request(listener, req, client, addr)
[webapp] 2020/12/08 22:05:07 File "/usr/lib/python3/dist-packages/gunicorn/workers/sync.py", line 176, in handle_request
[webapp] 2020/12/08 22:05:07 respiter = self.wsgi(environ, resp.start_response)
[webapp] 2020/12/08 22:05:07 File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 2464, in __call__
[webapp] 2020/12/08 22:05:07 return self.wsgi_app(environ, start_response)
[webapp] 2020/12/08 22:05:07 File "/usr/local/lib/python3.7/dist-packages/flask_socketio/__init__.py", line 46, in __call__
[webapp] 2020/12/08 22:05:07 start_response)
[webapp] 2020/12/08 22:05:07 File "/usr/local/lib/python3.7/dist-packages/engineio/middleware.py", line 60, in __call__
[webapp] 2020/12/08 22:05:07 return self.engineio_app.handle_request(environ, start_response)
[webapp] 2020/12/08 22:05:07 File "/usr/local/lib/python3.7/dist-packages/socketio/server.py", line 563, in handle_request
[webapp] 2020/12/08 22:05:07 return self.eio.handle_request(environ, start_response)
[webapp] 2020/12/08 22:05:07 File "/usr/local/lib/python3.7/dist-packages/engineio/server.py", line 396, in handle_request
[webapp] 2020/12/08 22:05:07 socket = self._get_socket(sid)
[webapp] 2020/12/08 22:05:07 File "/usr/local/lib/python3.7/dist-packages/engineio/server.py", line 609, in _get_socket
[webapp] 2020/12/08 22:05:07 raise KeyError('Session is disconnected')
[webapp] 2020/12/08 22:05:07 KeyError: 'Session is disconnected'
[vdlm2dec] 2020/12/08 22:05:12 {"timestamp":1607465112.33723,"station_id":"CS-KABQ-VDLM","channel":2,"freq":136.975,"icao":10758676,"toaddr":1057098,"is_response":0,"is_onground":0,"mode":"2","label":"_d","block_id":"8","ack":"D","tail":"N368AR","flight":"AM0659","msgno":"S75A"}
Could possibly tweak the ADSB part of readme??
from:
"If you desire enhanced ADSB and ACARS message matching, and are running Mike's tar1090 container, you can enable the following option:"
to
"If you desire enhanced ADSB and ACARS message matching and thus show coloured aircraft icons on Live Map, and are running Mike's tar1090 container, you can enable the following option:"
Spent a while wondering why I had a lot of only Blue a/c and messages coming in. Queried and followed wiedehopf's polite R.T.F.M. suggestion. Having originally read over that I section I figured that it would only enhance the info displayed when hovering over the a/c and did not realise it would also link in the ACARS messages.
Just a suggestion.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.