Rastreamento ao vivo da Estação Espacial Internacional

Durante o encontro de usuários do Python Boston em outubro , montamos este projeto simples, mas divertido. Como este foi um encontro de software - não de hardware - meu objetivo era ler alguns dados já disponíveis em tempo real e entendê-los por meio do Ubidots .

Felizmente encontrei este serviço possibilitado por Nathan Bergey que atualiza a posição da ISS em tempo real. Ao ler seus dados ao vivo, podemos medir a distância entre a ISS e Boston e depois postar todos os dados no Ubidots

Assim que os dados estiverem lá, um alerta pode ser configurado para acionar um alerta sempre que a estação estiver próxima:

Que tal acionar uma URL HTTP que acende uma luz toda vez que a estação passa por cima da sua cabeça?

Apresentamos o código fonte abaixo. Você pode inserir sua própria chave de API e ID de variável, alterar as coordenadas para corresponder à sua localização e então deve funcionar conforme mostrado acima. Para saber como enviar um GeoPoint para a API Ubidots confira nossa documentação .

Nota: Este script apenas rastreia a posição da ISS e usa uma fórmula padrão para calcular sua distância até um ponto específico na Terra. Não reflecte oportunidades reais de avistamento, pois depende de mais variáveis ​​do que apenas da proximidade (ou seja, hora do dia).

Tem uma ideia de projeto para acompanhar algo em tempo real?

Clique aqui para começar

de ubidots importa solicitações de importação de ApiClient, tempo de importação matemática * #Conectar a Ubidots api = ApiClient('a21ebaf64e14d195c0044fcxxb9f6dab9d653af3') #Instanciar variável local de Ubidots local_distance = api.get_variable('54ca7a2176254xxxfd4b9493f') def principal(): enquanto(1): #Obter a posição atual do ISS 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'] #Calcular a distância até casa 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; #Raio da Terra em km dLat = deg2rad(lat2-lat1); # deg2rad abaixo 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; # Distância em km retorno d; def deg2rad(deg): retorna deg * (pi/180) se nome == ' main ': main()