• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

MMM-FlightTracker - Real time plane tracker using ADS-B systems

Scheduled Pinned Locked Moved Transport
29 Posts 9 Posters 8.5k Views 10 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    tbouron Module Developer @jrsphoto
    last edited by tbouron Dec 27, 2019, 8:07 AM Dec 27, 2019, 8:06 AM

    @jrsphoto said in MMM-FlightTracker - Real time plane tracker using ADS-B systems:

    I love the idea of having a flight tracker on my magicmirror, but I already have a flight tracker on my network. Its a raspberry pi runnng PiAware flight tracker. Any way you could have this plugin support a remote flight tracker over the network rather than directly connected?

    Hi @jrsphoto. The idea behind the module was to use the hardware directly rather than using an API like flightaware/flightradar24/etc, because this mean that everybody needs to have either:

    • an paid account there
    • another PI along side the one for the mirror + ADS-B receiver
      This incur more cost hence why I went for the direct connection to the hardware.

    However, I looked at PiAware and from what I can see from https://github.com/flightaware/piaware, there is no API available to get the data out of this from the LAN. But at that point, that would be irrelevant as you could target directly the public API.

    Maybe I’ll do another module in the future for flightaware or flightradar24 if I got my hands on another ADS-B device.

    1 Reply Last reply Reply Quote 0
    • Y Offline
      ytmytm
      last edited by ytmytm Dec 29, 2019, 8:26 PM Dec 29, 2019, 7:47 PM

      Hi @tbouron

      PiAware tracker (based on dump1090) makes its local data available in several JSON data dumps accessible under /data/ URL:

      • http://(host):(port)/data/aircraft.json - list of visible aircrafts
      • http://(host):(port)/data/stats.json - receiver statistics - number of messages, signal quality, etc.
      • http://(host):(port)/data/receiver.json - receiver status, particularily refresh rate (how often aircraft.json is refreshed) and history length
      • http://(host):(port)/data/history_(number).json - copy of earlier states of aircraft.json with number going from 0 to history length. History files are a ring buffer so you need to load them all to figure out the most recent one.

      Other homebrew solutions based on dump1090 can have similar set of results enabled.

      Complete description is here dump1090 README-json.md

      But at that point, that would be irrelevant as you could target directly the public API.

      It’s still relevant :). I live next to a military airbase and on my feed I see both military and government aircrafts that are censored from sites like flightaware/flightradar. I feed to Flightaware, so I know this for sure :).

      1 Reply Last reply Reply Quote 0
      • T Offline
        tbouron Module Developer
        last edited by Dec 29, 2019, 9:14 PM

        Hum if we can get the data out of this then yes, I can look into this :)

        I’ll look at dump1090 and see what I can do. Wanted to go back to the output design anyway so might be a nice feature to add.

        I’ll let you know.

        1 Reply Last reply Reply Quote 1
        • T Offline
          tbouron Module Developer
          last edited by Jan 3, 2020, 9:31 AM

          HI @ytmytm.

          So I looked at this over the past week and it turns out to be more complicated than expected.

          dump1090 does expose a raw stream of data but I could not use it as the data there is serialised from a C struct, which cannot be reconstructed from nodejs. I then looked at the SBS1 (BaseStation) stream to get the parsed data directly. This is a bit fiddly to make it work with the current codebase, and requires changes into npn dependencies I’m using.
          However, this is the best alternative I could find so I’ll continue in that direction. Bear in mind that as I have to modify dependencies so this will take a bit of time before I can release something that works ok.

          1 Reply Last reply Reply Quote 0
          • T Offline
            tbouron Module Developer
            last edited by tbouron Jan 5, 2020, 1:02 PM Jan 5, 2020, 12:59 PM

            Alright @ytmytm got something working with the data exposed by dump1090.
            This is available on the branch feature/network where also updated the README.md regarding the configuration: https://github.com/tbouron/MMM-FlightTracker/tree/feature/network. You will need to update the dependencies:

            git fetch && git pull feature/network && npm i
            

            I’m running this locally and seems to work quite well. However, can I ask you to test it and report back with any issues, or a thumbs up? I’ll push this “officially” when I’m sure it works for you :)

            Y 1 Reply Last reply Jan 6, 2020, 10:31 AM Reply Quote 1
            • Y Offline
              ytmytm @tbouron
              last edited by Jan 6, 2020, 10:31 AM

              @tbouron This is working great:

              0_1578306288401_sdrpi.PNG

              After npm iI had to do some more.

              I realized that librtlsdr is required also when using network mode, so this had to be installed first, with library headers:

              sudo apt install librtlsdr-dev
              

              Next I got messages about missing symbols fromrtl-sdr.node module:

              node: symbol lookup error: /home/pi/MagicMirror/modules/MMM-FlightTracker/node_modules/rtl-sdr/build/Release/rtlsdr.node: undefined symbol: _ZN2v816FunctionTemplate3NewEPNS_7IsolateEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEENS_5LocalIS4_EENSA_INS_9SignatureEEEiNS_19ConstructorBehaviorE
              

              So it had to be rebuilt against my librtlsdr:

              npm rebuild rtl-sdr --build-from-source
              

              Thumbs up! Thanks!

              T 1 Reply Last reply Jan 6, 2020, 10:48 AM Reply Quote 0
              • T Offline
                tbouron Module Developer @ytmytm
                last edited by tbouron Jan 6, 2020, 10:49 AM Jan 6, 2020, 10:48 AM

                @ytmytm Cool, glad it works fine! I actually just realised that my last commit is not quite right regarding the connection retry if the TCP stream is closed. I’ll fix that for the merge in master.

                Regarding the dependency issue, you are right, I missed the librtlsdr-dev dependency in the prerequisites list, I’ll add that (FYI, this is needed only for the rtlsdr mode). And I think you had to rebuild the module because it was missing when you executed npm i (It is certainly not something I had to do on my Pi)

                I’ll clean this up and push to master, probably tomorrow though.

                Finally, I’m also working on a new UI with better UX (I think), I’ll post screenshots when I can.

                Y 1 Reply Last reply Jan 6, 2020, 11:35 AM Reply Quote 1
                • Y Offline
                  ytmytm @tbouron
                  last edited by Jan 6, 2020, 11:35 AM

                  @tbouron said in MMM-FlightTracker - Real time plane tracker using ADS-B systems:

                  And I think you had to rebuild the module because it was missing when you executed npm i (It is certainly not something I had to do on my Pi)

                  That’s correct. I cleared everything and tried again. The rebuild step is not necessary because the module is actually built during npm install step.

                  T 1 Reply Last reply Jan 6, 2020, 11:46 AM Reply Quote 1
                  • T Offline
                    tbouron Module Developer @ytmytm
                    last edited by Jan 6, 2020, 11:46 AM

                    @ytmytm Thanks for confirming this. I’ll take that into account when I’ll update the README.md

                    1 Reply Last reply Reply Quote 0
                    • T Offline
                      tbouron Module Developer
                      last edited by tbouron Jan 6, 2020, 10:20 PM Jan 6, 2020, 10:19 PM

                      That’s what I’m currently working on, a better layout to display the plane where:

                      • airline name can be toggled from the config
                      • aircraft type (if recognised) can be toggled from the config
                      • metadata can be toggled from the config

                      Also, the icon beside the altitude reflects the current vertical rate (stays horizontal if vertical rate is 0 or not defined)

                      1_1578349146926_Screenshot 2020-01-05 at 14.52.25.png

                      0_1578349146925_Screenshot 2020-01-05 at 14.50.38.png

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 1 / 3
                      1 / 3
                      • First post
                        10/29
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy