Suivi en direct de la Station spatiale internationale

Lors de la rencontre des utilisateurs Python Boston d'octobre , nous avons mis en place ce projet simple mais amusant. Parce qu'il s'agissait d'une rencontre logicielle (et non matérielle), mon objectif était de lire certaines données en temps réel déjà disponibles et de leur donner un sens via le Ubidots .

Heureusement, j'ai trouvé ce service rendu possible par Nathan Bergey qui met à jour la position de l'ISS en temps réel. En lisant ses données en direct, nous pouvons mesurer la distance entre l'ISS et Boston, puis publier l'intégralité des données sur Ubidots

Une fois les données là, une alerte peut être paramétrée pour déclencher une alerte à chaque fois que la station est à proximité :

Que diriez-vous de déclencher une URL HTTP qui allume une lumière à chaque fois que la station survole votre tête ?

Nous présentons le code source ci-dessous. Vous pouvez insérer votre propre clé API et identifiant de variable, modifier les coordonnées pour qu'elles correspondent à votre emplacement, puis cela devrait fonctionner comme indiqué ci-dessus. Pour savoir comment envoyer un GeoPoint à l' Ubidots , consultez notre documentation .

Remarque : ce script suit simplement la position de l'ISS et utilise une formule standard pour calculer sa distance jusqu'à un point spécifique de la Terre. Cela ne reflète pas les opportunités d'observation réelles car cela dépend de plus de variables que la simple proximité (c'est-à-dire l'heure de la journée).

Vous avez une idée de projet pour suivre quelque chose en temps réel ?

Cliquez ici pour commencer

à partir d' ubidots importent les requêtes d'importation ApiClient, heure de l'importation mathématique * #Connectez-vous à Ubidots = ApiClient('a21ebaf64e14d195c0044fcxxb9f6dab9d653af3') #Instancier une variable locale à partir d' Ubidots local_distance = api.get_variable('54ca7a2176254xxxfd4b9493f') def main(): while(1): #Obtenir la position actuelle de l'ISS req_iss = requêtes.get(' http://api.open-notify.org/iss-now.json ') dict = req_iss.json() latlong = dict['iss_position']; lat1 = latlong['latitude'] lon1 = latlong['longitude'] #Calculer la distance jusqu'au domicile lat2 = 50,085305 lon2 = -5,315853 d = getDistance(lat1,lon1,lat2,lon2) d = round(d,1) #Envoyer valeur pour Ubidots local_distance.save_value({'value':d,'context':{'lat':lat1,'lng':lon1}}) time.sleep(1) def getDistance(lat1,lon1,lat2,lon2) : R = 6371 ; #Rayon de la terre en km dLat = deg2rad(lat2-lat1); # deg2rad en dessous de 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 ; # Distance en km retour d; def deg2rad(deg) : renvoie deg * (pi/180) si nom == ' main ' : main()