Observer la station spatiale internationale : Spot The Station, Raspberry-Pi et Python

Aujourd'hui nous allons passer notre curiosité dans le ciel... et voir comment cela pourrait déraper sur un Raspberry-Pi avec Python.

La chasse aux satellites 
C'est bientôt l'été, il fait chaud et le ciel est dégagé.
C'est l'occasion d'admirer les étoiles et de faire la chasse au satellites (il est possible de les voir passer dans le ciel 1 à 2 heures après le couché du soleil (avec le soleil dans le dos).
C'est comme une étoile mais qui se déplace assez vite dans le ciel. Un satellite reste visible entre 1 et 5 minutes.

En fin de compte, c'est un jeu assez sympathique permettant de profiter d'un peu de fraîcheur sur la terrasse.

La chasse à la Station Spatiale Internationale (ISS) 

Parmi ces satellites, il est possible de voir la station spatiale internationale.
Pas toujours visible (il faut bien choisir son moment), c'est comme un satellite en vachement plus brillant. Pour le moment nous avons de la chance, la station passe au plafond et reste visible plus longtemps (jusqu'à 6 minutes).

Faut-il encore savoir quand elle passe? Car elle n'est pas visible tous les jours.
Heureusement pour nous, il y a "Spot the Station"

https://spotthestation.nasa.gov/

Saisissez votre ville (ex: Waterloo, Belgium) puis agrandissez la carte pour trouver la ville la plus proche. Cela tombe bien... il y a un relevé pour Waterloo.
 
Cliquer ensuite sur le sélecteur "bleu"

Cliquez sur le libellé "View Sighting Opportunities

Voilà, nous obtenons une liste des prochains passages
Hey! il y a un passage ce Dimanche à 23:13 (11:13 PM)
Utiliser un Raspberry-Pi pour être averti
Ce que je trouverais vraiment génial, c'est d'avoir l'information sur un Raspberry-Pi avec un mini écran TFT
PiTFT Mini d'Adafruit - disponible chez MCHobby
L'idée, c'est d'allumer l'écran LCD que les jours où la station internationale sera visible chez nous (donc Waterloo).
Et y indiquer le (ou les) prochain(s) passage et information utiles comme heure d'arrivée, de sortie, temps de visibilité... "position" d'arrivé et de départ.

Voir appuyer sur un bouton pour activer une alarme qui se déclenchera quelques minutes avant l'heure de passage.

Un chouette boulot pour du code Python et PyGame.
Faut-il encore savoir où trouver les données.

api.open-notify.org
Cela tombe bien, en fouillant sur le net nous avons trouvé un document chez codeclubprojects.org qui fait appel à une API de open-notify.org

Et quelques requêtes plus tard... bingo!
Nous avons la documentation de l'API "International Space Station Pass Times" qui permet de connaître les heures de passages... le tout retourné dans une belle structure JSON.

http://open-notify.org/Open-Notify-API/ISS-Pass-Times/

Une petite rechercher sur le Net nous apprend que Waterloo se trouve
  • Latitude: 50.7
  • Longitude: 4.38
En suivant la documentation de l'API, nous pouvons lancer la requête
http://api.open-notify.org/iss-pass.json?lat=50.7&lon=4.38
ce qui nous renvoi le résultat suivant:

{
  "message": "success", 
  "request": {
    "altitude": 100, 
    "datetime": 1496007329, 
    "latitude": 50.7, 
    "longitude": 4.38, 
    "passes": 5
  }, 
  "response": [
    {
      "duration": 645, 
      "risetime": 1496011672
    }, 
    {
      "duration": 629, 
      "risetime": 1496017463
    }, 
    {
      "duration": 490, 
      "risetime": 1496023280
    }, 
    {
      "duration": 276, 
      "risetime": 1496077843
    }, 
    {
      "duration": 594, 
      "risetime": 1496083411
    }
  ]
}

  • Duration est la temps de visibilité en seconde
  • Risetime est l'heure du levé (Unix TimeStamp)
Pour transformer "Unix TimeStamp" en python, il faut utiliser le code suivant pour la valeur de la première réponse:

>>> import datetime
>>> timestamp = datetime.datetime( 1496011672 )
>>> timestamp = datetime.datetime.fromtimestamp( 1496011672 )
>>> timestamp
datetime.datetime(2017, 5, 29, 0, 47, 52)


Il ne reste plus qu'a charger les données avec un petit bout de code python.

Bon amusement,
Dominique

Aucun commentaire