- pISSStream est une application qui affiche en temps réel la capacité du réservoir d’urine de la Station spatiale internationale (ISS), avec prise en charge de macOS ainsi que d’iOS, watchOS et visionOS
- Les données proviennent du flux officiel public de télémétrie de l’ISS de la NASA via Lightstreamer, et l’application affiche le dernier pourcentage de remplissage du réservoir lorsque les stations au sol reçoivent le signal
- Sur macOS, la barre de menus affiche 🧑🏽🚀🚽 et le pourcentage de remplissage ; si la connexion ou le signal de télémétrie est interrompu, elle affiche 🧑🏽🚀❗, la dernière valeur reçue, ainsi que l’état « Connecting » ou « No Signal »
- Sur iOS et watchOS, une interface simple affiche le niveau du réservoir en temps réel, tandis que visionOS propose une visualisation 3D basée sur l’API ImmersiveSpace et de l’audio spatial
- Comme il s’agit de la première app Swift et de la première app pour plateformes Apple de l’auteur, la gestion des données anciennes et des erreurs n’est pas particulièrement robuste ; les Pull Requests de correction de bugs sont acceptées, mais il n’est pas prévu d’ajouter d’autres statistiques de l’ISS
Ce que fait pISSStream
- pISSStream est une application qui affiche en temps réel la capacité du réservoir d’urine de l’International Space Station
- Les plateformes prises en charge sont macOS, watchOS, iOS, visionOS
- Principales fonctionnalités
- Surveillance en temps réel du niveau du réservoir d’urine de l’ISS
- Intégration à la barre de menus de macOS
- Mises à jour en temps réel dans les apps iOS et watchOS
- Visualisation 3D immersive sur visionOS
- Audio spatial basé sur un deep-space soundscape dans l’écran immersif
- UI améliorée et icône d’application personnalisée pour Vision Pro
- Utilisation du flux officiel public de télémétrie de l’ISS de la NASA via Lightstreamer
Installation et conditions de build
- Sur macOS, la dernière version DMG peut être téléchargée via le lien Download
- Pour iOS, watchOS et visionOS, il faut compiler depuis les sources et signer avec son propre compte développeur en raison du modèle de sécurité d’Apple
- Prérequis de build
- Xcode 15.2 ou version ultérieure
- Compte Apple Developer
- Un appareil sous iOS 17.0 ou version ultérieure pour l’app iOS
- Apple Vision Pro ou le simulateur visionOS
- La procédure de build de base consiste à cloner le dépôt, ouvrir
pISSStream.xcodeprojdans Xcode, sélectionner son équipe de développement dans Signing & Capabilities, puis compiler et exécuter sur l’appareil cible - Même sans compte Apple Developer, l’app peut être exécutée jusqu’à 7 jours sur simulateur ou appareil avec un profil de provisioning gratuit
Développement et déploiement sur visionOS
- Le développement visionOS nécessite que le SDK visionOS soit installé dans Xcode
- L’app utilise l’API ImmersiveSpace pour offrir une expérience de visualisation 3D et inclut de l’audio spatial pour renforcer l’immersion
- Conditions requises
- Un Mac Apple silicon
- Xcode 15.2 ou version ultérieure
- Un compte Apple Developer
- Un Vision Pro avec le mode développeur activé
- Un Mac et un Vision Pro connectés au même réseau Wi‑Fi
- La procédure de développement sans fil consiste à autoriser le Developer Mode et le Remote Development sur le Vision Pro, puis à appairer le Vision Pro dans Devices and Simulators de Xcode, à le sélectionner comme cible de build et à lancer l’exécution
- Problèmes courants
- « Device not found » : vérifier la connexion Wi‑Fi
- « Unauthorized device » : réappairer le Vision Pro
- « Build failed » : mettre à jour le profil de provisioning
- « No paired Vision Pro found » : vérifier la connexion et l’appairage du Vision Pro
- « Invalid signing » : vérifier le compte développeur et le profil de provisioning
Utilisation selon la plateforme
- Sur macOS, lorsque la connexion Lightstreamer et la réception du signal de télémétrie de l’ISS fonctionnent toutes deux normalement, l’élément de la barre de menus affiche 🧑🏽🚀🚽 et le pourcentage de remplissage
- Si la connexion ou le signal de télémétrie de l’ISS est interrompu, l’élément de la barre de menus affiche 🧑🏽🚀❗ et la dernière valeur reçue, tandis que le menu indique « Connecting » ou « No Signal »
- Sur iOS, il suffit d’ouvrir l’app pour consulter le niveau actuel du réservoir via une interface simple
- Sur visionOS, on peut visualiser le réservoir de déchets de l’ISS en 3D immersive et voir son niveau de remplissage en temps réel
- Sur watchOS, on peut suivre en temps réel depuis son poignet le niveau de remplissage du réservoir de déchets de l’ISS
Motivation de départ et limites
- L’idée vient du fait qu’il est à la fois « ridicule et fascinant » de pouvoir créer en un après-midi une app gag qui lit de vraies données de télémétrie en temps réel provenant des toilettes de la station spatiale
- C’était aussi un bon prétexte pour apprendre Swift, mais la motivation principale était le caractère absurde de l’app elle-même
- Problèmes connus
- Comme il s’agit de la première app Swift et de la première app pour plateformes Apple de l’auteur, elle ne représente pas le sommet des bonnes pratiques de développement
- Elle peut casser de façon inattendue au moindre petit déclencheur
- Elle ne gère pas activement les données anciennes
- La gestion des erreurs n’a pas fait l’objet d’une grande attention
- Les Pull Requests de correction de bugs sont les bienvenues
- L’auteur a découvert le flux de données via ISS Mimic, qui propose bien plus de statistiques intéressantes que le seul niveau du réservoir d’urine, mais il n’est pas prévu de les ajouter à pISSStream
1 commentaires
Commentaires sur Hacker News
J’ai découvert le flux de données via https://iss-mimic.github.io/Mimic/, et il contient des statistiques bien plus nombreuses et intéressantes que le niveau de remplissage du réservoir d’urine.
La phrase « rien de tout cela ne sera ajouté » est une façon parfaite de communiquer les non-objectifs du projet.
C’est un exemple à retenir comme bonne pratique de communication open source.
Les astronautes communiquent en morse en modulant les variations du réservoir, et quelqu’un avec un TDAH qui a installé cette app de barre de menus remarque la situation et sauve tout le monde : ça ferait un film.
Le seul problème restant, c’est de trouver comment envoyer son corps jusque-là-haut.
Ça me donne beaucoup trop envie de passer du temps à créer un SVG de l’ISS et à l’animer avec ces données.
On pourrait piéger les boomers avec des Real World Assets(tm).
Je suis sur Bluesky un bot qui publie les posts HN dépassant 50 points, et j’ai été surpris de voir soudain apparaître un lien GitHub familier.
Je l’avais moi-même posté en Show HN il y a environ cinq jours (https://news.ycombinator.com/item?id=42464454), donc je me suis demandé pourquoi il ressortait d’un coup, avant de comprendre que ce n’était en fait pas mon post.
Je suis sincèrement heureux que, parmi les projets open source que j’ai créés ces quelque 15 dernières années, celui-ci soit devenu le plus populaire.
À la question « mais pourquoi l’avoir fait ? », la réponse honnête est « parce que je trouvais ça drôle » ; je cherchais un premier projet Swift simple, je suis tombé sur iss-mimic et j’ai tout de suite senti que c’était ça qu’il fallait faire.
Le script de données doit encore fonctionner quelque part, mais malheureusement je ne suis jamais allé jusqu’à faire un site de classement.
Est-ce que tu peux aussi afficher le niveau d’eau, et montrer le moment où ça bascule entre les deux réservoirs ?
J’étais à la NASA le responsable technique et contrôleur de vol de l’équipe qui a publié ces données de télémétrie dans le cadre d’ISSLive.
Cette API a été utilisée par ISS Mimic, et à l’époque nous avons fait connaître le programme de la station spatiale au public pendant plusieurs années : https://youtu.be/xAhw_8B25N0?si=OZXH9sZ0bY_iX40V
Voir PissStream arriver 12 ans plus tard, c’est quand même assez drôle.
Je suis content que le serveur de livestream serve encore, et il y a en fait beaucoup d’autres bonnes données de télémétrie.
J’aime beaucoup ISSMimic.
Plus sérieusement, c’est sans doute l’un des usages les plus profondément futiles de la télémétrie temps réel de l’ISS, mais c’est incroyable que ce genre de bêtise soit non seulement possible, mais très facile à faire.
Respect à la NASA et à toutes les personnes qui ont rendu ça possible dès le départ.
Le tableau de bord ISS Mimic m’a aussi rappelé à quel point il y a de nombreuses données de télémétrie intéressantes.
Si oui, quand ce moment arrivera, j’aurai envie d’être devant mon terminal à attendre le dernier adieu de la station.
J’en ai fait un portage web : https://gistpreview.github.io/?76f03f49be58344bfa64c9d5d9f0ec29
Le code source est ici : https://gist.github.com/simonw/76f03f49be58344bfa64c9d5d9f0ec29
Je l’ai créé en collant tout le dépôt GitHub Swift dans Gemini 2.0 et en lui demandant de le porter en page web : https://gist.github.com/simonw/b4aec4e879e50ac74f6f9cc6e1cdc0a1
En donnant le même prompt à Aider et en ajoutant « utilise la même API que le code Swift », ça a marché du premier coup ; avec Claude, si je disais seulement « une page web », ça ne marchait pas du premier coup et il a fallu quelques prompts de plus.
ChatGPT-4o a halluciné l’URL à utiliser pour charger lightstream.js, et j’ai finalement dû déboguer moi-même.
Même sur une tâche aussi petite, les résultats changent beaucoup selon les variations du prompt ; ça rend facile à comprendre pourquoi, sur HN, certains voient les assistants de codage LLM comme une seconde venue du messie tandis que d’autres considèrent que tout ça n’est que du vent.
C’est un bon exemple de traitement de flux.
Je fais partie de l’équipe ISS Mimic, et j’aime beaucoup. Beau travail.
Si la confidentialité des astronautes vous inquiète, la valeur du réservoir d’urine ne reflète pas directement l’ajout d’urine par l’équipage.
Je me demande aussi ce que cette valeur reflète réellement.
Je n’ai pas encore vraiment plongé dans les profondeurs de l’âme de l’UWMS.
Les noms de variables sont parfaits.
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)Après avoir renoncé à personnaliser le libellé, j’ai naturellement oublié de supprimer l’enum inutilisée.
Je suis le créateur d’apolloinrealtime.org, et je travaille maintenant sur le programme ISS.
Respect.
Je ne savais pas que c’était une information publique.
On pourrait aussi envoyer une notification à chaque fois qu’un membre d’équipage urine.
Avec d’autres données d’analyse chimique, ce serait peut-être possible.
La NASA pourrait vendre ces données d’analyse aux collectionneurs de données pour régler ses problèmes de budget, et afficher des pubs sur tous les écrans de l’ISS.
À vrai dire, je suis surpris qu’aucune startup YC n’ait encore lancé ce genre de toilettes intelligentes.