Plane spotting with RTL-SDR and Dump1090

Quite a few people have been using the DVB TV dongles for Software Defined Radios - and one of the most popular uses is to track local air traffic...

One good how-to is here - https://ferrancasanovas.wordpress.com/2013/09/26/dump1090-installation/

The dump1090 app can be set to create a web page automatically... it's an aweswome bit of code originally by @antirez (the author of Redis) who wrote it in his spare time !!!

Anyway - the web page is driven by a json feed we can intercept with Node-RED to do other cool stuff with...

So once you have dump1090 installed and running... you need to set it to output to the network.. so run it like this

 dump1090 --net --quiet

and then run Node-RED with the flow below (set to point to localhost - in the http request node)

The flow below takes the default JSON array produced and splits the valid ones into individual output objects, one per plane.

[{"id":"be7ca0d2.95f7b","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":118.16665649414062,"y":708.1666870117188,"z":"f00846b4.f4d6a","wires":[["853882bc.f91c8"]]},{"id":"853882bc.f91c8","type":"http request","name":"","method":"GET","url":"http://127.0.0.1:8080/dump1090/data.json","x":183.16665649414062,"y":811.1666660308838,"z":"f00846b4.f4d6a","wires":[["ddcc6edd.c0e0f"]]},{"id":"c6851306.f6e44","type":"debug","name":"","active":false,"complete":"false","x":426.1666679382324,"y":798.1666669845581,"z":"f00846b4.f4d6a","wires":[]},{"id":"ddcc6edd.c0e0f","type":"function","name":"Get dump1090 --net planes","func":"// use GET from http://127.0.0.1:8080/dump1090/data.json\n// and use dump1090 --net --quiet\n\nvar p = JSON.parse(msg.payload);\n\nmsg = [];\nfor (var i in p) {\n  if (p[i].validposition == 1) {\n    var o = {};\n  \to.name = p[i].flight;\n  \to.lat = p[i].lat;\n  \to.lon = p[i].lon;\n  \to.alt = p[i].altitude;\n  \to.speed = p[i].speed;\n  \to.bearing = p[i].track;\n  \to.vrate = p[i].vert_rate;\n  \to.beacon = p[i].hex;\n  \to.squawk = p[i].squawk;\n  \tmsg.push({payload:o});\n  }\n}\nreturn [ msg ];","outputs":1,"x":333.1665725708008,"y":707.1666870117188,"z":"f00846b4.f4d6a","wires":[["c6851306.f6e44","b12c006b.d85e18"]]},{"id":"6288fc09.f479dc","type":"comment","name":"You must also run \"dump1090 --net --quiet\"","info":"","x":200.16665649414062,"y":856.1666870117188,"z":"f00846b4.f4d6a","wires":[]}]
dceejay

Flow Info

created 3 years, 10 months ago

Node Types

Core
  • comment (x1)
  • debug (x1)
  • function (x1)
  • http request (x1)
  • inject (x1)

Tags

  • plane
  • dump1090
  • rtl-sdr
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option