IoT

Rastreamento ao vivo da Estação Espacial Internacional

Agustín Pelaez
· 2 min de leitura
Enviar por e-mail

Durante o encontro de usuários do Python em Boston, em outubro , desenvolvemos este projeto simples, mas divertido. Como se tratava de um encontro de software — e não de hardware —, meu objetivo era ler alguns dados em tempo real já disponíveis e interpretá-los por meio do serviço Ubidots

Por sorte, encontrei este serviço, viabilizado por Nathan Bergey, que atualiza a posição da ISS em tempo real. Ao ler os dados ao vivo, conseguimos medir a distância entre a ISS e Boston e, em seguida, publicar todos os dados no Ubidots

Assim que os dados estiverem disponíveis, um alerta pode ser configurado para ser acionado sempre que a estação estiver próxima:

Evento ISS

Que tal acionar um URL HTTP que acenda uma luz toda vez que a estação passar sobre 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, em seguida, deverá funcionar conforme mostrado acima. Para aprender como enviar um GeoPoint para a Ubidots , consulte nossa documentação .

Observação: Este script apenas rastreia a posição da ISS e usa uma fórmula padrão para calcular sua distância a um ponto específico da Terra. Ele não reflete as oportunidades reais de observação, pois estas dependem de mais variáveis ​​além da proximidade (como a hora do dia).

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

Clique aqui para começar

from ubidots import ApiClient import requests,time from math import * #Conectar ao Ubidots api = ApiClient('a21ebaf64e14d195c0044fcxxb9f6dab9d653af3') #Instanciar variável local do Ubidots local_distance = api.get_variable('54ca7a2176254xxxfd4b9493f') def main(): while(1): #Obter posição atual da 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 o 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 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()