Skip to content

Instantly share code, notes, and snippets.

@jpwsutton
Created July 26, 2014 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jpwsutton/a866ec55d8632ed4b0e9 to your computer and use it in GitHub Desktop.
Save jpwsutton/a866ec55d8632ed4b0e9 to your computer and use it in GitHub Desktop.
Calculate how far away from the International Space Station you are.

ISS Distance calculation

This flow takes your Latitude and Longitude and calculates how far away from the ISS you currently are and returns it in a msg object. The code was adapted from Linux Voice's Issue 6: International Space Station detector which is also worth a read!

HTTPS fix

The API uses https and cause a UNABLE_TO_VERIFY_LEAF_SIGNATURE which will crash node. Currently my work around is to launch node-red in this way:

NODE_TLS_REJECT_UNAUTHORIZED=0 node red.js

Although being less secure, it should now allow you to communicate with the API.

Have fun!

-James

[{"id":"e1089333.1ef77","type":"inject","name":"Trigger ISS Distance Check","topic":"","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":179,"y":94,"z":"56b706ba.a948f8","wires":[["943513b6.6bcaf"]]},{"id":"943513b6.6bcaf","type":"http request","name":"Get ISS Location","method":"GET","url":"http://api.wheretheiss.at/v1/satellites/25544","x":411,"y":94,"z":"56b706ba.a948f8","wires":[["19d3c8af.e62c37"]]},{"id":"19d3c8af.e62c37","type":"function","name":"Sort the Data","func":"var iss_json = JSON.parse(msg.payload);\nvar iss_lat = iss_json.latitude;\nvar iss_long = iss_json.longitude;\nvar home_lat = 51.026551;\nvar home_long = -1.398004;\n\n\n\nmsg.payload = {};\nmsg.payload.iss_lat = iss_lat;\nmsg.payload.iss_long = iss_long;\nmsg.payload.home_lat = home_lat;\nmsg.payload.home_long = home_long;\nreturn msg;","outputs":1,"x":399.5,"y":134,"z":"56b706ba.a948f8","wires":[["7746cae5.88b934"]]},{"id":"7746cae5.88b934","type":"function","name":"Calculate Distance","func":"var degrees_to_radians = Math.PI/180.0;\n\nvar phi1 = (90.0 - msg.payload.home_lat)*degrees_to_radians;\nvar phi2 = (90.0 - msg.payload.iss_lat)*degrees_to_radians;\nvar theta1 = msg.payload.home_long*degrees_to_radians;\nvar theta2 = msg.payload.iss_long*degrees_to_radians;\nvar cos = (Math.sin(phi1)*Math.sin(phi2)*Math.cos(theta1 - theta2) + Math.cos(phi1)*Math.cos(phi2));\nvar arc = Math.acos( cos );\nvar distance = arc *3960;\nmsg.payload.distance = distance;\nreturn msg;","outputs":1,"x":416.5,"y":174,"z":"56b706ba.a948f8","wires":[["a2b97921.5d4688"]]},{"id":"a2b97921.5d4688","type":"debug","name":"","active":true,"console":false,"complete":false,"x":605,"y":167,"z":"56b706ba.a948f8","wires":[]}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment