- pISSStream ist eine App, die die Kapazität des Urintanks der Internationalen Raumstation (ISS) in Echtzeit anzeigt und macOS-Menüleiste sowie iOS, watchOS und visionOS unterstützt
- Die Daten stammen aus dem offiziellen öffentlichen ISS-Telemetrie-Stream der NASA und werden per Lightstreamer empfangen; wenn eine Bodenstation das Signal empfängt, zeigt die App den aktuellen Füllstand des Tanks an
- Unter macOS zeigt sie in der Menüleiste 🧑🏽🚀🚽 und den Füllstand an; wenn die Verbindung oder das Telemetriesignal abreißt, erscheinen 🧑🏽🚀❗, der zuletzt empfangene Wert sowie der Status „Connecting“ oder „No Signal“
- iOS und watchOS zeigen den Live-Tankfüllstand über eine einfache Oberfläche an; visionOS bietet eine 3D-Visualisierung auf Basis der ImmersiveSpace API sowie Spatial Audio
- Da es die erste Swift- und Apple-Plattform-App ist, geht sie mit veralteten Daten und Fehlerbehandlung nicht besonders aktiv um; Pull Requests für Bugfixes sind willkommen, weitere ISS-Statistiken sind jedoch nicht geplant
Was pISSStream macht
- pISSStream ist eine App, die die Kapazität des Urintanks der International Space Station in Echtzeit anzeigt
- Unterstützte Plattformen sind macOS, watchOS, iOS und visionOS
- Die wichtigsten Funktionen sind:
- Echtzeit-Monitoring des ISS-Urintankfüllstands
- Integration in die macOS-Menüleiste
- Live-Updates in den iOS- und watchOS-Apps
- Immersive 3D-Visualisierung unter visionOS
- Spatial Audio auf Basis einer deep-space soundscape in der immersiven Ansicht
- Verbesserte UI und eigenes App-Icon für Vision Pro
- Nutzung des offiziellen öffentlichen ISS-Telemetrie-Streams der NASA über Lightstreamer
Installation und Build-Voraussetzungen
- Für macOS kann das aktuelle DMG-Release über den Link Download heruntergeladen werden
- iOS, watchOS und visionOS müssen wegen Apples Sicherheitsmodell aus dem Quellcode gebaut und mit einem eigenen Entwicklerkonto signiert werden
- Build-Voraussetzungen sind:
- Xcode 15.2 oder neuer
- Apple Developer account
- Gerät mit iOS 17.0 oder neuer für die iOS-App
- Apple Vision Pro oder visionOS-Simulator
- Der grundlegende Build-Ablauf besteht darin, das Repository zu klonen,
pISSStream.xcodeprojin Xcode zu öffnen, unter Signing & Capabilities das Entwicklungsteam auszuwählen und anschließend auf dem Zielgerät zu bauen und auszuführen - Auch ohne Apple Developer account kann die App mit einem kostenlosen Provisioning Profile bis zu 7 Tage lang im Simulator oder auf einem Gerät ausgeführt werden
visionOS-Entwicklung und Bereitstellung
- Für die visionOS-Entwicklung muss das visionOS SDK in Xcode installiert sein
- Die App nutzt die ImmersiveSpace API für das 3D-Visualisierungserlebnis und enthält Spatial Audio für mehr Immersion
- Anforderungen sind:
- Apple-Silicon-Mac
- Xcode 15.2 oder neuer
- Apple Developer Account
- Vision Pro mit aktiviertem Developer Mode
- Mac und Vision Pro im selben WLAN
- Der drahtlose Entwicklungsablauf besteht darin, auf der Vision Pro Developer Mode und Remote Development zuzulassen, die Vision Pro in Xcodes Devices and Simulators zu koppeln, sie als Build-Ziel auszuwählen und die App auszuführen
- Häufige Probleme sind:
- „Device not found“: WLAN-Verbindung prüfen
- „Unauthorized device“: Vision Pro erneut koppeln
- „Build failed“: Provisioning Profile aktualisieren
- „No paired Vision Pro found“: Verbindung und Kopplung der Vision Pro prüfen
- „Invalid signing“: Entwicklerkonto und Provisioning Profile prüfen
Nutzung je nach Plattform
- Unter macOS werden im Menüleisteneintrag 🧑🏽🚀🚽 und der Füllstand angezeigt, wenn sowohl die Lightstreamer-Verbindung als auch der Empfang des ISS-Telemetriesignals normal funktionieren
- Wenn die Verbindung oder das ISS-Telemetriesignal abreißt, zeigt der Menüleisteneintrag 🧑🏽🚀❗ und den zuletzt empfangenen Wert an; im Menü erscheint „Connecting“ oder „No Signal“
- Unter iOS lässt sich nach dem Start der App der aktuelle Tankfüllstand über eine einfache Oberfläche ansehen
- Unter visionOS sieht man den ISS-Abfalltank immersiv in 3D und visualisiert den Live-Füllstand
- Unter watchOS lässt sich der Füllstand des ISS-Abfalltanks in Echtzeit am Handgelenk verfolgen
Motivation und Grenzen
- Die Motivation für die Entwicklung lag darin, dass es „absurd, aber zugleich erstaunlich“ ist, an einem Nachmittag eine Scherz-App bauen zu können, die echte Live-Telemetriedaten aus der Toilette einer Raumstation ausliest
- Es war außerdem ein guter Vorwand, Swift zu lernen, doch die zentrale Motivation war die Absurdität der App selbst
- Bekannte Probleme sind:
- Als erste Swift- und Apple-Plattform-App ist sie nicht der Gipfel guter Coding-Praktiken
- Sie kann schon durch kleine Auslöser auf unerwartete Weise kaputtgehen
- Sie reagiert nicht aktiv auf veraltete Daten
- Fehlerbehandlung wurde nicht besonders stark berücksichtigt
- Pull Requests für Bugfixes sind willkommen
- Der Datenstream wurde über ISS Mimic entdeckt; ISS Mimic enthält weit mehr und interessantere Statistiken als den Urintankfüllstand, diese sollen jedoch nicht in pISSStream ergänzt werden
1 Kommentare
Hacker-News-Kommentare
Ich bin über https://iss-mimic.github.io/Mimic/ auf den Datenstream gestoßen; dort gibt es viel mehr und interessantere Statistiken als nur, wie voll der Urintank ist.
Der Satz „Nichts davon werde ich hinzufügen“ ist die perfekte Art, die Nicht-Ziele des Projekts zu vermitteln.
Daraus kann man Best Practices für Open-Source-Kommunikation lernen.
Das wäre ein Film, in dem die Astronauten über die Änderung des Tankstands Morsezeichen senden und jemand mit ADHS, der diese Menüleisten-App installiert hat, die Lage bemerkt und alle rettet.
Bleibt nur noch die Frage, wie man den eigenen Körper bis dorthin bekommt.
Jetzt bekomme ich viel zu sehr Lust, ein SVG der ISS zu bauen und es mit diesen Daten zu animieren.
Damit könnte man Boomern Real World Assets(tm) andrehen.
Ich folge auf Bluesky einem Bot, der HN-Posts mit mehr als 50 Punkten veröffentlicht, und war überrascht, plötzlich einen vertrauten GitHub-Link zu sehen.
Ich hatte den Beitrag vor etwa fünf Tagen selbst als Show HN gepostet (https://news.ycombinator.com/item?id=42464454), und fragte mich, warum er plötzlich auftaucht – tatsächlich war es aber gar nicht mein Beitrag.
Ich freue mich wirklich, dass dies von den Open-Source-Projekten, die ich in den letzten rund 15 Jahren gebaut habe, das populärste geworden ist.
Auf die Frage „Aber warum hast du es gebaut?“ ist die ehrliche Antwort: „Weil ich es lustig fand.“ Ich suchte für mein erstes Swift-Projekt etwas Einfaches, sah iss-mimic und dachte sofort: Das muss ich machen.
Irgendwo müsste noch ein Skript für die Daten laufen, aber leider habe ich es nie bis zu einer Ranglisten-Website gebracht.
Könntest du auch den Wasserstand anzeigen und den Moment zeigen, in dem zwischen den beiden Tanks umgeschaltet wird?
Ich war bei NASA der Technical Lead und Flight Controller des Teams, das diese Telemetriedaten als Teil von ISSLive veröffentlicht hat.
Diese API wurde von ISS Mimic genutzt, und damals haben wir ein paar Jahre lang der Öffentlichkeit das Raumstationsprogramm nähergebracht: https://youtu.be/xAhw_8B25N0?si=OZXH9sZ0bY_iX40V
Zwölf Jahre später PissStream zu sehen, ist ziemlich lustig.
Schön, dass die Livestream-Server gut genutzt werden; tatsächlich gibt es noch viele andere gute Telemetriedaten.
Ich mag ISSMimic.
Im Ernst: Es dürfte nur wenige Beispiele geben, die die Echtzeit-Telemetrie der ISS so maximal trivial nutzen, aber es ist erstaunlich, dass so etwas Albernes nicht nur möglich, sondern auch sehr einfach ist.
Respekt an NASA und alle Beteiligten, die das von Anfang an möglich gemacht haben.
Beim Blick auf das ISS-Mimic-Dashboard ist mir auch wieder aufgefallen, wie viele interessante Telemetriedaten es wirklich gibt.
Falls ja, möchte ich in diesem Moment vor dem Terminal sitzen und auf den letzten Abschiedsgruß der Station warten.
Ich habe das hier ins Web portiert: https://gistpreview.github.io/?76f03f49be58344bfa64c9d5d9f0ec29
Der Quellcode ist hier: https://gist.github.com/simonw/76f03f49be58344bfa64c9d5d9f0ec29
Ich habe das komplette Swift-GitHub-Repository in Gemini 2.0 eingefügt und es gebeten, daraus eine Webseite zu portieren: https://gist.github.com/simonw/b4aec4e879e50ac74f6f9cc6e1cdc0a1
Als ich Aider denselben Prompt gab und ergänzte „nutze dieselbe API wie der Swift-Code“, klappte es auf Anhieb; Claude schaffte es mit nur „Webseite“ nicht sofort und brauchte ein paar weitere Prompts.
ChatGPT-4o halluzinierte die URL, von der lightstream.js geladen werden sollte, und am Ende musste ich selbst debuggen.
Schon bei so einer kleinen Aufgabe ändern sich die Ergebnisse je nach Prompt erheblich; damit versteht man leicht, warum sich HN immer wieder zwischen Leuten spaltet, für die LLM-Coding-Assistenten wie die zweite Wiederkunft wirken, und solchen, die alles für heiße Luft halten.
Ein gutes Beispiel für Stream Processing.
Ich bin im ISS-Mimic-Team und es gefällt mir. Gute Arbeit.
Falls jemand wegen der Privatsphäre der Astronauten besorgt ist: Der Urintankwert spiegelt keine direkten Urinzugaben der Crew wider.
Ich bin auch neugierig, was dieser Wert tatsächlich widerspiegelt.
Offenbar habe ich noch nicht bis in die tiefsten Seelenwinkel des UWMS geblickt.
Die Variablennamen sitzen.
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)Nachdem ich die Anpassung des Labels aufgegeben hatte, vergaß ich natürlich, das ungenutzte enum zu löschen.
Ich bin der Ersteller von apolloinrealtime.org und arbeite jetzt am ISS-Programm.
Respekt.
Ich wusste nicht, dass das öffentlich zugängliche Informationen sind.
Man könnte jedes Mal eine Benachrichtigung schicken, wenn ein Crewmitglied uriniert.
Mit weiteren chemischen Analysedaten wäre das vielleicht möglich.
NASA könnte diese Analysedaten an Datensammler verkaufen, um ihre Budgetprobleme zu lösen, und auf allen Bildschirmen der ISS Werbung anzeigen.
Eigentlich erstaunlich, dass noch kein YC-Startup so eine smarte Toilette herausgebracht hat.