SpaceAPI-Karte

From CCC Basel Wiki
Revision as of 01:30, 25 October 2024 by S3lph (talk | contribs) (→‎Umsetzung)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Die SpaceAPI-Karte.

Projekt von s3lph. Eine ca 60x70cm grosse Karte von Mitteleuropa, in Holz graviert, mit farbigen LEDs, die den Öffnungszustand von ganz vielen (83) Hackspaces anzeigen.

Idee

Die SpaceAPI ist eine Spezifikation für eine maschinenlesbare Schnittstelle, über die Hackspaces verschiedene Informationen über sich selbst veröffentlichen können. Dies kann statische Informationen wie Name, Adresse und Logo umfassen, aber auch dynamische Daten wie die Raumtemperatur, oder ob der Space gerade geöffnet ist. Es gibt verschiedene Dienste, die sämtliche SpaceAPI-Endpoints aggregieren und aufbereiten, darunter mapall.space, welche die Spaces auf einer Karte darstellt. Die Idee von diesem Projekt war es, eine solche Karte an die Wand hängen zu können, mit LEDs auf einer mit dem Lasercutter gravierten Karte.

Umsetzung

Die vollständige technische Dokumentation für dieses Projekt ist im Git-Repository zu finden.

Bedeutung der Farben

Grün
Der Hackspace ist geöffnet.
Rot
Der Hackspace ist geschlossen.
Orange
Der SpaceAPI-Endpunkt hat dem Aggregator-Dienst eine ungültige Antwort gegeben. Das kann sowohl heissen, dass der Endpunkt nicht erreichbar war, oder dass er nicht allen SpaceAPI-Schema-Versionen entspricht, die der Endpunkt angibt.
Blau
Der SpaceAPI-Endpunkt ist seit mehr als 24h nicht mehr erreichbar.
Aus
Die Endpunkt-URL von diesem Hackspace ist nicht mehr in der Antwort des Aggregators enthalten. Wahrscheinlich hat sich die URL des API-Endpoints geändert.

Abgesehen von den Space-Zuständen werden Fehlerzustände der Karte selbst signalisiert:

LED 0 blinkt alle 10s
Der letzte Versuch, den Aggregator zu erreichen, ist fehlgeschlagen, z.B. weil die WiFi-Verbindung nicht wiederhergestellt werden konnte.
Lila LED 0
Der ESP32 ist gerade am starten. Die LED bleibt lila bis zum ersten erfolgreichen Kontakt zum Aggregator. Falls dieser Zustand für mehr als ein paar Sekunden besteht, konnte sich der ESP32 vermutlich nicht zum konfigurierten WiFi-AP verbinden, und startet seinen eigenen AP spaceapimap, damit die WiFi-Konfiguration angepasst werden kann.


Kartendaten für den Lasercutter

  • Die Grenzverläufe kommen als GeoJSON von WikiData
  • Die Koordinaten und Namen der Spaces kommen aus den SpaceAPI-Endpunkten der jeweiligen Spaces
  • Für die Zusammenführung der Daten und Layouting der Beschriftungen kam eine modifizierte Version des Erfakarten-Codes zum Einsatz.
    • Die Beschriftungen wurden dann trotzdem noch nachträglich in Inkscape verschoben, um eine bessere Zuordnung zwischen Beschriftungen und LEDs zu erreichen.
  • Schlussendlich wurde die Karte mit dem Lasercutter auf 4mm dickes Sperrholz graviert und ausgeschnitten
    • Diesen Teil haben wir im Hackspace Odenwilusenz in Beringen SH gemacht, da deren Lasercutter einen deutlich grösseren Arbeitsbereich hat als unser Lasercutter.

Hardware

  • Die LEDs sind WS2812-kompatibel, aber im "klassischen" Formfaktor mit einem Durchmesser von 5mm.
  • Jede LED ist mit einer schwarzen, kragenförmigen Kunststofffassung im einem Loch im Sperrholzbrett befestigt.
  • Die Ansteuerung der LEDs erfolgt über einen ESP32-C3 Microcontroller.
  • Für die Verbindung der LEDs zu einer Kette haben wir PCBs entworfen, an denen jeweils 10 der LEDs über Kabel mit JST ZH4-Steckern angeschlossen werden.
    • Die LEDs sind direkt in die JST-Stecker gesteckt, und halten dort erstaunlich gut.
    • Die PCBs untereinander sind ebenfalls verbunden, um eine lange WS2812-Kette zu bilden.

Software

  • Die Software auf dem ESP32 bezieht die Daten der SpaceAPI-Endpoints alle 5 Minuten über den Aggregator-Dienst [1].

Ähnliche Projekte

Das ist nicht die erste physische SpaceAPI-Karte, die gebaut wurde. Mir sind folgende weitere Projekte bekannt: