Live-Tracking der Internationalen Raumstation
Während des Python Boston User-Treffens im letzten Oktober haben wir dieses einfache, aber unterhaltsame Projekt zusammengestellt. Da es sich um ein Software-Treffen und nicht um ein Hardware-Treffen handelte, bestand mein Ziel darin, einige bereits verfügbare Echtzeitdaten zu lesen und sie über den Ubidots -Dienst zu verstehen.
Glücklicherweise habe ich Nathan Bergey ermöglichten Service , der die ISS-Position in Echtzeit aktualisiert. Durch das Auslesen der Live-Daten können wir die Entfernung zwischen der ISS und Boston messen und die gesamten Daten dann an Ubidots
Wie wäre es, wenn Sie eine HTTP-URL auslösen, die jedes Mal ein Licht einschaltet, wenn die Station über Ihren Kopf fliegt?
Nachfolgend stellen wir den Quellcode vor. Sie können Ihren eigenen API-Schlüssel und Ihre Variablen-ID einfügen, die Koordinaten entsprechend Ihrem Standort ändern und dann sollte es wie oben gezeigt funktionieren. Um zu erfahren, wie Sie einen GeoPoint an die Ubidots -API senden, schauen Sie sich unsere Dokumentation an .
Hinweis: Dieses Skript verfolgt lediglich die ISS-Position und verwendet eine Standardformel, um deren Entfernung zu einem bestimmten Punkt auf der Erde zu berechnen. Es spiegelt nicht die tatsächlichen Sichtungsmöglichkeiten wider, da diese von mehr Variablen als nur der Nähe (z. B. der Tageszeit) abhängt.
Haben Sie eine Projektidee, um etwas in Echtzeit zu verfolgen?
Klicken Sie hier, um loszulegen
from ubidots import ApiClient import request,time from math import * #Connect to Ubidots api = ApiClient('a21ebaf64e14d195c0044fcxxb9f6dab9d653af3') #Instantiate local variable from Ubidots local_distance = api.get_variable('54ca7a2176254xxxfd4b9493f') def main(): while(1): #Aktuelle ISS-Position abrufen req_iss = request.get(' http://api.open-notify.org/iss-now.json ') dict = req_iss.json() latlong = dict['iss_position']; lat1 = latlong['latitude'] lon1 = latlong['longitude'] #Entfernung zum Zuhause berechnen lat2 = 50,085305 lon2 = -5,315853 d = getDistance(lat1,lon1,lat2,lon2) d = Round(d,1) #Senden Wert zu Ubidots local_distance.save_value({'value':d,'context':{'lat':lat1,'lng':lon1}}) time.sleep(1) def getDistance(lat1,lon1,lat2,lon2) : R = 6371; #Radius der Erde in km dLat = deg2rad(lat2-lat1); # deg2rad unten dLon = deg2rad(lon2-lon1); a = sin(dLat/2) * sin(dLat/2) + cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * sin(dLon/2) * sin(dLon/2) c = 2 * atan2 (sqrt(a), sqrt(1-a)); d = R * c; # Distanz in km return d; def deg2rad(deg): return deg * (pi/180) if name == ' main ': main()