IoT

Seguimiento en vivo de la Estación Espacial Internacional

Agustín Peláez
· 2 min de lectura
Enviar por correo electrónico

Durante la reunión de usuarios de Python Boston del pasado mes de octubre , elaboramos este proyecto simple pero divertido. Debido a que se trataba de una reunión de software, no de hardware, mi objetivo era leer algunos datos ya disponibles en tiempo real y darles sentido a través del Ubidots .

Afortunadamente, encontré este servicio posible gracias a Nathan Bergey que actualiza la posición de la ISS en tiempo real. Al leer sus datos en vivo, podemos medir la distancia entre la ISS y Boston y luego publicar todos los datos en Ubidots

Una vez que los datos están allí, se puede configurar una alerta para activar una alerta cada vez que la estación esté cerca:

ISS_Evento

¿Qué tal activar una URL HTTP que encienda una luz cada vez que la estación pasa sobre tu cabeza?

Presentamos el código fuente a continuación. Puede insertar su propia clave API e identificación de variable, cambiar las coordenadas para que coincidan con su ubicación y luego debería funcionar como se muestra arriba. Para saber cómo enviar un GeoPoint a la API Ubidots consulte nuestra documentación .

Nota: Este script simplemente rastrea la posición de la ISS y utiliza una fórmula estándar para calcular su distancia a un punto específico de la Tierra. No refleja oportunidades reales de avistamiento, ya que depende de más variables además de la proximidad (es decir, la hora del día).

¿Tiene una idea de proyecto para rastrear algo en tiempo real?

Haga clic aquí para comenzar

de ubidots importar solicitudes de importación de ApiClient, tiempo de importación matemática * #Conectar a Ubidots api = ApiClient('a21ebaf64e14d195c0044fcxxb9f6dab9d653af3') #Crear una instancia de la variable local de Ubidots local_distance = api.get_variable('54ca7a2176254xxxfd4b9493f') def main(): mientras(1): #Obtener la posición actual de la ISS req_iss = request.get(' http://api.open-notify.org/iss-now.json ') dict = req_iss.json() latlong = dict['iss_position']; lat1 = latlong['latitud'] lon1 = latlong['longitude'] #Calcular distancia al hogar lat2 = 50.085305 lon2 = -5.315853 d = getDistance(lat1,lon1,lat2,lon2) d = round(d,1) #Enviar valor para Ubidots local_distance.save_value({'value':d,'context':{'lat':lat1,'lng':lon1}}) time.sleep(1) def getDistance(lat1,lon1,lat2,lon2) : R = 6371; #Radio de la tierra en km dLat = deg2rad(lat2-lat1); # grados2rad debajo de dLon = grados2rad(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)); re = R * c; # Distancia en km retorno d; def grados2rad(grados): devuelve grados * (pi/180) si nombre == ' principal ': principal()