¿Paso 2: Cuando se ISS vuelan por aquí?
Esta característica vino a través de otro blog. Mientras trabajaba en una respuesta, pensé que sería una característica interesante para el seguimiento de la ISS desde el menú principal aún estaba un poco vacío. La secuencia de comandos no utiliza la nueva funcionalidad de la SenseHat. De hecho solo muestra salida en la matriz de lcd. Había guardado el script como una nueva versión, así que la primera versión también está todavía disponible. Usted puede encontrar el nuevo script aquí: versión 1.0
Una respuesta a la pregunta '¿Cuándo es la próxima vez ISS volará sobre la ubicación de la RPi?', tenemos que obtener la ubicación actual de la RPi ('¿Dónde estoy?') y una proyección de ese lugar en la ISS vuelo esquema ('Cuando ISS estará aquí?').
El Geocoding API de Google Maps (para la geocodificación dinámico) puede producir datos de localización en diferentes tipos de solicitudes. Usé la dirección mac del host Wifi para enviar para las coordenadas de ubicación. Python proporciona la 'biblioteca uuid' para obtener esa dirección mac, así que tenemos que importarlo primero ('de uuid importar getnode como get_mac'). La biblioteca devuelve la dirección de un entero de 48 bits. Google espera un formato con:'s y mayúsculas dígitos hexadecimales. La conversión puede realizarse en una sola línea:
'MAC = ':' bombóm (('% 012 X' % mac) [i:i + 2] para i en gama (0, 12, 2))'
Este blog no supone ser cadena manejo en Python, por lo que voy a dejar aquí. La llamada a la api de Google necesita un formato específico, por lo que en las siguientes líneas se crearon el objeto json y la cabecera.
Para utilizar la api de Google's, uno necesita una específica API_Key. Ésas son las claves personales; así que cubierto las teclas en el guión, pero se puede obtener una clave personal en: GeoCoding para uso personal las claves son gratis y están limitados a 2.500 llamadas al día. (Así que no lo utilice en un bucle.)
Si hay un problema (como muchas llamadas) la api devolverá un HTTPError. Ya que ese error es una subclase de URLError y no necesito información adicional sólo utiliza la excepción de URLError .
La respuesta es un registro json que consiste en una concatenación de diccionarios capas. Tendrás que pelar para conseguir las coordenadas que necesitamos.
Así, para responder a la pregunta '¿Dónde estoy?', la secuencia de comandos obtiene la dirección mac y la envía en un post a una api de Google. Esto es datos suficientes para construir la siguiente pregunta, pero pensé que sería agradable Mostrar la información legible de la situación. Para eso usé las coordenadas devueltas por un post a una segunda api de Google para invertir geocodificación. Para la api tendrá un segundo API_KEY y vas a volver un registro json enorme. Así que la escritura de la pela de esa estructura para obtener un 'formatted_address'. Cuenta que: el contenido de 'formatted_address' diferencia por situación! En mi caso devuelve sólo ciudad y país, que fue todo lo que quería, pero si estás en Estados Unidos, probablemente recibirás Streetname, Housenumber y código postal así (que es un pero demasiado para mostrar en la matriz de lcd).
Porque no quería ir a anidar varios 'probar-excepto' declaraciones, de la corriente por varios booleanos (URLn_FOUND) y divide las llamadas en varias funciones de Python. No es exactamente una contribución a la legibilidad de la escritura, pero traté de mantenerlo como una simple y transparente como sea posible. Programadores de profesionales seguramente disponen de mejor manera, clases, etc..
Por lo tanto, se puede contestar la siguiente pregunta ('Cuándo volará sobre ISS') con una simple llamada a la api en el 'open-notify.org'. Esta api devuelve una matriz de fecha, tiempos y duraciones. La duración se basa en los momentos que ISS estará en unos 20 grados sobre el horizonte. Utilizado la primera entrada (los próximos variará alrededor 90 minutos cada uno en el tiempo - vuelta de ISS - y por supuesto en duración).
¿Bien, esto hace que Sense(hat)? No sé. En mi opinión la SenseHat en esencia acerca de datos ambientales y fácil muestra sobre una matriz de lcd. Mi hobby es construir robots autónomos (casi). La SenseHat (algunos) puede producir datos IMU para usar por ejemplo con un robot de equilibrio. Porque ya no son accesibles los pines GPIO, comunicación con el servo, motores de pasos de la c.c., lidar / / nosotros-sensores ir, etc. deben hacerse a través de la otra placa del microprocesador. (Serie) Comunicación entre tablas trae en latencia innecesario. Así que por ahora me quedo a mi arquitectura actual: utilizando microprocesadores como Arduino para ocuparse de la parte de 'firmware' (sensores, actuadores/motores, incluyendo equilibrio/odometría) y tienen el RPi con más pesada lógica y procesamiento, como visión por computador.
Sin embargo fue divertido jugar con el SenseHat y me gusta realmente el proyecto Astro Pi.
Dejando el menú principal en la secuencia de comandos con una vacante... Por lo tanto, estoy realmente interesado en ideas!
Tal vez... ¿Una función para operar una linterna, 'Crew saludos ISS' en Morse que destella cada vez que la ISS pasa por tu casa?