Etape 2: Quand ISS s’envolera par ici ?
Cette fonctionnalité est tombé dans un autre blog. Alors qu’il travaillait sur une réponse, j’ai pensé que ce serait une fonctionnalité intéressante pour le tracker de l’ISS depuis le menu principal était encore un peu vide. Le script n’utilise les nouvelles fonctionnalités de la SenseHat. En effet elle affiche uniquement les sorties sur la matrice lcd. J’ai enregistré le script comme une nouvelle version, donc la première version est également toujours disponible. Vous pouvez trouver le nouveau script ici : version 1.0
Une réponse à la question « Quelle est la prochaine fois ISS vont voler au-dessus de l’emplacement de l’IPD? », il faut aller à l’emplacement actuel de l’IPD (« Où suis-je? ») et une projection de cet emplacement au bord de l’ISS vol régime (« Quand ISS sera ici? »).
L' API de géolocalisation Google Maps (pour le géocodage dynamique) peuvent produire des données de localisation sur les différents types de requêtes. J’ai utilisé l’adresse mac de l’hôte Wifi de poster pour les coordonnées de l’emplacement. Python propose le "uuid-bibliothèque" pour obtenir cette adresse mac, alors il faut l’importer d’abord ('uuid importons getnode comme get_mac'). La bibliothèque renvoie l’adresse comme un entier de 48 bits. Google s’attend à un format avec les:'s et les chiffres hexadécimaux en majuscules. La conversion peut être effectuée en une seule ligne :
'MAC = ':'.devient ((« % 012 X » % mac) [i:i + 2] car moi dans l’intervalle (0, 12, 2))'
Ce blog n’était pas censé pour être sur la chaîne de manutention en Python, donc je vais le laisser ici. L’appel à l’api de Google a besoin d’un format spécifique, donc dans les prochaines lignes l’objet json et l’en-tête sont créés.
Pour utiliser l’api Google s, il faut un API_Key spécifique. Ce sont des touches personnelles ; donc j’ai supprimé les clés dans le script, mais on peut obtenir une clé personnelle à: géocodage pour usage personnel, les touches sont gratuites et sont limités à 2.500 appels par jour. (Donc ne pas l’utiliser dans une boucle.)
S’il y a un problème (comme trop d’appels) de l’api renverra une erreur http. Étant donné que l’erreur est une sous-classe de URLError et j’ai n’a pas besoin des informations supplémentaires, j’ai utilisé seulement l’exception URLError .
La réponse est un document json consistant en un enchaînement de dictionnaires en couches. Vous aurez à les décoller pour obtenir les coordonnées que nous avons besoin.
Donc, pour répondre à la question 'où suis-je?', le script obtient l’adresse mac et l’envoie dans un message à une api de Google. Il s’agit d’assez de données pour mettre en place la prochaine question, mais j’ai pensé qu’il est agréable, d’afficher quelques informations lisibles de l’emplacement. Pour cela j’ai utilisé les coordonnées retournées pour un poste à un deuxième api Google pour renversé le géocodage. Pour cette api, vous aurez besoin un deuxième API_KEY et il retournera un document json énorme. Si le script pelures de cette structure pour obtenir un 'formatted_address'. Rappelez-vous : le contenu de 'formatted_address' se distingue par la situation ! Dans mon cas elle retourne juste la ville et du pays, qui était tout ce que je voulais, mais si vous êtes aux Etats-Unis, vous allez probablement recevoir du nom de rue, numéro et code postal ainsi (qui est un, mais trop d’affichage à la matrice lcd).
Parce que je ne voulais pas aller dans l’imbrication de plusieurs 'essayez-sauf' instructions, j’ai divisé les appels de plusieurs fonctions de Python et garder une trace de l’écoulement de plusieurs valeurs booléennes (URLn_FOUND). Pas exactement une contribution à la lisibilité de l’écriture, mais j’ai essayé de le garder aussi simple et transparente que possible. Programmeurs Pro sera sûrement trouver de meilleure façon, utiliser des classes, etc..
So, the next question (‘When will ISS fly over’) can be answered with a simple call to the api at ‘open-notify.org’. Cette api retourne un tableau de date, temps et durées. La durée est basée sur les moments QU'ISS sera à environ 20 degrés au-dessus de l’horizon. J’ai utilisé uniquement la première entrée (les prochains différera environ 90 minutes chacune en temps - temps au tour de ISS - et bien sûr dans la durée).
Eh bien, est-ce que Sense(hat) ? Je ne sais pas. À mon avis le SenseHat essentiellement sur les données environnementales et facile affiche sur une écran lcd à matrice. Mon hobby est la construction des robots autonomes (ou presque). Le SenseHat peut produire (un peu) données IMU d’utiliser par exemple avec un robot d’équilibrage. Parce que les broches GPIO ne sont plus accessibles, communiquant avec servo, moteurs dc/stepper, lidar/ir/nous-capteurs, etc ont à faire à travers une autre carte à microprocesseur. (Série) Communication entre les planches apporte en latence inutile. Donc pour l’instant je vais rester à mon architecture actuelle : utilisant des microprocesseurs comme Arduino pour faire face à la partie « firmware » (capteurs, actionneurs/moteurs, y compris l’équilibrage/odométrie) et avoir les RPi traitent plus lourde logique et traitement, comme la vision par ordinateur.
Néanmoins, il est amusant de jouer avec le SenseHat et j’aime vraiment le projet Astro Pi.
Quitter le menu principal dans le script avec un siège à pourvoir... Donc, je suis vraiment intéressé à idées !
Peut-être... Une fonction pour l’exploitation d’une lampe de poche, clignotant « Équipage de l’ISS salutations » en Morse, chaque fois que l’ISS passe au-dessus de votre maison ?