- pISSStream es una app que muestra en tiempo real la capacidad del tanque de orina de la Estación Espacial Internacional (ISS) y es compatible con macOS en la barra de menú, además de iOS, watchOS y visionOS
- Los datos se reciben del stream oficial público de telemetría de la ISS de la NASA mediante Lightstreamer, y muestra el porcentaje más reciente de llenado del tanque cuando una estación terrestre está recibiendo la señal
- En macOS muestra 🧑🏽🚀🚽 y el porcentaje de llenado en la barra de menú; si se pierde la conexión o la señal de telemetría, muestra 🧑🏽🚀❗, el último valor recibido y el estado “Connecting” o “No Signal”
- En iOS y watchOS ofrece una interfaz simple para ver el nivel del tanque en tiempo real, mientras que en visionOS brinda una visualización 3D basada en ImmersiveSpace API y audio espacial
- Como es su primera app en Swift y para plataformas de Apple, no maneja de forma muy activa los datos antiguos ni los errores; acepta Pull Requests para corregir bugs, pero no planea agregar otras estadísticas de la ISS
Qué hace pISSStream
- pISSStream es una app que muestra en tiempo real la capacidad del tanque de orina de la International Space Station
- Las plataformas compatibles son macOS, watchOS, iOS, visionOS
- Sus funciones principales son las siguientes
- Monitoreo en tiempo real del nivel del tanque de orina de la ISS
- Integración con la barra de menú de macOS
- Actualizaciones en tiempo real en las apps de iOS y watchOS
- Visualización inmersiva en 3D en visionOS
- Audio espacial basado en deep-space soundscape en la vista inmersiva
- UI mejorada y un ícono de app personalizado para Vision Pro
- Uso del stream oficial público de telemetría de la ISS de la NASA mediante Lightstreamer
Requisitos de instalación y compilación
- En macOS se puede descargar el DMG de la versión más reciente desde el enlace de Download
- En iOS, watchOS y visionOS, por el modelo de seguridad de Apple, hay que compilar desde el código fuente y firmar con una cuenta propia de desarrollador
- Los requisitos previos para compilar son los siguientes
- Xcode 15.2 o superior
- Apple Developer account
- Un dispositivo con iOS 17.0 o superior para la app de iOS
- Apple Vision Pro o el simulador de visionOS
- El procedimiento básico de compilación consiste en clonar el repositorio, abrir
pISSStream.xcodeprojen Xcode, elegir tu equipo de desarrollo en Signing & Capabilities y luego compilar y ejecutar en el dispositivo de destino - Incluso sin una Apple Developer account, se puede ejecutar hasta 7 días en simulador o dispositivo con un perfil de aprovisionamiento gratuito
Desarrollo y despliegue en visionOS
- Para desarrollar en visionOS, es necesario tener instalado el visionOS SDK en Xcode
- La app usa la ImmersiveSpace API para la experiencia de visualización 3D e incluye audio espacial para aumentar la inmersión
- Los requisitos son los siguientes
- Mac con Apple silicon
- Xcode 15.2 o superior
- Apple Developer Account
- Vision Pro con el modo desarrollador activado
- Mac y Vision Pro conectados a la misma red Wi-Fi
- El proceso de desarrollo inalámbrico consiste en permitir Developer Mode y Remote Development en Vision Pro, emparejar Vision Pro en Devices and Simulators de Xcode, seleccionarlo como destino de compilación y ejecutar
- Los problemas comunes son los siguientes
- “Device not found”: hay que verificar la conexión Wi-Fi
- “Unauthorized device”: hay que volver a emparejar Vision Pro
- “Build failed”: hay que actualizar el perfil de aprovisionamiento
- “No paired Vision Pro found”: hay que verificar la conexión y el emparejamiento de Vision Pro
- “Invalid signing”: hay que revisar la cuenta de desarrollador y el perfil de aprovisionamiento
Cómo se usa en cada plataforma
- En macOS, cuando tanto la conexión de Lightstreamer como la recepción de la señal de telemetría de la ISS funcionan correctamente, el elemento de la barra de menú muestra 🧑🏽🚀🚽 y el porcentaje de llenado
- Si se pierde la conexión o la señal de telemetría de la ISS, el elemento de la barra de menú muestra 🧑🏽🚀❗ y el último valor recibido, y en el menú aparece “Connecting” o “No Signal”
- En iOS, al abrir la app se puede ver el nivel actual del tanque en una interfaz simple
- En visionOS, se puede ver el tanque de desechos de la ISS en 3D inmersivo y visualizar su nivel de llenado en tiempo real
- En watchOS, se puede seguir en tiempo real desde la muñeca el nivel de llenado del tanque de desechos de la ISS
Motivación y limitaciones
- La motivación fue que resulta “ridículo pero al mismo tiempo asombroso” poder hacer en una tarde una app de broma que lee datos reales de telemetría en tiempo real del baño de una estación espacial
- También sirvió como una buena excusa para aprender Swift, pero la motivación central fue lo absurdo de la propia app
- Los problemas conocidos son los siguientes
- Como es su primera app en Swift y para plataformas de Apple, no representa precisamente la cumbre de las buenas prácticas de programación
- Puede romperse de maneras inesperadas por detalles mínimos
- No responde activamente a datos antiguos
- No presta demasiada atención al manejo de errores
- Se agradecen los Pull Requests para corregir bugs
- Conoció el stream de datos a través de ISS Mimic, que tiene muchas más estadísticas interesantes que el nivel del tanque de orina, pero no planea agregarlas a pISSStream
1 comentarios
Opiniones en Hacker News
Descubrí el stream de datos en https://iss-mimic.github.io/Mimic/, y hay estadísticas mucho más numerosas e interesantes que qué tan lleno está el tanque de orina
La frase “no voy a agregar nada de eso” es la forma perfecta de comunicar los no objetivos del proyecto
Vale la pena aprenderlo como buena práctica de comunicación open source
Sería una película donde los astronautas se comunican en código Morse controlando los cambios del tanque, y alguien con ADHD que tiene instalada esta app de la barra de menús se da cuenta de la situación y salva a todos
El único problema que queda es cómo subir físicamente hasta allá
Ahora me dan muchas ganas de pasar demasiado tiempo haciendo un SVG de la ISS y animándolo con estos datos
Con Real World Assets(tm) se podría enganchar a los boomers
Sigo en Bluesky a un bot que publica posts de HN con más de 50 puntos, y me sorprendió ver de pronto un enlace de GitHub familiar
Pensé que era el post que yo mismo había subido como Show HN hace unos 5 días (https://news.ycombinator.com/item?id=42464454) y me pregunté por qué aparecía de repente, pero en realidad no era mi post
Me alegra sinceramente que, entre los proyectos open source que he hecho en los últimos 15 años aproximadamente, este se haya convertido en el más popular
A la pregunta “¿pero por qué lo hiciste?”, la respuesta honesta es “porque me pareció gracioso”; estaba buscando algo simple para mi primer proyecto en Swift, vi iss-mimic y de inmediato sentí que tenía que hacer esto
El script de datos debe andar funcionando por algún lado, pero lamentablemente nunca llegué a hacer el sitio web con ranking
¿Podrías mostrar también el nivel de agua y el momento en que se transfiere entre los dos tanques?
Fui líder técnico y controlador de vuelo del equipo de NASA que publicó estos datos de telemetría como parte de ISSLive
ISS Mimic usó esta API, y en aquel entonces pasamos varios años acercando al público al programa de la estación espacial: https://youtu.be/xAhw_8B25N0?si=OZXH9sZ0bY_iX40V
Es bastante gracioso que, 12 años después, aparezca PissStream
Me alegra que el servidor de livestream esté siendo útil, y de hecho hay muchos otros buenos datos de telemetría
Me encanta ISSMimic
Hablando en serio, quizá haya pocos usos tan extremadamente triviales de la telemetría en tiempo real de la ISS, pero me sorprende que algo tan tonto no solo sea posible, sino además muy fácil
Mis respetos a NASA y a las personas involucradas que lo hicieron posible desde el inicio
Al ver el panel de ISS Mimic también volví a notar que hay muchísimos datos de telemetría interesantes
Si es así, cuando llegue ese momento me gustaría estar frente a la terminal esperando la última despedida de la estación
Probé portarlo a la web: https://gistpreview.github.io/?76f03f49be58344bfa64c9d5d9f0ec29
El código fuente está aquí: https://gist.github.com/simonw/76f03f49be58344bfa64c9d5d9f0ec29
Lo hice pegando todo el repositorio de GitHub en Swift en Gemini 2.0 y pidiéndole que lo portara a una página web: https://gist.github.com/simonw/b4aec4e879e50ac74f6f9cc6e1cdc0a1
Al darle el mismo prompt a Aider y agregar “usa la misma API que el código Swift”, salió a la primera; pero con Claude, si solo decía “página web”, no lo lograba de una y hacía falta prompting varias veces más
ChatGPT-4o alucinó la URL desde la cual cargar lightstream.js, y al final tuve que depurarlo yo mismo
Incluso en una tarea tan pequeña, los resultados cambian mucho según las variaciones del prompt, así que es fácil entender por qué en HN siempre se dividen entre quienes ven a los asistentes de programación con LLM como la segunda venida y quienes creen que todo es puro humo
Es un buen ejemplo de procesamiento de streams
Soy miembro del equipo de ISS Mimic, y me gusta. Gran trabajo
Si preocupa la privacidad de los astronautas, los valores del tanque de orina no reflejan directamente los aportes de orina de la tripulación
También me da curiosidad qué refleja realmente ese valor
Parece que todavía no he mirado hasta lo más profundo del alma del UWMS
Los nombres de variables son precisos
static let pissYellowLight = Color(red: 0.95, green: 0.85, blue: 0.2)static let pissYellowDark = Color(red: 0.7, green: 0.6, blue: 0.1)Después de abandonar la personalización de la etiqueta, naturalmente olvidé borrar el enum que ya no se usaba
Soy la persona que hizo apolloinrealtime.org, y ahora trabajo en el programa de la ISS
Mis respetos
No sabía que esto fuera información pública
También podría enviar una notificación cada vez que un tripulante orina
Si hubiera también otros datos de análisis químico, quizá sería posible
NASA podría vender esos datos de análisis a los fanáticos de recolectar datos para resolver sus problemas de presupuesto, y poner anuncios en todas las pantallas de la ISS
De hecho, me sorprende que todavía ninguna startup de YC haya lanzado un inodoro inteligente así