Skip to content

Instantly share code, notes, and snippets.

@dceejay
Last active August 29, 2015 13:56
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dceejay/2fb5af697b158d9335e9 to your computer and use it in GitHub Desktop.
Save dceejay/2fb5af697b158d9335e9 to your computer and use it in GitHub Desktop.
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":[]}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment