Live-Verfolgung der Internationalen Raumstation
Beim Python Boston User Meetup im vergangenen Oktober haben wir dieses einfache, aber unterhaltsame Projekt ins Leben gerufen. Da es sich um ein Software- und nicht um ein Hardware-Treffen handelte, bestand mein Ziel darin, bereits verfügbare Echtzeitdaten auszulesen und mithilfe des Ubidots Dienstes zu analysieren.
Zum Glück bin ich auf Nathan Bergey entwickelten Dienst , der die Position der ISS in Echtzeit aktualisiert. Durch das Auslesen der Live-Daten können wir die Entfernung zwischen der ISS und Boston messen und die gesamten Daten anschließend auf Ubidots

Wie wäre es, eine HTTP-URL aufzurufen, die jedes Mal ein Licht einschaltet, wenn der Sender über Ihren Kopf fliegt?
Den Quellcode finden Sie unten. Sie können Ihren eigenen API-Schlüssel und Ihre Variablen-ID einfügen, die Koordinaten an Ihren Standort anpassen, und es sollte wie oben gezeigt funktionieren. Informationen zum Senden eines GeoPoints an die Ubidots API finden Sie in unserer Dokumentation .
Hinweis: Dieses Skript verfolgt lediglich die Position der ISS und berechnet mithilfe einer Standardformel ihre Entfernung zu einem bestimmten Punkt auf der Erde. Es spiegelt keine tatsächlichen Sichtungsmöglichkeiten wider, da diese von mehr Variablen als nur der Nähe abhängen (z. B. der Tageszeit).
Haben Sie eine Projektidee, um etwas in Echtzeit zu verfolgen?
Klicken Sie hier, um loszulegen.
from ubidots import ApiClient import requests,time from math import * # Verbindung zu Ubidots api = ApiClient('a21ebaf64e14d195c0044fcxxb9f6dab9d653af3') # Lokale Variable von Ubidots instanziieren local_distance = api.get_variable('54ca7a2176254xxxfd4b9493f') def main(): while(1): # Aktuelle ISS-Position abrufen req_iss = requests.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 Startpunkt berechnen lat2 = 50.085305 lon2 = -5.315853 d = getDistance(lat1,lon1,lat2,lon2) d = round(d,1) # Wert an Ubidots local_distance.save_value({'value':d,'context':{'lat':lat1,'lng':lon1}}) time.sleep(1) def getDistance(lat1,lon1,lat2,lon2): R = 6371; # Erdradius 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()