Fablab Intern

Hubert Högl,

2025-06-06

URL: https://hhoegl.informatik.hs-augsburg.de/fablab-intern

Hier stehen Sachen die eher für den Betrieb des Fablab interessant sind, nicht so sehr für normale Nutzer.

Die eigentliche Nutzer-Homepage des Fablab ist https://tha.de/homes/hhoegl/home/Fablab.

Fablab Server, Anlauf 1

Es gab bisher zwei Versuche, eine zentrale Anlaufstelle für das Fablab zu schaffen. Die Idee war meist, eine Homepage auf einem eigenen Rechner bereitszustellen, so dass man sich damit über das Fablab informieren und bestimmte Prozesse anstossen kann. Als wichtig erachtet wurde folgendes:

Der erste Versuch war im Sommer 2016 im Rahmen des Embedded Linux Wahlfachs. Es wurde dabei eine einfache Homepage erstellt aus handgeschriebenen HTML Dateien mit Hilfe von “Google Material Design Lite” (siehe https://getmdl.io und https://github.com/google/material-design-lite). Neben der Homepage war die zweite wichtige Anforderung, “Monitoring” und “Control” betreiben zu können. Aus dem Grund war der damalige DNS Eintrag auch fablabctrl.hs-augsburg.de. Diese Funktionen wurden in die Homepage mit ein wenig JavaScript eingebaut, im js/ Ordner waren die Dateien canvasjs.js, jquery.js, jquery-ui.js, knockout.js, material.js und sevenSeg.js.

Damals wurde öfter vergessen, den Lötkolben auszuschalten, so dass man auf die Idee kam, die Stromaufnahme zu messen und den aktuellen Wert und den zeitlichen Verlauf auf einer eigenen Lötkolben-Seite der Homepage anzuzeigen. So konnte man auch von zu Hause nachschauen, ob im Fablab gerade der Lötkolben läuft. Technisch wurde das durch einen 220V Leistungsmesser mit S0 Schnittstelle gelöst, der eine Impulsfolge analog zur aktuellen Leistungsaufnahme ausgibt. Die Impulsfolge wurde mit einem Embedded Linux Rechner (anfangs Gnublin, später Beagle Bone Black) ausgewertet und in eine Textdatei geschrieben. Die Homepage konnte mit Hilfe von jQuery/Ajax auf die Datei zugreifen und den Inhalt anzeigen. Die Anzeige der Temperatur erfolgte stilecht mit einer Siebensegment-Schrift, dazu wurde sevenSeg.js verwendet. Das gibt es immer noch unter https://brandonlwhite.github.io/sevenSeg.js.

Das zweite Objekt das überwacht werden sollte waren die 3D Drucker. Damals gab es nur ein paar Ultimaker Drucker im Fablab. Die 3D Drucker wurden je mit einer simplen Kamera ausgestattet, dazu wurden erst mal Kamerahalterungen gedruckt. Die Kameras wurden an Beagle Bone Black Rechner gesteckt, auf denen Embedded Linux, gebaut mit Buildroot, später Debian lief. Das Streaming der Videodaten sollte über gstreamer erfolgen, als Webserver kam lighttpd zum Einsatz. Es lief nicht alles so wie erwartet, deswegen wurde später das Streaming durch die Übertragung von Einzelbildern ersetzt.

Alle Dateien findet man in folgendem Gitlab Repo, es ist auch ein Bericht dabei, der das alles mit den aufgetretenen Problemen genauer beschreibt:

https://gitlab.com/hhoegl-tha/fablab-control

Ich finde es hat gut ausgesehen. Der Minimalismus hat seinen Reiz.

Hier sind noch ein paar Screenshots die zeigen wie das damals ausgesehen hat:

Fablab Server, Anlauf 2

Der zweite Anlauf war im Jahr 2018. Die Ziele waren in etwa die Gleichen wie bei Anlauf 1, nur die technische Umsetzung war deutlich anspruchsvoller.

Die Software wurde nun vom Tutor Tobias Schwarz in ein paar Monaten geschrieben, er hatte bereits viel Erfahrung mit deŕ Entwicklung von Java Anwendungen, deshalb fiel die Wahl auf Java. Folgende Komponenten wurden für die Web-Anwendung verwendet: Java in der Version 1.8, Spring Framework, Tomcat 8.5, MySQL 5.5. Die Anwendung lief auf einem Fujitsu Server mit Intel Xeon E3-1220. Der nginx Server wurde sowohl für die Letsencrypt Zertifikate (certbot) als auch für die Weiterleitung der Kamera-Streams verwendet.
Als Betriebssystem kam CentOS 7.9.2009 zum Einsatz. Der Server erhielt den DNS Namen fablab.hs-augsburg.de.

Der Server war mit zwei Netzwerkkarten ausgestattet, eine für die Verbindung in das Hochschulnetz, die andere für ein Netz das mehrere Raspberry Pi Rechner vernetzte (192.168.0.x). An jedem Raspi konnten maximal zwei Webcams angeschlossen werden. Zum Video-Streaming wurde die “mjpg-streamer” Software auf den Raspis verwendet (https://github.com/jacksonliam/mjpg-streamer). In der nginx Konfiguration auf dem Server wurden die URLs /camera/stream<n> (n von 0-12) auf die IP-Adresse/Portnummer des jeweiligen Raspi weitergeleitet (proxy_path).

Aufbau

Die Software hatte in etwa folgende Features:

Die Fablab Homepage wurde einige Jahre aktiv genutzt. Die Beobachtung der Drucker mit den Kameras hat auch in hoher Auflösung gut funktioniert. Irgendwann hat die automatische Verlängerung des Letsencrypt Zertifikats nicht mehr funktioniert, so dass man sich nicht mehr verbinden konnte. Da keiner mehr im Labor mit der Einrichtung des Servers vertraut war, geriet er langsam in Vergessenheit.

Vor kurzem habe ich einen Versuch unternommen, die Software wieder zum Laufen zu bringen. Nach einer Einarbeitung in Java, Maven, Tomcat und MySQL konnte ich tatsächlich die Anwendung auf meinem eigenen Arbeitsplatzrechner wieder zum Leben erwecken. Wie erwartet muss man bei den Komponenten wie Java und MySQL die damaligen Versionen verwenden, bei neueren Versionen funktioniert ohne die Anpassung der Software nichts mehr. Immerhin konnte ich die folgenden Screenshots machen:

https://tha.de/homes/hhoegl/fotos/fablab-server/index.html#/0

Die veraltete Java Software wird natürlich niemand mehr zum produktiven Einsatz verwenden wollen. Aber das Ganze eignet sich ganz gut um über mögliche Features eines neuen Fablab Servers nachzudenken. Den würde man heutzutage eher in Python schreiben. Die Lösung mit dem eigenen Kamera-Netzwerk finde ich nach wie vor sehr gelungen.

Das Repo mit dem Code ist unter https://gitlab.com/hhoegl-tha/fablab-home-2018.

Wen die Details interessieren, meine Notizen zum Wiederbeleben des Servers habe ich in der Datei fablab-server.txt aufgeschrieben.